配置 postfix 以阻止 PHP 向特定收件人发送 mail()

配置 postfix 以阻止 PHP 向特定收件人发送 mail()

我试图阻止我的 CentOS 6.5 服务器向特定收件人列表发送电子邮件。([email protected][email protected]等等)。

我已经像这样配置了 Postfix:

/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

postfix 已重新加载

service postfix reload

php.ini 是:

sendmail_path = /usr/sbin/sendmail -t -i

不幸的是,这似乎不起作用。如果我使用 PHP mail() 向 发送邮件[email protected],邮件会像往常一样送达。

我错过了什么?

答案1

  • 因为只适用于守护进程通过事务smtpd_*_restrictions接收的邮件,使用命令提交的邮件会由命令排队,由命令直接拾取并发送给守护进程。smtpdSMTPsendmailmaildroppostdroppickupcleanup

  • 您不能限制通过sendmail命令提交的邮件的收件人。

smtp解决此问题的唯一方法是强制您的应用程序仅通过事务发送邮件。

答案2

  • 您可以使用其他 sendmail 脚本,例如邮件传输协议通过 smtp传输您的mail()邮件。

  • 安装后sendmail_path在 php.ini 文件中设置:

    sendmail_path = /usr/local/bin/msmtp -C /etc/msmtprc -t -i
    

答案3

您可能能够滥用该指令smtp_generic_maps来转移此邮件。与您提到的其他指令不同,该指令针对外发邮件进行操作。

虽然它无法删除它,但可以将其发送到不同的邮箱,然后您可以在那里对其采取适当的措施(例如暂停发送邮件的客户)。

main.cf会拥有:

smtp_generic_maps = hash:/etc/postfix/generic

并且/etc/postfix/generic

[email protected] [email protected]
[email protected] [email protected]

这会将所有此类邮件发送到您的滥用邮箱,以便您采取行动。

答案4

好的,我使用 virtual_alias_maps 按照我的要求解决了问题。

我在这里写了这篇文章但基本上你必须使用virtual_alias_maps = hash:/path/to/myblacklist.txt,它就会起作用。

相关内容