前几天发现本站点挂在 Microsoft 365 上的域名邮箱收到的信件越来越少,起初怀疑是接受的信件本来就少,结果后来才发现是最近修改了根域的DNS解析导致出现这个问题。趁此机会,顺便完善了一下本站域名邮箱的安全措施,降低发送邮件失败或者被当作垃圾邮件的可能性,提高域名邮箱的可信度
什么是电子邮件身份验证
电子邮件身份验证(也称为电子邮件验证)是一组尝试阻止欺骗(来自伪造发件人的电子邮件)的标准。 在所有 Microsoft 365 组织中,EOP 使用以下标准验证入站电子邮件
- SPF (Sender Policy Framework)
- DKIM (DomaineKeys Identified Mail)
- DMARC (Domain-based Message Authentication, Reporting and Conformance)
- ARC (Authentication Received Chain)
设置SPF以协助防止欺骗
SPF,全名为 Sender Policy Framework,是一套电子邮件认证机制,可以确认电子邮件确实是由网域授权的邮件伺服器寄出,防止有人伪冒身分网路钓鱼或寄出垃圾电子邮件。
SPF 有助于防止您网域寄出的邮件被归类为垃圾邮件。设置 SPF 记录有助于防范网域遭到假冒。
如果没有 SPF,收件伺服器可能会将正常的邮件传送至收件者的垃圾邮件资料夹,甚至拒收这类邮件。
添加SPF记录
当添加域名至 Microsoft Admin 时会提示我们需要在 DNS 托管服务提供商添加 SPF 记录,默认记录是 v=spf1 include:spf.protection.outlook.com -all
,即域名邮箱完全托管在 Office 365 中,没有其他的 SMTP 服务器,或者可能是 Office 365 德国 v=spf1 include:spf.protection.outlook.de -all
,此时的默认添加记录取决于你的 Office 365 所在区域
元素 | 如果您正在使用... | 对于客户而言很常见? | 添加以下内容... |
---|---|---|---|
1 | 所有电子邮件系统(必需) | 常见。 所有 SPF TXT 记录都以此值开头 | v=spf1 |
2 | Exchange Online | 常见 | include:spf.protection.outlook.com |
3 | Exchange Online 专用 | 不常见 | ip4:23.103.224.0/19 <br/>ip4:206.191.224.0/19 <br/>ip4:40.103.0.0/16 <br/>include:spf.protection.outlook.com |
4 | 仅 Office 365 Germany、Microsoft Cloud Germany | 不常见 | include:spf.protection.outlook.de |
5 | 第三方电子邮件系统 | 不常见 | include:<domain_name> <> domain_name是第三方电子邮件系统的域。 |
6 | 本地电子邮件系统。 例如,Exchange Online Protection加另一个电子邮件系统 | 不常见 | 为每个附加的邮件系统使用以下其中一个:ip4:<IP_address> <br/>ip6:<IP_address> <br/>include:<domain_name> <> IP_address和<domain_name>是代表域发送邮件的其他电子邮件系统的 IP 地址和域。 |
7 | 所有电子邮件系统(必需) | 常见。 所有 SPF TXT 记录都以此值结尾 | <enforcement rule> 这可以是多个值之一。 建议值 -all 。 |
一旦形成 SPF TXT 记录,则需要更新 DNS 中的记录。 只能为域使用一个 SPF TXT 记录
检验SPF TXT记录是否生效
nslookup -qt=txt <yourdomain>
#nslookup -qt=txt microcharon.com
使用DKIM来验证输出邮件
DKIM 全名为 DomaineKeys Identified Mail,称为域名密钥识别邮件(域名金钥辨识邮件),使用公开金钥加密的基础提供了数位签章与身分验证的功能,以检测寄件者、主旨、内文、附件等部份有否被伪冒或窜改。有助于保护域名声誉,同样有助于提高域名邮箱的可信度
DKIM 验证可以帮助接收服务器能够确认邮件的确来自你的网域,而非假冒分子,减少被接收服务器误判为垃圾或是欺诈邮件的可能性。如果想要进一步深入了解,请点击下列链接:如何將 DKIM 用於自訂網域中的電子郵件 - Office 365 | Microsoft Learn
添加网域
请先确保域名(网域)已经在 Microsoft Admin 添加过,如果未添加过域名,请点击下列链接进行你的网域验证
如果 DNS 是在 CloudFlare 托管服务的话,系统会自动帮你添加相应的 DNS 记录,非常方便,无需手动操作,站长亲自试过
Domains - Microsoft 365 admin center
启用DKIM
在 Microsoft 365 Defender (Microsoft 365 Security) 里选择需要启用 DKIM 的域名(网域),按照要求在 DNS 托管服务提供商处添加对应的 CNAME 记录,添加完毕后,返回 Defender 以启用 DKIM,至此 DKIM 添加完成
通常正确添加完 CNAME 记录后会花上几分钟的时间来与 DNS 服务器进行同步处理,最快几秒钟,最慢会持续数小时,如果一直未能进行验证,请检查是否配置出错
DomainKeys Identified Mail (DKIM) - Microsoft 365 security
检验DKIM CNAME记录是否生效
nslookup -qt=txt <selector>._domainkey.<yourdomain>
#nslookup -qt=txt selector1._domainkey.microcharon.com
#nslookup -qt=txt selector2._domainkey.microcharon.com
使用DMARC来验证电子邮件
DMARC,全名为 Domain-based Message Authentication, Reporting and Conformance,是一套以 SPF 及 DKIM 为基础的电子邮件认证机制,可以检测及防止伪冒身份、对付网路钓鱼或垃圾电邮。
开启 DMARC 之前必须先开启 DKIM 或 SPF 任意一种!
添加DMARC记录
以下是站长邮箱添加的 DMARC 记录,请根据实践情况进行合理添加记录,如参考这篇文章,使用 DMARC 來驗證電子郵件,設定步驟 - Office 365 | Microsoft Learn
v=DMARC1; p=quarantine; rua=mailto:[email protected]; ruf=mailto:[email protected]; sp=quarantine; adkim=r; aspf=r; pct=100
- p 是用于告知收件方,当检测到伪造发件人时收件方要做出什么处理,处理方式有三种,分别是:none为不作任何处理;quarantine为将邮件标记为垃圾邮件;reject拒绝该邮件
- rua 用于当检测到伪造邮件时,收件方须将该伪造信息的报告发送到指定邮箱
- ruf 用于在收件方检测后,将某个时间段的汇总报告发送到指定邮箱
- sp 是子域名的 DMARC 验证失败时应采取的措施,quarantine 即为隔离
- adkim 是 DKIM 比对,r: 严格 – DKIM中的域名应与发件人域名完全匹配 s: 宽松 – DKIM中的域名应与发件人地址的根域名匹配
- aspf 是 SPF 比对,s: 严格 – SPF中的域名应与发件人域名完全匹配 r: 宽松 – SPF中的域名应与发件人地址的根域名匹配
- pct 是需要应用 DMARC 策略的消息的百分比,默认100,使用这个参数可以逐步测试 DMARC
检验DMARC TXT记录是否生效
通过以下的邮箱测试器可以检验出 DMARC 记录是否生效
Newsletters spam test by mail-tester.com
使用邮件测试器来检验
下面的邮件测试器可以帮助我们检测邮箱是否可信,并基于得分来反馈给我们一些需要改进的地方,每天同一邮箱可以免费测试三次
Newsletters spam test by mail-tester.com
此处是站长所使用的域名邮箱的得分情况
小结
通过实施以上的措施,可以使我们的检测得分达到最大化,本站邮箱得分依旧被狠狠的扣除了两分,如下所示,通过查阅资料后发现,是域名后缀的原因导致的,.top 域名在 Spamhaus 上的不良调查排名为8(.top 被大量滥用),目前也没办法解决,估计只有更换成 .com .net 等域名才能解决这个问题呢
The Spamhaus Project - The Top 10 Most Abused TLDs
Untrustworthy TLDs
URI: microcharon.com (top)
参考资料
Microsoft 365 中的電子郵件驗證 - Office 365 | Microsoft Learn
發件人策略框架 - 維基百科,自由的百科全書 (wikipedia.org)
域名金鑰辨識郵件 - 維基百科,自由的百科全書 (wikipedia.org)