在 Redhat 机器上记录所有来自 PHP 的外发邮件

在 Redhat 机器上记录所有来自 PHP 的外发邮件

我们的一个服务器的 IP 已被列入黑名单,我想尝试找出原因。服务器上有许多 Apache 虚拟主机,因此日志记录需要按域分开,如果可能的话,包括发起邮件呼叫的 PHP 脚本文件名。

邮件服务器是Qmail,服务器运行的是Redhat Linux。

这可能吗?如果可以,请详细说明如何实现。

谢谢。

答案1

最终使用以下资源进入 sendmail 包装器路由:http://kb.parallels.com/1711

有一种方法可以找到运行发送邮件的 PHP 脚本的文件夹。请注意,根据您的操作系统和 Plesk 版本,路径可能与下面列出的略有不同:

1)创建/var/qmail/bin/sendmail-wrapper脚本,内容如下:

!/bin/sh(回显 X-Additional-Header:$PWD;cat)| tee -a /var/tmp/mail.send|/var/qmail/bin/sendmail-qmail“$@”

注意,它应该是包含“#!/bin/sh”的两行。 2) 然后创建日志文件 /var/tmp/mail.send 并授予它“a+rw”权限,使包装器可执行,重命名旧的 sendmail 并将其链接到新的包装器:~# touch /var/tmp/mail.send ~# chmod a+rw /var/tmp/mail.send ~# chmod a+x /var/qmail/bin/sendmail-wrapper ~# mv /var/qmail/bin/sendmail /var/qmail/bin/sendmail-qmail ~# ln -s /var/qmail/bin/sendmail-wrapper /var/qmail/bin/sendmail 3) 等待一个小时左右,然后将 sendmail 恢复原状:

~# rm -f /var/qmail/bin/sendmail ~# ln -s /var/qmail/bin/sendmail-qmail /var/qmail/bin/sendmail

检查 /var/tmp/mail.send 文件,应该有以“X-Additional-Header:”开头的行,指向发送邮件的脚本所在的域文件夹。您可以使用以下命令查看运行邮件 PHP 脚本的所有文件夹:

~# grep X-Additional /var/tmp/mail.send | grepcat /etc/psa/psa.conf | grep HTTPD_VHOSTS_D | sed -e 's/HTTPD_VHOSTS_D//'

如果您看不到上述命令的输出,则表示没有使用 PHP mail() 函数从 Plesk 虚拟主机目录发送邮件。

答案2

我不知道如何记录 PHP 脚本或任何与 web 服务器相关的位,但是 qmail(以及几乎所有其他 MTA)通常会记录发送的内容 - 至少是 MAIL FROM 和 RCPT TO 地址以及它将消息发送到的邮件服务器。

您可能可以分析 qmail 日志,了解哪些邮件可能将您列入黑名单。
此外,如果您知道自己在哪个黑名单中,这可能会给您提供线索,让您知道发生了什么。

答案3

如果您运行的是 PHP 5.3 或更高版本,您可以让 PHP 自动记录您正在寻找的所有信息,无需包装脚本:

http://php.net/manual/en/mail.configuration.php

相关内容