如何确定我们的 qmail 队列为何如此之大以及如何处理它

如何确定我们的 qmail 队列为何如此之大以及如何处理它

不知何故,我们的服务器被大量外发邮件淹没,我们认为这些邮件是垃圾邮件。我们通常使用 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从队列中删除电子邮件并采取措施确保垃圾邮件不再出现。

相关内容