我正在调查一个我没有设置的服务器,没有技术人员来回答问题。
问题是平均负载很高,这使服务器无法发送电子邮件! 它周期性地发生,有时每分钟几次,平均负荷可能高达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的查询导致机器交换可能是罪魁祸首。