使用SpamAssassin+Procmail过滤垃圾邮件

在服务器上过滤垃圾邮件

目前,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进程即可。


SpamAssassin的自动学习
    若要让SpamAssassin支持自动学习,则需要建立相关的账号并执行sa-learn。首先建立两个邮件账户spam和notspam,分别接受用户反馈的垃圾邮件和非垃圾邮件。然后用用一下命令启动自动学习:

$ /usr/bin/sa-learn --showdots --spam --mbox /var/spool/mail/spam /
 --ham --mbox /var/spool/mail/notspam



然后重新启动spamd进程即可。


参考引文:http://tech.ccidnet.com/art/294/20030418/44208_1.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值