ietf-smtp
[Top] [All Lists]

Re: retry question

2008-08-05 14:48:49

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.

                                Ned

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