我曾经有过这个问题,我的服务器上的废话WordPress的网站,但它总是很容易find源代码,一个PHP脚本通过查看垃圾邮件头,看到PHP脚本名称。 但是这一次我得到了不同的东西。
垃圾邮件实际上并没有被发送,它被后缀丢弃,但它来自本地主机,我需要find它来自哪里。
Dec 8 13:02:29 myserver postfix/smtpd[22018]: NOQUEUE: reject: RCPT from myserver.local[127.0.0.1]: 550 5.1.0 <[email protected]>: Sender address rejected: User unknown in virtual mailbox table; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<domainonmyserver.tld>
正如你所看到的,它试图通过一个虚假的帐户发送,所以它被丢弃。 在我修复我的后缀设置之前,它实际上是试图发送这些,所以我看了一下垃圾邮件本身,并没有一个标头指出一个PHP脚本的地方(这是第一个,他们总是做过)。 另一个奇怪的事情是,它不会试图将垃圾邮件泛滥,而是每分钟发送一次或两次。
任何想法如何跟踪源头,将不胜感激。 谢谢。
首先,你应该添加mail.add_x_header选项到你的php.ini
mail.add_x_header = On
它将为您的电子邮件添加一个标题,其中将包含名为mail()函数的脚本的名称。
如果没有帮助,你可以按照这个教程创build一个sendmail的包装器,它也会logging所有的东西。
审计logging
假设这不是通过networking套接字(因为您的php头不工作),我会logging所有的访问后缀本身。 创build审计规则,logging所有对后缀二进制文件的访问。
获取所有后缀文件的列表
rpm -ql postfix | egrep "postfix|sendmail" | grep bin
然后生成一个audit.rules文件(这可能会进入/etc/audit/audit.rules,但这从发行版到发行版有所不同),看起来像
-w /usr/sbin/sendmail -p wra -k postfix_access -w /usr/sbin/sendmail.postfix -p wra -k postfix_access
…等等
你可能需要运行这个来更新你的规则:
augenrules
将此输出发送到syslog / splunk:
sed -i -e 's/^active.*/active = yes/g' /etc/audisp/plugins.d/syslog.conf
然后重新启动auditd。
这可能会给你更多的线索,关于什么是在生成电子邮件时调用postfix。