Board logo

标题: 用 SpamAssassin 消灭垃圾邮件(2) [打印本页]

作者: look_w    时间: 2018-4-20 12:50     标题: 用 SpamAssassin 消灭垃圾邮件(2)

垃圾邮件分析标准 SpamAssassin 规则集中有几百条规则,每条规则都设置了权重。因此,即使这些规则不完美,但它们却很有用。例如,一条缺省规则与主题全是大写的消息相匹配。只采用这一条规则,不能体现它所有的能力。当与所有其它规则的结果结合使用时,在垃圾邮件标识过程中,它就起到了很有效的作用。这与大多数以前的垃圾邮件过滤器的要求(其中,每条规则必须保持完全独立)截然相反。
SpamAssassin 还使用了称为自动筛选的统计技术,来了解您收到邮件的特征,并使用它来调整垃圾邮件的分数。其意义,举个例子来说,假定您有一位朋友,经常向您发送(非垃圾邮件)电子邮件,但另一方面,那位朋友向您转发通常会获得很高的垃圾邮件分数的广告。SpamAssassin 将使用那位朋友的历史数据以向下调整消息的垃圾邮件分数。如果您知道来自某一特定的发送者(或站点)的消息是合法的还是垃圾邮件的话,您还可以用显式的白名单和黑名单项补充规则集。
但等一下!还有更多内容!除了了解诸如自动筛选之类的技术外,SpamAssassin 还可以访问诸如商业黑名单服务和 Razor 及 DCC 垃圾邮件校验和数据库之类的外部数据库。这些外部校验完全被视为类似的任意其它规则,当用户认为合适时,能够对与这些数据库中的一个匹配相关的权重进行调整。
正如用户所报告的,Razor 是已知的垃圾邮件消息校验和的数据库。(SpamAssassin 包含报告垃圾邮件的简单方法,它可以很容易地被集成到诸如 mutt 之类的基于 shell 的邮件代理中。)如果消息的校验和出现在 Razor 中,则触发相应的规则,并将其对应的分数加到消息分数中。Razor 在捕捉许多垃圾邮件时,其有效性令人惊奇,而且因为它的决定是以人类分类为基础的,所以它常常标识其它消息试探法所无法捕捉的消息。同时,SpamAssassin 指派给 Razor 命中的权重本身不足以将消息标记为垃圾邮件,所以对 Razor 的错误或甚至是怀有恶意的提交通常不会对 SpamAssassin 用户造成很大的麻烦。使用 Razor 比使用传统的黑名单更简单得多,黑名单通常错误地将清白的 IP 打上垃圾邮件制造者的烙印(而且要将其从黑名单上删除也很困难,这一点已臭名昭著了)。
因为 SpamAssassin 可以不断地学习和访问动态数据库,甚至无需安装定期规则更新,所以与严格基于规则的系统相比,它更可能长时间地使用。
配置 SpamAssassin与旨在作为 /bin/mail 的替代的 Procmail 不同,SpamAssassin 没有在实际的邮件交付中胡闹;它集中于将一件事做好,也就是明确充当单一邮件消息的垃圾邮件过滤器。很容易将它与各种邮件处理系统相联系,不管是在用户级别,还是在系统级别。
个人用户可以容易地添加新规则,当他们认为合适时,定制现有规则的权重,设置阈值从而将达到该值的邮件归为垃圾邮件,并影响 SpamAssassin 处理可能的垃圾邮件的方式。用户定制与核心规则集分开存储,从而可以轻松升级到 SpamAssassin 的新版本,而保留用户定制。
为单一用户过滤垃圾邮件为单一 UNIX 用户配置 SpamAssassin 的最简单方法是通过 — Procmail!
安装并构建了 SpamAssassin 分发版后,您可以通过将这一神奇的语句添加到                 .forward 文件来启用 Procmail 过滤:            
"|IFS=' ' && exec /usr/bin/procmail -f- || exit 75 #user"
接着,将下面的语句添加到 .procmailrc 文件:
:0fw| /path/to/spamassassin/spamassassin
就这样!现在,所有消息都将通过 SpamAssassin 过滤。缺省情况下,当 SpamAssassin 将消息标记为垃圾邮件时,它将对主题、主体和                 X-Spam-Status 头添加一个记号。现在用户可以使用他或她喜欢的邮件用户代理的过滤功能来将这些带标记的垃圾邮件消息扫除到“垃圾邮件”文件夹或删除它们。            
您可以通过创建                 .spamassassin/user_prefs 文件轻松地定制 SpamAssassin 如何标记和标识垃圾邮件。您可以定制将消息标识为垃圾邮件必需的“垃圾邮件点”点数、创建新规则以及对现有规则重新设置权重。            
以下是                 user_prefs 文件样本。它将标识垃圾邮件的阈值从 5 提高到 6,禁止在主题和主体内包含垃圾邮件警告,对已知规则重新设置权重,并添加几个黑名单、白名单和头规则。            
清单 1. 典型的 user_prefs 配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#How many hits before a mail is considered spam?
required_hits 6
#Don't mangle the messages so badly
rewrite_subject 0
use_terse_report 1
#whitelist and blacklist
whitelist_from *@spam-site-i-like.com
blacklist_from annoying-person@some-host.com
#reweight an existing rule
score BASE64_ENC_TEXT 3
#add some new rules
header KNOWN_LIST List-Id =~ /a-mailing-list-i-like/
score KNOWN_LIST -3
body EVITE /This invitation was sent to you by .* using Evite/
describe EVITE Looks like an eVite
score EVITE -3




为整个站点过滤垃圾邮件将 SpamAssassin 用于整个系统有无数方法。包含在 SpamAssassin 中的                 spamd 程序实质上是通过套接字通信的 SpamAssassin 命令行程序的守护程序版本。将 SpamAssassin 作为守护程序运行增加了启动开销,这包括装载 Perl 解释器和装载控制多个消息调用的所有 SpamAssassin 规则。就安全性而言,可以以非特权用户运行                 spamd 。            
因为很容易从脚本上调用 SpamAssassin,所以很容易将几乎任何 MTA 配置成使用 SpamAssassin。通过将 SpamAssassin 作为过滤器添加到                 /etc/procmailrc ,您可以使用站点范围的 Procmail 过滤。使用 Sendmail 的站点可以将                 spamassassin-milt “milter”用于 Sendmail,这只需要对                 sendmail.mc 添加一行内容。对于诸如 Exim、MailScanner 和 MimeDefang 之类的各种其它邮件处理程序,还需要插件。一旦站点范围安装了,用户就可以如上所示通过                 user_prefs (或类似的 MySQL)独立定制规则、规则的权重和其它处理选项。            
SpamAssassin 有了用武之地SpamAssassin 采用与以前垃圾邮件过滤器极其不同的方法,而且该方法证明是更灵活和更适合的。
我喜欢 SpamAssassin 的其中一点是,对大多数用户而言,它能捕捉几乎所有的垃圾邮件,而不需要隔离合法邮件。实际上它还提供了无限的调整和定制选项。我使用 SpamAssassin 已经有一段时间了,所以我很高兴地说,根据我的体验,弄错正、负的几率极其低。在经过一小部分的初始调整(主要是白名单和黑名单项)之后,现在我只需一周花几分钟扫描垃圾邮件文件夹来查找弄错正的情况(而几乎从未找到任何弄错的),而且可能只有 1% 的垃圾邮件成功躲过了过滤器的探测。此外,我没有觉得需要成为调整方面的专家,也不必担心当我升级到下一个版本时,会丢失我的定制。
它确实起作用。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0