SendMail如何决定哪些连接被caching?

CentOS 5.x | SendMail 8.14.4

我试图围绕连接caching如何在Sendmail中工作。

我遇到了一些与我们频繁通信的远程邮件主机的一些连接问题,我们看到如下错误:

dsn=4.0.0 stat=Deferred: Connection timed out with <FQDN> 

作为故障排除过程的一部分,我的防火墙人员想知道我的SendMail服务器是否仅使用有状态连接。

起初,我认为这不是…但后来我想起了连接cachingfunction。 我检查了/etc/mail/sendmail.cf并确认存在以下选项:

 O ConnectionCacheSize=2 O ConnectionCacheTimeout=5m 

对我来说,这意味着SendMail将保持最多2个SMTP连接打开(每个5分钟),以防万一有更多的消息需要去那里。

我的问题是:SendMail如何决定哪些连接被caching? 这纯粹是在第一个发送,第一个caching的基础? 或者,caching机制背后有更复杂的逻辑吗?

AFAIK在典型的sendmailconfiguration中,连接caching不用于初始/第一次传送尝试(可能除非收到太多的收件人消息被分成许多消息)。 在这种configuration中,当sendmail重试队列消息的传递时使用它。

恕我直言,在典型的轻负载电子邮件网站超过95%的传出消息可能会通过初始“一次”投递尝试交付。


恕我直言,更大的电子邮件网站可能会考虑使用单独的队列组作为最上面的传出目标,并避免初始“一次”传送尝试(通常它通过一个SMTP连接发送一封电子邮件。

  • 持续队列运行程序可以减less这种“一次不交付”configuration中的延迟。
  • 自定义邮件程序定义可能会跳过“一次”传送尝试(F = e昂贵的标志)并限制通过单个smtp连接发送的消息数(m =)

队列组(V8.12及以上)