SM wrote:
In other words, the DATA reply code controls and drives the client on
the payload acceptability or rejection as a whole for all recipients,
temporarily or permanently. The reply codes helps drive the retry logic.
You are mixing RCPT TO and DATA reply codes.
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.
I would love to know if an existing client that takes the DATA
response and applies it accordingly and differently to each RCPT TO
response - I can't see how that is correctly possible but also I can't
see how this is expected to work right without issues.
There are some content filters that do that. It may not be correct but
it addresses a particular need.
Well, maybe the server need, it certainly doesn't help the client.
AFAIK, there is no logic in SMTP that says,
DATA 55x or 45x
is an acceptance" for any of the RCPT TO possible replies, and/or a
partial acceptance for 250 RCPT and retries for 450 RCPT.
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>.
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. ......"
I personally felt that was a mistake but accepted it once research was
done to show quite a few client software out there that depend on the
first or the last code and not capable of just reading the last code
as 821 had it written or try to imply.
All I am saying, the DATA response applies to the entire RCPT list.
55x ---> payload not acceptable for anyone
45x ---> payload not acceptable at this moment, may try again
for 250 or 45x RCPT lines.
250 ---> payload acceptable for 250 RCPT lines only, may
try again later for 45x RCPT lines only.
The original problem statement dealt with the last DATA 250 response
where some RCPT lines included 450.
The question was related to how to handle this or similar mix of RCPT
reply codes - but for a DATA 250 accepted payload.
I don't think there is any ambiguity, no straw man with anything else
but this one original Tony Finch question/note about the lack or
unclear semantics for this.
If I misread, my apology.
--
Sincerely
Hector Santos, CTO
http://www.santronics.com
http://santronics.blogspot.com