在postfix中检查已validation发件人的标头

我的用户通过SASLauthentication发送带SMTP AUTH的电子邮件。 不幸的是,他们的邮件将被Amavis标记为NoBounceOpenRelay

所以我把它设置为postfix main.cf

 smtpd_sasl_authenticated_header = yes 

是否可以告诉amavis检查这个邮件头,所以我可以使用policy_bank反弹拒绝包含垃圾邮件的邮件?

看起来你的情况与Amavisd文档中的这个例子类似

如果由于某些原因,SASL用户连接到端口25,作为一种替代方法,您可以让Postfix'$ mynetworks和SASL auth发送者的所有客户端绕过检查,并让其他所有内容落入设置content_filter的catchall。

 #main.cf content_filter = smtp-amavis:[127.0.0.1]:10026 smtpd_data_restrictions = reject_unauth_pipelining permit_mynetworks permit_sasl_authenticated check_client_access regexp:/etc/postfix/filter-catchall.regexp # /etc/postfix/filter-catchall.regexp: /^/ FILTER smtp-amavis:[127.0.0.1]:10024 

在这种模式下,

  • SASL用户将通过permit_sasl_authenticated允许,因此它将落入content_filter参数,即content_filter = smtp-amavis:[127.0.0.1]:10026
  • 其他电子邮件将落入catchall check_client_access regexp:/etc/postfix/filter-catchall.regexp 。 所以,它会通过smtp-amavis:[127.0.0.1]:10024。

最后一部分是在10024和10026端口configuration单独的策略库。


以上设置可以扩展为允许基于其他因素的白名单,例如:SASL用户名和发件人域。

  • 对于SASL用户名,您可以在permit_sasl_authenticated之前使用check_sasl_access 。 注意:此function适用于Postfix 2.11及更高版本。

     # main.cf ... check_sasl_access hash:/etc/postfix/amavis-bypass-sasl permit_sasl_authenticated ... #/etc/postfix/amavis-bypass-sasl # Use this when smtpd_sasl_local_domain is empty. username FILTER smtp-amavis:[127.0.0.1]:10026 # Use this when smtpd_sasl_local_domain=example.com. [email protected] FILTER smtp-amavis:[127.0.0.1]:10026 
  • 对于发件人域,您可以使用check_sender_access

     # main.cf ... check_sender_access hash:/etc/postfix/amavis-bypass-sender permit_sasl_authenticated ... #/etc/postfix/amavis-bypass-sasl # Use this when smtpd_sasl_local_domain is empty. internal.example.com FILTER smtp-amavis:[127.0.0.1]:10026 # Use this when smtpd_sasl_local_domain=example.com. whitelist.example.org FILTER smtp-amavis:[127.0.0.1]:10026