理想园 - 这邮件真是他发的?

曾经 @orzFly 跟我发过一封邮件,想假装是美国政府给我发邮件。具体的方式呢,自然就是把发件人变成美国政府的邮箱地址(@whitehouse.gov)。虽然他当时用了比较 naive 的方法,失败了,但你有想过这个问题吗?

比如,有人假装是 @apple.com 发了封邮件给你,你看到发件人的域名就信了,点了进去,结果 Apple ID 的密码就被偷了。

​除了一点众览群骗的经验之外,我们怎么验证这个发件人是真实的呢?

(1) 一点假设

首先,我们要假设这个发件人的帐号不是被盗用了。

也就是说,如果猜到了那个邮箱的密码,自然无论发什么邮件,都会是名义上的“真邮件”。

是,Email 协议是开放的,任何人都可以自己开自己的邮件服务器。更多的假邮件,其实是通过伪造发件人的形式发出的。伪造的嘛,作为被伪造的一方,自然是无能为力了。

(2) 于是他们想了些方法 - SPF

你看,假如 ebay.com 的邮件如果经常被伪造,顾客被骗了钱才不管骗子什么的,让 eBay 背锅很自然。这样,被伪造邮件的公司自然很不爽。

随着这种情况越来越多,也有人想出了一些方法,来验证邮件的“真实性”。

SPF 记录是其中一种方法。这要从邮件是怎么发给另一方说起。

所有的域名,都是用 DNS 记录来定义各种属性的,管理者可以自己修改。比如,访问网站的时候该连到哪个 IP,用的就是 DNS 里的 A 或者 AAAA 记录,一查就知道了。

同样,一封邮件该发到具体哪台服务器的 IP 呢?答案是查 DNS 的 MX 记录。

收邮件的服务器是一定要确定下来的,否则就根本收不到邮件。但是因为邮件的特性,随便哪个服务器都可以代表这个域名发邮件出去,所以,不用在 DNS 中指定。

如果我们事先说好哪些服务器会发邮件,那些伪造邮件的服务器不在名单里,就“没法”发邮件出来咯。这不就好了。

DNS 可以定义其他的记录,比如 TXT 记录,就是那种“爱写啥写啥,一般没人看”的存在。所以 SPF 记录,实际上是一条 TXT 记录,内容则是可以发邮件的服务器的 IP 地址等。

(3) SPF 是怎么工作的

SPF 只是一条记录,看不看全看收到邮件的服务器的心情。

如果它看的话,步骤大概这样:

  1. 收到一封邮件,记录下把邮件发给它的服务器的 IP;
  2. 提取出发件人邮箱地址;
  3. 查询发件人的邮箱域名上的 SPF 记录,和另一个 DMARC 记录;
  4. 把发件服务器的 IP 与 SPF 记录做个比较;
  5. 如果 SPF 记录不允许第一步中的 IP 发邮件,嗯,服务器就知道了。

上面提到的 DMARC 记录,用来定义收件服务器,对于可能的“假邮件”该怎么处理。像 PayPal,设置的是“直接退信”,这样子伪造的邮件就没法进到收件箱里去了。

(4) 一些总结

说起来,这其实只是防止诈骗邮件的一小步吧。每一个环节稍不留心,被骗的机率还是很高。

毕竟,只有国内外的一些主流邮箱会校验 SPF 记录,毕竟这个校验功能是需要人写代码的,一些小邮箱也“没这个本事”。有些人则认为,这个技术没什么卵用,用户又不会盯着发件人域名看,用一个 app1e.cn 发邮件,人家都照样都以为是苹果,防不胜防。

但是吧,它的确能够有效解决猖獗的“伪造邮件”问题。自从我自己那个很不知名的域名设置了 SPF 记录,Gmail / 网易每天会给我发自动报告,伪造我域名的假邮件每天能有个好几封。如果算上那些不看 SPF 的邮箱,这个数一定会更多,我也是有点心惊胆战呢。

“理想园 - 这邮件真是他发的?”的2个回复

    1. 这是很好的“下期预告”。刚准备发。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

To respond on your own website, enter the URL of your response which should contain a link to this post's permalink URL. Your response will then appear (possibly after moderation) on this page. Want to update or remove your response? Update or delete your post and re-enter your post's URL again. (Find out more about Webmentions.)