調試“無法連接到sendmail伺服器”

調試“無法連接到sendmail伺服器”

在公司環境中,我們的郵件伺服器僅提供 25/tcp 和 587/tcp 連接埠。

當我們使用 Perl 腳本(使用 HTML::Mail)發送數百封合法郵件時,偶爾會失敗並顯示「無法連接到郵件伺服器」。

我們認為 sendmail 伺服器上的重負載使其拒絕連接,甚至可能不回應初始請求。

現在,擁有郵件伺服器的團隊不合作,並要求提供伺服器拒絕連線的證據。

問題:假設問題出在伺服器端,萬一發生故障,可以從客戶端收集哪些資訊?如果情況確實如此,如何證明問題出在伺服器端?

[[我不確定這個問題在這裡是否有效;當問題本身不清楚時,我無法尋求協助解決問題;我要求提供一份簡短的提示和技巧列表,以幫助調試此問題;我甚至願意接受有關解決方法的意見]]

答案1

解決方案是 sendmail 團隊查看他們的“/etc/mail/sendmail.mc”文件:

dnl #
dnl # The following limits the number of processes sendmail can fork to accept 
dnl # incoming messages or process its message queues to 20.) sendmail refuses 
dnl # to accept connections once it has reached its quota of child processes.
dnl #
dnl define(`confMAX_DAEMON_CHILDREN', `20')dnl
dnl #
dnl # Limits the number of new connections per second. This caps the overhead 
dnl # incurred due to forking new sendmail processes. May be useful against 
dnl # DoS attacks or barrages of spam. (As mentioned below, a per-IP address 
dnl # limit would be useful but is not available as an option at this writing.)
dnl #
dnl define(`confCONNECTION_RATE_THROTTLE', `3')dnl

(Treat "dnl" as a comment leadin string.)

如果您只是將電子郵件大量發送出去,那麼您可能應該限制它們。

答案2

記錄錯誤訊息和問題發生的確切時間。它應該可以幫助 sendmail 管理員找出日誌檔案中的問題。

對於群發郵件,您應該:
a) 重複使用 SMTP 連線來傳送多封電子郵件(例如 50 封)
b) 限制每秒提交的郵件數量(例如 20-50 封)

我可以建議的其他措施是特定於 sendmail 的,並且需要 sendmail 管理員的合作。

相關內容