我想我已经诊断出 Postfix 邮件服务器的问题,现在我只需要帮助实施修复。
我和其他 11 个人是一个体育网站的“联盟成员”,当有人在该网站上发帖时,它会向所有成员发送一封通知电子邮件。我已经两年多没有收到任何此类电子邮件了,所以我决定进行调查,这就是我发现的内容。
我的 mail.log 中的消息是:
Mar 29 12:26:51 mymailserver postfix/pipe[12545]: 669553800406: to=<[email protected]>, relay=dovecot, delay=0.41, delays=0.35/0/0/0.06, dsn=5.4.6, status=bounced (mail forwarding loop for [email protected])
因此,经过大量搜索但没有取得多大成功后,网上有两个不起眼的页面在我的上下文中提到了这种行为。
您的邮件被退回,因为它包含带有收件人地址的“Delivered-To:”标头。
为了避免循环问题,您必须在 /etc/postfix/main.cf 中启用以下语句。 header_checks = regexp:/etc/postfix/header_checks 然后,在 /etc/postfix/header_checks /^Delivered-To: .*/ IGNORE 添加以下行然后,重建哈希表并重新加载 postfix 配置: [snip]
因此,我暂时将相关网站上的电子邮件地址更改为一次性 Gmail 帐户,并在该网站上发了一个帖子,以便我可以看到标头,并且在Delivered-To
我的 Postfix 有机会添加它之前,它们似乎确实包含一个额外的标头自己,从而导致转发循环。标题位于pastebin.com,额外的标题位于第 47 行。
第一个问题,您认为额外的Delivered-To
标头是否是邮件转发循环的原因?
如果是这样,上面的 howtoforge.com 上的文章有修复说明,但我想知道是否有更好的方法?对我来说这似乎有点老套,而且似乎每个在线指南都会包含此信息,因为它应该包含在每个安装中。
在我的环境中,howtoforge.com 修复程序将如下所示:
# vim /etc/postfix/main.cf
> header_checks = regexp:/etc/postfix/header_checks
# vim /etc/postfix/header_checks
> /^Delivered-To:.*/ IGNORE
# postmap /etc/postfix/header_checks
# service postfix restart
# service postfix status
如果这不是正确的解决方案,我愿意接受任何和所有建议。
答案1
我已经确认上面的 howtoforge.com 代码可以解决我的问题。删除文件中和header_checks
之间的空格非常重要,这与 howtoforge.com 上显示的内容(上面修复的代码)不同。:
.*
鉴于很多人可能都遵循了我所做的相同的 Postfix/Dovecot 设置教程,但他们都不包含这些设置,我想这篇文章会帮助一些人,但不会帮助很多人。很少有人知道他们甚至有这个配置问题,因为几乎没有人Delivered-To
在外发邮件中包含标头。但一些大型企业实体仍然这样做(哥伦比亚广播公司体育),所以我希望这对某人有帮助。