发言者:风云 发言时间:2003-04-20 03:39:07
作者:戴专
目前,E-mail 在网络通信中扮演着十分重要的角色,已经成为构建 Internet 的基石之一。与此同时,企业也不得不面对接踵而至的安全威胁,邮件服务所遭受的攻击在各类攻击中占据很大的比例。对于邮件服务器而言,防范垃圾邮件的攻击具有重要的意义。因为邮件服务器是大量邮件的转发中枢,只有加以有效的控制,才能大大减少垃圾邮件对整个网络系统所造成的破坏。
垃圾邮件的过滤方法
一般来说,过滤服务器上的垃圾邮件主要采取如下两种方法:一是根据设置的规则直接拒收垃圾邮件;二是将邮件接收下来后再实施过滤。相比来看,前一种方法具有更高的效率,对邮件直接拒收,既节省网络带宽,又可减小服务器的性能开销。但是,这样做常常容易“殃及无辜”,使邮件用户丢失信件。后一种方法尽管效率不高,却可能减少出错的频率。如果服务器首先对接收下来的邮件进行有效分析,然后再交由用户进行选择,那么用户就不会为E-mail的无故丢失而烦恼。
用 SpamAssassin 过滤垃圾邮件
可以使用专门的软件来进行邮件过滤。它们一般都是通过设置规则对邮件头进行检查来过滤邮件,实现方法各具特色。SpamAssassin 是其中一款实现方法和运行效率较为出色的自由软件。与传统的垃圾邮件过滤器相比,SpamAssassin 的实现方法比较独特。经过实践证明,这种方法不仅灵活性好,而且适应性强。它引入以可能性为尺度的新型计分方法来分类处理邮件,而不是简单地接受或拒绝邮件,能够有效地降低正常邮件的丢失几率,从而大大提高垃圾邮件过滤效率问题。
SpamAssassin 的工作原理是,在对一封信件应用了各项规则之后,生成一个分值来表示其为垃圾邮件的可能性。它可以设置上百条规则,包括对邮件头的处理、对邮件内容的处理及对邮件结构的处理等。每条规则都对应一个分值(可正、可负),每封信件的分值就是所匹配规则的分值之和。如果分值为负,表示这封信件是正常的;相反,如果分值为正,则表示信件有问题。如果超过了某个默认的分值,过滤器就会标识其可能为垃圾邮件,然后交由用户做出最终抉择。
SpamAssassin 充分利用了统计技术,可以自动地 “学习” 接收邮件的特点,来调整垃圾邮件的分值。比如,如果一个地址平时发来的都是正常邮件,但偶尔发送了一封广告信(通常广告信具有很高的分值),这时系统就会自动降低这封邮件的分值。除了设置内部的规则之外,SpamAssassin 也可以访问其它外部的垃圾邮件信息库,这样可以进一步增强其适用性。它主要是用 Perl 编写的,所以对 Sendmail、Qmail、Postfix 和 Exim 等各种邮件平台都适用。
SpamAssassin 的安装与配置
SpamAssassin 软件的最新版本可以从
www.spamassassin.org 获得,本文中使用的是 2.50 版的 tar.gz 版本。它的安装过程比较简单,只需按照一般软件的安装方法即可,具体代码如下:
$ tar -xvzf Mail-SpamAssasin-2.50.tar.gz $ cd Mail-SpamAssassin-2.50 $ perl Makefile.PL $ make $ make install
SpamAssassin 预设了许多默认规则,可以在 /usr/share/spamassassin 下找到,也可以访问
http://www.spamassassin.org/tests.html 来获取这些规则的详细列表。一般情况下不需要改动修改这些预设的规则。如果用户想添加自己的规则,可以配置通过 /etc/mail/spamassassin/local.cf 文件实现。建议首先在其中添加白名单(即确定不会发送垃圾邮件的发件人列表)。具体设置代码如下:
whitelist_from_rcvd
friends@abc.com whitelist_from_rcvd @friends.com
以上两条规则分别将
friends@abc.com 邮箱和 @friends.com 整个域加入了白名单。接下来,需要把 SpamAssassin 与 Sendmail 整合在一起。较简单的方法是使用 procmail 来添加 SpamAssassin 过滤器。添加以下内容到 /etc/procmailrc 文件:
:0fw | /usr/bin/spamassassin
注意,如果不希望 SpamAssassin 检查很大的邮件,可以对其做出限制,设置如下:
:0fw * < 200000 | /usr/bin/spamassassin
这段代码表示把邮件检查的大小限制在 200K 字节以内。
考虑到性能要求,SpamAssassin 还提供了一个专门的 spamd 后台守护程序,可以设置为系统启动时自动启动它。在 Mail-SpamAssassin-2.50/spamd/ 下有一个 redhat-rc-script.sh 脚本,将此脚本放入 Red Hat 的启动目录 /etc/rc.d/init.d/ 下即可。同时,还需要对 /etc/procmailrc 文件做如下修改:
:0fw | /usr/bin/spamc -s 200000
这样就可以通过控制 spamd 进程来调整过滤器的运行状态。配置完成后,可以发邮件进行测试。如果看到在邮件头出现与 spam 检查相关的几项内容,表示 SpamAssassin 已经开始发挥作用。
最后,如果不想把正常邮件误标示为垃圾邮件,可以将垃圾邮件分值由默认的 5 调整得高些(比如 8)。具体的实现方法是在 /etc/mail/spamassassin/local.cf 文件中加入以下代码:
required_hits 8
然后重新启动 spamd 进程即可。