我正在尝试配置 Sophos Appliance (SEA) 来处理反垃圾邮件。此服务的一部分是收件人验证,它会询问下游 MTA(在我们的例子中是 Exchange 2010)以查找有效收件人。
这似乎存在一个问题,与 Exchange 2010 无法正确处理管道 SMTP 命令有关。
SMTP 对话如下:
Escape character is '^]'.
220 <my domain> Microsoft ESMTP MAIL Service ready at Sun, 16 Nov 2014 14:07:15 +1100
EHLO <valid domain>
250-<my downstream server Hello [<an ip>]
250-SIZE
**250-PIPELINING**
250-DSN
250-ENHANCEDSTATUSCODES
250-STARTTLS
250-AUTH
250-8BITMIME
250-BINARYMIME
250-CHUNKING
250-XEXCH50
250 XSHADOW
然后,为了验证收件人,SEA 在单个数据包中发送以下内容(通过数据包跟踪验证
MAIL FROM:<a temp but valid email> SIZE=278
RCPT TO:<validrecipient> ORCPT=rfc822;validrecipient
RSET
QUIT
然而,Exchange 服务器似乎忽略了前 3 个命令,只响应了 QUIT
221 2.0.0 Service closing transmission channel
现在,我可以暂时关闭中间收件人验证,但更紧迫的问题是为什么 Exchange 不能正确支持流水线。一个想法是 RFC2920 第 4 节建议不能向 MAIL FROM 命令添加任何参数以使流水线正常工作。
不知道是不是这样?我会手动测试,不过如果有其他建议就更好了。
谢谢
答案1
我简单地禁用了接收连接器上的管道功能,解决了这个问题,结果令人满意。除非我听到其他消息,否则我会假设这是 Microsoft 在 Exchange 2010 中的管道实现/ESMTP 实现中的一个错误。
答案2
这也发生在我身上,禁用流水线对我有用。
Set-ReceiveConnector "Connector Name" -PipeliningEnabled $false
对我来说,发件人正在流水线传输Mail From
,Rcpt To
,然后Data
。 Exchange 2010 会回复Mail From
,Rcpt To
,但不会data
,并且发件人会收到“超时”退回邮件。