我刚刚注意到我的后缀设置已经有一段时间了。
当从德国免费邮件提供商 web.de 接收(一些)邮件时,在传递给 MDA 的邮件后缀中会发现以下标头:
Received: from mout.web.de (unknown)
by mail.<mydomain>.de(Postfix 2.9.6/8.13.0) with SMTP id unknown
Wed, 29 Jan 2014 09:00:14 +0100
(envelope-from <[email protected]>
Received: from 3capp-webde-bs39.server.lan ([172.19.170.39]) by
mriweb.server.lan (mriweb002) with ESMTP (Nemesis) id
***** for <[email protected]>; Wed, 29 Jan 2014 09:01:01
+0100
Received: from [##.###.##.###] by 3capp-webde-bs39.server.lan with HTTP; Wed
Jan 29 09:01:01 CET 2014
这是日志中的内容:
postfix/smtpd[16230]: connect from mout.web.de[212.227.17.11]
postfix/smtpd[16230]: 5C17E14C10A6: client=mout.web.de[212.227.17.11]
postfix/cleanup[16238]: 5C17E14C10A6: message-id=<trinity-b7f12c80-a158-43f9-8266-583a7b0533bd-############@3capp-webde-bs39>
postfix/qmgr[4490]: 5C17E14C10A6: from=<[email protected]>, size=6402, nrcpt=1 (queue active)
postfix/smtpd[16230]: disconnect from mout.web.de[212.227.17.11]
postfix/lmtp[16242]: 5C17E14C10A6: to=<[email protected]>, relay=mail.<mydomain>.de[private/dovecot-lmtp], delay=1, delays=0.81/0/0/0.22, dsn=2.0.0, status=sent (250 2.0.0 <[email protected]> qO51H+K06FKAPwAAsCbVSQ Saved)
postfix/qmgr[4490]: 5C17E14C10A6: removed
问题是 spamassassin 现在尝试对第一跳 IP 进行 RBL 检查,因为最后一跳的 IP 地址不可用,而第二个是专用网络。第一跳当然是动态的,因此所有邮件都被标记为垃圾邮件。
当尝试从我自己的 web.de 帐户中复制此内容时,这些行如下所示:
Received: from mout.web.de (mout.web.de [212.227.17.12])
by mail.<mydomain>.de (Postfix) with ESMTP id ***
for <[email protected]>; Sat, 8 Feb 2014 17:26:11 +0100 (CET)
这正是我所期望的结果。
关于为什么 postfix 没有将客户端 IP 放在 Received 标头中的任何线索?
谢谢你的帮助!
问题出在 spamass-milter 中(在spamass-milter.cpp中搜索“Received: from” )。这在某种程度上是由于 milter 在传入的 SMTP 连接关闭之前运行并且 postfix 尚未写入其 Received-Headers 并且 spamass-milter 需要做一些在某些情况下似乎被破坏的魔法。
不幸的是,我没有必要的时间或知识在 spamass-milter 中进一步调试此问题,所以我完全放弃了 milter 并继续以“旧式”方式使用 SpamAssassin:
与 milter/lmtp 设置相比,这被记录为有点慢,并且它不会让您拒绝在 SMTP 会话中超过特定 SpamAssassin 分数的退回邮件(这对我来说很好)。
感谢 Julian帮助调试。
“看,我修好了……” - https://bz.apache.org/SpamAssassin/show_bug.cgi?id=7909