ietf-smtp
[Top] [All Lists]

Re: Retry question

2008-08-10 11:35:48


On Sun, 2008-08-10, Pete Resnick wrote:

Your claims about 5xz return codes in 4.2.5 of 2821bis bring up an 
interesting interpretation. 4.2.5 also says:

    When an SMTP server returns a positive completion status (2yz code)
    after the DATA command is completed with <CRLF>.<CRLF>, it accepts
    responsibility for:

    o  delivering the message (if the recipient mailbox exists) , or

Note the use of the singular here: "the recipient mailbox". This could be
an example of imprecise wording surrounding the handling of multi-recipient
messages or perhaps an implied "FORALL Recipients...".

I have been bothered by this imprecision since I first read 821, but I
assumed that the concensus had been that common sense would discover the
"obvious intent".

    o  if attempts to deliver the message fail due to transient
       conditions, retrying delivery some reasonable number of times at
       intervals as specified in Section 4.5.4.

    o  if attempts to deliver the message fail due to permanent
       conditions, or if repeated attempts to deliver the message fail
       due to transient conditions, returning appropriate notification to
       the sender of the original message (using the address in the SMTP
       MAIL command).

Take the following example:

       S: 220 foo.com Simple Mail Transfer Service Ready
       C: EHLO bar.com
       S: 250-foo.com greets bar.com
       S: 250-VRFY
       S: 250 HELP
       C: VRFY Smith(_at_)bar(_dot_)com
       S: 250 <Smith(_at_)bar(_dot_)com>
       C: MAIL FROM:<Smith(_at_)bar(_dot_)com>
       S: 250 OK
       C: VRFY Jones(_at_)bar(_dot_)com
       S: 250 <Jones(_at_)bar(_dot_)com>
       C: RCPT TO:<Jones(_at_)foo(_dot_)com>
       S: 450 Can't send  to him right now
       C: DATA
       S: 354 Start mail input; end with <CRLF>.<CRLF>
       C: Blah blah blah...
       C: ...etc. etc. etc.
       C: .
       S: 250 OK
       C: QUIT
       S: 221 foo.com Service closing transmission channel

According to 4.2.5 above, since Jones(_at_)foo(_dot_)com exists, and foo.com 
(the server) has sent back a 250 to the DATA command, foo.com (the 
server) now has responsibility for delivering the message to 
Jones(_at_)foo(_dot_)com (retrying if necessary) and bar.com (the client) 
SHOULD 
NOT attempt to retry delivery to Jones(_at_)foo(_dot_)com(_dot_) Is this the 
correct 
interpretation?

I believe that, not withstanding the VRFY, the "450 Can't send to him right
now" means that Jones is NOT a recipient of the message in THIS
transaction. Thus, the server should probably have responded to "DATA" with
"554 No recipients given"

-- 
Bill McQuillan <McQuilWP(_at_)pobox(_dot_)com>

<Prev in Thread] Current Thread [Next in Thread>