Exchange 跨林共享SMTP域名下的邮件循环问题
问题:
=========
公司收购或并购,可能需要使用统一的 SMTP 域名。比如 A 分公司和 B 分公司使用统一的 SMTP 域名 contoso.com. 要求 A 分公司员工和 B 分公司员工之间能够相互正常收发邮件。当然,A 公司和 B 公司也都能够正常对外收发邮件。在配置共享 SMTP 域时,我们会把 contoso.com 作为 接受域-内部中继域都加入到 A 公司 Exchange 组织和 B 公司 Exchange 组织。那么当发件人发了一 封无效的收件人地址比如 invalid@contoso.com 时,会发生邮件循环,在循环一定次数后,发件人会受到 NDR。
此文主要来讨论如何解决此邮件循环问题。
解决方法:
==========
方法1. 在 Receive Connector 上设置 MaxLocalHopCount 参数
Set-ReceiveConnector https://technet.microsoft.com/en-us/library/bb125140.aspx
文档说明: MaxLocalHopCount 参数指定在接收连接器拒绝一封邮件之前该邮件可经过的最大本地跃点数。最 大本地跃点数由已提交邮件中具有本地服务器地址的 Received 头的数目确定。默认值为 8。此参数的有效输入范围为 0 至 50。如果指定值为 0,则永远不会根据本地跃点数拒绝邮件。
也就是说,默认情况下此邮件循环问题发生时,Exchange 服务器在第 9 次收到此邮件时,会拒绝 此邮件,收件人会收到 NDR。我们可以把 MaxLocalHopCount 参数设置得更小来减少循环的次数。
在Exchange Server 2013 SP1测试环境中,实际上此值的默认值是12,因此,此默认值可能会根据不同的版本有所区别。
方法2. 新建传输规则来设置邮件头 X-Loop Header, 比如把 A 公司发出的以 invalid@contoso.com 为收件人的邮件通过传输规则设置 X-Loop Header=1. 当在 A 公司内无法找到 invalid 这个用户时,会通过 Send Connector 发此邮件发送到 B 公司的 Exchange. 当 B 公司也无法 找到此用户时,会通过公司 B Exchange Send Connector 把邮件发回 A 公司 Exchange,此时, Exchange 通过传输规则识别到此邮件 X-Loop Header=1,直接删除此操作。
如下面博客描述:
Shared SMTP namespace during cross-forest migration
https://www.sysadminsblog.com/microsoft/shared-smtp-namespace-during-cross-forest-migration/
下面PDF文档中用截图形式详细记录了这两个方法的测试过程。
Microsoft China Partner Team