Postfix 守护进程发送的邮件中有一个非常烦人的标题,我正在寻找一种方法来摆脱它:
Received: by somedomain.net (Postfix, from userid 509)
有点离题,但是是否也可以从 Message-ID 中删除主机名,只留下域?
Message-ID: <[email protected]>
答案1
答案2
您可以使用 header_checks 来忽略标题,或者更好的是,使用正则表达式 X-Received 或类似内容来替换它。
话虽如此,如果您删除了“已接收:”行,请记住,这可能会增加该服务器发送的电子邮件的垃圾邮件概率。标头检查通常是贝叶斯垃圾邮件分析的一部分。
答案3
您可以设置帖子队列过滤器。您的 perl/sed 技能如何?
您需要做的第一件事是编写一个脚本,该脚本将接受 上的原始消息STDIN
,并根据需要修改该消息(我假设您已经具备此功能)。然后配置 postfix 将所有消息作为过滤器传递给该脚本。作为脚本执行的最后一件事,将消息传回 postfix。
对于编写脚本,我建议使用 perl。它有一个非常强大的正则表达式引擎。您还可以使用它Net::SMTP
来轻松地重新提交回 postfix。
以下是如何配置 postfix 来执行此操作:
在master.cf
您的smtpd
行中,更改最后一部分以包含过滤器。
原文如下:
smtp inet n - n - - smtpd
新队:
smtp inet n - n - - smtpd -o content_filter=myfilter
将您的过滤服务添加到master.cf
:
myfilter unix - n n - 3 pipe
flags= user=nobody argv=/usr/local/bin/myfilter.pl localhost 25252 $sender $recipient
请注意,这里的发件人和收件人来自信封不是身体。当将消息传回 Postfix 时,您需要将其作为信封的一部分。
最后添加一个未过滤的 smtp 接收器来master.cf
接受新修改的消息:
local:25252 inet n - n - - smtpd
-o content_filter=
答案4
正如所提到的,Postfix header_checks 是执行此操作的地方。我在代表 Amazon EC2 云中的服务器发送邮件的邮件中继上使用它。反垃圾邮件系统讨厌找到与 EC2 相关的任何内容,因此这种伪装很遗憾是必要的。话虽如此,我可能会在将来为生产网络复制此配置。邮件信誉是一项棘手的工作,伪装所有邮件以使其看起来来自少数中继使信誉管理更容易。
以下是一个 header_checks 代码片段示例,供您参考。
/^(已收到: .amazonaws.com。)/ 更换 X-Cloak-$1
这将查找并抓取“Received: host1.amazonaws.com”并将其替换为“X-Cloak-Received: host1.amazonaws.com”。