sendmail会在什么情况下尝试立即重新发送消息,而不是等待标准的时间间隔?

CentOS 5.8 | Sendmail 8.14.4

我曾经认为,如果SendMail在传递过程中遇到了临时(400级)错误,它会将消息放入延迟队列(例如/ var / spool / mqueue),并在一小时后重试。 大部分情况似乎是这样。 但是现在,我会注意到这样的日志条目(电子邮件/域重命名,以保护无辜:-)):

Dec 5 01:43:03 foobox-out sendmail [11078]: qBE3l7js123022: to=<[email protected]>, delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=124588, relay=exbox.foo.com. [10.10.10.10], dsn=4.0.0, stat=Deferred: 421 4.3.2 The maximum number of concurrent connections has exceeded a limit, closing transmission channel Dec 5 01:53:34 foobox-out sendmail [12763]: qBE3l7js123022: to=<[email protected]>, delay=00:10:31, xdelay=00:00:00, mailer=relay, pri=214588, relay=exbox.foo.com., dsn=4.0.0, stat=Deferred: 452 4.3.1 Insufficient system resources Dec 5 02:53:35 foobox-out sendmail [23255]: qBE3l7js123022: to=<[email protected]>, delay=01:10:32, xdelay=00:00:01, mailer=relay, pri=304588, relay=exbox.foo.com. [10.10.10.10], dsn=2.0.0, stat=Sent (<[email protected]> Queued mail for delivery) 

为什么Sendmail只在第一次尝试后10分钟再试一次,然后再等一个小时才再次尝试?

如果这是预期的行为,什么情况会导致这个更快的重发间隔发生?

你可以阅读更详细的蝙蝠本书第4版29.9.99节。 底线是,大多数时间消息不能经常交付,但仍然失败。

所以当一个消息被放入队列时,sendmail会根据RecipentFactor和ClassFactor计算它的优先级,然后处理那些优先级最低的优先级。 失败的尝试使用RetryFactor等进行调整。

在你的情况下,一个452告诉机器推迟交货,直到以后。 当你启动sendmail时,多less以后取决于-q旁边的值。