从postfix发送的邮件中删除标题

在Postfix守护进程发送的邮件中有一个非常恼人的标题,我正在寻找一种方法来摆脱它:

Received: by somedomain.net (Postfix, from userid 509) 

有点偏离主题,但也可以从消息ID中删除主机名,只留下域?

 Message-ID: <[email protected]> 

看来serverfault已经得到了一个有意义的答案:
main.cf使用header_checks指令。

查看完整的答案 。

我build议你也阅读评论,不build议系统地删除标题。

您可以使用header_checks来IGNORE标题,或者,更好的是,使用正则expression式将其replace为X-Received或类似的东西。

也就是说,如果您删除了Received:行,请记住它可能会增加该服务器发送的电子邮件中的垃圾邮件概率。 标题检查通常是贝叶斯垃圾邮件分析的一部分。

您可以设置postfilter。 你的perl / sed技能如何?

你需要做的第一件事就是编写一个脚本,它将接受STDIN上的原始消息,并根据需要修改消息(我假定你已经具备了这个function)。 然后configurationpostfix将所有消息作为filter传递给该脚本。 作为脚本最后一件事,将消息传回给后缀。

为了编写脚本,我build议使用Perl。 它有一个非常强大的正则expression式引擎。 你也可以使用Net::SMTP重新提交给postfix easy。

以下是如何configurationpostfix来执行此操作:

在您的smtpd行的master.cf ,更改最后一部分以包含filter。

原始行:

 smtp inet n - n - - smtpd 

新队:

 smtp inet n - n - - smtpd -o content_filter=myfilter 

将您的filter服务添加到master.cf

 myfilter unix - nn - 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= 

当然,如果你真的想要的话,你可以在postfix中修改现有的头文件。 但是IIRC,大多数MTA不会添加该头,除非它已经被MUA添加。

如前所述,Postfix header_checks是这样做的地方。 我使用这个代理服务器在Amazon EC2云中发送邮件的邮件中继。 反垃圾邮件系统讨厌find任何与EC2有关的东西,所以这种掩饰是令人遗憾的必要的。 也就是说,我将来可能会复制生产networking的这个configuration。 邮件声誉是一个棘手的业务,并掩盖所有的邮件,以便它似乎来自less量的中继使信誉pipe理更容易。

这里是一个示例header_checks snippit供您考虑。

/ ^(收到: 。amazonaws.com。 )/ REPLACE X-Cloak- $ 1

这发现并抓住“Received:host1.amazonaws.com”并用“X-Cloak-Received:host1.amazonaws.com”代替。