后缀 – 不同的头检查传入和传出的邮件

我怎样才能应用不同的header_checks传入和outoing邮件使用postfix?

默认情况下,所有header_checks都应用于传入和传出。

header_checks是通过cleanup完成的,所以我不认为你可以将它应用于传入或传出。

smtp_header_checks仅适用于发送邮件(smtp客户端)

如果有一个邮件头可以用来标识哪个是传入邮件,哪个是传出邮件,使用postfix 3.2或更高版本,可以短路header_checks ,如:

 /^Received: .*detect_outgoing_mails/ PASS /^X-Something: this rule will only match on incoming mails/ HOLD 

(但它仍然给你只能匹配所有的选项(像以前一样)或匹配只有传入或只传出的邮件,并需要相对较新的后缀版本)

作为一个更好的select,如果你总是可以在一个端口(提交:tcp / 587)上接收“外发”邮件(来自你作为邮件中继服务器的客户端的邮件)和tcp / 25上的收到邮件,你应该能够使用master.cf来覆盖每个header_checks,如下所示:

 submission inet n - n - - smtpd -o smtpd_enforce_tls=yes -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject -o header_checks=pcre:/etc/postfix/header_checks.relay smtp inet n - - - 200 smtpd -o strict_rfc821_envelopes=yes -o header_checks=pcre:/etc/postfix/header_checks.mx 

但是如果你的客户也使用tcp / 25作为世界的其他地方,那么这样做是行不通的。 如果他们这样做,你可以为他们设置替代端口,它会工作,但是可行性取决于你说服所有用户改变设置的能力。

如果你有额外的IP备用,你也可以使用户对它们大多透明:假设你有smtp.example.org作为用户的中继服务器,并且作为你的MX aaaa ,你可以把域的MX更改为IP bbbb ,然后在aaaa上使用一个smtpd服务器进行一组头检查,在另一个smbpb服务器上使用另一组头检查。 如果你只为192.168.xx / 24的用户中继,你甚至可以保持相同的DNS名称,并使用DNS视图来呈现内部客户端的内部IP,以及外部IP给世界其他地方。

第三种方式是使用后缀FILTERfunction,而不是使用header_check – 而不是简单的正则expression式匹配,它会将整个消息转发到您的自定义脚本进行处理,然后通过检查标题可以轻松区分传入和传出邮件,然后执行任何操作后处理如想。

如果我正确理解你的问题,你应该可以通过/etc/postfix/header_checks文件来做到这一点,就像这样的外出邮件/^From: "spammer/ REJECT /^To: [email protected]/ REDIRECT [email protected] /^From: "spammer/ REJECT /^To: [email protected]/ REDIRECT [email protected]

我很久以前做过,所以不记得所有的细节,但你可以从这里得到更多的信息DOC

这将允许你根据邮件是传入还是传出来定义一个动作,我希望这可以回答你的问题。