Re: Keywords for "SMTP Service Extension for Content Negotiation"

John C Klensin <[email protected]>
Newsgroups gmane.ietf.fax
Message-ID <2679395.1026529873@localhost>
--On Saturday, 13 July, 2002 12:04 +0900 Dave Crocker
<[email protected]> wrote:

>> - consideration of relay
> 
> Facsimile is direct, point-to-point.  The sending device and
> the receiving device are connected to each other at the same
> time.  They talk with each other directly.
> 
> Internet mail is store-and-forward.  The sender and the
> receiver are not required to be connected to the Internet at
> the same time.  The email may go through intermediate email
> services, when moving from the sender to the receiver.  (For
> example, it may go from a department's SMTP mail system to the
> enterprise system; the enterprise system may send it to the
> receiving enterprise's system; the receiving system may then
> send it to the receiver's department email server.) This is
> like packet switching.  Each intermediate system is "relaying"
> the email.

It is like packet switching except, of course, in the packet
case, each packet is typically a fragment or component of a
message.  The message, or data stream, is sent one packet at a
time; it is not completely assembled at each intermediate host
and then forwarded after it is complete.  With email, each relay
host obtains, assembles, and stores the entire message, only then
initiating a new transaction to forward it.  That difference is
significant for a few purposes, insignificant for most, but we
should be careful to not push analogies to packet-switching too
far.

> The primary difference between relaying versus direct is that
> relaying might take much longer.  Therefore the sender does not
> know when it will receive a response.

I would disagree.  The primary difference I see between relaying
and direct is that, in a direct arrangement (characteristic of
e.g., HTTP) the originating sending system can ask the ultimate
receiving one a question by, well, asking.  In the relay case,
such questions can only be asked of an intermediate system, which
must respond based on indirect information (which it finds in a
database, see below) or by acting as proxy for a remote system,
using information it has not obtained yet.   Some illustrations:

Q: Can mail be delivered to this address?

	Direct answer: "yes" or "no"
	
	Relay answer: "I have no idea, but I will accept
	responsibility for the mail and promise to forward it to
	someone else who will accept responsibility.  For each of
	us, we understand that "accepting responsibility" means
	that we will either deliver the mail to the final
	recipient, deliver it to someone else who agrees to
	accept responsibility, or return an error message which
	will, of necessity, come out-of-band relative to the
	original connection".
	
	Note: contrast this with TCP, where the packet-switching
	model and the nature of the protocol permits getting the
	possibly-analogous "yes, the destination host will accept
	traffic on that port" answer back before any data packets
	are sent.

Q: Does the recipient support this data format?

	Direct answer: "Yes" or "How about one of the following?"
	
	Relay answer 1: "The database says you should try..."
	(see below)
	
	Relay answer 2: "I don't have a clue, but I will accept
	the message on the assumption that it does, and pass it
	on, either to that destination or to some other site
	willing to take responsibility.  If it turns out the
	recipient cannot accept the format, I (or one of the
	systems to which responsibility has been passed) will
	(preferentially) convert the format to something that can
	be accepted or (less preferred) bounce it with an
	out-of-band message."

Those seem fairly different to me, much more different than
"slower".  In fact, I think that difference is part of what this
discussion is about: if the only difference were "might take
longer", I don't think we would be having this (part of) the
discussion at all.

     john

A footnote on the "find out from a database" issue.  The more I
think about it, the more I conclude that the database lookup
(LDAP or otherwise) is the only rational way of implementing the
desired functionality here in a case that might involve relaying.
To the extent that speedy and confirmed delivery are often cited
as important values in fax, the "maybe it will get delivered as
requested, maybe it will be downgraded, maybe the format will be
influenced by the format requirements of other recipients, and
maybe the message will be bounced in a form that is hard or
impossible for the originating (or early relay) MTA to detect"
alternatives are unreasonable.  

But, if database lookup is the only plausible implementation that
is consistent with the underlying design requirements, then we
should not be looking at capabilities negotiation in the SMTP
stream.  Instead, we should be looking at a piece of protocol by
which the sending system (probably the MUA, rather than the MTA)
can figure out the capabilities of the recipient(s) and then
prepare the message, make address grouping decisions, etc.,
cleanly.   It seems to me that would be more clear, would put the
responsibility back on the MUA or local system which has maximum
information about sender intent, would avoid layering violations
and other complications, and generally be a cleaner and more
efficient model.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.