邮件安全实践:SPF、DKIM、DMARC(下)
DMARC 是什么
DMARC(或基于域的消息认证、报告和一致性)是一种电子邮件认证协议,用于防止电子邮件欺骗并防止域在电子邮件消息中的未经授权使用。
说的通俗一点就是:这是一种收发双方认同协议,由发送方启用并指定一个策略,告诉收件方在 SPF 或 DKIM 没能通过检查的时候该怎么办。
启用并让 DMARC 发挥作用的前提是邮件发送方本身的 SPF 和 DKIM 已正确配置并通过检查,这样当伪造和篡改出现的时候,策略才能被执行。
DMARC 配置
DMARC 配置就是邮件发送域 DNS 解析记录中配置一条 txt 记录:即 _dmarc.mydomain.com
我们随便看几个邮件域的 DMARC 配置:
#QQ邮箱
dig _dmarc.qq.com txt
#返回结果
"v=DMARC1; p=quarantine; rua=mailto:[email protected]"
#GMAIL
dig _dmarc.gmail.com txt
#返回结果
"v=DMARC1; p=none; sp=quarantine; rua=mailto:[email protected]"
#TOPNEC.ORG
dig _dmarc.topnec.org txt
#返回结果
"v=DMARC1; p=none; rua=mailto:[email protected];"
有了这么一条记录,就代表启用了 DMARC ,接收方在 DMARC 验证失败的时候就会根据配置中的参数来处置邮件:
参数 | 作用 | 例子 |
---|---|---|
v | 协议版本号 | v=DMARC1 |
pct | 被过滤信息的百分比 | pct=20 |
ruf | 取证报告的接受地址 | ruf=mailto:[email protected] |
rua | 汇总报告的接受地址 | rua=mailto:[email protected] |
p | 域的策略 | p=quarantine |
sp | 子域的策略 | sp=reject |
adkim | DKIM 对齐要求策略 | adkim=s 默认是 r |
aspf | SPF 对齐要求策略 | aspf=r 默认是 r |
通常情况下 v
、p
、rua
三项是最基础必须填写的设置,其他保持默认即可,adkim
和 aspf
默认策略都是 r
即宽松策略,要求当前策略所在域和邮件头的 From: 域相同或者至少为父子关系。这其中最重要的是 p
值:
none
:放行reject
:拒收quarantine
:隔离
以我的理解来说,对于大众情况(普通机构或个人)目前的做法通常是设置为 none
,相当于放行,送达后由收件方自行决定如何处置 SPF 或 DKIM 失败的信件;而对于一些金融机构、安全机构或者对于信誉要求极高的组织,它们则会设置为reject
或 quarantine
,这样严格确保「不可信」的邮件绝不会让用户收到或者至少显著的标记为垃圾邮件。
DMARC 最佳实践
现在很多人鼓吹 DMARC,并提倡直接把策略配置为最严格的 p=reject
这样真的是合适的做法么?我目前还没有答案,因为这个涉及到具体的邮件使用场景,是营销邮件?还是邮件组产品?
我最近读到了这篇文章:DMARC: The good, the bad and the ugly – Word to the Wise 文章阐述了 DMARC 优点的同时,指出了其被过度使用、不正确使用时所带来的问题,推荐阅读。
文中提到的主要争议点在:
- 一些公司没有妥善做好域名对齐工作的情况下,盲目部署
p=reject
导致了重要邮件送达失败; - DMARC 和 邮件的转发机制 存在冲突:一些安全机制、报警服务或者业务需要会进行必要邮件内容修改,这导致DKIM签名失效
p=reject
最终导致邮件送达失败; - DMARC 和 「邮件列表」这样的产品存在兼容性问题;
最后,这位作者,提出了我认为文章最重要的观察点:成本问题
As I said above, DMARC p=reject breaks email in deeply fundamental ways. I could be convinced this breakage was worth it if there were clear indications that DMARC p=reject actually stopped bad behavior. But there is very little data on the ground that p=reject provides more value than it destroys.
正如我上面所说,DMARC p=reject 会以深刻的基本方式破坏电子邮件。如果能有明确的迹象表明 DMARC p=reject 确实阻止了不良行为,我可能会被说服这种破坏是值得的。但目前几乎没有数据表明 p=reject 提供的价值超过了它带来的破坏。
作者认为 DMARC 一定程度上破坏了电子邮件的本质,并且沦为了一些商业安全机构的牟利工具。
小结
DMARC 该如何使用取决于:你是谁,以及你会怎样使用你的邮件,没有标准答案~
想想他的观点、再看看我的情况:当我用了几天时间、大量精力给我这样一个无人知晓、流量几乎为0、且目前没有什么品牌信誉的域名邮箱配置了「豪华」的安全机制后,我得到了什么?确实是一个有趣的思考角度!
至于我为什么对于邮件安全有这些兴趣,这是20年前的另一个故事了~