原文链接:https://loliloli.moe/2021/02/09/exchange_dkim_dmarc/
简述如何开启和使用 Exchange DKIM 以及 DMARC 功能
应该怎么说呢,事情还是从一些朋友们反馈这边站点发送的邮件被丢入垃圾箱开始的吧。一开始只是评论回复邮件,后来连其他邮件也被丢入垃圾箱了。很显然这不是什么好事情,大致上就是这种情况所以才想到了 DKIM 和 DMARC 来着,那么既然可以做那就做了吧。
当然和平时一样,Microsoft 的文档虽然涵盖了我们需要的全部内容,但是很多东西混杂在一起难以简单理解和一步到位,所以就还是顺手写了这篇文吧?
- 参考资料相关链接:
- Microsoft 文档:https://docs.microsoft.com/zh-cn/microsoft-365/security/office-365-security/
DKIM 简介(引用自 维基百科)
域名密钥识别邮件(DomainKeys Identified Mail,DKIM)是一套电子邮件认证机制,使用公开密钥加密的基础提供了数字签名与身份验证的功能,以检测寄件者、主旨、内文、附件等部分有否被伪冒或窜改。
一般来说,发送方会在电子邮件的标头插入 DKIM-Signature
及电子签名信息。而接收方则透过 DNS 查询得到公开密钥后进行验证。
原文链接:维基百科
DMARC 简介(引用自 Microsoft 文档)
DMARC 的记录是一个 DNS 文本 (TXT) 记录,有助于防止欺骗和钓鱼。在 DNS 中发布 DMARC TXT 记录。DMARC TXT 记录根据发送域的可疑所有者来验证电子邮件作者的 IP 地址,从而验证电子邮件的来源。 DMARC TXT 记录可以标识得到授权的出站电子邮件服务器。然后,目标电子邮件系统可以验证接收的邮件是否来自得到授权的出站电子邮件服务器。
原文链接:Microsoft 文档
DKIM 详细开启和使用方法
- 需要使用到的工具和相关链接:
- Exchange 管理中心(旧版):https://outlook.office365.com/
- Office 365 安全与合规性:https://protection.office.com/
- 邮件测试分析:https://www.mail-tester.com/
- PowerShell(管理员模式):右键开始菜单打开(不多赘述,找不到请百度或者谷歌)
检查并生成 DKIM 密钥
打开 Exchange 管理中心(旧版) 如下图选择“保护”,“dkim”可以查看到对应的域名并没有保存 DKIM 密钥,此时则需要生成 DKIM 密钥
首先打开 PowerShell 输入如下指令加载 Exchange 模块,或直接使用 Exchange Online PowerShell(使用参见 浅谈 Microsoft Exchange 设置 SMTP )
Import-Module ExchangeOnlineManagement
|
|
Connect-ExchangeOnline -ShowProgress $true
|
这里会弹出登录框,输入自己租户的全局管理员或 Exchange 管理员账号登录即可
随后我们输入如下指令生成 2048 位密钥
New-DkimSigningConfig -DomainName {youdomain.com} -KeySize 2048 -Enabled $True
完成后将看到如下输出
现在我们需要添加两条 CNAME 解析才能展开后续工作
添加 CNAME 解析
如上例,此时需要添加的 CNAME 记录已经给出
selector1-loliloli-moe._domainkey.lolilolimoes.onmicrosoft.com
|
|
selector2-loliloli-moe._domainkey.lolilolimoes.onmicrosoft.com
|
因此此时添加的格式为
selector1._domainkey.loliloli.moe CNAME 3600 selector1-loliloli-moe._domainkey.lolilolimoes.onmicrosoft.com
|
|
selector2._domainkey.loliloli.moe CNAME 3600 selector2-loliloli-moe._domainkey.lolilolimoes.onmicrosoft.com
|
那么你需要添加的格式则为如下
selector1._domainkey.youdomain.com CNAME 3600 selector1-youdomain-com._domainkey.initialdomain.onmicrosoft.com
|
|
selector2._domainkey.youdomain.com CNAME 3600 selector2-youdomain-com._domainkey.initialdomain.onmicrosoft.com
|
- 注意:此处 youdomain.com 指代你的域,initialdomain 指代你的租户初始域名称,即在 SPO 中显示的 xxxx-my.sharepoint.com 的 xxxx 部分
下面将以华为云以及 Cloudflare 举例添加 CNAME 解析记录
Cloudflare
如上图设置类型为 CNAME 名称对应 selector1._domainkey
(设置第二条请对应到 selector2._domainkey
)目标为对应的 selector1-youdomain-com._domainkey.initialdomain.onmicrosoft.com
设置第二条同理
请务必注意将 TTL 设置到 1 小时(即 3600)且不进行代理(灰云状态)
华为云
首先到达解析页面,选择“添加记录集”按照如下图填写记录
在主机记录中写入 selector1._domainkey
(设置第二条时请对应到 selector2._domainkey
)类型设置为 CNAME ,TTL 设置为 3600 值写入 selector1-youdomain-com._domainkey.initialdomain.onmicrosoft.com
即可
路线建议填写全网默认(默认值)
开启 DKIM
这里可以直接在 Exchange 管理中心(旧版) 启用或者在 Office 365 安全与合规性 开启,方法如下图(操作简单故不再赘述)
注意:若出现报错,请检查 CNAME 解析是否正确或是否生效
此时我们在 PowerShell 输入如下指令,返回值为 True
则开启状态正常
Get-DKIMSigningConfig -Identity youdomain.com
设置 DMARC 解析
设置如下 TXT 记录值
_dmarc.youdomain.com TXT 3600 v=DMARC1; p=none
- 注意按照需求进行设置
- v:标示 DMARC 的版本,值应当始终为 DMARC1
- p:用于告知收件方,处理方案,处理方式包括如下:
- none:不作任何处理
- quarantine:将邮件标记为垃圾邮件
- reject:拒绝该邮件
- pct:设置为 100 即可(表示应用的 DMARC 策略消息百分比)
添加 TXT 解析记录
方法和上面添加 CNAME 记录如出一辙,只需修改选项为 TXT 记录即可,故不再赘述,如有需求可以在评论区提问
测试 DKIM 以及 DMARC 是否生效
这里使用到的测试网站为:https://www.mail-tester.com/
只需向测试邮箱发送一封邮件即可完成测试,当分析结果如下时则 DKIM 、DMARC 状态正常
要发表评论,您必须先登录。