当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] Exchange 2016 中的 SenderID、SPF、DKIM 和 DMARC – 第 III 部分

作者:精品下载站 日期:2024-12-14 06:58:51 浏览:14 分类:玩电脑

Exchange 2016 中的 SenderID、SPF、DKIM 和 DMARC – 第 III 部分


在前两篇博客文章中,我讨论了 SPF 和 DKIM 作为验证电子邮件真实性的一种方法。 SPF 使用公共 DNS 中的 SPF 记录,其中列出了域的所有合法出站 SMTP 服务器。接收 SMTP 服务器可以检查此 DNS 记录,以确保允许发送邮件服务器代表用户或其组织发送电子邮件。

DKIM 用于签名和验证电子邮件中的标头信息。发送邮件服务器可以使用仅发送邮件服务器可用的私钥对消息进行数字签名。接收邮件服务器检查 DNS 中的公钥以验证电子邮件中的签名信息。由于私钥仅适用于发送组织的邮件服务器,因此接收邮件服务器知道它是合法的邮件服务器,因此是合法的电子邮件。

提醒一下,我的测试环境配置如下:

[玩转系统] Exchange 2016 中的 SenderID、SPF、DKIM 和 DMARC – 第 III 部分

有一个托管多个邮箱的 Exchange 2016 CU2 邮箱服务器,还有一个 Exchange 2016 CU2 边缘传输服务器。使用边缘同步,所有入站和出站 SMTP 流量均由边缘传输服务器处理。

在前两篇博客文章中,创建并实现了 SPF 记录,并且在边缘传输服务器上实现了包含 DKIM 签名模块的 DKIM,并且该模块正常运行。

这是三篇系列文章中的最后一篇,讨论构建在 SPF 和 DKIM 之上的 DMARC。

DMARC 或基于域的消息身份验证、报告和一致性

DMARC 代表基于域的消息身份验证、报告和一致性,是一种电子邮件验证机制,构建在 SPF 和 DKIM 之上。 DMARC 使用在 DNS 中发布的策略。此策略指示发送邮件服务器是否正在使用 SPF 和/或 DKIM,并告诉接收邮件服务器在 SPF 和/或 DKIM 未通过各自的检查时该怎么做。

SPF 和 DKIM 的一个“问题”是发送组织永远不知道 SPF 和 DKIM 是如何使用的,以及使用的影响是什么,无论它是否有效。因此DMARC还包含一个报告机制。接收组织可以向发送组织报告失败或通过 DMARC 检查的信息。

它是这样工作的:

  1. 用户向外部收件人发送新邮件,邮件服务器对邮件进行签名并插入 DKIM 标头。
  2. 邮件服务器将消息发送到收件人邮件服务器。
  3. 收件人邮件服务器检查 DNS 中的 SPF 记录、DKIM 记录和包含 DMARC 策略的 DMARC 记录。
  4. 检查 SPF 和 DKIM 后,将应用策略来确定需要发生的情况。
  5. 如果 DMARC 检查通过,邮件将发送到收件人的邮箱
  6. 如果 DMARC 检查失败(阻止或隔离),则会将报告发送回发件人的组织。

[玩转系统] Exchange 2016 中的 SenderID、SPF、DKIM 和 DMARC – 第 III 部分

那么,典型的 DMARC 记录是什么样的?

应该读成这样:

v=DMARC1;p=quarantine;sp=quarantine;pct=100;rua=mailto:[email protected]

在此 DNS 记录中可以识别以下标记:

  • v=版本
  • p=组织域策略(无、隔离或拒绝)
  • sp=组织域子域的策略(无、隔离或拒绝)
  • pct=已过滤邮件的百分比
  • rua=聚合报告的报告 URI 或地址

也可以使用以下标签:

  • ruf=取证报告的报告 URI 或地址
  • adkim=DKIM 的对齐模式(宽松或严格,默认为“s”或“r”)
  • aspf=SPF 的对齐模式(宽松或严格,默认为“s”或“r”)

有关所有可用标签的更多信息,请参阅 DMARC RFC7489。

如何实施 DMARC

如前所述,DMARC 构建于 SPF 和 DKIM 之上,因此第一步是在您的环境中实施这两者,并绝对确保两者正常工作。

假设您已经创建了用于接收报告的邮箱,您可以创建组织域策略设置为“无”的 DMARC 记录。这样,DMARC 将开始工作,但在您可以分析报告邮箱中收到的邮件时不会采取任何操作。

因此,对于我的 Exchangelabs.nl 域,将创建以下 DNS TXT 记录 _dmarc.exchangelabs.nl:

v=DMARC1;p=none;sp=none;pct=100;rua=mailto:[email protected]

输入后,您可以使用 http://mxtoolbox.com/dmarc.aspx 站点检查 DMARC 记录:

[玩转系统] Exchange 2016 中的 SenderID、SPF、DKIM 和 DMARC – 第 III 部分

当我从带有 SPF、DKIM 和 DMARC 的 Exchangelabs.nl 测试环境向我的 Office 365 邮箱发送电子邮件时,我可以在电子邮件标头中看到以下信息:

身份验证结果:spf=pass(发件人 IP 为 176.62.196.244)
smtp.mailfrom=Exchangelabs.nl;韦斯留斯.info; dkim=pass(签名为
已验证) header.d=Exchangelabs.nl;wesselius.info; dmarc=传递动作=无
header.from=Exchangelabs.nl;wesselius.info; dkim=pass(签名为
已验证) header.d=Exchangelabs.nl;
已接收-SPF:通过(protection.outlook.com:Exchangelabs.nl 的域
指定 176.62.196.244 为允许的发件人)
接收者=protection.outlook.com; client-ip=176.62.196.244;
helo=smtphost.exchangelabs.nl;

当向我的 Hotmail 帐户发送电子邮件时,我可以看到以下标头信息:

身份验证结果:hotmail.com; spf=pass(发件人IP为176.62.196.244;身份比对结果为通过,比对模式放宽)[email protected]; dkim=pass(身份比对结果为pass,比对模式放宽)header.d=exchangelabs.nl; x-hmca=pass [email protected]

根据标头信息,我们可以得出结论,所有 DMARC 信息都是正确的,并且接收服务器可以在可用时验证该信息。

概括

DMARC 构建在 SPF 和 DKIM 之上,要使 DMARC 正常运行,您需要同时配置 SPF 和 DKIM。 DKIM 是基于策略的,并且该策略输入到公共 DNS 中,因此可供所有人使用。当检查 DMARC 但不采取任何操作时,此策略可以设置为“无”,也可以设置为“隔离”或“拒绝”。后者非常严格,当 SPF 和 DKIM 不正确时,传入电子邮件将被拒绝,因此永远不会送达。

DMARC 的一个有趣功能是报告功能,其中有关接收服务器上 DMARC 功能的信息将报告回发送服务器,使 (Exchange) 管理员能够分析 DMARC 功能和行为。

在过去的三篇博客文章中,我讨论了 SPF、DKIM 和 DMARC。对于出站消息,这三个消息都可以在 DNS 和 Exchange 服务器本身中进行配置,但入站消息仍然受到限制。目前(2016 年 8 月)我还没有找到合适的(开源)DKIM 验证模块,也没有看到适用于 Exchange 服务器的 DMARC 验证模块。一旦我找到更多信息,我将更新我的博客文章。

更多信息

  • 维基百科上的 DMARC - https://en.wikipedia.org/wiki/DMARC
  • 在 Office 365 中使用 DKIM 和 DMARC 增强电子邮件保护 - https://blogs.office.com/2015/01/20/enhanced-email-protection-dkim-dmarc-office-365/
  • DMARC 概述和状态 - http://www.dmarc.org
  • 为什么 DMARC 很重要 - https://dmarc.org/wiki/FAQ#Why_is_DMARC_important.3F

特别感谢 Ashley Flentge 的更正 ?

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯