从 MS Exchange 迁移到 dovecot/postfix 后无法回复旧邮件

从 MS Exchange 迁移到 dovecot/postfix 后无法回复旧邮件

我们已经成功地从古老的 Microsoft Exchange 迁移到 dovecot+postfix,除了一个特殊情况外,一切运行正常:

当 Outlook 2016 用户点击回复旧邮件时来自公司内部的某人[电子邮件保护]) 他们会收到 Outlook 的递送错误,有时我注意到 Outlook 甚至无法连接到 SMTP 服务器,而有时它会连接到 SMTP 服务器并收到错误(见下文)。如果他们点击转发并输入相同的地址([电子邮件保护])手动一切正常。

返回的未送达通知电子邮件如下(希腊语翻译):

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)

如果您能提供任何关于此处出现的问题的想法,我们将不胜感激。

答案1

格式错误的地址来自 Outlook 的名称缓存(.nk2 文件)。您必须删除 .nk2 文件中与交换地址相对应的所有条目。

就我而言使用 Nirsoft 的免费编辑器编辑文件。我点击了地址列标题按地址类型排序,我选择了显示的所有条目,EX而不是SMTP。然后我点击删除并保存。

感谢大家的帮助评论,特别是 joeqwerty非常有用的链接引导我走向正确的方向。

答案2

日志条目中的目标地址是Company S.A. John Smith。Postfix 对此的抱怨是正确的,因为电子邮件地址中的空格需要引用,并且地址必须有一个@字符后跟域名。

需要查看的相关标准包括RFC 5321

   Forward-path   = Path

   Path           = "<" [ A-d-l ":" ] Mailbox ">"

   A-d-l          = At-domain *( "," At-domain )
                  ; Note that this form, the so-called "source
                  ; route", MUST BE accepted, SHOULD NOT be
                  ; generated, and SHOULD be ignored.

   At-domain      = "@" Domain

   Mail-parameters  = esmtp-param *(SP esmtp-param)

   Rcpt-parameters  = esmtp-param *(SP esmtp-param)

   esmtp-param    = esmtp-keyword ["=" esmtp-value]

   esmtp-keyword  = (ALPHA / DIGIT) *(ALPHA / DIGIT / "-")

   esmtp-value    = 1*(%d33-60 / %d62-126)
                  ; any CHAR excluding "=", SP, and control
                  ; characters.  If this string is an email address,
                  ; i.e., a Mailbox, then the "xtext" syntax [32]
                  ; SHOULD be used.

   Keyword        = Ldh-str

   Argument       = Atom

   Domain         = sub-domain *("." sub-domain)

   sub-domain     = Let-dig [Ldh-str]

   Let-dig        = ALPHA / DIGIT

   Ldh-str        = *( ALPHA / DIGIT / "-" ) Let-dig

   address-literal  = "[" ( IPv4-address-literal /
                    IPv6-address-literal /
                    General-address-literal ) "]"
                    ; See Section 4.1.3

   Mailbox        = Local-part "@" ( Domain / address-literal )

   Local-part     = Dot-string / Quoted-string
                  ; MAY be case-sensitive


   Dot-string     = Atom *("."  Atom)

   Atom           = 1*atext

   Quoted-string  = DQUOTE *QcontentSMTP DQUOTE

RFC 5322

   atext           =   ALPHA / DIGIT /    ; Printable US-ASCII
                       "!" / "#" /        ;  characters not including
                       "$" / "%" /        ;  specials.  Used for atoms.
                       "&" / "'" /
                       "*" / "+" /
                       "-" / "/" /
                       "=" / "?" /
                       "^" / "_" /
                       "`" / "{" /
                       "|" / "}" /
                       "~"

@对收件人地址中必须包含域名的要求的唯一例外是,保留地址postmaster可以在不包含域名的情况下用于向相关邮件服务器的管理员发送电子邮件。

即使 Postfix 已经放松了它的解析,足以不抱怨这两个语法错误,我猜你可能还没有配置 Postfix 来知道如何向 发送电子邮件Company S.A. John Smith

那么下一个问题是 Outlook 为什么会RCPT首先产生这样一个错误的命令。要理解这一点,您需要查看客户端正在回复的电子邮件,看看邮件中的From和标题是什么样的。Reply-To

相关内容