ietf-smtp
[Top] [All Lists]

Re: retry question

2008-08-05 15:48:29

ned+ietf-smtp(_at_)mrochek(_dot_)com wrote:
If a server give a 4yz reply to a RCPT command, should it give up on the
entire transaction and retry it later, or should it only retry those
recipients that were not acceptedd?

It depends on whether or not any recipients were accepted. If any were accepted
the message data needs to be sent and if accepted only the ones that gave a 4yz
error should be retried. If all recipients got a 4yz you should abort and retry
the whole thing later.

The former strategy of simply aborting is quite problematic because it allows
one failing recipient to block messages to other people. In fact since a client
implemented this way can be gamed to deny service I'd have to call it a
security issue.

The latter is the common and traditional behaviour, but there's not much
in *821 that says how a client should behave in this situation.

It's just common sense given the possibility of per-recipient temporary errors,
such as over quota conditions. (Like it or not, quotas are a fact of life for a
lot of people, and pushing quota errors back to the ingress MTA is pretty
common.)

There's
even some text in section 4.5.4.1 which suggests the other behaviour is
correct: "When a mail message is to be delivered to multiple recipients,
and the SMTP server to which a copy of the message is to be sent is the
same for multiple recipients, then only one copy of the message SHOULD be
transmitted."

All this is saying is that it is a good idea not to use separate transactions
to send the same messages to multiple recipients on the same destination host
unless you have to. It says nothing about the temporary failure case and how to
handle it.

Is this an erratum?

I suppose adding a note to the effect that this doesn't apply when some
recipients but not all experience temporary failures wouldn't hurt, but really,
calling this an error is a stretch IMO.

+1

In the end, I think it boils down to how an implementor would design to satisfy the functional specs.

On the automated side:

Does it create 1 copy per recipient on the sender outbound queue?

    This will promote the singular and retry transactions.

Does it create 1 copy for all, with a separate distribution list, with the design to reduce the distribution list until all are resolved, positively or permanently rejected?

    This would seem ideal and I guess what is expected or implied?

Does it skip those 4yz responses and says "Sorry, you are not making this distribution, this time around? I'll try again for a different transaction. Let me know when you feel better."

On the MUA side:

I have to double check this for 5yx responses, but I've seen my Thunderbird not continue when one of the CC addresses were invalid (not accepted by the MSA). Only when corrected or removed from the list, did it continue.

So there is a degree of variant considerations here.

--
Sincerely

Hector Santos, CTO
http://www.santronics.com
http://santronics.blogspot.com

<Prev in Thread] Current Thread [Next in Thread>