我的 apache2 error.log 中有很多sh: 1: /usr/sbin/sendmail: not found
,问题是,我不记得我的任何网站/应用程序尝试发送邮件或其他内容,并且我已经在我的 wordpress 博客上安装了 WP Mail SMTP,它运行正常,所以我的问题是,我如何找出哪个应用程序或网站一直在尝试这样做?
编辑:我确实发现了一些有趣的内容/var/log/mail.log
:
Jun 22 07:27:31 sm-mta[29654]: r5H8U4O1014238: to=<[email protected]>, ctladdr=<www-data@[email protected]> (33/33), delay=4+22:57:27, xdelay=00:00:01, mailer=esmtp, pri=63391559, relay=mx00.1and1.com. [74.208.5.3], dsn=4.0.0, stat=Deferred: 421 invalid sender domain
。
我已经按照说明完全卸载了我的服务器上的所有邮件应用程序,如下所示:
apt-get remove sendmail sendmail-bin postfix
apt-get purge postfix exim4 sendmail sendmail-bin
那些烦人的线条仍然时不时出现,我现在该怎么办?
谢谢,肖恩
答案1
这就是滥用发送垃圾邮件的企图。
在你的日志中查找 POST 请求,你就会很快发现哪些 PHP 脚本被滥用了。
例如:
grep -R POST /var/log/apache2
更新也许你的 sendmail 还在运行?
检查一下:
ps auxww | grep sendmail
还
netstat -anp |grep :25
您可以找到进程号仍在运行的守护进程的编号。
答案2
您可以伪造日志sendmail
来记录消息内容。也许消息内容可以帮助您弄清楚这一点。
另一个选择(当应用程序不使用 sendmail 但尝试连接到端口 25 时)是创建一个虚假的邮件服务器,如下所示:python -m smtpd -n -c DebuggingServer localhost:25
并捕获所有内容。
答案3
如果您使用 Drupal 和 SMTP 模块,这是一个已知问题
答案4
当我意外地将“true”作为第二个参数传递给 error_log() 时,我看到了这些错误。
这会导致通过电子邮件记录错误的尝试失败。
当写一些类似于error_log(print_r($foo, true));
某人可能实际输入的内容时error_log(print_r($foo), true);