如何根据“收件人”地址过滤和拒绝 Postfix 中的邮件

如何根据“收件人”地址过滤和拒绝 Postfix 中的邮件

我的 CentOS 服务器配置为仅发送邮件。我需要一个过滤器来拒绝发往选定目的地的邮件。例如,如果我使用

> mail -s "test"  [email protected]

我希望这封邮件被拒绝,不被发送。我探索了

smtpd_recipient_restrictions

标记 [和其他人],但我无法让它工作。日志仍然显示邮件已发送并从队列中删除。

在 main.cf 文件中,在 smtpd_recipient_restrictions 下,我有:

> check_sender_access hash:/etc/postfix/maps/access_sender

例如,我有

@trash.com     REJECT

我想补充一点,该服务器会将邮件转发到另一台服务器,但我希望在转发到主机之前可以过滤掉不需要的邮件。请帮忙。谢谢

答案1

check_sender_access选项仅适用于“发件人”地址。要根据“收件人”地址进行过滤,您可以采用以下两种方式之一进行操作。


如果您只想过滤“收件人”地址,只需更改为check_sender_accesscheck_recipient_access保留当前的哈希文件。


一种更具扩展性的过滤方法是通过标题。将以下内容添加到您的main.cf文件中:

header_checks = regexp:/etc/postfix/header_checks

然后在创建以下文件/etc/postfix/header_checks

/^To:.*[email protected].*$/ DISCARD blocked
/^To:.*[email protected].*$/ DISCARD blocked
/^To:.*[email protected].*$/ DISCARD blocked
/^To:.*[email protected].*$/ DISCARD blocked

并重新启动 Postfix。

笔记-DISCARD仍会显示发送消息,但消息将被默默丢弃。如果您想强制退回消息,请使用REJECT


参考文档:

http://www.postfix.org/postconf.5.html#smtpd_recipient_restrictions http://www.postfix.org/header_checks.5.html

相关内容