我试图阻止我的 CentOS 6.5 服务器向特定的收件人列表发送电子邮件。( [email protected]
,[email protected]
等等)。
我已经像这样配置了后缀:
/etc/postfix/main.cf:
smtpd_recipient_restrictions = check_recipient_access hash:/etc/postfix/recipient_access
/etc/postfix/recipient_access:
[email protected] REJECT
[email protected] REJECT
DB是通过以下方式构建的:
postmap hash:recipient_access
后缀被重新加载
service postfix reload
php.ini 是:
sendmail_path = /usr/sbin/sendmail -t -i
不幸的是,这似乎不起作用。如果我使用 PHP mail() 向 发送邮件[email protected]
,它会像往常一样发送。
我错过了什么?
这是因为
smtpd_*_restrictions
只适用于smtpd
daemon 通过SMTP
事务接收的邮件。sendmail
使用命令提交的邮件按命令在队列中排队,maildrop
由postdrop
命令直接提取pickup
和发送cleanup
。您不能限制通过
sendmail
命令提交的邮件的收件人。此问题的唯一解决方案是强制您的应用程序仅通过
smtp
事务发送邮件。您可以使用其他 sendmail 脚本(如msmtp
mail()
)通过 smtp传输邮件。sendmail_path
在php.ini 文件中安装 set 后:您可能会滥用
smtp_generic_maps
来转移此邮件。与您提到的其他指令不同,此指令适用于外发邮件。虽然它无法删除它,但它可以将其发送到不同的邮箱,然后您可以在其中对其采取适当的操作(例如暂停发送邮件的客户)。
在
main.cf
你会有:并在
/etc/postfix/generic
:这应该将所有此类邮件发送到您的滥用邮箱,以便您采取行动。
好的,我使用 virtual_alias_maps 解决了我想要的问题。
我在这里写过这个,但基本上你必须使用
virtual_alias_maps = hash:/path/to/myblacklist.txt
它,它会成功的。