写点什么

Office 365 中三种反垃圾邮件的方法

  • 2019-09-25
  • 本文字数:5684 字

    阅读完需:约 19 分钟

Office 365中三种反垃圾邮件的方法

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,但有效的反垃圾邮件还需要配合连接筛选器,垃圾邮件筛选器设置和邮件流规则等操作,以及提高用户的警觉性。


以下为一个邮件头的部分条目:


Authentication-Results: spf=none (sender IP is 167.220.24.220) smtp.mailfrom=contoso.com; microsoft.com; dkim=none (message not signed) header.d=none;microsoft.com; dmarc=none action=none<--header.d  //DKIM检查字段 header.from=tailspintoys.com; From: From header FromHeader@tailspintoys.com <-- 5322.From header //DMARC检查字段 To: Andrew Stobart andrew.stobart@microsoft.com Subject: Different MailFrom and From headers Return-Path: MailFromHeader@contoso.com    <-- 5321.MailFrom //SPF & DMARC检查字段 Reply-To: replyto@adventure-works.com   <-- Reply-To address //点击回复后地址,常被仿冒
复制代码


3、SPF(Sender Policy Framework)


域名所有者添加 TXT 记录,发布允许从该域或可以代表你的域发送邮件的外部域(如中继域)的合法 IP 地址,并指明处理规则。


以下是典型的绑定国内版 Office 365 需要添加的 SPF 记录值:


v=spf1 include:spf.protection.partner.outlook.cn -all //指定处理规则-all hard fail 进入垃圾邮件文件夹~all soft fail 邮件头中标记但继续投递?all neutral  不执行任何操作
复制代码


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 会对邮件进行验证,并添加类似如下标头。


Authentication-Results: <contoso.com>; dkim=pass (signature was verified) header.d=example.com;
复制代码


但是不会根据验证通过或失败对邮件进行操作,且 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


_dmarc.contoso.com 3600 IN  TXT  "v=DMARC1; p=none/quarantine/reject"  //指定处理规则
复制代码


对于入站邮件扫描,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 是否启用,如图所示。


Get-DKIMSigningConfig -Identity office365lib.cn
复制代码



确认 DKIM 已经启用



EAC 中 DKIM 显示“已启用”


等待 1 个小时以上,用已开启 DKIM 的邮箱发邮件,在收件人中检查邮件头,看是否有 DKIM-Signature 内容,如图所示。



检查邮件头中的 DKIM-Signature 内容


DMARC

介绍 DMARC 之前,简单介绍一下 SMTP 协议中一个比较有意思的地方。这里有一个简单的 SMTP 发送测试代码:


helo 21vianet.com250 BJBFFO30FD002.mail.protection.partner.outlook.cn Hello [106.120.78.19x]ehlo250-BJBFFO30FD002.mail.protection.partner.outlook.cn Hello [106.120.78.19x]250-STARTTLSmail from:phish@21vianet.com250 2.1.0 Sender OKrcpt to:office@jiuxianqiao.top250 2.1.5 Recipient OKdata354 Start mail input; end with <CRLF>.<CRLF>From:IT@jiuxianqiao.topTo:office@juxianqiao.topSubject:IT security mails
复制代码


这段代码是一个简单的 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 值格式为:


_dmarc.domainTTL IN TXT "v=DMARC1; pct=100; p=policy
复制代码


例如,设置 jiuxianqiao.top 的 DMARC 值为:


jiuxianqiao.top text ="_dmarc.jiuxianqiao.top 3600 IN  TXT  "v=DMARC1; p=reject"
复制代码


  • Domain 设置成自己的自定义域名。

  • TTL 值一般建议设置为 60 分钟。

  • PCT 值设置为 100 是确保这个记录被邮件百分之百应用。当然也可以设置邮件抽查比例。

  • Policy 中含有 3 种类型的 policy,分别为 NONE、Quarantine、Reject。


NONE 的策略是一种监控策略,这种策略下,不会对邮件产生实际的阻止影响,当域名没有设置完成 SPF 和 DKIM 时,强烈建议执行这样的策略。


Quarantine 的策略启动后,会对 SPF 或 DKIM 检查失败的邮件,进行 Quarantine 的策略。一般会放置到邮箱的垃圾文件夹中。


Reject 策略,将会对 SPF 或 DKIM 检查失败的邮件,请求收件服务器不再接收这封邮件。目前执行的策略来看,是放到收件人的垃圾文件夹中,如图所示。



Telnet 方式测试发送仿冒邮件



该邮件识别为垃圾邮件


如果想了解本书的更多内容,可以通过京东当当网购买本书,以便阅读其他章节。


2019-09-25 11:068748

评论

发布
暂无评论
发现更多内容

架构师训练营第六周作业

脸不大

架构师训练营2期第二周总结

架構師訓練營第 1 期 - 第 06 周作業

Panda

架構師訓練營第 1 期

第二周作业

伊灵

非HTTP应用或批处理应用如何进行全链路监控

东风微鸣

全链路监控 非HTTP应用

架构师训练营 1 期 - week06 - 总结

lucian

极客大学架构师训练营

第六周学习心得

熊桂平

极客大学架构师训练营

架构师二期第二周作业

supersky6

作业

简述CAP原理

orchid9

架构师训练营第 6 周课后练习

叶纪想

极客大学架构师训练营

2 期架构师训练营 - 框架设计

云飞扬

极客大学架构师训练营

架构师训练营第六周学习总结

文智

极客大学架构师训练营

ARTS打卡 第22周

引花眠

微服务 ARTS 打卡计划 springboot

week-6-part1 CAP 原理

陈龙

week2-作业一

未来已来

在 iOS App 中显示 Build 时间和 git 分支名、commit 哈希

疯清扬

ios 编译时间 git version build time 编译日期

Dynatrace抓取系统中的任何方法Method的参数值

东风微鸣

APM Dynatrace

6.3CAP原理与NoSQL数据库架构

张荣召

架构第六周总结

Geek_Gu

第6周作业

paul

11/1-第二周-总结

张冬冬

心得

技术选型(二)

wing

极客大学架构师训练营

week-6-part2 学习总结

陈龙

架构师训练营第六周作业

文智

极客大学架构师训练营

第二周课后练习

刘洋

极客大学架构师训练营

6.4Zookeeper与分布一致性架构

张荣召

6.2分布式关系数据库(下)

张荣召

架构二期第二周总结

supersky6

架构师训练营1期-week06-作业

lucian

极客大学架构师训练营

第六周总结

orchid9

2 期架构师训练营 - 第二周学习总结

云飞扬

极客大学架构师训练营

Office 365中三种反垃圾邮件的方法_语言 & 开发_王少峰_InfoQ精选文章