ietf-smtp
[Top] [All Lists]

Re: retry question

2008-08-09 09:37:13

<ned+ietf-smtp(_at_)mrochek(_dot_)com> wrote:

IMO his chart is incorrect: The RCPT 45X/DATA 55X case
should be "MAY RETRY".
 
I also don't understand why the chart lists the second
digits of responses.

ACK, I ignored the second digit detail.

SM's proposal is different:  The second cell in the third
column could be "MAY RETRY" if there was another recipient
causing the DATA 5xx ...and if I understood it correctly.
 
No. It doesn't matter if there's another recipient or not.

Above you wrote it should be MAY RETRY, so far we agree on
what SM said.  But you say I miss the point of the MAY RETRY,
it doesn't depend on another recipient.

Now if there is only one 4xx recipient, or actually only one
set of recipents (one or more) all getting 4xx, then I don't
see how the sender reached the DATA state (for the DATA 5xx).

Once a 4yx goes back to a recpiient as a RCPT response that
recipient is no longer under consideration by the server
and no subsequent responses refers to them at all.

Okay.  But if there are no recipients under consideration at
all the DATA would be rejected with a 503, or wouldn't it ?  

| If there was no MAIL, or no RCPT, command, or all such commands were
| rejected, the server MAY return a "command out of sequence" (503) or
| "no valid recipients" (554) reply in response to the DATA command.

JohnL's strawman is about a case where the DATA got a 354,
and the final dot after data got a 5xx.  That's also what
I'm talking about.  

*If* Hector or SM talk about "got not 354 after DATA" it
would be different...  But there is no 4xx directly after
DATA, therefore I think they meant "DATA 354 message. 5xx".

The single recipient example that best illustrates this 
is one involving pipelining:
 
   C: MAIL FROM:<a>
   C: RCPT TO:<b>
   C: DATA
   S: 250 Sender OK
   S: 452 Recipient over quota
   S: 550 No valid recipients

ACK, here you have 5xx instead of 354, not 5xx after 354.
That is a different story, and a clear MAY RETRY.  Just
in case, 2821bis apparently wants 554 here, not 550.

SM's idea needs more rows to reflect eight scenarios
of "mixed" RCPT outcomes.
 
Nope, it doesn't.

From my POV it does:  For an "all RCPT got 4xx" scenario
I would never arrive at a "DATA 354 message. 5xx" outcome.

IOW I fear Hector's table was an over-simplification, and
important cases like your pipelining and JohnL's strawman
aren't covered.

In the extended table I can spot your pipelining example:

| only 4xx  -/-        -/-        -/-        try again

In the extended table I also find the strawman question:

| some 2xx  accepted   try again  rejected 
|  and 4xx  try again  try again  TRY AGAIN  <==
|  and 5xx  rejected   rejected   rejected

The upper-case TRY AGAIN would fall under a SHOULD NOT in
2821(bis), however, I'm still curious if you'd support it.

 Frank