On Wed, 6 Aug 2008, Tony Finch wrote:
> On Tue, 5 Aug 2008, Ned Freed wrote:
> >
> > 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.
>
> Where is the text that explains this to an implementer without enough
> common sense or experience with existing SMTPs?

It occurs to me that the bad implementation that triggered this thread
must not have implemented pipelining, or implemented it in a strange
manner. A properly pipelined transaction starts:

 > MAIL FROM:<s>
 > RCPT TO:<a>
 > RCPT TO:<b>
 > DATA
 < 250 ok
 < 250 ok
 < 450 try later
 < 354 go ahead

So the pipelined client commits to sending the message data if any of the
recipients are accepted, and cannot abort a transaction except by dropping
the connection. The bad client aborts transactions with mixed RCPT replies
so (assuming correct command/reply handling) it must be non-pipelined or
partially pipelined in order to issue a RSET or QUIT command instead of
DATA after seeing mixed replies to RCPT.

Tony.
-- 
f.anthony.n.finch  <[EMAIL PROTECTED]>  http://dotat.at/
SOLE LUNDY FASTNET: WEST OR SOUTHWEST 5 TO 7, PERHAPS GALE 8 LATER IN SOLE AND
FASTNET. ROUGH OR VERY ROUGH. RAIN, FOG PATCHES AT FIRST. MODERATE OR POOR,
OCCASIONALLY VERY POOR AT FIRST.

Reply via email to