我的 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_access
并check_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