我们已经成功地从一个古老的 Microsoft Exchange 迁移到 dovecot+postfix 并且一切正常,除了一个特殊情况:
当 Outlook 2016 的用户回复公司内部某人([email protected]) 的旧邮件时,他们会收到来自 Outlook 的传递错误,有时我注意到 Outlook 甚至没有连接到 SMTP 服务器和其他时候它产生一个并得到一个错误(见下文)。如果他们向前点击并手动输入相同的地址([email protected]),一切正常。
返回的未送达通知电子邮件是(从希腊语翻译而来):
We couldn't reach one or more recipients...
'Company S.A. John Smith' at 22/10/2018 1:03 pm
Server error: '501 5.1.3 Bad recipient address syntax'"
并且 postfix 在日志中有这一行:
postfix/smtps/smtpd[3905]: warning: Illegal address syntax from xxx.yyy.local[192.168.0.153] in RCPT command: <Company S.A. John Smith>
拥有 Thunderbird 的用户完全没有问题。Outlook 和 Thunderbird 都使用相同的服务器连接设置(安全 IMAP 和 SMTP)
任何关于这里出了什么问题的想法都将受到高度赞赏。
格式错误的地址来自 Outlook 的名称缓存(.nk2 文件)。您必须删除 .nk2 文件中与交换地址相对应的所有条目。
就我而言,我使用了 Nirsoft 的免费编辑器来编辑文件。我单击了地址列标题以按地址类型排序,并选择了所有显示的条目
EX
而不是SMTP
. 然后我点击删除并保存。感谢大家的有益评论,特别是 joeqwerty 提供的非常有用的链接,它引导我走向正确的方向。
日志条目中的目标地址是
Company S.A. John Smith
。当它抱怨时,Postfix 是正确的,因为电子邮件地址中的空格需要引用,并且地址必须有一个@
字符后跟域。要查看的相关标准是RFC 5321:
和RFC 5322:
收件人地址中要求
@
和域的唯一例外是保留地址postmaster
可以在没有域的情况下用于向相关邮件服务器的管理员发送电子邮件。即使 Postfix 已经放松了足够的解析,不会抱怨这两个语法错误,我猜你可能还没有配置 Postfix 知道如何将电子邮件发送到
Company S.A. John Smith
.接下来的问题是为什么 Outlook
RCPT
首先会产生这样一个不正确的命令。要了解您需要查看在客户端回复的电子邮件,以了解邮件中的From
和Reply-To
标头是什么样的。