G'day,

I've been investigating an issue with using Sender Address Verification
using address_verify_sender.

I've established that there is a problem with the implementation of
pipelining used by Microsoft's servers, here's an example of the broken
behaviour:

# telnet 65.55.88.22 25
Trying 65.55.88.22...
Connected to mail.global.frontbridge.com (65.55.88.22).
Escape character is '^]'.
220 TX2EHSMHS029.bigfish.com Microsoft ESMTP MAIL Service ready at Thu, 25 Nov 
2010 06:30:43 +0000
EHLO foo.com
250-TX2EHSMHS029.bigfish.com Hello [150.101.177.132]
250-SIZE 157286400
250-PIPELINING
250-ENHANCEDSTATUSCODES
250-STARTTLS
250-AUTH
250-8BITMIME
250-BINARYMIME
250 CHUNKING
RSET
RSET
RSET
RSET
QUIT
250 2.0.0 Resetting
221 2.0.0 Service closing transmission channel
Connection closed by foreign host.

What is expected is 4 consequtive '250 2.0.0 Resetting' lines, but only
1 is seen. This is not limited to RSET commands, but this is the
simplest test I could compose that illustrates the problem. 

It seems that the issue is that if you send several commands pipelined,
and one of those commands is a 'QUIT', the server skips ahead to the
QUIT and closes the connection. We've verified that this is a major
problem with doing sender address verification as that sends MAIL FROM,
RCPT TO, RSET, QUIT in one set of pipelined commands, and the server
will reliably respond to the MAIL FROM, then send the 221 and close the
connection.

What I'm trying to figure out how to do is selectively ignore the
250-PIPELINING response from the server, either based on the EHLO
response (*.bigfish.com is a common factor between these connections) or
simply ignore 250-PIPELINING for all sender address verification
connections.

I can disable it globally using smtp_discard_ehlo_keywords but does
anyone have any ideas of how to selective disable pipelining? I'd rather
not turn it off globally.

-- 
Regards,
Stephen Thorne
Development Engineer
Netbox Blue

Reply via email to