标准解决方案是使用header_checks选项。这会工作,在邮件然而,如果我们过滤接收到的所有邮件传入和传出线(因为会做),我们可能会失去接受邮件头发送给我们,这可能是重要的疑难解答。为了解决这个问题,我们将header_checks
仅将邮件应用于不可能发送给我们的邮件-发送到提交端口的邮件(您正在使用提交端口,不是吗?)。
这篇文章解释了如何header_checks
专门应用于提交端口。我们需要做的是将cleanup_service_name选项传递给提交服务,以便我们可以设置一个新的清理服务“ subcleanup”。的相关部分/etc/postfix/master.cf
可能如下所示:
submission inet n - - - - smtpd
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
-o milter_macro_daemon_name=ORIGINATING
-o cleanup_service_name=subcleanup
现在,我们可以将header_checks
选项传递给新的清理服务。的那部分/etc/postfix/master.cf
可能看起来像这样:
cleanup unix n - - - 0 cleanup
subcleanup unix n - - - 0 cleanup
-o header_checks=regexp:/etc/postfix/submission_header_checks
最后,我们需要创建一个文件/etc/postfix/submission_header_checks
,其中将包含用于过滤违规的Received标头行的正则表达式。您在文件中放置哪个正则表达式取决于您是否smtpd_sasl_authenticated_header
设置了。
如果smtpd_sasl_authenticated_header
为yes
,则使用:
/^Received:.*\(Authenticated sender:/ IGNORE
否则,请使用:
/^Received:.*\(Postfix/ IGNORE
(感谢Dominic P和Bryan Drewery展示了如何处理第二种情况。)
postmap submission_header_checks
吗?