邮件是怎么证明发件人没被冒充的?

发件人地址可以随便填,所以光看它并不可靠。真正做证明的是发件方域名上几条公开的记录,收信方拿它们自己去核对,这封信到底是不是这个域名发出来的。

邮件协议早期没有强制验证发件人。第 78 期讲过,MX 记录决定邮件送到哪台服务器;但“谁有资格以这个域名的名义发信”是另一件事。发件人地址写在邮件里,发信人可以随手填成任何名字,收信方默认无法分辨。

现在靠三样东西补这个缺口,它们都建立在域名上的公开记录之上。

第一样是发件人策略框架(SPF)。域名在自己的文本记录里列出允许发信的服务器地址,收信方收到邮件后核对:这封信是从名单里的服务器发来的吗?不是,就有理由怀疑。

第二样是域名密钥识别邮件(DKIM)。发信服务器用一把私钥给邮件签名,对应的公钥同样公开在域名的记录里。收信方验签通过,能确认两件事:这封信在途中没有被改过,而且签名出自这个域名。

第三样是基于域名的邮件认证、报告与一致性(DMARC)。它在域名上声明处理规则:上面两项至少要有一项通过;通不过的信,是丢进垃圾箱还是直接拒收;同时要求收信方把结果定期回报给域名持有者。

这几条记录都是公开的,谁都能查。以 Gmail 为例,它的域名上写着 v=spf1 redirect=_spf.google.com 这样的策略;邮件认证记录里则是 p=none 的处理要求。反过来说,没有配置这些记录的域名,收信方只能凭经验判断,冒充它的邮件也就更容易混进来。