From: Mij on
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

From: Wietse Venema on
Mij:
> Hello folks,
>
> Postfix appears to be breaking RFC 5321 by speculatively injecting
> the entire envelope session passing over replies from the server.

You MUST show a packet trace to support this claim.

Wietse

From: Matt Hayes on


On 04/21/2010 09:45 PM, Mij wrote:
> 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


Mij,

You said in the #postfix channel that you had a pcap file, might want to
include it.

-Matt

From: Wietse Venema on
Mij:
> Hello folks,
>
> Postfix appears to be breaking RFC 5321 by speculatively injecting
> the entire envelope session passing over replies from the server.

Oh, and while you're collecting the evidence, you may also want to
read up on RFC 2920 (SMTP Pipelining).

Wietse

From: "N. Yaakov Ziskind" on
Victor Duchovni wrote (on Thu, Apr 22, 2010 at 01:28:24AM -0400):
> Also, at this point, with Postfix driving such a large share of the
> Internet email infrastructure,

Can you, please, elucidate on this? Some numbers, perhaps, or a list of
Fortune XX companies that use it? It would be useful in selling the
suits.

Thanks!

--
_________________________________________
Nachman Yaakov Ziskind, FSPA, LLM awacs(a)ziskind.us
Attorney and Counselor-at-Law http://ziskind.us
Economic Group Pension Services http://egps.com
Actuaries and Employee Benefit Consultants