On Thu, Oct 09, 2003 at 07:00:08PM +0100, Chris Edwards wrote:
> 2003-10-09 16:59:38 H=A sender verify fail for <chang0220tai@???>
>
> 2003-10-09 16:59:38 H=A F=<chang0220tai@???> rejected RCPT
> <someuser@???>: Sender verify failed
>
> 2003-10-09 16:59:38 SMTP protocol error in "DATA" H=A valid RCPT command
> must precede DATA
>
>
> Why the protocol error ? This implies the sender issued "DATA" even
> though all the (one) recipients had been rejected.
It's to do with pipelining - an optimisation thing. The box sending the
mail sends:
packet 1: EHLO ....
packet 2: MAIL FROM:<foobar@???>
RCPT TO:<you@???>
DATA
packet 3..n: the actual data
So, instead of 5+ small packets, we manage to remove two packets from
every pipelined SMTP transaction.
The sender may only do this if, in response to EHLO it saw "PIPELINING"
in the EHLO response. If the sender didn't see this or used HELO, it
must send each command and wait for the response before sending the
next command.
I question why exim complains about a protocol violation given that
this is a legal and allowed optimisation. Sure it would be a protocol
violation if someone sent only MAIL FROM and DATA commands with no
RCPT TO.
--
Russell King (rmk@???) http://www.arm.linux.org.uk/personal/
Linux kernel 2.6 ARM Linux - http://www.arm.linux.org.uk/
maintainer of: 2.6 PCMCIA - http://pcmcia.arm.linux.org.uk/
2.6 Serial core