Hello folks,

Postfix appears to be breaking RFC 5321 by speculatively injecting
the entire envelope session passing over replies from the server.

In src/smtp/smtp_proto.c , smtp_loop() handles the delivery loop by
deliberately "pipelining" commands and replies in separate queues.

Only the SMTP greeting is waited for in the whole envelope, but
curiously, RFC 5321 appears to specify the opposite:

in 4.3.1 :
"""
One important reply is the connection greeting. [..] The sender
SHOULD wait for this greeting message before sending any commands.
"""

"""
The communication between the sender and receiver is an alternating
 dialogue, controlled by the sender. As such, the sender issues a command
and the receiver responds with a reply.  Unless other arrangements are
negotiated through service extensions, the sender MUST wait for this
response before sending further commands.
"""

I didn't track back in which version this behavior originates, but it still
appears to be present in 2.7.0 .

cheers!
mij

Reply via email to