ietf-smtp
[Top] [All Lists]

retry question (was: 2821bis/ter and procedures)

2008-08-09 05:18:08

At 08:29 PM 8/8/2008, Hector Santos wrote:
On the contrary, I'm not. Though that is what I believe this discussion as turned into. They are two separate things.

Maybe I misread the statement from you. A DATA response of 55x does not means the RCPT 45x <c> reply can be interpreted as a retry for this transaction.

The reply code in the data phase applies to all valid recipients. In the example, there was only one valid recipient (b). The reply code for c means that the recipient is neither valid or invalid. The code also suggests that it was a policy decision. The server would have sent a 550 if it viewed b as invalid.

If you interpret c as invalid because of the 554 reply code, then you end up turning the 450 reply code in the RCPT TO into a 550 reply code.

IOW, if a DATA 55x, 45x is issued, there is no expectation of delivery for anyone. But you can retry <c> if the DATA was 45x - thats a client retry decision. The server can only hope it doesn't try to repeat <b> (a DUPE) or bother with permanently rejected <d>.

You would have to retry b and c if the reply code for the "end of message" was a 4yz.


I believe it was Klensin, a few years back, discussing the multiline responses where he was winging it with finding a purpose for it:

Something like:

  C: DATA
  S: 354 continue
     .... read data, analyze ...
  S: 250-OK FOR RCPT C
  S: 450-OK FOR RCPT B
  S: 550-OK FOR RCPT D
  S: 250 Messages accepted for 1 of 3 recipients.

If I recall, it won't work mainly because it was found that many clients only look for the last code or just the first code and we touched base with this in 2821bis by making sure the multi-line response line all have the same code. This is new semantics in 2821bis:

   "In a multiline reply the reply code on each of the lines MUST be
   the same. ......"

That's not the issue. During the SMTP transaction, we send the recipients, then the message. We cannot do per-recipient filtering then. If there was a SMTP extension, we would be able to do that above, i.e. do content analysis, then apply per-recipient policies to accept or reject.

The multiline reply applies to the current model only. A SMTP extension can change that behavior.

All I am saying, the DATA response applies to the entire RCPT list.

It applies to the recipient list that was valid.


   55x ---> payload not acceptable for anyone

   45x ---> payload not acceptable at this moment, may try again
            for 250 or 45x RCPT lines.

You retry for these recipients as there wasn't any permanent (5yz) failure.

Regards,
-sm