我注意到一些电子邮件在被延期后出现了很长的延迟(长达 12 天)“延期:连接被拒绝”
以下是一个例子:
Nov 4 09:29:52 server0004 sendmail[4789]: sA49TLmW004726: to=<** Recipient Deleted **>, delay=00:00:31, xdelay=00:00:00, mailer=esmtp, pri=1806434, relay=mx01.inthehive.net. [109.68.0.70], dsn=4.0.0, stat=Deferred: Connection refused by mx01.inthehive.net.
Nov 16 12:11:44 server0004 sendmail[32326]: sA49TLmW004726: to=<** recipient Deleted ** >, **delay=12+02:42:23**, xdelay=00:00:01, mailer=esmtp, pri=1896434, relay=mx01.inthehive.net. [109.68.0.70], dsn=2.0.0, stat=Sent (B546894210001 Message accepted for delivery)
/etc/sysconfig/sendmail 包含:
DAEMON=yes
QUEUE=1h
据我所知,QUEUE 选项将 sendmail 配置为每小时重试一次 mailq 中的消息。
日志文件中没有此消息的其他消息。我苦苦思索为什么等待了这么长时间才重试。
我们正在运行 Centos 6.5、sendmail-8.14.4-8.el6.x86_64(这是一个非常旧的版本,我们目前正在使用我们的应用程序测试最新版本)
任何指点都是非常受欢迎的
编辑:我应该说一下,大多数延迟的电子邮件似乎都能及时发送,我们每周从该服务器发送约 160,000 封电子邮件
编辑:在第一次尝试和最终投递之间,sendmail 日志中还有其他消息 aS49TLmW004726 的条目:
Nov 4 09:29:57 server0004 sendmail[4789]: sA49TLmW004726: to=<** Address Removed **>, delay=00:00:36, xdelay=00:00:05, mailer=esmtp, pri=1806434, relay=mx3.mail.icloud.com. [17.158.8.50], dsn=2.0.0, stat=Sent (Ok, envelope id [email protected])
Nov 4 09:30:00 server0004 sendmail[4789]: sA49TLmW004726: to=<** Address Removed **>, delay=00:00:39, xdelay=00:00:03, mailer=esmtp, pri=1806434, relay=mailin1.rmx.de. [217.111.120.6], dsn=2.0.0, stat=Sent (Ok: queued as 04CFC180964)
Nov 4 09:30:02 server0004 sendmail[4789]: sA49TLmW004726: to=<** Address Removed **k>, delay=00:00:41, xdelay=00:00:02, mailer=esmtp, pri=1806434, relay=mx.paulandsam.co.u...a.hostedemail.com. [216.40.42.4], dsn=2.0.0, stat=Sent (Ok Queued as wish11_2c048f6822d39)
Nov 4 09:30:06 server0004 sendmail[4789]: sA49TLmW004726: to=<** Address Removed **>,<** Address Removed **>,<** Address Removed **>,<** Address Removed **>, delay=00:00:45, xdelay=00:00:04, mailer=esmtp, pri=1806434, relay=mx-eu.mail.am0.yahoodns.net. [188.125.69.79], dsn=2.0.0, stat=Sent (ok dirdel 4/0)
Nov 4 09:30:06 server0004 sendmail[4789]: sA49TLmW004726: to=<** Address Removed **>,<** Address Removed **>, delay=00:00:45, xdelay=00:00:00, mailer=esmtp, pri=1806434, relay=mx-c1.talktalk.net. [62.24.202.3], dsn=2.0.0, stat=Sent (ok: Message 702806395 accepted)
Nov 4 09:30:07 server0004 sendmail[4789]: sA49TLmW004726: to=<** Address Removed **>, delay=00:00:46, xdelay=00:00:01, mailer=esmtp, pri=1806434, relay=mxgb1.opaltelecom.net. [62.24.139.61], dsn=2.0.0, stat=Sent (ok: Message 664665974 accepted)
Nov 4 09:30:09 server0004 sendmail[4789]: sA49TLmW004726: to=<** Address Removed **>, delay=00:00:48, xdelay=00:00:01, mailer=esmtp, pri=1806434, relay=mailserver.ukdpi.co.uk. [213.171.216.114], dsn=2.0.0, stat=Sent (Ok: queued as 9ABDFD60281)
Nov 4 09:30:11 server0004 sendmail[4789]: sA49TLmW004726: to=<** Address Removed **>, delay=00:00:50, xdelay=00:00:02, mailer=esmtp, pri=1806434, relay=aspmx.l.google.com. [74.125.195.26], dsn=2.0.0, stat=Sent (OK 1415093312 t19si273668wiv.66 - gsmtp)
Nov 4 09:30:11 server0004 sendmail[4789]: sA49TLmW004726: to=<** Address Removed **>,<** Address Removed **>, delay=00:00:50, xdelay=00:00:00, mailer=esmtp, pri=1806434, relay=mx01.inthehive.net., dsn=4.0.0, stat=Deferred: Connection refused by mx01.inthehive.net.
Nov 4 09:30:13 server0004 sendmail[4789]: sA49TLmW004726: to=<** Address Removed **>,<** Address Removed **>,<** Address Removed **>, delay=00:00:52, xdelay=00:00:02, mailer=esmtp, pri=1806434, relay=mx-eu.mail.am0.yahoodns.net. [188.125.69.79], dsn=2.0.0, stat=Sent (ok dirdel 3/0)
我们每周向 109.68.0.70 发送约 15 条消息
答案1
您的问题是“努力弄清楚为什么等了这么久才重新审判“,但在我看来,这些日志是确定的:您的邮件服务器不会等待 12 天后再重新尝试发送。它经常重试(虽然没有所有日志,我无法说出频率),但远程服务器一直不可用。所以你的问题是无法回答的,因为它基于错误的谓词。
我也想知道为什么远程服务器没有接听您的电话,但假设您的互联网连接没有完全中断(这似乎不太可能),我们无从得知。这可能是路由混乱,但这超出了您的控制范围;可能是远程服务器不喜欢收到您发来的太多邮件,因此在繁忙时段拒绝应答,但这也超出了您的控制范围;可能是他们的服务器只是超载了(例如,当系统负载过高时,sendmail 会拒绝连接),但同样,这超出了您的控制范围。
您可能希望尝试直接与该服务器的管理员沟通,向他/她提出问题;但除此之外您无能为力 - 当然,您的服务器似乎没有太大问题。
答案2
我最近在我们中继的某个域中遇到了类似的问题。该域的队列中有一条消息导致其网关挂起并且不接受该消息。该消息到达时,他们的网关正在维护中(因此我们在他们恢复服务之前为他们建立了一个消息队列)。
在后续队列运行中,尝试了无效消息,超时,并且为该域排队的其他消息显示为重试,但实际上并未尝试(显示 xdelay=00:00:00)。一旦域恢复服务,新消息就会立即发送,但旧消息会滞留在无效消息后面,不会真正重试,最终会被退回。
为了解决这个问题,我们所做的就是添加一些具有不同顺序的常规队列运行......
# Puppet Name: queuerun-modtime
10 * * * * /usr/lib/sendmail -q -OQueueSortOrder=modtime
# Puppet Name: queuerun-random
40 * * * * /usr/lib/sendmail -q -OQueueSortOrder=random