设置 DMARC 以验证 Microsoft 365 中发件人的“发件人地址”域

提示

你知道可以免费试用Microsoft Defender for Office 365计划 2 中的功能吗? 在 Microsoft Defender 门户试用中心使用 90 天Defender for Office 365试用版。 了解谁可以在试用Microsoft Defender for Office 365上注册和试用条款。

基于域的邮件身份验证、报告和符合性 (DMARC) 是一种 电子邮件身份验证 方法,可帮助验证从 Microsoft 365 组织发送的邮件,以防止在商业电子邮件泄露 (BEC) 、勒索软件和其他网络钓鱼攻击中使用的欺骗发件人。

通过在 DNS 中创建 TXT 记录,为域启用 DMARC。 电子邮件的 DMARC 验证涉及以下元素:

  • 验证 MAIL FROM 和 FROM 地址中的域是否一致SPFDKIM 不需要以下电子邮件地址中的域“对齐” (匹配) :

    • MAIL FROM 地址:在 SMTP 电子邮件服务器之间传输邮件时使用的电子邮件地址。 此地址也称为 5321.MailFrom 地址、P1 发件人或信封发件人。
    • 发件人地址:“ 发件人 ”标头字段中的电子邮件地址,在电子邮件客户端中显示为邮件发件人。 此地址也称为 5322.From 地址或 P2 发件人。

    有关这些电子邮件地址如何在不同的域中以及如何用于欺骗的详细信息,请参阅 为什么 Internet 电子邮件需要身份验证

    • DMARC 使用 SPF 的结果来验证以下两个条件:

      • 邮件来自在 MAIL FROM 地址中使用的域的授权源, (SPF) 的基本要求。
      • 邮件中的“MAIL FROM”和“发件人”地址中的域是一致的。 此结果实际上要求消息的有效源必须位于“发件人”地址域中。
    • DMARC 使用 DKIM 的结果来验证对消息进行签名的域 (DKIM 签名标头字段中的 d= 值,由 s= 选择器值验证,) 与 From 地址中的域保持一致。

    如果其中一个或两个所述的 SPF 或 DKIM 检查通过,则消息会通过 DMARC。 如果所述的 SPF 或 DKIM 检查都失败,则消息将失败 DMARC。

  • DMARC 策略:指定对 DMARC 失败 (拒绝、隔离或无指令) 的邮件执行的操作。

  • DMARC 报告:指定在何处发送聚合报告 (定期汇总 DMARC 结果) 和取证报告 (也称为 失败报告;几乎即时的 DMARC 故障会导致类似于未送达报告或退回邮件) 。

在开始之前,你需要根据电子邮件域了解 Microsoft 365 中的 DMARC:

  • 例如,如果仅将 Microsoft Online Email 路由地址 (MOERA) 域用于电子邮件 (,contoso.onmicrosoft.com) :尽管已为 *.onmicrosoft.com 域配置了 SPF 和 DKIM,但需要在Microsoft 365 管理中心中为 *.onmicrosoft.com 域创建 DMARC TXT 记录。 有关说明,请参阅本文后面的 此部分 。 有关 *.onmicrosoft.com 域的详细信息,请参阅 为什么我有“onmicrosoft.com”域?

  • 如果对电子邮件 (使用一个或多个自定义域,例如,contoso.com) :如果尚未使用,则需要为用于电子邮件的所有自定义域和子域配置 SPF。 还需要使用自定义域或子域配置 DKIM 签名,以便用于对消息进行签名的域与 From 地址中的域保持一致。 有关说明,请参阅以下文章:

    之后,还需要为自定义域配置 DMARC TXT 记录,如本文所述。 还需注意以下事项:

    • 子域

      • 对于不受直接控制的电子邮件服务 (例如批量电子邮件服务) ,我们建议使用子域 (例如,marketing.contoso.com) 而不是main电子邮件域 (contoso.com) 。 你不希望从这些电子邮件服务发送的邮件问题影响main电子邮件域中员工发送的邮件的信誉。 有关添加子域的详细信息,请参阅 是否可以将自定义子域或多个域添加到 Microsoft 365?
      • 与 SPF 和 DKIM 不同,域的 DMARC TXT 记录自动涵盖所有子域 (包括不存在的子域) ,这些子域没有自己的 DMARC TXT 记录。 换句话说,可以通过在该子域中创建 DMARC TXT 记录来中断子域上的 DMARC 继承。 但是,每个子域都需要 DMARC 的 SPF 和 DKIM 记录。
    • 如果您拥有已注册但未使用的域:如果您拥有不用于电子邮件的注册域或任何 (也称为 ) 的公园域 ,请在这些域中配置 DMARC TXT 记录,以指定任何电子邮件都不应来自这些域。 如果未将域用于电子邮件,则此指令包括 *.onmicrosoft.com 域

  • DMARC 检查 入站 邮件可能需要帮助:如果使用电子邮件服务在传递到 Microsoft 365 之前修改传输中的邮件,则可以将该服务标识为受信任的 ARC 封口器,以便修改后的邮件不会自动失败 DMARC 检查。 有关详细信息,请参阅本文末尾的 后续步骤 部分。

本文的其余部分介绍了需要为 Microsoft 365 中的域创建的 DMARC TXT 记录、逐步安全地为 Microsoft 365 中的自定义域设置 DMARC 的最佳方式,以及 Microsoft 365 如何对 入站 邮件使用 DMARC。

提示

若要在Microsoft 365 管理中心为 *.onmicrosoft.com 域创建 DMARC TXT 记录,请参阅本文后面的此部分

Microsoft 365 中没有管理门户或 PowerShell cmdlet 可用于管理 自定义 域中的 DMARC TXT 记录。 相反,在域注册机构或 DNS 托管服务上创建 DMARC TXT 记录,通常 (同一公司) 。

我们提供有关在许多域注册机构为 Microsoft 365 创建域所有权证明 TXT 记录的说明。 可以使用这些说明作为创建 DMARC TXT 记录的起点。 有关详细信息,请参阅 添加 DNS 记录以连接域

如果不熟悉 DNS 配置,请联系域注册机构并寻求帮助。

DMARC TXT 记录的语法

RFC 7489 中详细描述了 DMARC TXT 记录。

Microsoft 365 中域的 DMARC TXT 记录的基本语法是:

主机名_dmarc
TXT 值v=DMARC1; <DMARC policy>; <Percentage of DMARC failed mail subject to DMARC policy>; <DMARC reports>

主机名_dmarc
TXT 值v=DMARC1; p=<reject | quarantine | none>; pct=<0-100>; rua=mailto:<DMARCAggregateReportURI>; ruf=mailto:<DMARCForensicReportURI>

例如:

主机名_dmarc
TXT 值v=DMARC1; p=reject; pct=100; rua=mailto:rua@contoso.com; ruf=mailto:ruf@contoso.com

  • 主机名值 _dmarc 是必需的。

  • v=DMARC1; 将 TXT 记录标识为 DMARC TXT 记录。

  • DMARC 策略:按照本文前面所述,告知目标电子邮件系统如何使用失败 DMARC 的邮件:

    • p=reject:应拒绝消息。 邮件实际发生的情况取决于目标电子邮件系统,但邮件通常会被丢弃。
    • p=quarantine:邮件应被接受但已标记。 邮件实际发生的情况取决于目标电子邮件系统。 例如,邮件可能被隔离为垃圾邮件、传递到“垃圾邮件Email”文件夹,或者使用添加到主题或邮件正文的标识符传递到收件箱。
    • p=none:对于 DMARC 失败的消息,没有建议的操作。 邮件会发生什么情况取决于目标电子邮件系统中的电子邮件保护功能。 将此值用于 测试和优化 DMARC 策略 ,如本文稍后所述。

    提示

    如果域的 DMARC 策略为 p=rejectp=quarantine,则来自 Microsoft 365 中未通过目标电子邮件服务 DMARC 检查的域的出站邮件将通过出站邮件的高风险传递池进行路由。 此行为没有替代。

  • 受 DMARC 策略约束的失败 DMARC 邮件的百分比:告知目标电子邮件系统失败 DMARC 的邮件数 (百分比) 应用 DMARC 策略。 例如, pct=100 表示所有失败 DMARC 的消息都会应用 DMARC 策略。 使用小于 100 的值来 测试和优化 DMARC 策略 ,如本文稍后所述。 如果不使用 pct=,则默认值为 pct=100

  • DMARC 报告

    • DMARC 聚合报表 URI:该值 rua=mailto: 标识发送 DMARC 聚合报表的位置。 聚合报表具有以下属性:

      • 包含聚合报表的电子邮件通常每天发送一次, (报表包含前一天) 的 DMARC 结果。 “主题”行包含 (提交者) 发送报表的目标域,以及 DMARC 结果 (报表域) 的源域。
      • DMARC 数据位于可能已压缩 GZIP 的 XML 电子邮件附件中。 RFC 7489 的附录 C 中定义了 XML 架构。 报表包含以下信息:
        • 使用域发送邮件的服务器或服务的 IP 地址。
        • 服务器或服务是通过还是失败 DMARC 身份验证。
        • 根据 DMARC 策略) ,DMARC 对未通过 DMARC 身份验证的邮件执行的操作 (。

      提示

      聚合报表中的信息可能很大,难以分析。 为了帮助理解数据,可以将以下选项用于 DMARC 报告:

      • 使用 PowerShell 或 Microsoft Power BI 创建自动化。
      • 使用外部服务。 有关服务列表,请在 Microsoft 智能安全关联 (MISA) 目录中 https://www.microsoft.com/misapartnercatalog搜索 DMARC。 DMARC 报告服务描述 DMARC TXT 记录中所需的任何自定义值。
    • DMARC 取证报告 URI:该值 ruf=mailto: 标识在何处发送 DMARC 取证报告 (也称为 DMARC 故障报告) 。 报告在 DMARC 失败后立即生成并发送,例如未送达报告 (也称为 NDR 或退回消息) 。

    提示

    应定期查看 DMARC 聚合报告,以监视来自域的电子邮件来自何处,并检查意外的 DMARC 故障 (误报) 。

    单个目标电子邮件系统负责向你发送 DMARC 报告。 DMARC 报告的数量和种类各不相同,与从组织发送的邮件数量和种类相同。 例如,假期期间的邮件量较低,组织活动期间的邮件量更高。 最好指定特定人员监视 DMARC 报告,并使用特定邮箱或 Microsoft 365 组来接收 DMARC 报告, (不将报告传递到用户的邮箱) 。

有关 DMARC 的详细信息,请使用以下资源:

使用Microsoft 365 管理中心为 Microsoft 365 中的 *.onmicrosoft.com 域添加 DMARC TXT 记录

  1. 在 的Microsoft 365 管理中心https://admin.microsoft.com中,选择“显示所有>设置>”。 或者,若要直接转到 “域” 页,请使用 https://admin.microsoft.com/Adminportal/Home#/Domains

  2. “域”页上,单击该域名旁边的检查框以外的任何位置,从列表中选择 *.onmicrosoft.com 域。

  3. 在打开的域详细信息页上,选择“ DNS 记录 ”选项卡。

  4. 在“ DNS 记录 ”选项卡上,选择“ 添加记录”。

  5. 在打开 的“添加自定义 DNS 记录 ”浮出控件上,配置以下设置:

    • 类型:验证是否已选择 TXT (Text)

    • TXT 名称:输入 _dmarc

    • TXT 值:输入 v=DMARC1; p=reject

      提示

      若要指定 DMARC 聚合和 DMARC 取证报告的目标,请使用 语法 v=DMARC1; p=reject rua=mailto:<emailaddress>; ruf=mailto:<emailaddress>。 例如,v=DMARC1; p=reject rua=mailto:rua@contoso.onmicrosoft.com; ruf=mailto:ruf@contoso.onmicrosoft.com

      MISA 目录中的 DMARC 报告供应商可以 https://www.microsoft.com/misapartnercatalog 更轻松地查看和解释 DMARC 结果。

    • TTL:验证是否选择了 1 小时

    完成“ 添加自定义 DNS 记录 ”浮出控件后,选择“ 保存”。

在 Microsoft 365 中为活动自定义域设置 DMARC

提示

如本文前面所述,在为自定义域或子域配置 DMARC 之前,需要为用于在 Microsoft 365 中发送电子邮件的所有自定义域和子域创建 SPF TXT 记录配置 DKIM 签名

建议逐步为 Microsoft 365 域设置 DMARC。 目标是 p=reject 获取所有自定义域和子域的 DMARC 策略,但需要在此过程中进行测试和验证,以防止目标电子邮件系统因意外的 DMARC 故障而拒绝良好邮件。

DMARC 推出计划应使用以下步骤。 从邮件量低和/或潜在电子邮件源较少的域或子域开始, () 阻止来自未知来源的合法邮件的可能性较小:

  1. 从 的 DMARC 策略 p=none 开始,并监视域的结果。 例如:

    marketing.contoso.com 的 DMARC TXT 记录

    主机名_dmarc
    TXT 值v=DMARC1; p=none; pct=100; rua=mailto:rua@marketing.contoso.com; ruf=mailto:ruf@marketing.contoso.com

    DMARC 聚合和 DMARC 取证报告提供了通过和失败 DMARC 检查的消息的数量和来源。 可以查看 DMARC 涵盖或未涵盖的合法邮件流量,并排查任何问题。 还可以查看发送的欺诈性邮件数量以及发送位置。

  2. 将 DMARC 策略 p=quarantine 增加到 并监视域的结果。

    在经过足够的时间监视 后 p=none,可以针对 域将 DMARC 策略 p=quarantine 增加到 。 例如:

    marketing.contoso.com 的 DMARC TXT 记录

    主机名_dmarc
    TXT 值v=DMARC1; p=quarantine; pct=100; rua=mailto:rua@marketing.contoso.com; ruf=mailto:ruf@marketing.contoso.com

    还可以使用 pct= 值来逐渐影响更多消息并验证结果。 例如,可以按以下增量移动:

    • pct=10
    • pct=25
    • pct=50
    • pct=75
    • pct=100
  3. 将 DMARC 策略 p=reject 增加到 并监视域的结果。

    在经过足够的时间监视 后 p=quarantine,可以针对 域将 DMARC 策略 p=reject 增加到 。 例如:

    marketing.contoso.com 的 DMARC TXT 记录

    主机名_dmarc
    TXT 值v=DMARC1; p=reject; pct=100; rua=mailto:rua@marketing.contoso.com; ruf=mailto:ruf@marketing.contoso.com

    还可以使用 pct= 值来逐渐影响更多消息并验证结果。

  4. 对增加卷和/或复杂性的剩余子域重复上述三个步骤,最后保存父域。

    提示

    阻止任何大量合法电子邮件对于用户来说都是不可接受的,但你几乎不可避免地会收到一些误报。 缓慢而有条不紊地处理 DMARC 报告中显示的问题。 MISA 目录中的 DMARC 报告供应商可以 https://www.microsoft.com/misapartnercatalog 更轻松地查看和解释 DMARC 结果。

  5. 如前所述,子域继承父域的 DMARC TXT 记录设置,子域中的单独 DMARC TXT 记录可以重写这些设置。 在域和所有子域中完成 DMARC 设置后,如果父域和所有子域的 DMARC 设置实际上完全相同,则可以消除子域中的 DMARC TXT 记录,并依赖于父域中的单个 DMARC TXT 记录。

Microsoft 365 中已寄存域的 DMARC TXT 记录

提示

Microsoft 365 中自定义域的 SPF TXT 记录中介绍了不发送邮件的已寄存域的建议 SPF TXT 记录。 如 设置 DKIM 以从 Microsoft 365 域对邮件进行签名中所述,我们不建议将 DKIM CNAME 记录用于寄存域。

  1. 如果你已注册的域,而 Internet 上没有人期望从中接收邮件,请在域的域注册机构处创建以下 DMARC TXT 记录:

    主机名_dmarc
    TXT 值v=DMARC1; p=reject;

    • 该值 pct= 未包含在内,因为默认值为 pct=100
    • rua=mailto:在这种情况下,可以说不需要 和 ruf=mailto: 值,因为域中的发件人不应有有效邮件。
  2. 如果不使用 *.onmicrosoft.com 域发送邮件,则还需要 为 *.onmicrosoft.com 域添加 DMARC TXT 记录

DMARC 将入站邮件放入 Microsoft 365

  • 传入 Microsoft 365 的邮件的 DMARC 检查受 Exchange Online Protection (EOP) 中的以下功能的影响:

    • 在检查邮件的反钓鱼策略中是启用还是禁用欺骗 智能 。 禁用欺骗智能仅对复合身份验证检查禁用隐式欺骗保护。
    • 是否在检查邮件的防钓鱼策略中启用或禁用 了“检测到邮件时,应遵循 DMARC 记录策略 ”设置,以及基于源域 (的 DMARC 策略的 p=quarantine指定操作,还是在 DMARC TXT 记录) 中启用或 p=reject 禁用。

    有关完整信息,请参阅 欺骗保护和发件人 DMARC 策略

    若要查看反钓鱼策略中这些设置的默认值,检查 EOP 反钓鱼策略设置表中的设置值。

  • Microsoft 365 不会 (也称为 DMARC 故障报告) 发送 DMARC 取证报告,即使源域的 DMARC TXT 记录中存在有效的 ruf=mailto: 地址也是如此。

  • Microsoft 365 会将 DMARC 聚合报告发送到 DMARC TXT 记录中具有有效 rua=mailto: 地址的所有域,前提是Microsoft 365 域的 MX 记录直接指向 Microsoft 365。

    如果邮件从 Internet 通过第三方服务或设备路由到 Microsoft 365 (MX 记录点(Microsoft 365) 以外的其他位置),则不会发送 DMARC 聚合报告。 此限制包括混合或独立 EOP 方案,即使用连接器将邮件传递到本地环境,然后再路由到 Microsoft 365。

    提示

    当第三方服务或设备位于流入 Microsoft 365 的邮件前面时,连接器的 增强筛选 (也称为 跳过列表) 正确标识 SPF 的 Internet 消息源,如果服务修改邮件) 和 DMARC 验证,则 DKIM (。

DMARC 疑难解答

可以使用下图来帮助排查 DMARC 身份验证问题。

DMARC 的疑难解答图形

后续步骤

对于 进入 Microsoft 365 的邮件,如果使用在传递到组织之前修改传输中的邮件的服务,则可能还需要配置受信任的 ARC 封口器。 有关详细信息,请参阅 配置受信任的 ARC 密封器