我正在尝试弄清楚这个问题是如何发生的以及如何阻止它。不知何故,消息进入了我们的入站 Exim 缓冲池,末尾没有任何 \n。当我们的出站 Exim 进程尝试传递这些邮件时,它们会失败,因为 Exim 在刚发送的同一行上输出“。”。我已经通过使用 tcpdump 从两端捕获 SMTP 对话来验证这一点
tcpdump 显示最后发送了以下内容:
<!--www.https://example.com--><!--www.https://example.com-->。
这不是 DATA 的正确终止。最终接收 MTA 响应
421 丢失传入连接
将消息在队列中传递od
,我在消息体的末尾看到:
0011700 e. com - - >
没有 \ns。这些滞留在缓冲池中的邮件似乎都是垃圾邮件。我在出站日志中看到,
1NLolk-0003aD-3V ==[电子邮件保护]R=存储 T=存储延迟(-46):数据结束后远程邮件服务器出现 SMTP 错误:主机 192.168.1.3 [192.168.1.3]:421 mda.local SMTP 传入数据超时 - 关闭连接。
有人有什么想法吗?“message_suffix”参数听起来像是一个很好的创可贴,但它仅适用于 appendfile 和管道。
答案1
我咨询了 Exim 邮件列表,问题似乎出在 MailScanner 的内容过滤器上。我们让 MailScanner 为我们进行病毒/垃圾邮件扫描,当它清除邮件尾部时,某些邮件似乎被遗漏了,并且邮件被放入出站 Exim 队列,而 Exim 无法发送该邮件。在尝试使用 结束 SMTP传输之前, \n
Exim 不会断言它已发送,一些 Exim 开发人员目前正在对此争论不休。\n
DATA
.