如何使用 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
最简单的方法是不需要正则表达式支持:
main.cf
如果尚不存在,请添加:transport_maps = hash:/etc/postfix/transport
根据需要在文件“/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
运行 postmap
postmap /etc/postfix/transport
重新加载 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.