服务器中似乎有一些脚本以 apache 用户身份执行并发送邮件。查看 ps aux 输出,我们发现 sendmail 可执行文件以 apache 用户身份执行,但我们无法找到执行此操作的具体脚本。
处理这种情况的理想方法是什么?
答案1
我认为您正在寻找 php.ini (仅限 php 5.3+) 中的 mail.log 设置,它将记录所有 mail() 函数调用,包括发起调用的脚本:
; The path to a log file that will log all mail() calls. Log entries include
; the full path of the script, line number, To address and headers.
;mail.log =
; Log mail to syslog;
;mail.log = syslog
答案2
如果您在服务器上运行 PHP,则可以使用以下语法来追踪原始电子邮件脚本。将以下行放入 php.ini 中
mail.add_x_header = On
mail.log = /var/log/phpmail.log
上述指令将添加带有原始 php 脚本的标头,如下所示
X-PHP-Originating-Script: 456:mail.php
以及在文件 /var/log/phpmail.log 中写入日志
mail() on [/var/www/html/project/tmp/mail.php:456]: To: [email protected] -- Headers: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed; delsp=yes Content-Transfer-Encoding: 8Bit X-Mailer: Sender: [email protected] From: [email protected]