如何仅限制PHP5 / Apache发送邮件给本地用户

我需要一些帮助。 我正在运行最新的稳定的Ubuntu,它托pipeApache / PHP5,并提供电子邮件。 我为其他用户托pipe了一些WordPress站点,并且已经进行了几个月的战争,目的是对付在目录上发现不好的权限的攻击者,并使用它来上传php脚本以通过服务器发送垃圾邮件

当然,我正在采取措施来自动化WordPress的安全性,但也希望取消PHP5 / Apache将邮件发送到本地不可交付的任何地址的能力。

我正在configuration一个新的服务器来执行此操作。 我将运行带有Sendmail或Postfix选项的最新版本的MailScanner。 这将专门针对lockingwwwdata用户只发送本地。

我已经设置了PHP5邮件日志logging,但需要更进一步,因为当垃圾邮件开始stream动时,我的主机提供商变得严酷。 到目前为止,我还没有任何运气通过谷歌find答案。 目前为止,我发现的只有禁用PHP的邮件function,或者logging,审查,防火墙IP和删除违规脚本。 任何帮助表示赞赏。

这个答案假定postfix mta。

在php.ini中添加:

mail.add_x_header = 1 

在/etc/main.cf中添加:

 header_checks = pcre:/etc/postfix/header_checks.pcre 

/etc/postfix/header_checks.pcre的内容

 if /X-PHP-Originating-Script.*/ !/To:[a-zA-Z0-9._%+-]+(@(localdomain1.com|localdomain2.com))?$/ REJECT PHP Mail is only allowed to submit mail for local delivery. endif 

此处使用的正则expression式涵盖电子邮件地址本地部分中的常用字符,但不包括每个RFC,YMMV的有效字符。