ietf-smtp
[Top] [All Lists]

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

2008-08-09 10:59:17

Hector Santos wrote:
What I missing here? Every document from 821, 1123, 2821 and 2821bis all make it perfectly clear acceptance for delivery begin only with and only with a positive DATA reply code and nothing else.

The DATA 554 response means no one will get the message and it also means that it should not try again to send this exact payload.
Almost

It means that none of the CURRENTLY VALID recipients will get the message (neither a nor b will get the message). It obviously can't mean that one of a or b won't get the message, but the other will if it is retried for them later, that would break the meaning of the error codes.

The message should not be retried with the exactly same payload (if by "payload" you mean the sender & recipients as well as the data) - it should not be retried for a, b, and c, but only for c in subsequent attempts.

An example scenario:
- a virus scanner company doesn't want to accept .EXE files except to 'samples(_at_)antivirusinc(_dot_)com'

So, someone sends a message to support(_at_)antivirusinc(_dot_)com and samples(_at_)antivirusinc(_dot_)com containing a .EXE file.

Now, just by coincidence the 'samples' mailbox is full or whatever (temporary problem). So, the receiving MTA says '250 OK you can send a message to support(_at_)(_dot_)(_dot_)', but it also says '4xy You can't send a message to samples(_at_)(_dot_)(_dot_)(_dot_) but you might be able to later, so please try again'. At this time it doesn't know what the message contains.

After the message has come in, the server says, '5xy you can't send EXE files to support(_at_)(_dot_)(_dot_)(_dot_) Sorry'

The response after the DATA only applies to the currently applicable recipients - (ie support@) - not to ones which were previously rejected. Otherwise, a 250 response after the DATA would also apply to recipients which had previously been rejected, which is obviously wrong.



If samples(_at_)antivirusinc(_dot_)com hadn't had a problem, the receiving MTA would have had to (250) accept the message (for samples(_at_)(_dot_)(_dot_)(_dot_)) and then generate a delivery failure report for support(_at_)(_dot_)(_dot_), but since it doesn't want to accept the message ONLY for support@, it can just reject that 'copy' of the message, expecting the copy for samples@ to be retried later.