我们打赢了垃圾邮件,代价是自建邮箱再也发不出信

三十年反垃圾邮件战争,防御方一直在输。赢下来的方法不是把垃圾识别得更准,而是不再判断内容、改成验证身份。代价是发信权归了几家公司。

分享
我们打赢了垃圾邮件,代价是自建邮箱再也发不出信

![[cover-wechat-2.35x1.png]]

如果您自己搭建过域名邮箱,那么您域名的 DNS 里应该有三条 TXT 记录: - 一条 v=spf1 开头的字符串, - 一条塞着长长一串公钥的 DKIM, - 还有 _dmarc 开头的记录。

配置这玩意挺麻烦的,而且只要配错一条,域名邮箱就可能发不出信息,或者信息会直接进对方邮箱的垃圾箱。

而这一切,都要从一封 50 年前的邮件说起。

Date: 1 May 1978 1233-EDT
From: THUERK at DEC-MARLBORO
Subject: ADRIAN@SRI-KL

一个人,一本通讯录,320 个地址

1978 年 5 月,DEC 的市场经理 Gary Thuerk 想在加州办两场开放日,推销刚推出的 DECSYSTEM-20。他在西海岸没什么人脉,于是找了工程师 Carl Gartley,照着 ARPANET 那本印刷版的通讯录,把西海岸的地址一个一个手打进去,群发广告消息。还有一个很有意思的插曲:当时他们使用的电子邮件软件 SNDMSG 的地址栏最多支持 320 个左右,所以很多地址从 To 溢出到 CC,最后又溢出到邮件正文。而真正的广告内容出现在几百个地址之后。

ARPANET 逻辑图,1977 年 3 月

ARPANET 逻辑图,1977 年 3 月,距那封邮件十四个月。整张网络就这么大,一本纸质通讯录装得下。图片:ARPANET,公有领域,via Wikimedia Commons

DECSYSTEM-2020,1978 年那封广告主推的机型之一

DECSYSTEM-2020,正是那封广告里主推的型号。摄影:Jason Scott,CC BY 2.0,via Wikimedia Commons

这封电子邮件可能是能够查证的最早一封垃圾邮件,发送它的成本是两个人对着一本纸质手册敲了几天键盘。

这封邮件最终引起了官方的注意。国防通信局 ARPANET 管理处处长 Raymond Czahor 少校发了份通报,全大写:

THIS WAS A FLAGRANT VIOLATION OF THE USE OF ARPANET AS THE NETWORK IS TO BE USED FOR OFFICIAL U.S. GOVERNMENT BUSINESS ONLY.

官方的警告作用还是很明显的,往后的十多年里,没有再出现类似的事情。

但是,这仅仅只是开始。因为这个方式太有效了。

Thuerk 到今天也不认为自己做错了。2007 年他对 Computerworld 说,那次群发卖出了 "$13 million or $14 million worth" 的机器,还留下一句 "you don't blame the Wright Brothers for every flying problem"。

骂人不管用了

十六年后,两个律师把这件事做成了生意。1994 年 4 月 12 日,凤凰城的移民律师 Laurence Canter 和 Martha Siegel 把一条标题为 "Green Card Lottery-Final One?" 的广告发到了至少 5,500 个新闻组。他们没有 crosspost 一份,而是在每个组各发了一条独立的帖子,所以读者要是订了十个组,就会在十个地方各看见它一次。

他们的 ISP 被投诉冲垮,邮件服务器连崩两天,账号也被停了。但两人在当年 12 月的采访里说,这条广告带来 1000 个新客户,赚了 10 万美元,而成本只有几分钱。同年六月他们又发了一次,这次是 1000 个组。

Thuerk 当年做了一次之后就停手了,是因为他在乎 ARPANET 那个圈子怎么看他;Canter 和 Siegel 根本不在乎,他们后来甚至出了本书,书名叫《How to Make a Fortune on the Information Superhighway》,专门教别人照着干。发信成本降到几分钱之后,名声就不值钱了。

1997 年,田纳西州最高法院吊销了 Canter 的律师执照,理由之一就是那次群发。但这时距离那条广告已经过去三年,垃圾邮件早就不靠他一个人发了。

这两三年里,群发邮件已经变成了一门生意。1995 年 ,Sanford Wallace 成立 Cyber Promotions,专做批量邮件,到 1996 年高峰期,一天发出去大约三千万封。

他能发这么多,是因为 SMTP 这个协议本来就没打算防人。Postel 当年假设的是一群互相信任的服务器,所以任何一台邮件服务器默认都是开放中继(open relay),谁都可以把信丢进去让它替自己转发,九十年代中期超过 90% 的服务器都是这个状态。批量发信方就把一封信连同长长的收件人名单丢给别人的机器,扇出、带宽和投递全交由这台机器处理。他自己那台机器根本不用扛这么大的量。 各大服务商只能挨个去打官司。CompuServe 在 1996 年 10 月拿到临时禁令,第二年拿到俄亥俄南区法院的判决;AOL 前后起诉过两次,EarthLink 也告了,Cyber Promotions 最后拿到禁令并罚款六万五千美元。但官司一次只能停掉一个人。开放中继,全网都开着,换台服务器接着发就是了。

Paul Vixie

Paul Vixie,2014 年。1997 年他和 Dave Rand 做出了第一个 DNSBL。摄影:ImaginingtheInternet,CC BY 3.0,via Wikimedia Commons

同一年,Paul Vixie 和 Dave Rand 做出了 RBL(Real-time Blackhole List),也就是第一个 DNSBL。逻辑很直白:既然骂人没用,那就封 IP。发送营销电子邮件与反垃圾邮件的军备竞赛从这里正式开始

过滤器可以被无限试错

接下来七年,防守这边的技术进步很大,还是没拦住。

2001 年 SpamAssassin 出现,2002 年 Paul Graham 发表了《A Plan for Spam》,将贝叶斯统计引入邮件过滤。在那之前,过滤器全靠手写规则:主题里出现 XXX 就判为垃圾,连续出现三个全大写单词也判为垃圾。Graham 的做法是把整封信切成 token 逐个打分,正文、邮件头、内嵌的 HTML 和 JavaScript 全都算进去。

统计学习比手写规则强得多,但有个躲不开的问题:过滤器是个可以反复查询的黑盒。垃圾邮件发送者只要在自己机器上装一套同样的过滤器,就能一直改到它放行为止,改一次测一次,成本接近于零。于是就出现了图片垃圾邮件、故意写错的单词,还有在正文里塞一段小说来充当噪音的做法。

法律那条线也试过,结果更糟。2004 年 1 月 1 日生效的 CAN-SPAM 走的是 opt-out 路线:只要留了退订方式和有效的通信地址,群发商业邮件就是合法的。更麻烦的是它同时把各州更严的法律一并预先排除了,其中有两部本来是要全面禁止垃圾邮件的——也就是说,美国第一部反垃圾邮件法生效那天,全美最严的几部州法反而失效了。

同时,发送那边已完成工业化。僵尸网络接管了几十万台被感染的家用电脑,发信用别人的机器,走别人的带宽,成本仍然是零。按 Symantec MessageLabs 的口径:

时间 垃圾邮件占全球邮件
2008 年均 81.2%
2009 年均 87.7%
2010 年 7 月 90%

那几年,十封信里有九封是垃圾。

防守方也试过直接掐源头。2008 年 11 月 11 日,几家上游 ISP 切断了托管商 McColo 的连接,当时估计全球约七成半的垃圾邮件流量都跟它有关,全球垃圾邮件量一夜之间掉了六成以上(具体数字各家不同,Symantec 的探针网络测到 65%,其他报告给出的区间在 50% 到 80% 之间)。

但是垃圾邮件的数量一个月就涨回来了。因为发送成本是零,重建一套系统对他们来说不算什么。

终极答案

三十年里防守这边只做对过一件事:换掉问题。不再问「这封信像不像垃圾」,改问「这封信真是它声称的那个域名发出来的吗」。

  • SPF:域名在 DNS 里声明,只有这些 IP 有资格代表我发信
  • DKIM:发信方用私钥给邮件签名,收信方拿 DNS 里的公钥验签
  • DMARC:把前两者绑到用户看得见的那个 From 域上,并告诉收信方验不过该怎么办

这三样都不判断内容,所以前面那套「反复试错直到过关」的打法就失效了——攻击方可以无限调整措辞,但是他们却拿不到您的私钥。

回到开头您 DNS 里那三条记录。为什么是三条,不是一条?

因为 SPF 单独用有个硬伤:转发会把它打掉。一封信只要经过一次转发,投递到收件服务器的 IP 就已经不在原域名的 SPF 列表里了,SPF 会直接判失败,哪怕这封信完全正当。DKIM 补的就是这个缺口,它的签名跟着邮件本身走,只要正文和被签的头没被改动,转几次都还能验过。而 DMARC 只要求 SPF 和 DKIM 有一个对齐通过,两条都配的意义就在这儿——转发打掉了 SPF,还有 DKIM 兜住。

代价是部署速度极慢。这套东西需要全网协同,发信方得配 DNS,收信方得执行策略,两边都动起来才有意义。这个规范在 2000 年代中后期就定稿了,但是真正见效要等到 2020 年代。中间那十几年,技术早就有了,但是缺少一个有能力逼着全网一起做的人。

2024 年 2 月的那道门槛

这个人最后是 Google 和 Yahoo。2024 年 2 月,两家同时对批量发信方下了硬规定:对 Gmail 个人账户 24 小时内发近 5,000 封以上的,都算批量发信方。要求是 SPF 和 DKIM 都得配上,且至少一项与 From 域对齐以通过 DMARC;DMARC 记录的策略至少是 p=none;提供一键退订;投诉率压在 0.3% 以下,官方建议是 0.1%。

如果达不到这个目标,发送的邮件就无法进入 Gmail 邮箱。

这个效果很明显。2025 年全球邮件里垃圾邮件占 44.99%(Kaspersky 口径),跟 2010 年那个 90% 比几乎腰斩。但是垃圾邮件并没有消失,只是换了形态。同一份 Kaspersky 报告里,2025 年全年拦下的恶意或不受欢迎的邮件附件超过 1.44 亿个,同比还增长了 15%。卖药的广告不见了,钓鱼和商业邮件诈骗却多了起来。

账单

所以这场仗是靠把发信权交给几家公司赢下来的。

如果今天您自己架一台邮件服务器,SPF、DKIM、DMARC 全配好,信发出去仍然大概率进垃圾箱。不是因为您的信件是垃圾,而是因为您没有信誉记录——而信誉记录由 Gmail、Yahoo、Outlook 定义,它们不公开评分规则,也不会向您解释。

Jake Feinler

Jake Feinler,2006 年。1978 年她主持 ARPANET 网络信息中心。摄影:Doc Searls,CC BY-SA 2.0,via Wikimedia Commons

1978 年 5 月 7 日,Jake Feinler 在 MSGGROUP 邮件列表上写过一段话。她当时担心的是,能接入 ARPANET 的公司可以向一个精选市场打广告,接不进来的不能:

Consequently, if the ones that do have access can advertise their products to a very select market and the others cannot, this is really an unfair advantage.

参考链接

  • 1978 年原始邮件与社区反应存档:https://www.templetons.com/brad/spamreact.html
  • Paul Graham, A Plan for Spam(2002-08):https://paulgraham.com/spam.html
  • Gina Smith, Unsung innovators: Gary Thuerk, the father of spam, Computerworld(2007-12-03)
  • Kaspersky Securelist, Spam and phishing report for 2025:https://securelist.com/spam-and-phishing-report-2025/118785/