Exim 发送失败“421 SMTP 传入数据超时”-邮件正文末尾缺少“\n”

Exim 发送失败“421 SMTP 传入数据超时”-邮件正文末尾缺少“\n”

我正在尝试弄清楚这个问题是如何发生的以及如何阻止它。不知何故,消息进入了我们的入站 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传输之前, \nExim 不会断言它已发送,一些 Exim 开发人员目前正在对此争论不休。\nDATA.

答案2

我认为垃圾邮件发送者是故意这样做的,希望你的邮件服务器背向散射完整的消息(您的 SMTP 服务器遵循规则,因此它会添加 \n)发送给回复中列出的无辜者。

要解决此问题,您需要更积极地进行反垃圾邮件,检查发件人的 IP 是否未列在 RBL 列表中,防晒指数记录比赛等等

另一个想法是每晚用脚本清除队列中的死消息。我对 Exim 了解不够多,无法建议如何做到这一点...

高血压

相关内容