查找尝试通过 postfix 发送垃圾邮件的脚本

查找尝试通过 postfix 发送垃圾邮件的脚本

我以前也遇到过这个问题,我的服务器上有垃圾 wordpress 网站,但总是很容易找到来源,即 php 脚本,只需查看垃圾邮件标头并查看 php 脚本名称即可。但这次我得到了一些不同的东西。

垃圾邮件实际上并没有被发送,它被 postfix 丢弃了,但它源自本地主机,我需要找到它的来源。

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>

如您所见,它试图使用虚假帐户发送邮件,因此被丢弃。在我修复 Postfix 设置之前,它实际上试图发送这些邮件,因此我查看了垃圾邮件本身,发现它没有标头指示某处的 php 脚本(这是第一次,以前总是有)。另一件奇怪的事情是,它不会尝试用垃圾邮件淹没 Postfix,而是每分钟发送一两封。

如果您知道如何追踪来源,我们将不胜感激。谢谢。

答案1

审计日志

假设这不是通过网络套接字发生的(假设您的 php 标头不起作用),我会记录对 postfix 本身的所有访问。创建记录对 postfix 二进制文件的所有访问的 auditd 规则。

获取所有 postfix 文件的列表

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

...ETC

您可能需要运行此命令来更新您的规则:

augenrules

要将此输出发送到 syslog/splunk:

sed -i -e 's/^active.*/active = yes/g' /etc/audisp/plugins.d/syslog.conf

然后重新启动 auditd。

这可能会给您提供更多关于在生成电子邮件时调用 postfix 的线索。

答案2

首先,你应该添加mail.add_x_headerphp.ini 中的选项

mail.add_x_header = On

它将向您的电子邮件添加一个标题,其中包含调用 mail() 函数的脚本的名称。

如果这没有帮助,你可以关注本教程创建一个包装器sendmail,它也会记录所有内容。

相关内容