打印本文 打印本文  关闭窗口 关闭窗口  
斩断Linux邮件服务器上垃圾邮件
作者:陈鹏  文章来源:eNet  点击数  更新时间:2009/9/11 23:21:18  文章录入:陈鹏  责任编辑:陈鹏

当今世界,垃圾邮件继续横行,而且日益成为一个严重的问题,因为垃圾邮件制造者也变得越来越聪明了,所以防止垃圾邮件对任何运行邮件服务器的人来说都是一件非常必要的事情。对于使用Linux的单位来说,现在就有一个杰出的防止垃圾邮件的工具:SpamAssasin 。现在我们就看一下如何通过SpamAssasin遏止垃圾邮件。

认识SpamAssassin

SpamAssasin是一个邮件过虑器,它可以使用一系列的机制来确认垃圾邮件,这些机制包括:文本分析、Bayesian (贝叶斯判决规则)过虑、DNS数据块列表,以及合作性的过虑数据库。SpamAssasin并不能删除垃圾邮件,但它却可以阻止垃圾邮件。究其原因,主要在于它有如下一些特性:

活动范围宽:SpamAssasin使用大量的本地和网络的测试来确认垃圾邮件特征。这使得垃圾邮件制造者在明确其制造的信息的可工作性时增加了难度。

自由软件:与其它流行的开源软件(如Apache Web Server)一样,在相同的条件下发行。

易于扩展:反垃圾测试和配置信息存储在纯文本中,这使得配置和增加新的规则相当容易。

灵活性:SpamAssasin将其逻辑封装在一个设计精良的、抽象化的API中,因此它可被集成到电子邮件数据流中的任何地方。SpamAssasin可被用于多种电子邮件系统中,其中包括:procmail,sendmail,Postfix, qmail等。

易于配置:SpamAssasin几乎不需要用户的配置。你不必用邮件帐户或邮件列表的成员资格详细信息来不断地更新SpamAssasin配置。一旦分类,站点和用户规则就可以被运用于垃圾邮件。而且规则可以适用于邮件服务器,并且在以后又可以使用用户自己的邮件用户代理应用程序。

SpamAssasin通常被认为是最好的垃圾邮件过滤器之一。本文将引导您安装、配置和使用这个强大的工具。

获取并安装SpamAssasin

作为一个Linux应用程序,有各种各样的方法安装SpamAssasin。下面是一个安装方法的简单列表:

Debian unstable:apt-get install spamassassin 
Gentoo: emerge mail-filter/spamassassin 
Fedora: yum install spamassassin

用户可从SpamAssasin(http://spamassassin.apache.org/downloads.cgi?update=200702131100)下载相关文档。文件准备好后,在控制台提示符下输入如下的命令:

untar/unzip the file 
cd into the newly created directory 
perl Makefile.PL 
OPTION: Add -DSPAMC_SSL to $CFLAGS to build an SSL-enabled spamc]
make 
make install [as root]

在INSTALL文件内有相当多的特定发布规则和从属规则。因此要在安装之前完整地阅读此文件。

为在系统范围内的使用进行安装

为在系统范围内的使用进行安装的一个最好理由是你不必更改用户的procmailrc文件。这可能会成为一个令人头痛的问题,这依赖于你所拥有的用户的数量。由于这个过程会从理论上破坏用户的电子邮件,把它放在一个试验性的环境中运行测试是很明智的。

配置

就像大多数Linux应用程序一样,SpamAssasin需要对配置文件的编辑。这个配置文件位于/etc/mail/spamassassin/ ,名为local.cf。在你手动编辑配置文件之前,可注意一下,Michael Moncur 已经编写的一个出色的工具SpamAssassin Configuration Generator,它可以帮助用户创建local.cf文件。不过,这个工具目前只能在SpamAssasin 3.x中工作。

这个工具提供基于web的选项套件,可以帮助用户创建自己的配置文件。在选取了Mr. Moncur 创建的简单选项后,按下“Generate”:

# Generated by http://www.yrex.com/spam/spamconfig.php (version 1.50)
# How many hits before a message is considered spam.
required_score 7.5
# Change the subject of suspected spam 
rewrite_header subject *****SPAM*****
# Encapsulate spam in an attachment (0=no, 1=yes, 2=safe)
report_safe 1
# Enable the Bayes system 
use_bayes 1
# Enable Bayes auto-learning 
bayes_auto_learn 1
# Enable or disable network checks 
skip_rbl_checks 0 
use_razor2 1 
use_dcc 1 
use_pyzor 1
# Mail using languages used in these country codes will not be marked 
# as being possibly spam in a foreign language. 
ok_languages all
# Mail using locales used in these country codes will not be marked 
# as being possibly spam in a foreign language. 
ok_locales all

下面对我们逐一分析:

Score Threshold(评价界限 ): threshold的值越低,就会有更少的邮件通过。默认值为6。不过你要注意:如果你将此项设置过低,一些合法的电子邮件也会被当作垃圾邮件加以阻止。

Rewrite Message Subjects(重写消息主题):通过这个选项,你可以配置SpamAssassin用你选择的任何对象来编辑电子邮件的主题行。默认值设置为:*****SPAM*****

Use Auto Learning(使用自动学习): SpamAssassin可以通过分析具有一定评价的消息,去自动化地整理其Bayes(贝叶斯)数据库,这个评价强烈地显示了消息是垃圾还是非垃圾消息。

Enable RBL Checks(启用RBL检查):选择SpamAssassin是否应使用RBLS(DNS黑名单)。这有助于检测难于检测的垃圾信息,但需要消耗一些时间、网络带宽以及一个可用的DNS服务器。

Use Network Checksum Tests(使用网络检查和检验):选择是否使用将消息检查和(Checksum)与已知的垃圾邮件相比较的服务:这些服务有:Vipul's Razor 2.x、 DCC、 Pyzor等,不过只有当每种服务的客户端软件安装时这些服务才能正常工作。(即通过use_razor2, use_dcc, use_pyzor进行)。

Languages(语言):最后两种配置是关于语言的,第一个是哪些语言应检查。默认选项是所有的语言。笔者建议您不要修改。

如果你使用Mr.Moncur的应用程序创建你的.cf文件,请将其存放在/etc/mail/spamassassin/ ,然后启动spamassassin应用程序。要想运行spamassassin,必须以根用户身份运行如下的命令:

/etc/rc.d/init.d/spamassassin start

注意:根据你的发布版本的不同,spamassassin可能位于/etc/init.d/ 。

启动并运行spamassassin之后,你可能会想到在每次启动时此程序都会启动运行。你可以使用system-config-services这个应用程序,或者检查启用spamassassin选项。如果用户没有system-config-services这个软件,可以在/etc/rc.local文件中增加如下的内容:

/etc/rc.d/init.d/spamassassin start

或者

/etc/init.d/spamassassin start

这依赖于你可执行SpamAssassin所处的位置。

与Procmail协同工作

你的spamassassin已经启动并正常运行,现在需要你设置它与邮件传输代理(Mail Delivery Agent)一起工作。在此笔者假设你正使用procmail,因为它是在Linux环境中应用最广泛的邮件传输代理。

用户需要编辑/etc/procmailrc文件并增加下面的内容:

DROPPRIVS=yes
:0fw 
  /usr/bin/spamc

现在procmail被设置为使用SpamAssassin 来评价和过滤进入的垃圾邮件。

垃圾邮件黑名单

我们知道某些域/用户会发送垃圾信息。幸运的是,SpamAssassin有一个对付已知垃圾邮件制造者的手段。借助于黑名单,SpamAssassin又朝着最佳和最后的垃圾邮件防线又迈了一步。

设置黑名单是很简单的事情。你可以向两个配置文件添加黑名单。对于站点范围内的使用,可以考虑/etc/mail/spamassain/local.cf ;在~/.spamassassin/user_prefs内,每一个用户可以配置其自己的黑名单。黑名单看起来是如下的样子:

blacklist_from sample_email@sampledomain.com 
blacklist_from *@sampledomain.com 
blacklist_from *@sampledomain.com 
blacklist_from *@sampledomain.com

上面的内容相当明显地向我们展示了如何配置黑名单。即你可以配置具体的电子邮件地址(如sample_email@sampledomain.com),你也可以配置整个域(如*@sampledomain.com)

如果你不想花费时间编辑自己的黑名单,你可以从http://www.sa-blacklist.stearns.org/sa-blacklist/sa-blacklist.current下载最新的黑名单。不过,未必适合你的需要,有许多中文的垃圾邮件网站并没有列入。而且这个列表相当庞大,因此在下载此列表并添加到你的黑名单时可要小心了。

训练你的SpamAssassin

有可能你的SpamAssassin不能正确地评价电子邮件是否垃圾邮件。如果发生这种情况,可以用自己的电子邮件训练SpamAssassin。

为此,你需要使用一个SSH程序(如SSH或Putty等)和SpamAssassin'ssa-learn程序。邮件服务器还必须设置IMAP协议,用以训练SpamAssassin。

为了训练SpamAssassin,用户应遵循如下的步骤:

1.将垃圾邮件从正常邮件中分离出来,将其放入一个单独的邮箱中。

2.打开ssh应用程序并连接到jupiter.gac.edu。

3.运行如下两个命令:

sa-learn --ham --progress --mbox Mail/nameOfYourHamMailbox 
sa-learn --spam --progress --mbox Mail/nameOfYourSpamMailbox

如果你用超过200个垃圾邮件和200个正常邮件训练了你的SpamAssassin,它就会使用这些信息来决定哪些是垃圾邮件,哪些不是。

结束语

笔者认为SpamAssassin 可谓阻止垃圾邮件漫延的必备工具之一。可以这样说,在公司环境中运行着一个邮件服务器,而如果您没有采取任何防范措施,任凭垃圾邮件通过您的传输通道肆意漫延时,那简直是一场噩梦。

试想一下设置防止垃圾邮件软件的重要性以及SpamAssassin使用的简易性吧,你还有什么理由不在你的Linux邮件服务器上部署SpamAssassin这个好东西呢,也许你的邮件服务器甚至你的WEB服务会因此人气大增。



【责任编辑 彭凡】

打印本文 打印本文  关闭窗口 关闭窗口