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:
< 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.
f.anthony.n.finch <dot(_at_)dotat(_dot_)at> 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.