垃圾邮件有一个硬伤,就是它们的内容和正常邮件有所区别,它们总是基于推销的目的编写内容。
但是只靠特定的关键词识别垃圾邮件不是一个好的方法,你会需要长期和发送者做斗争。而且关键词的维护也是一个问题,一旦设置一个关键词,那么所有包含这个词的邮件都会被认定为垃圾邮件。
基于统计的识别方法是一个很好的方案。作者对单个词语进行贝叶斯判断,很好的过滤了大部分垃圾邮件。
关于误判,误判是指把正常邮件错误的判断成垃圾邮件。效果越好的过滤器误判的后果越严重,因为用户很信赖你的过滤器,不会去检查被判定为垃圾邮件的列表,如果发生误判,他们就会错过正常的邮件。
作者开发统计学过滤器基本思路是:
1.准备两个邮件样本库,一个是正常邮件的,另一个是垃圾邮件的
2.分别扫描两个样本库,生成两张散列表,表中统计了每个词语出现的次数
3.当收到一封新邮件时,分析其中的词语,结合两张散列表中的数据,按一定的规则计算出一个值,这个值就表征了这封邮件是否为垃圾邮件
用户可以通过对被误判的邮件做标识,来将邮件加入样本库,并重新计算散列表。以此使你的过滤器不断进化。这样还有一个好处就是会使每个用户的样本库都不一样,那么垃圾邮件发送者会无所适从。
我们还可以使用白名单、黑名单机制来提高准确率,同时节省计算时间。
作者指出,当所有人都在使用优秀的垃圾邮件过滤器时,发送者会发现垃圾邮件的效果越来越差,最终他们会停止发送。但我认为这会是一个博弈的过程,当大部分发送者停止发送垃圾邮件时,用户收到的垃圾邮件会很少,那么垃圾邮件过滤器就不再是必要的了,很多用户可能不再使用过滤器,这时候发送者如果重新开始工作,他们的邮件会收到很好的效果。所以我认为如果是邮件服务商统一的提供“免费”的垃圾邮件过滤服务是比较好的做法(事实上他们正在这样做),这样才有可能减少垃圾邮件。