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