我的服务器遇到了高 CPU 负载(几乎达到 100%),以至于 Apache 服务无法运行,我们收到 Apache 500 错误。我们使用脚本来捕获此问题,我们发现服务器通常不会运行一堆看起来像“/usr/sbin/exim -Mc 1R6Nvz-0006CN-KI”的进程。但是,当问题发生时,我们始终在内存中发现一堆显示“/usr/sbin/exim -Mc 1R6Nvz-0006CN-KI”的进程。我们联系了 HostGator 支持,他们确实说问题的原因是 Exim Mail Retries(-Mc 开关的作用),而不是 Apache 或 MySQL 或任何其他进程。他们同意我完全关注 Exim 的结论。
HostGator 今天将授予我此专用主机的 root 访问权限。我是 Exim 的新手,但对 Linux 相当了解。为了解决 Exim 邮件重试次数过高的问题,您建议我查看哪些日志、电子邮件目录和 Exim 配置文件?请注意,这是带有 WHM/cPanel 的 CentOS 5 Linux。
例如,我希望看到的事情:
- Exim 活动日志文件,包括成功和错误
- 想要打开它正在重试的一封电子邮件,以便找到线索
- 很想看看 Exim 配置文件,看看我们是否可以应用节流阀,这样我们就不会一次性重试所有这些 Exim 邮件,而是在很长一段时间内重试
答案1
首先运行mailq
和exiwhat
命令来了解正在发生的事情。 mailq
将显示排队的内容。 exiwhat
将告诉您正在运行的进程正在做什么。
Exim 的日志文件包括 mainlog(所有消息)、rejectlog(包含更多详细信息的拒绝消息)和 paniclog(罕见故障)。它们应该位于 /var/log 下,可能位于 /var/log/exim 或 /var/log/exim4 中。
队列中的消息可以在 Exim 的 spool 目录中找到,可能是 /var/spool/exim4 或类似目录。消息位于输入目录中,状态信息位于相应的 msglog 目录中。
如果你尝试了很多次,那么说明配置不正确。我对运行电子邮件服务器会让你知道需要什么,我的帖子检测电子邮件服务器伪造可能会让您知道队列为什么会增长。根据我的经验,网站的邮件服务器往往配置不当。花点时间正确配置,这并不难。
可能对您有帮助的一些变量包括:
- deliver_queue_load_max - 禁用从队列传递消息
- queue_only_load-系统加载时强制排队
- queue_run_max - 限制队列进程的数量
查看Exim 规范第 14 部分更多细节。