在混合部署中,发送到 Office 365 的所有外部邮件均未通过 SPF,并被 EOP 标记为垃圾邮件

在混合部署中,发送到 Office 365 的所有外部邮件均未通过 SPF,并被 EOP 标记为垃圾邮件

简而言之:合法电子邮件被归入垃圾邮件文件夹,因为 EOP(Exchange Online Protection)将电子邮件标记为垃圾邮件(SCL5)和 SPF 失败。这种情况发生在所有外部域(例如 gmail.com/hp.com/microsoft.com)到客户域(contoso.com)上。

背景信息:

我们正开始将邮箱迁移到 Office 365 (Exchange Online)。这是一种混合部署/丰富共存配置,其中:

  • 本地 = Exchange 2003(旧版)和 2010(为混合部署而安装)
  • 场外 = Office 365 (Exchange Online)
  • EOP 配置用于 SPF 检查。
  • MX 记录指向本地,因为我们尚未完成将所有邮箱从本地迁移到 Exchange Online。

问题是,当外部用户向组织中的 Office 365 邮箱发送电子邮件时(邮件流:外部 -> 邮件网关 -> 内部部署邮件服务器 -> EOP -> Office 365),EOP 会使用接收邮件的邮件网关的外部 IP 地址执行 SPF 查找和硬/软失败消息。

(本地邮箱不会出现此问题;只有迁移到 Office 365 的邮箱才会出现。)

举例来说: 使用 EOP 从外部到 Office 365 的邮件流

示例 1:从 Microsoft 到 O365

Authentication-Results: spf=fail (sender IP is 23.1.4.9) 
smtp.mailfrom=microsoft.com; contoso.mail.onmicrosoft.com;
dkim=none (message not signed) header.d=none;
Received-SPF: Fail (protection.outlook.com: domain of microsoft.com does not designate
23.1.4.9 as permitted sender) receiver=protection.outlook.com; client-ip=23.1.4.9; 
helo=exchange2010.contoso.com; X-MS-Exchange-Organization-SCL: 5

示例 2:从 HP 到 O365

Authentication-Results: spf=none (sender IP is 23.1.4.9) 
smtp.mailfrom=hp.com; contoso.mail.onmicrosoft.com; dkim=none 
(message not signed) header.d=none; Received-SPF: None 
(protection.outlook.com: hp.com does not designate permitted sender hosts) 
X-MS-Exchange-Organization-SCL: 5

示例 3:从 Gmail 到 O365

Authentication-Results: spf=softfail (sender IP is 23.1.4.9) 
smtp.mailfrom=gmail.com; contoso.mail.onmicrosoft.com; 
dkim=fail (signature did not verify) header.d=gmail.com; 
Received-SPF: SoftFail (protection.outlook.com: domain of transitioning 
gmail.com discourages use of 23.1.4.9 as permitted sender)  
X-MS-Exchange-Organization-SCL: 5

有关包含 X-Forefront-Antispam-Report 的邮件标头,请参阅http://pastebin.com/sgjQETzM

注意:23.1.4.9 是本地混合 Exchange 2010 服务器连接器至 Exchange Online 的公用 IP 地址。

在混合部署的共存阶段,如何阻止外部电子邮件被 EOP 标记为垃圾邮件?


[2015-12-12更新]

该问题已由 Office 365 支持(升级/后端团队)修复,因为它与我们的设置无关。

我们得到以下建议:

  1. 将公共 IP 列入 EOP 允许列表中(已尝试,但没有帮助。)
  2. 为我们的域添加 SPF 记录:“v=spf1 ip4:XXX.XXX.XXX.XXX ip4:YYY.YYY.YYY.YYY include:spf.protection.outlook.com -all”(不要认为这个建议有效,因为 EOP 不应该根据我们的 SMTP IP 地址检查 gmail.com,因为它没有在 gmail.com 的 SPF 记录中指定。这似乎不是 SPF 的工作方式。)
  3. 确保 TLS 已启用(见下文)

关键是第三点。“如果未启用 TLS,来自本地 Exchange 的传入电子邮件将不会被标记为内部/信任电子邮件,并且 EOP 将检查所有记录,”支持人员说。

支持人员通过以下行从我们的邮件标头中确定了 TLS 问题:

  • X-MS-Exchange-Organization-AuthAs:匿名

这表示 EOP 收到邮件时未启用 TLS。EOP 未将收到的邮件视为信任邮件。正确的应该是这样的:

  • X-MS-Exchange-Organization-AuthAs:内部

然而,这不是由我们的设置引起的;支持人员通过验证来自我们的 Exchange 2010 混合服务器的详细 SMTP 日志帮助我们确保我们的设置正确无误。

大约在同一时间,他们的后端团队解决了这个问题,但没有让我们知道问题的具体原因(不幸的是)。

他们修复之后,我们发现邮件标题有一些显著的变化,如下所示。

对于从 Exchange 2003 到 Office 365 的内部发送的邮件:

  • X-MS-Exchange-Organization-AuthAs:内部(为“匿名”)

  • SCL=-1(之前是 SCL=5)

  • Received-SPF:SoftFail(相同)

对于发送至 Office 365 的外部邮件(例如 gmail.com):

  • X-MS-Exchange-Organization-AuthAs:匿名(相同)

  • SCL=1(之前是 SCL=5)

  • Received-SPF:SoftFail(相同)

尽管 SPF 检查对于 gmail.com(外部)到 Office 365 仍然软失败,但支持人员表示这没问题,所有邮件都会进入收件箱而不是垃圾邮件文件夹。

附注:在故障排除过程中,后端团队发现了一个看似很小的配置问题——我们在 IP 允许列表中定义了来自入站连接器的 IP(即 Exchange 2010 混合服务器的公共 IP)(另一位 Office 365 支持人员建议将其作为故障排除步骤)。他们告诉我们我们不需要这样做,事实上这样做可能会导致路由问题。他们评论说,在初始传递时,电子邮件不会被标记为垃圾邮件,因此这里也可能存在问题。然后我们从 IP 允许列表中删除了 IP。(但是,在设置 IP 允许列表之前就存在垃圾邮件问题。我们认为允许列表不是原因。)

最终,该支持人员表示:“应该是EOP机制。”因此,整个事件应该是由他们的机制引起的。

对于任何感兴趣的人,可以在此处查看其支持人员的故障排除线程:https://community.office365.com/en-us/f/156/t/403396

答案1

您确定邮件流直接从混合服务器流向 O365 吗?

当您运行混合向导时,它应该在本地和 O365 中创建连接器,这些连接器会将林之间的邮件流视为内部邮件。这意味着它将绕过 EOP/垃圾邮件检查,您永远不会看到这些 SPF 消息。

如果您的边缘设备正在修改标头,则这可能会导致您的问题 - 在您的服务器和 O365 之间,任何东西都不应修改消息标头。确保您没有现有连接器可能会覆盖混合向导创建的连接器。您可以随时删除已创建的现有连接器,然后重新运行向导以重新创建它们。

检查 Exchange 中的传输规则,并确保它们在转到 O365 之前没有修改消息,如果它们被禁用,请再次测试以确保这些不是您的问题。

最后(或者可能是首先)检查您的联合是否配置正确。如果配置不正确,则可能是您的邮件未得到正确处理的原因。这时重新运行混合向导也可以帮助您。

答案2

我不是这里的专家,我已经很长时间没有玩过 Exchange 了,但我会尽我所能回答。

让我们讨论一下设计,为什么不先将所有流量路由到 EOP,然后再路由到内部 Exchange 服务器?您在那里失去了一个很好的功能,它肯定会让您更容易从单个位置控制垃圾邮件(假设您的本地 Exchange 也有一个反垃圾邮件过滤器)。

现在让我们讨论垃圾邮件问题:

  1. 邮件流和连接器:我感觉连接器设置不正确,如果您收到的所有电子邮件似乎都来自同一个 23.1.4.9 IP 地址,而不是发件人的邮件服务器 IP 地址,那么 SPF 检查肯定会失败,因为它的目的是检查发件人的 IP 和该发件人 IP 的域名。我肯定会花一些时间来检查连接器是如何设置的,这里有一个很好的链接:https://technet.microsoft.com/en-us/library/ms.exch.eac.connectorselection(v=exchg.150).aspx
  2. EOP 垃圾邮件过滤器和连接过滤器:如果连接器的 IP 设置正确,也许是时候查看 EOP 下的垃圾邮件/连接过滤器了,我会创建过滤器以绕过检查来自 IP 23.1.4.9 的传入电子邮件,但这会使所有传入电子邮件绕过垃圾邮件过滤器检查列表,这会给您带来上一点提到的问题,检查您的连接器,最好先将传入电子邮件路由到 EOP。

答案3

几年后,现在可以修复外部连接器的 SPF 问题。

有一个选项“Exchange Online 中连接器的增强筛选Enhanced Filtering for Connectors in Exchange Online“您可以在其中定义哪些主机必须跳过 SPF 和其他检查。您可以访问选项这里

现在,即使我们首先通过 postfix 路由所有邮件,SPF 检查也能通过。 在此处输入图片描述

相关内容