如何解決 Exim 郵件重試問題?
我的伺服器遇到高 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 或任何其他程序。他們同意我的結論,即純粹專注於進出口。
HostGator 今天將授予我對這個專用主機的 root 訪問權限。我是 Exim 的新手,但對 Linux 相當了解。您會建議我查看哪些日誌、電子郵件目錄和 Exim 配置文件,以便對高 Exim 郵件重試次數進行故障排除?請注意,這是一個帶有 WHM/cPanel 的 CentOS 5 Linux。
例如,我希望看到的東西:
- Exim 活動的日誌文件,包括成功和錯誤
- 想破解它正在嘗試重試的一封電子郵件,以查看線索
- 很想看看 Exim 配置文件,看看我們是否可以應用限制,這樣我們就不會一次重試所有這些 Exim 郵件,但可能需要很長一段時間
首先執行
mailq
andexiwhat
命令來了解正在發生的事情。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 節。