Office 365 不仅提供最基础的 SPF 邮件安全身份验证机制,同时也支持第三方的验证方法,如 DKIM 和 DMARC。建议同时对自己的域名进行 SPF、DKIM、DMARC 的设置,来确保收件方可以有更多的机制来验证邮件的安全性。这篇文章节选自世纪互联蓝云公司最新出版的《精通 Office 365 云计算管理 Exchange Online 篇》2.6.4 章节,对 Office 365 中三种反垃圾邮件的方法进行了功能比对和设置方法的详细阐述。
SPF、DKIM、DMARC 功能对比
阻止垃圾邮件三种方法 SPF, DKIM 和 DMARC 的对比如下表所示:
1、垃圾邮件中的仿冒邮件,邮件头中的信息很多都可能被仿冒,只有 received 和邮件服务自行添加的 X-fields 字段可以信任。
2、建议同时启用 SPF+DKIM+DMARC,但有效的反垃圾邮件还需要配合连接筛选器,垃圾邮件筛选器设置和邮件流规则等操作,以及提高用户的警觉性。
以下为一个邮件头的部分条目:
3、SPF(Sender Policy Framework)
域名所有者添加 TXT 记录,发布允许从该域或可以代表你的域发送邮件的外部域(如中继域)的合法 IP 地址,并指明处理规则。
以下是典型的绑定国内版 Office 365 需要添加的 SPF 记录值:
Office 365 可以选择在垃圾邮件筛选器-高级选项中开启 SPF 记录:硬失败,启用此设置后, SPF 检查失败的所有邮件都将标记为垃圾邮件 (总是执行 SPF 筛选) 。
请参考:Office 365 如何使用发件人策略框架 (SPF) 来防止欺骗
Office 365 的典型 SPF TXT 记录具有以下语法,如果是 Exchange 混合部署环境,需要将本地的 Exchange CAS 服务器的公网 IP 加入该地址,需要注意的是 SPF 记录值,Office 365 规定只能是一条 TXT 记录,如果有多条记录,需要合并为一条。
v=spf1 ip4:1.2.3.4 ip4:5.6.7.8 include:spf.protection.partner.outlook.cn -all
检查 SPF 记录是否正确的网站,如下图所示,已经通过了SPF验证:
4、DKIM (DomainKeys Identified Mail)
DKIM 基于公钥算法,存在一对密钥:私钥和公钥。私钥保存在 Office 365, 公钥以 CNAME 记录方式发布到 DNS。
DKIM 使用私钥将加密的签名插入邮件头。在邮件头中,将签名域或出站域作为 d = 字段中的值插入。收件方使用 d = 字段从 DNS 中查找公钥,对邮件进行身份验证。如果邮件已经过验证,则 DKIM 检查通过。Office 365 已经对默认域名设置了 DKIM,也可以对自定义域名进行设置。
对于入站邮件,Office 365 会对邮件进行验证,并添加类似如下标头。
但是不会根据验证通过或失败对邮件进行操作,且 DKIM 记录中也没有可以设置对于垃圾邮件如何处理的语法。如需根据 DKIM 验证结果对邮件进行处理,可以考虑创建邮件流传输规则。
例如,一位重要客户已经部署 DKIM,需要阻止他人仿冒客户域名发送垃圾邮件,创建的传输规则如下,对 DKIM 检查结果为 None 或者 failed 的邮件进行隔离。
5、DMARC
DMARC(Domain-based Message Authentication, Reporting & Conformance)是一种基于现有的 SPF 和 DKIM 协议的可扩展的电子邮件认证协议。DMARC 要求在 DNS 中设置 SPF 记录或 DKIM 记录,并明确对验证失败的邮件的处理策略。在 Office 365 中要通过 DMARC 检查,建议开启 SPF 和 DKIM。参考链接:如何在Office 365中启用DMARC
对于入站邮件扫描,Office 365 默认开启扫描, 将 p=reject 和 p=quarantine 视为相同方式,如果 DMARC 设置 p=reject, EOP 会将邮件标记为垃圾邮件,而不是拒绝。
DKIM 和 DMARC 设置方法
1、如何在 Office 365 上针对自定义域名启用 DKIM。
在域名的 DNS 管理中心添加两个 CNAME 记录,如图所示。
添加 CNAME 记录
CNAME 记录使用图所示的格式。
CNAME 记录格式
对于 Office 365,选择器将始终为“selector1”或“selector2”。
DomainGUID 值与显示在 mail.protection.partner.outlook.cn 前面的自定义域的自定义 MX 记录中的 DomainGUID 相同。例如,contos.com解析出来的地址应为contos.com,它的MX记录应该为contos-com.mail.protection.partner.outlook.cn。这里 DomainGUID 值应该为 contos-com。
InitialDomain 是用户注册 Office 365 时所使用的初始域。
如果不想自己写这个值,有个小技巧,使用 Exchange Online PowerShell 模块,新建 DKIM 秘钥。New-DKIMSigningConfig –DomainName office365lib.cn(使用自定义域名代替office365lib.cn)-Enabled $True,就可以获得 Host 的值,如图所示。
获取 CNAME 值
在 Exchange 管理员界面单击,启用 DKIM,如图所示。
启用 DKIM
使用 PowerShell 来验证 DKIM 是否启用,如图所示。
确认 DKIM 已经启用
EAC 中 DKIM 显示“已启用”
等待 1 个小时以上,用已开启 DKIM 的邮箱发邮件,在收件人中检查邮件头,看是否有 DKIM-Signature 内容,如图所示。
检查邮件头中的 DKIM-Signature 内容
DMARC
介绍 DMARC 之前,简单介绍一下 SMTP 协议中一个比较有意思的地方。这里有一个简单的 SMTP 发送测试代码:
这段代码是一个简单的 SMTP 发送邮件代码,它模拟一个正常的邮件发送行为,其中有两个发送的邮件地址,它们分别代表了 Mail from 的 phish@21vianet.com 和 From:“IT@jiuxianqiao.top”。Mail From 和 From 这两个值是如何规定的呢?
“邮件发件人(Mail from)phish@21vianet.com”地址的发件人地址,指定在传送邮件过程中出现任何问题(如邮件未送达通知),可以返回通知的地址。该地址出现在电子邮件的信封部分,我们发送邮件时并不需要填写此地址,也称为"5321.MailFrom 地址"或"反向路径地址"。
“发件人(From)IT@jiuxianqiao.top”地址是在邮件应用程序显示的发件人地址。此地址标识电子邮件的作者,是表明发件人身份的,给收件人确认信息的地址,也称为"5322.From 地址"。
如果设置了 SPF 值,那么收件方将会使用 SPF 值来检查 Mail From 的地址 phish@ 21vianet.com,如果邮件确实是从这个地址发出的,那么 SPF 标记是成功的。而“From”地址是显示在邮件正文中的地址,收件方看到地址具有欺骗性。
DMARC 正是通过和 SPF(DKIM)的结合使用,来帮助收件方验证发件人身份的机制,遏制仿冒邮件和钓鱼邮件。DMARC 类似于 SPF,通过在 DNS 上发布 DMARC TXT 记录,接收方进行 DMARC 验证的过程如下。
1、从邮件头收取 FROM 字段的域名(5322.From),如A.com,获取返回邮件地址域名(5321.MailFrom),例如B.com
2、查询 A. com(5322.From)和 B.com(5321.MailFrom),如果结果一致,只验证 SPF 记录。
3、查询 A. com(5322.From)和 B.com(5321.MailFrom),如果结果不一致,需要检查 DKIM 设置。
4、在步骤(2)和步骤(3)的 SPF 或 DKIM 检查中,如果有一个验证通过,则就认为这个邮件是安全的。如果验证不通过,则需要执行 DMARC 设置的策略。
在 Office 365 中,如果已经设置了 SPF 值,建议继续设置 DKIM。如果不设置 DKIM,且允许 Office 365 对域名使用默认的 DKIM 配置,则 DMARC 可能会失败。这是因为默认的 DKIM 配置使用初始域 onmschina.cn 作为 5322.From 地址,而不是使用自定义域。有可能从自己的域发送的所有电子邮件 5321.MailFrom 和 5322.From 地址不匹配。
启用 DMARC 的过程如下。
1、设置域名的 SPF 值。
2、设置域名的 DKIM 值
3、在域名解析页面,发布一个新的 DMARC TXT 值格式为:
例如,设置 jiuxianqiao.top 的 DMARC 值为:
Domain 设置成自己的自定义域名。
TTL 值一般建议设置为 60 分钟。
PCT 值设置为 100 是确保这个记录被邮件百分之百应用。当然也可以设置邮件抽查比例。
Policy 中含有 3 种类型的 policy,分别为 NONE、Quarantine、Reject。
NONE 的策略是一种监控策略,这种策略下,不会对邮件产生实际的阻止影响,当域名没有设置完成 SPF 和 DKIM 时,强烈建议执行这样的策略。
Quarantine 的策略启动后,会对 SPF 或 DKIM 检查失败的邮件,进行 Quarantine 的策略。一般会放置到邮箱的垃圾文件夹中。
Reject 策略,将会对 SPF 或 DKIM 检查失败的邮件,请求收件服务器不再接收这封邮件。目前执行的策略来看,是放到收件人的垃圾文件夹中,如图所示。
Telnet 方式测试发送仿冒邮件
该邮件识别为垃圾邮件
如果想了解本书的更多内容,可以通过京东和当当网购买本书,以便阅读其他章节。
评论