我们的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
这似乎很奇怪,因为“人”是bogus.org上的有效用户,而事实上bogus.org是example.com上同一台机器上的主域。
我们如何解决这个问题?
许多人已经通过修改/etc/hosts的“localhost”条目和/或设置适当的DNS条目来解决这个问题。 我们这样做了,并没有解决我们的问题。
我们终于注意到了这一点: ctladdr=exmpl对于正确发送的邮件,这些日志条目显示为完整的邮件地址,例如ctladdr=<[email protected]>缺less的是virtusertable中的这个重要条目:
[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
如果您通过端口25远程login到MX服务器并启动手动SMTP对话,则问题通常会更加清楚。
在上面的例子中, ctladdr=exmpl ,如果你inputMAIL FROM ,MX服务器会告诉你域名不存在,这就是为什么它不能接受你的邮件。 我有问题somedomain.com在DNS中定义,并用于networkingstream量,但Apache试图发送邮件为[email protected] ,手动SMTP对话将显示MX服务器不能findwww.somedomain.com 。
解决scheme然后是添加此子域的A或CNAMElogging。