找出是什么原因导致高sendmail负载平均

我正在调查一个我没有设置的服务器,没有技术人员来回答问题。

问题是平均负载很高,这使服务器无法发送电子邮件! 它周期性地发生,有时每分钟几次,平均负荷可能高达80!

我注意到,有时可能需要一个小时才能发送一封电子邮件,我想更好地了解服务器上发生了什么。

定期(有时​​每分钟几次,平均负载可以高达80)我在邮件日志中得到这样的消息:

Feb 9 01:37:54 mydomain sm-mta[999]: rejecting connections on daemon MTA-v4: load average: 48 

我不知道这个原因,但是好像邮件并没有被发送,所以我想知道可能会发生什么。

偶尔,电子邮件实际上似乎被发送。 我唯一知道的是发送电子邮件是Web服务器,所以从www数据发送的电子邮件是有道理的。 我不知道可以发送那些东西。

 Feb 9 01:54:22 mydomain sendmail[6704]: r1...: from=www-data, size=1380, class=0, nrcpts=1, msgid=<[email protected]>, relay=www-data@localhost Feb 9 01:54:23 mydomain sm-mta[6706]: r1... from=<[email protected]>, size=1482, class=0, nrcpts=1, msgid=<[email protected]>, proto=ESMTP, daemon=MTA-v4, relay=localhost [127.0.0.1] Feb 9 02:01:02 mydomain sendmail[6751]: r1...: from=root, size=323, class=0, nrcpts=1, msgid=<[email protected]>, relay=root@localhost Feb 9 02:01:02 mydomain sm-mta[6752]: r1...: from=<[email protected]>, size=597, class=0, nrcpts=1, msgid=<[email protected]>, proto=ESMTP, daemon=MTA-v4, relay=localhost [127.0.0.1] 

netstat -ntop只显示apache2进程。

有什么办法可以解决这个问题?

您应该发出一个mailq并查看队列中有多less邮件。 我猜可能有很多,特别是如果这是一个运行PHP应用程序发送电子邮件(并被垃圾邮件发送者滥用)的Web服务器。

首先尝试并反转默认的sendmail负载pipe理configuration :

 define(confREFUSE_LA, 8)dnl define(confQUEUE_LA, 12)dnl 

把这些放在你的sendmail.mc ,生成sendmail.cf然后根据你的操作系统的指示重新启动sendmail。

通过检查mailq的输出,find队列文件并检查队列中邮件的内容。 这会让你知道谁在发送这些电子邮件,为什么。 也就是说,如果太多的电子邮件是你的问题的原因。

其他原因可能是滥用(configuration不当)邮件客户端(POP3或IMAP)或其他导致高负载的其他原因。

根据您的进度,您可能需要在机器前面进行监控,以查看(并分析)进入的内容和发生的情况。

再次,根据您的发现,您可能需要在security.stackexchange.com上再次提出这个问题。

编辑:你应该记住,当机器的负载增加超过一定的阈值时,sendmail开始拒绝处理电子邮件的请求。 对于要达到的门槛,sendmail可能不负责任。 其他进程,如Web服务器,一个cronjob,一个不正确的configurationMySQL的查询导致机器交换可能是罪魁祸首。