不知何故,我们的服务器被大量外发邮件淹没,我们认为这些邮件是垃圾邮件。我们通常使用 plesk 来管理它,但它现在崩溃了。
如果我们做一个
ps aux | grep 'qmail'
我们收到了大约 200 个
qmailq 25340 0.0 0.0 2640 408 ? D 11:18 0:00 bin/qmail-queue
我们如何确定邮件队列为何如此之大?我猜可能是某个域上的 PHP 脚本被破解了,或者类似的东西。
有人能告诉我们从哪里开始寻找答案吗?我知道这是一个非常开放的问题,但如果能提供任何指导,我将不胜感激。
答案1
有人正在连接,但怎么连接呢?运行netstat -tp
。
这可能会显示是否有人通过充当开放中继(端口 25)的配置错误的邮件服务器直接转发邮件,或者他们是否通过您的脚本推送内容(端口 80/443)。
如果您发现一个流量源,但无法快速修复底层问题,请尽快通过应用程序配置或 iptables 进行拦截。但请将其作为优先事项,因为无论一个垃圾邮件发送者发现什么,另一个垃圾邮件发送者都会很快发现。
您是否直接查看过邮件内容?它应该位于文件系统中的 /var/spool 某处。
答案2
从您的 qmail 日志开始:
tail -f /var/log/qmail/current | tai64nlocal
观察谁在发送邮件以及邮件被发送到哪里。如果大多数邮件似乎都来自 SMTP,请查看 SMTP 日志:
tail -f /var/log/qmail/smtpd/current | tai64nlocal
查看邮件发件人的 IP 地址,看看它们是否来自同一来源。如果您可以缩小发件人地址的范围,则可以在 /etc/tcp.smtp 中创建规则来阻止该地址,或对其进行 RBL。您是否使用 rblsmtp 作为 qmail-smtp 管道的一部分?
如果消息不是来自 SMTP 或来自本地主机,因为您的网页是通过 SMTP 发布的,请查看您的网络服务器日志,看看您是否可以确定哪些 IP 地址正在发送消息。
答案3
/var/qmail/bin/qmail-qstat
或更好
/var/qmail/bin/qmail-qread
将成为起点。
然后找到垃圾邮件 ID 并在 /var/qmail/queue 中搜索具有该名称的文件(find /var/qmail/queue -iname )。
找到所有垃圾邮件的共同特征(例如 IP/主题、发件人等)并使用qmHandle从队列中删除电子邮件并采取措施确保垃圾邮件不再出现。