外来 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 标题的响应时间较慢,并且在 SMTP 服务器上运行 pstack 命令时显示以下 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] |
由于只有少数 SMTP 服务器必须处理邮件,而不是多数 SMTP 服务器必须执行不必要的查找,因此在 /etc/nsswitch.conf 文件中进行此更改可以提高性能。
您还可以通过 TCP/IP 邮件(通常为 tcp_local 和 tcp_intranet)将 slave_debug 关键字放在处理外来 SMTP 的通道中。完成此操作后,请查阅最近的 tcp_local_slave.log-uniqueid 文件以识别超时邮件的所有特征。例如,如果具有大量收件人的外来邮件超时,请考虑在通道中使用 expandlimit 关键字。
请记住,如果您的系统过载和过分扩展,则很难完全避免超时。