使用 Postfix 阻止发送邮件到特定地址

使用 Postfix 阻止发送邮件到特定地址

如何使用 Postfix 阻止向特定地址发送邮件?

我已成功使用 部分阻止了外发电子邮件header_checks。但是,header_checks 不涵盖 BCC。

我也测试了这个解决方案:http://www.linuxmail.info/postfix-restrict-sender-recipient/ 但它不起作用。

答案1

正如所述访问(5),只需将 check_recipient_access 映射添加到 smtpd_recipient_restrictions 即可;如果您也希望为自己的用户阻止这些收件人,请确保将其放置在permit_mynetworks 和/或 permit_sasl_authenticated。

smtpd_recipient_restrictions = check_recipient_access hash:/etc/postfix/bad_recipients, permit_mynetworks, reject_unauth_destination, permit

在 /etc/postfix/bad_recipients 中:

[email protected] REJECT We don't like this user
[email protected] REJECT Delivery to this user is prohibited

答案2

要阻止任何人(本地(mail/sendmail 命令)系统用户和 SMTP 用户)向您无法信赖的电子邮件地址发送邮件smtpd_recipient_restrictions。您需要将限制置于qmgr阶段中。为此,我发现这样transport_maps做效果很好。

main.cf

transport_maps = pcre:/etc/postfix/transport_maps

transport_maps

/^user(\+[^@]+)?@host\.com/ discard:
/.*/ :

也许有更好的解决方案,但这个解决方案似乎适用于所有交付类型。仅供参考,该正则表达式支持[email protected][email protected]假设+分隔符。它可以防止收件人、抄送和密送。

还要确保您的 postfix 已启用 pcre 支持。在基于 Debian(Ubuntu 等)的操作系统上,该功能由 postfix-pcre 包提供。

答案3

最简单的方法是不需要正则表达式支持:

  1. main.cf如果尚不存在,请添加:

    transport_maps = hash:/etc/postfix/transport
    
  2. 根据需要在文件“/etc/postfix/transport”中添加行

    # silently discard a single address
    [email protected] discard
    
    # silently discard an entire domain
    example.net discard
    
    # return an error to the sending MTA
    [email protected] error:Invalid user
    
  3. 运行 postmap

    postmap /etc/postfix/transport
    
  4. 重新加载 postfix 服务(或者等待约 1 分钟,Postfix 将自动更新)

    service postfix reload
    

答案4

我们有一个针对这种情况的用例,我们需要阻止某些用户接收(选择加入)来自列表的邮件。拒绝按列表中的“取消订阅”链接的用户用户请求邮件(所以,不是垃圾邮件)。一段时间后,我们收到了来自 ISP 的滥用邮件,这些邮件遭到那些奇怪的懒惰用户的投诉,这真是浪费时间。所以我们决定为 postfix 创建一个映射。但是,将它们放入 REJECT 中会给通过 postfix 向他们发送邮件的软件带来新问题,所以我们最终做的是映射这个:

[email protected] DISCARD Delivery to this user is ignored as a result of annoying abuse-responses from even lazier ISPs.

相关内容