PG Paul Graham 文集
100%
Part 5 · 早期文章 Early Essays

反击式滤波器

2003年8月

我们或许能通过让贝叶斯垃圾邮件过滤器跟踪链接,看看链接另一端是什么,来提高其准确性。death2spam 的 Richard Jowsey 现在在边缘情况下这样做,并报告说效果很好。

为什么只在边缘情况下这样做?又为什么只做一次?

正如我在《过滤器会杀灭垃圾邮件吗?》中提到的,跟踪垃圾邮件中所有 URL 会产生一个有趣的副作用。如果流行的电子邮件客户端为了过滤垃圾邮件而这样做,那么垃圾邮件发送者的服务器将遭受严重冲击。我越想越觉得这是个好主意。这不仅仅是好玩;很难想象还有比这更精准地反击垃圾邮件发送者的方法。

因此,我想向从事垃圾邮件过滤器工作的人们建议一个附加功能:“惩罚”模式。如果开启,它会将可疑垃圾邮件中的每个 URL 爬取 n 次,其中 n 可由用户设置。[1]

正如许多人指出的,当前电子邮件系统的问题之一在于它过于被动。它只会执行你告诉它的操作。到目前为止,所有修复问题的建议似乎都涉及新协议。而这个不会。

如果广泛使用,自动检索垃圾邮件过滤器将让电子邮件系统“反弹”。巨量的垃圾邮件,到目前为止一直是垃圾邮件发送者的优势,现在会对他不利,就像树枝弹回他脸上一样。自动检索垃圾邮件过滤器会推高垃圾邮件发送者的成本,降低他的销量:他的带宽使用量会飙升,服务器会在负载下停止运行,从而使那些原本可能回应垃圾邮件的人无法访问。

每小时发送一百万封邮件,你的服务器每小时就会收到一百万次点击。

我们希望确保这仅针对可疑垃圾邮件执行。一般来说,任何发送给数百万人的 URL 都可能是垃圾邮件 URL,因此提交每封电子邮件中的每个 HTTP 请求几乎在所有时间都会正常工作。但在少数情况下并非如此:例如,从 Yahoo Mail 和 Hotmail 等免费电子邮件服务发送的邮件底部的 URL。

为了保护这些网站并防止滥用,自动检索应与垃圾邮件广告网站的列入黑名单相结合。只有列入黑名单的网站才会被爬取,并且网站只有在经过人工检查后才会被列入黑名单。一封垃圾邮件的生命周期至少要有几个小时,因此应该很容易及时更新此类列表,以干扰推广新网站的垃圾邮件。[2]

高容量自动检索只对高带宽连接的用户实用,但这类用户数量足以给垃圾邮件发送者带来严重麻烦。事实上,这个解决方案巧妙地回应了问题本身。垃圾邮件的问题在于,为了接触到少数易受骗的人,垃圾邮件发送者给所有人发送邮件。不易受骗的收件人只是附属损害。但不易受骗的大多数人不会停止收到垃圾邮件,除非他们能阻止(或威胁阻止)易受骗者回应垃圾邮件。自动检索垃圾邮件过滤器为他们提供了这样做的方法。

这会杀灭垃圾邮件吗?不一定。最大的垃圾邮件发送者或许能保护他们的服务器免受自动检索过滤器的攻击。然而,对他们来说,最简单、最便宜的方法是在邮件中包含有效的退订链接。这对小规模垃圾邮件发送者以及雇佣垃圾邮件发送者推广自己的“合法”网站来说将是必要的。因此,如果自动检索过滤器变得普遍,它们就会变成自动退订过滤器。

在这种情况下,垃圾邮件就会像操作系统崩溃、病毒和弹窗一样,成为只困扰那些懒得使用正确软件的人的祸害之一。

注释

[1] 自动检索过滤器必须跟踪重定向,并且在某些情况下(例如,一个只写着“点击此处”的页面)应该跟踪不止一层的链接。还要确保 HTTP 请求与流行 Web 浏览器的请求无法区分,包括顺序和引用来源。如果响应在 x 时间内未返回,则默认具有较高的垃圾邮件概率。与其让 n 为常数,不如让它成为提及该网站垃圾邮件数量的函数,这可能是个好主意。这将进一步防止滥用和意外。

[2] 本文的原始版本使用了“白名单”而不是“黑名单”。尽管它们的工作方式与黑名单类似,但我更喜欢称它们为白名单,因为这可能使它们更不容易受到法律攻击。但这似乎只会让读者感到困惑。可能应该有多个黑名单。单点故障容易受到攻击和滥用。