At 10:26 pm -0400 9/8/2008, Robert A. Rosenberg wrote:
In discussions here there is a scenario given where a MAIL-FROM, one
or more RCPT-TOs, and a DATA commands are sent as a single PIPELINE
burst thus going into DATA more before the server has responded to
the MAIL-FROM and RCPT-TO commands. This is IMO a BUG (or at least a
Design Flaw) on the part of the MUA which should NEVER send that
DATA under the assumption that the MAIL-FROM and RCPT-TOs will be
accepted.
Indeed, if the sender wants to send the DATA command as part of the
burst it should instead do so under the assumption that the DATA
command SHOULD be refused if the MAIL FROM or all the RCPT TO
commands are refused, and that if for some reason the DATA command is
still accepted the sender can just send a single dot.
From section 3.1 of RFC 2920:
Client SMTP implementations that employ pipelining MUST check ALL
statuses associated with each command in a group. For example, if
none of the RCPT TO recipient addresses were accepted the client must
then check the response to the DATA command -- the client cannot
assume that the DATA command will be rejected just because none of
the RCPT TO commands worked. If the DATA command was properly
rejected the client SMTP can just issue RSET, but if the DATA command
was accepted the client SMTP should send a single dot.
From section 3.2 of RFC 2920:
A server SMTP implementation that offers the pipelining extension:
(3) SHOULD issue a positive response to the DATA command if and
only if one or more valid RCPT TO addresses have been
previously received.
Glenn.