出于某种原因,我们不能发送更大的电子邮件给我们的客户之一。 小邮件没问题,但是即使是1MB附件的邮件也无法传递几个小时 – Postfix日志不断地填充status=deferred (conversation with customer***[IP***] timed out while sending message body) ,但最终消息被发送。
客户正在使用“Microsoft ESMTP MAIL服务,版本:6.0.3790.3959”(使用telnet连接到端口25),虽然我不确定是否真的是收件人软件故障。 我们可以发送没有问题的电子邮件到其他地方。 客户确认他们没有与其他人发送邮件的问题。 只有从我们的服务器邮件似乎卡住了。
我已经尝试将我们的传出接口的MTU值降低到1000甚至500.其他地方像这样或这表明,有一个罕见的问题,但没有解决scheme或确认。
以下是向该客户发送典型消息的Postfix日志。 (电子邮件地址由***代替,客户邮件服务器与customer***和ip*** )
Aug 18 15:41:28 gozilla postfix/cleanup[14751]: F0DB414080: message-id=<***> Aug 18 15:41:28 gozilla postfix/qmgr[21922]: F0DB414080: from=<***>, size=1671905, nrcpt=1 (queue active) Aug 18 15:44:44 gozilla postfix/qmgr[14985]: F0DB414080: skipped, still being delivered Aug 18 15:44:45 gozilla postfix/qmgr[15132]: F0DB414080: skipped, still being delivered Aug 18 15:44:45 gozilla postfix/qmgr[15242]: F0DB414080: skipped, still being delivered Aug 18 15:44:47 gozilla postfix/smtp[14752]: F0DB414080: to=<***>, relay=customer***[IP***], delay=199, delays=0.64/0/0.68/198, dsn=4.4.2, status=deferred (conversation with customer***[IP***] timed out while sending message body) Aug 18 15:46:44 gozilla postfix/qmgr[15242]: F0DB414080: from=<***>, size=1671905, nrcpt=1 (queue active) Aug 18 15:50:01 gozilla postfix/smtp[15555]: F0DB414080: to=<***>, relay=customer***[IP***]:25, delay=514, delays=317/0.01/0.17/196, dsn=4.4.2, status=deferred (conversation with customer***[IP***] timed out while sending message body) Aug 18 15:52:52 gozilla postfix/qmgr[15242]: F0DB414080: from=<***>, size=1671905, nrcpt=1 (queue active) Aug 18 15:56:35 gozilla postfix/smtp[15872]: F0DB414080: to=<***>, relay=customer***[IP***]:25, delay=908, delays=685/0.01/0.16/222, dsn=4.4.2, status=deferred (conversation with customer***[IP***] timed out while sending message body) Aug 18 16:14:45 gozilla postfix/qmgr[15242]: F0DB414080: from=<***>, size=1671905, nrcpt=1 (queue active) Aug 18 16:18:18 gozilla postfix/smtp[17065]: F0DB414080: to=<***>, relay=customer***[IP***]:25, delay=2210, delays=1997/0/0.17/213, dsn=4.4.2, status=deferred (conversation with customer***[IP***] timed out while sending message body) Aug 18 16:23:22 gozilla postfix/qmgr[17635]: F0DB414080: from=<***>, size=1671905, nrcpt=1 (queue active) Aug 18 16:27:23 gozilla postfix/smtp[17646]: F0DB414080: to=<***>, relay=customer***[IP***]:25, delay=2755, delays=2515/0.01/0.21/240, dsn=4.4.2, status=deferred (conversation with customer***[IP***] timed out while sending message body) --- cut out more lines like this --- Aug 18 19:56:17 gozilla postfix/qmgr[18145]: F0DB414080: from=<***>, size=1671905, nrcpt=1 (queue active) Aug 18 19:59:31 gozilla postfix/smtp[26730]: F0DB414080: to=<***>, relay=customer***[IP***]:25, delay=15484, delays=15289/0.01/0.2/194, dsn=4.4.2, status=deferred (conversation with customer***[IP***] timed out while sending message body) Aug 18 22:21:17 gozilla postfix/qmgr[18145]: F0DB414080: from=<***>, size=1671905, nrcpt=1 (queue active) Aug 18 22:26:01 gozilla postfix/smtp[32493]: F0DB414080: to=<***>, relay=customer***[IP***]:25, delay=24274, delays=23989/0.01/0.37/284, dsn=2.6.0, status=sent (250 2.6.0 <***> Queued mail for delivery) Aug 18 22:26:01 gozilla postfix/qmgr[18145]: F0DB414080: removed
哦,男孩,我喜欢这些服务器。 几乎普遍地,他们正在对消息体进行基于内容的扫描,如果他们不喜欢内容,则发送非200响应给DATA命令。 这在原则上是好的,但是当你得到一些资源不足的垃圾箱运行Exchange和一些超重的磁盘空间专有浪费扫描,机器运行像糖浆和其他人都超时。
是的,从理论上讲,这可能是一个MTU问题,正如你所build议的那样,但是实际上这是不太可能的 – 如果你能得到一个2000字节的消息,那就违背了这个理论(并且消息less于2000字节,包括标题,在那里)。 在你的最后一个tcpdump可以证实这一点 – 如果它是一个TCP级别的问题,那么你会看到你的结尾尝试重发全尺寸的数据包; 如果这是一个远程MTA正在缓慢的问题,那么将不会有任何重传,并且失速点将是当您的结尾发送closures“ . ”。
鉴于远端似乎无能为力(“ 其他人没有问题”,我突出的背后),我只是将Postfix的超时增加到一些显着更高的数字,并留下的东西。 您要查看的三个设置是smtp_data_done_timeout , smtp_data_xfer_timeout和smtp_data_init_timeout (大致上重要)。 正如你所看到的,默认值是非常慷慨的,所以需要把它们反过来确实说明了远端是多么笨拙。