答案1
您可以尝试使用 grep 查找包含邮件功能的 php 文件。例如:
grep -i "mail" *.php
答案2
如果使用该函数发送邮件,mail()
您可以编写一个包装器/usr/sbin/sendmail
:
#!/bin/sh
/usr/bin/logger -p mail.info "phpmail: pwd=${PWD}"
/usr/sbin/sendmail -t -i $*
现在,在您的中指定该包装器php.ini
:
sendmail_path = <path to wrapper>
现在您将看到一个日志条目,mail.log
指示脚本位于哪个目录中。
答案3
您怎么知道发送邮件的是 PHP 文件?
如果它肯定是一个 PHP 文件并且正在从 Apache 请求,请查看 Apache 的访问日志。
如果它是从服务器上的命令行运行的,Lucas Kauffman 的答案的变体可能会帮助您找到它,因为这些文件在执行后几乎总是被删除,但是/proc
如果某个进程打开了这些文件,即使已删除的文件仍然可以找到。
grep mail /proc/*/fd/*.php
或者如果文件不是名为“.php”:
grep mail /proc/*/fd/*
这两个命令都需要以 root 身份运行,sudo
这是不够的。
如果它在命令行上运行,而没有在 Apache 中被请求,则其他人已控制您的服务器。如果您无法快速找出他们是如何进入的,只需将其删除,从备份中重新安装并升级所有内容,希望可以修复他们在升级中使用的任何缺陷。