检查 Postfix 中已验证发件人的标头

检查 Postfix 中已验证发件人的标头

我的用户通过 SASL 身份验证使用 SMTP AUTH 发送电子邮件。不幸的是,他们的邮件会被NoBounceOpenRelayAmavis 标记为。

所以我将其设置为 postfix main.cf

smtpd_sasl_authenticated_header = yes

是否可以告诉 amavis 检查此电子邮件标题,以便我可以policy_bank使用弹跳或者拒绝包含垃圾邮件的邮件?

答案1

看起来你的情况类似于Amavisd 文档中的这个示例案例

如果由于某种原因 SASL 用户连接到端口 25,作为替代方法,您可以让 Postfix 的 $mynetworks 和 SASL 身份验证发送方中的所有客户端绕过检查,并让其他所有内容落入设置 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配置单独的策略库。


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

  • 对于 SASL 用户名,您可以使用检查 sasl 访问在 permit_sasl_authenticated 之前。注意:此功能适用于 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
    
  • 对于发件人域名,您可以使用检查发送者访问

    # 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
    

相关内容