內送 SMTP 連線逾時通常與系統資源及其配置有關。以下技術可用於識別內送 SMTP 連線的逾時原因:
檢查您允許同時進行的內送 SMTP 連線的數量。由 SMTP 服務的派送程式設定 MAX_PROCS 和 MAX_CONNS 控制;允許的同步連線數為 MAX_PROCS*MAX_CONNS。如果您可以提供系統資源,則在此數量對於您的使用而言太小的情況下可以考量增加此數量。
您可以使用的另一項技術是開啟 TELNET 階段作業。
在以下範例中,使用者連線至 127.0.0.1 連接埠 25。連線成功後,便會傳回 220 大標題。例如:
telnet 127.0.0.1 25 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is ’^]’. 220 budgie.sesta.com --Server ESMTP (Sun Java System Messaging Server 6.1 (built May 7 2001)) |
如果已連線且接收到 220 大標題,但是其他指令 (如 ehlo 和 mail from) 未禁止回應,則您應執行 imsimta test -rewrite 以確定該配置正確。
如果 220 大標題的回應時間較長,且正在執行 pstack 指令,則在 SMTP 伺服器上會顯示以下 iii_res* 函數 (這些函數表示正在執行名稱解析查詢)︰
febe2c04 iii_res_send (fb7f4564, 28, fb7f4de0, 400, fb7f458c, fb7f4564) + 42c febdfdcc iii_res_query (0, fb7f4564, c, fb7f4de0, 400, 7f) + 254 |
則主機可能必須進行反向名稱解析查詢,即使是在常用對 (如 localhost/127.0.0.1) 上。若要防止此類效能降低,您應在 /etc/nsswitch.conf 檔案中重新排序主機的查詢。若要如此,請變更 /etc/nsswitch.conf 檔案中的以下行,從:
hosts: dns nis [NOTFOUND=return] files |
變更為:
hosts: files dns nis [NOTFOUND=return] |
在 /etc/nsswitch.conf 檔案中進行此變更可提昇效能,因為只有少數 SMTP 伺服器必須處理郵件,而多數 SMTP 伺服器不必執行不必要的查詢。
您還可以將 slave_debug 關鍵字置於經由 TCP/IP 郵件 (通常為 tcp_local 和 tcp_intranet) 處理內送 SMTP 的通道上。執行此作業之後,檢查最近的 tcp_local_slave.log-uniqueid 檔案,以識別逾時郵件的所有特定特徵。例如,如果具有眾多收件者的內送郵件逾時,請考量在此通道上使用 expandlimit 關鍵字。
請記住,如果您的系統超載並且過分延伸,則逾時將難以完全避免。