dsn=5.6.0,stat=转发电子邮件时数据格式错误

dsn=5.6.0,stat=转发电子邮件时数据格式错误

我们的 Linux 主机 (CentOS) 有多个共享域,其中一个是 example.com (此消息中使用了虚假的主机名和用户名); 我们习惯于/etc/mail/virtusertable将所有发往 example.com 的邮件发送给“exmpl”用户,并~exmpl/.procmailrc根据需要转发邮件。此方法允许 exmpl 维护自己的转发,而 /etc/mail/aliases 则不能。实际上,virtusertable 知道 example.com 的收件人,并拒绝发往未知收件人的邮件。我们很久以前就学到了这个教训。

但是,通过这种方式转发邮件失败:

Apr 30 21:33:30 bogus sendmail[25645]: r412XUQ8025645: [email protected], ctladdr=exmpl (504/504), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=30965, relay=[127.0.0.1] [127.0.0.1], dsn=5.6.0, stat=Data format error

这看起来很奇怪,因为“person”是 bogus.org 上的有效用户,并且事实上 bogus.org 是与 example.com 在同一台机器上的主域!

我们怎样才能解决这个问题?

答案1

许多人通过修复“localhost”条目/etc/hosts 和/或设置适当的 DNS 条目解决了这个问题。我们这样做了,但并没有解决问题。

我们最终注意到了这一点:ctladdr=exmpl 对于正确投递的邮件,那些日志条目显示它是一个完整的电子邮件地址,例如,缺少的是 virtusertable 中的这个重要条目:ctladdr=<[email protected]>

[email protected] exmpl

我并不声称自己完全理解这一点(这算是我的问题!)因为在我看来,这看起来像是 virtusertable 的“反向”使用。但是,如上所述转发的邮件现在已正常工作!

May  6 21:06:40 bogus sendmail[1482]: r4726ejj001480: to=<[email protected]>, ctladdr=<[email protected]> (504/504), delay=00:00:00, xdelay=00:00:00, mailer=local, pri=62862, dsn=2.0.0, stat=Sent

答案2

如果您通过 telnet 连接到端口 25 上的 MX 服务器并启动手动 SMTP 对话,通常会更清楚问题所在。

在上面的例子中ctladdr=exmpl,如果您将其输入为MAIL FROM,MX 服务器会告诉您该域不存在,这就是它无法接受您的邮件的原因。我遇到过这样的问题:somedomain.comDNS 中定义了 并用于网络流量,但 Apache 尝试将邮件发送为[email protected],并且进行手动 SMTP 对话将显示 MX 服务器找不到www.somedomain.com

解决方案就是为该子域添加A或记录。CNAME

相关内容