自己动手打造企业垃圾邮件过滤系统

原创
安全 数据安全
电子邮件是整个互联网业务重要的组成部分。据相关报道统计,四分之三以上的用户上网的主要目的是收发邮件,每天有十数亿封电子邮件在全球传递,其应用频率已经超过了WWW服务,因此,电子邮件已成为网络用户不可或缺的需要

【51CTO.com 独家特稿】电子邮件是整个互联网业务重要的组成部分。据相关报道统计,四分之三以上的用户上网的主要目的是收发邮件,每天有十数亿封电子邮件在全球传递,其应用频率已经超过了WWW服务,因此,电子邮件已成为网络用户不可或缺的需要。

然而,由于电子邮件的免费特性以及一些电子邮件服务器的开放性,使得电子邮件服务面临着垃圾邮件、病毒感染以及服务器滥用等严重的安全问题。基于这个背景,本专题对Linux系统中的著名邮件服务器(包括qmail邮件服务器、Postfix邮件服务器)的安全配置和使用作详细介绍。


1、电子邮件系统面临的安全威胁

一般说来,电子邮件系统面临如下两种安全威胁:

(1)电子邮件系统自身的安全问题:电子邮件系统自身作为一个网络服务器,存在着配置和误操作上的安全威胁和隐患,如没有合理配置服务器的相关配置文件中的重要选项等,极有可能造成潜在的安全隐患。另外,电子邮件系统版本的及时更新与否也影响到其安全;
(2)垃圾邮件问题:垃圾邮件问题是当今最让网络用户头疼的顽疾之一。许多不请自来的垃圾邮件不但占据网络带宽,也极大地消耗了邮件服务器的存储资源,给用户带来非常大的不便。如何应对该问题,是电子邮件系统面临的最大的挑战;
(3)开放性中继的安全问题:这就是大家经常所谈到的open relay的原理,如果设置不合理,将直接引起电子邮件系统的滥用,甚至会成为垃圾邮件的温床,它可以说是电子邮件系统中的“定时炸弹”。
 

2、安全使用Qmail邮件服务器

Qmail 的配置文件是由多个文件组成的,不是集中在一个文件中。每个文件控制相应部分的功能和属性,一个可执行程序可能有多个配置文件控制,所有的配置文件共同决定了 qmail 运行的实现和模式。这些配置文件都在qmail的control目录中,即位于 /var/qmail/control 目录中。合理设定如下选项,可以有效地增强Qmail服务器的安全性能。

(1)badmailfrom
这个配置文件是控制邮件系统拒绝接收的邮件地址和邮件域,主要是为了防止垃圾邮件。如果一个邮件地址或者邮件域被列入到这个文件中,系统就会拒绝接收这个邮件地址发来的邮件,或者拒绝邮件域下所有邮件地址发来的邮件。不过这个配置文件只是一般的垃圾邮件防范手段,对于比较全面的垃圾邮件过滤技术还要靠第三方软件来实现。该文件的格式如下:
example@deny.com //拒绝这个地址发来的邮件
@deny.com //拒绝这个邮件域下的所有帐号发来的邮件

(2)concurrencylocal
这个文件定义了 qmail 可以同时投递的本地邮件的个数。这个参数的缺省值是 10,也就是说系统允许同时有 10 个邮件在本地投递。 concurrencylocal 这个参数的最大值是由编译时的conf-spawn参数来决定的,缺省值是120,最大值是255。该值应该设置恰当,设得过大或者过小会浪费或者损失Qmail服务器的性能。
(3)concurrencyremote
这个参数定义了 qmail 可以同时投递的远端邮件的个数,这个参数的缺省值是 20。这个参数的最大值也是由 conf-spawn 来决定的。设置的重要性如同选项(2)所示。
(4)databyes
它定义了 qmail-smtpd 所允许接收的邮件的最大字节数。
这个参数的缺省值为 0,表示对接收邮件的字节数没有限制。如果要限制最大的接收为 10M,操作如下:
echo 10485760 > /var/qmail/control/databytes
这是任何大于 10M 的邮件都会被拒绝。这个参数最好合理设置,以避免恶意的对你服务器发送大量的超大邮件,产生邮件服务器负荷过大,甚至系统崩溃的危险。
(5)me
这个配置文件是 qmail 系统十分重要的一个文件,如果这个文件不存在,qmail 系统将无法运行。 me 是用来定义本地邮件服务器的主机名的。有多个配置文件是和 me 有关联的。如果那些配置文件不存在,系统默认会从 me 中读取参数值的。me 这个配置文件一般都是在 qmail 系统安装时使用 configure-fast 来创建的。
(6)queuelifetime
这个配置文件是定义一个邮件在邮件队列中存活的时间。
缺省值为 7 天(604800s),这个期限掉了以后 qmail-send 将会进行最后一次的投递尝试,如果投递失败,该邮件将会从邮件队列中删除。
(7)rcphosts
这个配置文件也是 qmail 一个十分重要的文件,这个文件是定义系统允许转发邮件的邮件域。 如果这个文件不存在或者为空,你的系统将会接收 Internet 上所有的域的邮件转发,即你的系统是 Open relay(存在被恶意用户作为垃圾邮件发送服务器的危险!!!)。配置文件 rcpthosts 最多可以支持 50 个主机名和域名。如果超个这个数字,就需要保存到他的扩充配置文件 morercphosts 中,然后使用 qmail 的命令程序 qmail-newmrh (该文件一般在 /var/qmail/bin 目录下)来生成二进制的 morercpthosts.cdb 文件,这样 qmail-smtpd 才可以从这个二进制文件中读取信息。
(8)virtualdomains
这也是 qmail 的一个非常重要的配置文件,它定义了 qmail 的虚拟邮件域,qmail 结合 vpopmail 的虚拟域管理功能可以定义多个虚拟邮件域。


3、安全Postfix电子邮件服务器

Postfix是一个由IBM资助、由Wietse Venema负责开发的自由软件工程产物,它的目的就是为用户提供除Qmail之外的邮件服务器选择。Postfix在快速、易于管理和提供尽可能的安全性方面都进行了较好的考虑。Postfix是基于半驻留、互操作的进程的体系结构,每个进程完成特定的任务,没有任何特定的进程衍生关系,使整个系统进程得到很好的保护。同时Postfix也可以和Qmail邮件服务器保持兼容性以满足用户的使用习惯。

(1)安全配置Postfix邮件服务器
与Qmail相比,Postfix最被人称道的地方就在于其配置文件的可读性很高。Postfix的主配置文件是/etc/postfix/main.cf。虽然该配置文件的内容比较多,但其中大部分内容都是注释(“#”号开头的行),真正需要自行定义的参数并不多。然而,为了对其进行安全配置,还是需要针对某些选项进行细心的设置。

在main.cf文件中,参数都是以类似变量的设置方法来设置的,这些参数的使用主要包含两部分的内容:
(1)定义和声明变量:例如definename = good-better-best。等号左边是变量的名称,等号右边是变量的值。
(2)引用变量:可以在变量的前面加上符号“$”来引用该变量,如:myname = $ definename(相当于definename = good-better-best)。
需要注意的是:等号两边需要有空格字符。此外,如果变量有两个以上的设置值,就必须用逗号“,”或者空格符“ ”将它们分开。
在熟悉了上述变量的定义和引用方法后,下面详细介绍如何安全、高效地配置Postfix服务器的相关选项。

1.设置Postfix服务监听的网络接口
默认情况下,inet_interfaces参数的值被设置为localhost,这表明只能在本地邮件主机上寄信。如果邮件主机上有多个网络接口,而又不想使全部的网络接口都开放Postfix服务,就可以用主机名指定需要开放的网络接口。不过,通常是将所有的网络接口都开放,以便接收从任何网络接口来的邮件,即将inet_interfaces参数的值设置为“all”,如下所示:
inet_interfaces = all

2.安全设置可接收邮件的主机名称或域名
mydestination参数非常重要,因为只有当发来的邮件的收件人地址与该参数值相匹配时,Postfix才会将该邮件接收下来。通过该选项的设置可以过滤掉许多没有经过认证和授权的邮件,从而节省服务器的存储空间,以及节省用户的邮件处理时间。
举一个简单的例子,用户可以将该参数值设置为如下:
accept_domain = test.net
mydestination = $accept_domain

这就表明无论来信的收件人地址是X@test.net(其中X表示某用户在test.net域中的邮件账户名),Postfix都会接收这些邮件。而除此之外的邮件,Postfix都不会接受。

3.安全设置可转发邮件的网络(IP设置)
有关安全设置可转发邮件的网络可以使用mynetworks参数来设置。可将该参数值设置为所信任的某台主机的IP地址,也可设置为所信任的某个IP子网或多个IP子网(采用“,”或者“ ”分隔)。
比如,用户可以将mynetworks参数值设置为172.168.96.0/24,则表示这台邮件主机只转发子网172.168.96.0/24中的客户端所发来的邮件,而拒绝为其他子网转发邮件:
mynetworks = 172.168.96.0/24

除了mynetworks参数外,还有一个用于控制网络邮件转发的参数是mynetworks-style,它主要用来设置可转发邮件网络的方式。通常有以下三种方式:
(1)class:在这种方式下,Postfix会自动根据邮件主机的IP地址得知它所在的IP网络类型(即A类、B类或是C类),从而开放的它所在的IP网段。
(2)subnet:这是postfix的默认值,postfix会根据邮件主机的网络接口上所设置的IP地址、子网掩码来得知所要开放的IP网段。
(3)host:在这种方式下,postfix只会开放本机。
通常,用户一般不需要设置mynetworks-style参数,而直接设置mynetworks参数。如果这两个参数都进行了设置,那么mynetworks参数的设置有效。
4.设置可转发邮件的网络(域名设置)
上面介绍的mynetworks参数是针对邮件来源的IP来设置的,而relay_domains参数则是针对邮件来源的域名或主机名来设置的,其实从原理上来说是一致的,不过是区分了IP地址和域名而已,不过,relay_domains还需要依赖DNS这个基础设施。
例如,用户可以将relay_domains参数值设置为test.net,则表示任何由域test.net发来的邮件都会被认为是信任的,Postfix会自动对这些邮件进行转发,如下所示:
relay_domains = test.net

那么,要使它能在实际网络中更好地转发邮件,还必须进行相应的DNS设置。那么,需要在该网络的DNS服务器上定义了一个主区域test.net,并在该区域配置文件中定义了以下记录:

//定义邮件服务器的IP地址
patterson.test.net. IN  A  172.168.96.254
//定义邮件服务器的别名
mail.test.net. IN CNAME  patterson.test.net.
//定义优先级别
test.net.  IN MX  10 mail.test.net.

上述记录只对邮件服务器进行了定义,还有诸如SOA、NS等的定义,在这里就不再赘述。

(2)Postfix使用SMTP安全认证

如同前面所述的qmail服务器面临的邮件转发的问题,在Postfix服务器中同样也存在。为了避免这种情况的出现,Postfix默认不会对外开放转发功能,而仅对本机(localhost)开放转发功能。但是,在实际应用中,必须在Postfix主配置文件中通过设置mynetworks、relay_domains参数来开放一些所信任的网段或网域,否则该邮件服务器几乎没有什么用处。在开放了这些所信任的网段或网域后,还可以通过设置SMTP认证,对要求转发邮件的客户端进行用户身份(用户账户名与密码)验证。只有通过了验证,才能接收该用户寄来的邮件并帮助转发。同样,Postfix中目前比较常用的SMTP认证机制是通过Cyrus SASL包来实现的。

默认情况下,Postfix并没有启用SMTP认证机制。要让Postfix启用SMTP认证,就必须对Postfix的主配置文件/etc/postfix/main.cf进行修改。用户需要在main.cf文件中添加如下有关SMTP认证的设置部分:
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = ''
smtpd_recipient_restrictions = permit_mynetworks
permit_sasl_authenticated, reject_unauth_destination
broken_sasl_auth_clients=yes
smtpd_client_restrictions = permit_sasl_authenticated
smtpd_sasl_security_options = noanonymous

其中,每个选项的具体含义如下:
(1)smtpd_sasl_auth_enable:指定是否要启用SASL作为SMTP认证方式。默认不启用,这里必须将它启用,所以要将该参数值设置为yes。

(2)smtpd_sasl_local_domain:如果采用Cyrus-SASL版进行认证,那么这里不做设置。

(3)smtpd_recipient_restrictions:表示通过收件人地址对客户端发来的邮件进行过滤。通常有以下几种限制规则:

permit_mynetworks:表示只要是收件人地址位于mynetworks参数中指定的网段就可以被转发邮件。

permit_sasl_authenticated:表示允许转发通过SASL认证的邮件。

reject_unauth_destination:表示拒绝转发含未信任的目标地址的邮件。

(4)broken_sasl_auth_clients:表示是否兼容非标准的SMTP认证。有一些Microsoft的SMTP客户端采用非标准的SMTP认证协议,只需将该参数设置为yes就可解决这类不兼容问题。

(5)smtpd_client_restrictions:表示限制可以向Postfix发起SMTP连接的客户端。如果要禁止未经过认证的客户端向Postfix发起SMTP连接,则可将该参数值设置为permit_sasl_authenticated。

(6)smtpd_sasl_security_options:用来限制某些登录的方式。如果将该参数值设置为noanonymous,则表示禁止采用匿名登录方式。
在完成上述设置后,必须使用命令/etc/init.d/postfix reload重新载入配置文件,或使用命令/etc/init.d/postfix restart重新启动Postfix服务,以使该配置生效。当然,这两个命令的具体使用需要根据不同的Linux版本来选用。
此外,由于当Postfix要使用SMTP认证时,会读取/usr/lib/sasl2/smtpd.conf文件中的内容,以确定所采用的认证方式,因此如果要使用saslauthd这个守护进程来进行密码认证,就必须确保/usr/lib/sasl2/smtpd.conf文件中的内容为:
pwcheck_method: saslauthd
4、常用的垃圾邮件防范技术
电子邮件的廉价和操作简便在给人们带来巨大便利的同时,也诱使有些人将它作为大量散发自己信息的工具,最终导致了互联网世界中垃圾邮件的泛滥。垃圾邮件问题已经极大地消耗了网络资源,并给人们带来了极大的不便。据中国互联网协会(ISC)2005年第一次反垃圾邮件状况调查显示,中国邮件用户2005年4月平均每人每天收到邮件16.8封,占收到邮件总数的60.87%。并且,从垃圾邮件的总数量来看,每年网民收到的垃圾邮件总量增长率均为40%左右,问题十分严重。
目前,垃圾电子邮件已成为人们最头疼的问题之一。在Linux操作系统平台中,反击和过滤垃圾电子邮件是一件很重要的工作。下面介绍一些在Linux中广泛使用的防垃圾邮件技术。
1.SMTP用户认证技术
目前常见并十分有效的方法是,在邮件传送代理MTA上对来自本地网络以外的互联网的发信用户进行SMTP认证,仅允许通过认证的用户进行远程转发。这样既能够有效避免邮件传送代理服务器为垃圾邮件发送者所利用,又为出差在外或在家工作的员工提供了便利。如果不采取SMTP认证,那么在不牺牲安全的前提下,设立面向互联网的Web邮件网关也是可行的。此外,如果SMTP服务和POP3服务集成在同一服务器上,在用户试图发信之前对其进行POP3访问验证(POP before SMTP)就是一种更加安全的方法,但在应用的时候要考虑到当前支持这种认证方式的邮件客户端程序还不多。
2.逆向DNS解析
无论哪一种认证,其目的都是避免邮件传送代理服务器被垃圾邮件发送者所利用,但对于发送到本地的垃圾邮件仍然无可奈何。要解决这个问题,最简单有效的方法是对发送者的IP地址进行逆向名字解析。通过DNS查询来判断发送者的IP与其声称的名字是否一致,例如,其声称的名字为mx.hotmail.com,而其连接地址为20.200.200.200,与其DNS记录不符,则予以拒收。这种方法可以有效过滤掉来自动态IP的垃圾邮件,对于某些使用动态域名的发送者,也可以根据实际情况进行屏蔽。但是上面这种方法对于借助Open Relay的垃圾邮件依然无效。对此,更进一步的技术是假设合法的用户只使用本域具有合法互联网名称的邮件传送代理服务器发送电子邮件。例如,若发件人的邮件地址为someone@yahoo.com,则其使用的邮件传送代理服务器的Internet名字应具有yahoo.com的后缀。这种限制并不符合SMTP协议,但在多数情况下是切实有效的。须要指出的是,逆向名字解析要进行大量的DNS查询。
3.实时黑名单过滤
以上介绍的防范措施对使用自身合法域名的垃圾邮件仍然无效。对此比较有效的方法就是使用黑名单服务了。黑名单服务是基于用户投诉和采样积累而建立的、由域名或IP组成的数据库,最著名的是RBL、DCC和Razor等,这些数据库保存了频繁发送垃圾邮件的主机名字或IP地址,供MTA进行实时查询以决定是否拒收相应的邮件。但是,目前各种黑名单数据库难以保证其正确性和及时性。例如,北美的RBL和DCC包含了我国大量的主机名字和IP地址,其中有些是早期的Open Relay造成的,有些则是由于误报造成的。但这些问题迟迟得不到纠正,在一定程度上阻碍了我国与北美地区的邮件联系,也妨碍了我国的用户使用这些黑名单服务。
4.白名单过滤
白名单过滤是相对于上述的黑名单过滤来说的。其建立的数据库的内容和黑名单的一样,但其性质是:库中存在的都是合法的,不应该被阻断。同样,该过滤方法存在的缺点与黑名单类似,也是更新和维护难以达到实时,一些正常的、不为系统白名单所收集的邮件有可能被阻断。从应用的角度来说,在小范围内使用白名单是比较成功的。
5.内容过滤
即使使用了前面诸多环节中的技术,仍然会有相当一部分垃圾邮件漏网。对此情况,目前最有效的方法是基于邮件标题或正文的内容过滤。其中比较简单的方法是,结合内容扫描引擎,根据垃圾邮件的常用标题语、垃圾邮件受益者的姓名、电话号码、Web地址等信息进行过滤。更加复杂但同时更具智能性的方法是,基于贝叶斯(Bayes)概率理论的统计方法所进行的内容过滤,该算法最早由Paul Graham提出(http://www.paulgraham.com/spam.html),并使用他自己设计的Arc语言实现。这种方法的理论基础是通过对大量垃圾邮件中常见关键词进行分析后得出其分布的统计模型,并由此推算目标邮件是垃圾邮件的可能性。这种方法具有一定的自适应、自学习能力,目前已经得到了广泛的应用。最有名的垃圾邮件内容过滤是Spamassassin,其使用Perl语言实现,集成了以上两种过滤方法,可以与当前各种主流的MTA集成使用。内容过滤是以上所有各种方法中耗费计算资源最多的,在邮件流量较大的场合,需要配合高性能服务器使用。另外,当前也有很多学者将人工神经网络、支持向量机、Winnow算法等及其学习的方法引入到内容过滤垃圾邮件的研究中来,并且取得了很好的效果。

#p#
5、客户端配置垃圾邮件防护功能

1.正确配置Foxmail收发邮件
在安装和启动了SMTP以及POP服务器之后,就可以使用其来收发邮件了,由于命令行方式的使用比较麻烦和需要相当的背景知识,所以现在普遍的方式是使用Windows下的一些邮件客户端软件来发送和接收邮件。
这些客户端软件主要有Foxmail、Outlook Express、Netscape、Eudora等等,由于其他的客户端软件与Foxmail具有差不多的功能,下面主要介绍使用Foxmail这款典型的、最为常用的软件,该软件功能强大,使用灵活、方便,首先介绍如何来对其收发邮件的相应选项进行配置。
在安装好该软件的Foxmail 6.0版本以后,就可以按照如下的步骤进行配置:
(1)选择并单击菜单栏上的【邮箱(B)】选项,弹出下拉菜单,单击【新建邮箱账户(N)】选项,系统弹出【向导】对话框,如图1所示。向导将提示用户建立新的用户账户,在这里,建立一个新的用户为patterson。

(2)单击【下一步】按钮,向导提示用户输入POP3服务器地址、用户名、密码以及SMTP服务器地址,以方便发送和接收邮件,如图2所示。这里POP3服务器地址为:pop3.test.net,用户名为:patterson,密码隐藏,SMTP服务器地址为:smtp.test.net。

 

 

(3)单击【下一步】按钮,如图3所示,并且单击【完成】按钮,完成账户的建立工作。配置完成后,用户就可以使用Foxmail方便地使用前面建立的test.net的SMTP以及POP3服务器收发电子邮件了。

 

 

2.配置Foxmail垃圾邮件过滤高级功能
Foxmail提供了强大的垃圾邮件过滤功能,它基本上集成了本专题第4节中介绍的所有垃圾邮件过滤技术,使用该客户端的用户可以结合其与qmail邮件服务器高速使用,从而保证从一定程度上减轻垃圾邮件对自己的“骚扰”,具体的设置步骤如下:
(1)选择并单击菜单栏上的【工具(T)】选项,弹出下拉菜单,单击【反垃圾邮件功能设置(Z)】选项,系统弹出【反垃圾邮件设置】对话框,如图4所示。
 

(2)选择并单击对话框上的【常规】标签,可以设置最简单的垃圾邮件转移处理功能。
(3)选择并单击对话框上的【规则过滤】标签,可以设置垃圾邮件过滤的相关规则。如图5所示。
 

 

(4)选择并单击对话框上的【贝叶斯过滤】标签,可以设置基于贝叶斯人工智能方法的垃圾邮件过滤的相关方法,通过对现有用户标记的邮件的学习,Foxmail可以学习到垃圾邮件具有的关键字、IP地址、域名等信息,从而在邮件到来后,及时地、自动地为用户进行标记和判别,减少用户的处理时间。如图6所示。

 

 

(5)选择并单击对话框上的【黑名单】标签,可以人工设置哪些邮件将直接列入黑名单而被Foxmail直接删除,从而在邮件到来后,及时地、自动地为用户进行标记和判别,同样减少用户的处理时间。在使用黑名单时特别要注意,千万不要把有用的邮件地址列入其中,否则有可能将给用户带来不可挽回的损失,如图7所示。

 

 

(6)选择并单击对话框上的【白名单】标签,可以人工设置哪些邮件将直接列入白名单而不为Foxmail进行处理提示是否为垃圾邮件,从而交给用户作进一步处理,这样做同样可以减少用户的处理时间。如图8所示。

 

 

6、服务器端使用SpamAssasin防治垃圾邮件
1.SpamAssasin简介
SpamAssasin是一个邮件过滤器,它可以使用一系列的机制来确认垃圾邮件,这些机制包括:文本分析、Bayesian (贝叶斯判决规则)过滤、DNS数据块列表,以及合作性的过滤数据库。SpamAssasin并不能删除垃圾邮件,但它却可以阻止垃圾邮件。究其原因,主要在于它有如下一些特性:
? 适用范围广:SpamAssasin使用大量的本地和网络的测试来确认垃圾邮件特征。这使得垃圾邮件制造者在明确其制造的信息的可工作性时增加了难度。
? 自由软件,应用广泛:与其它流行的开源软件一样,爱好者可以广泛的应用和修改、发布,应用前景很好。
? 易于扩展:SpamAssasin将反垃圾测试和配置信息存储在纯文本中,这使得配置和增加新的规则相当容易。
? 灵活性:SpamAssasin将其逻辑封装在一个设计精良的、抽象化的API中,因此它可被集成到电子邮件数据流中的任何地方。SpamAssasin可被用于多种电子邮件系统中,其中包括:procmail、sendmail、Postfix、qmail等。
? 易于配置:SpamAssasin几乎不需要用户的配置。用户不必用邮件帐户或邮件列表的成员资格详细信息来不断地更新SpamAssasin配置。一旦分类,站点和用户规则就可以被运用于垃圾邮件。而且规则可以适用于邮件服务器,并且在以后又可以使用用户自己的邮件用户代理应用程序。
2.安装SpamAssasin
可以在网站上http://spamassassin.apache.org/downloads.cgi下载SpamAssasin的最新版本进行安装,目前其最新版本为3.2.5,具体的安装步骤如下所示:
(1)解压缩软件包
#tar xzvf Mail-SpamAssassin-3.2.5.tar.gz
(2)进入目录进行安装
#./configure
#make & make install
3.配置与启动SpamAssasin
就像大多数Linux应用程序一样,SpamAssasin需要对配置文件的编辑。这个配置文件的路径是:/etc/mail/spamassassin/local.cf。下面给出了一个配置该文件的示例:

# 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

其中,主要包括如下几个重点项需要进行设置:

required_score(评价阈值):设定该阈值通常情况下需要根据管理员的长期经验。阈值越低,就会有更少的邮件通过,因而将正常邮件误报为垃圾邮件的概率越高;阈值越高,则有可能将更多的垃圾邮件漏报为正常邮件,通常的默认值为5。

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

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

Enable or disable network checks(使用网络检查和检验):选择是否使用将消息检查和(Checksum)与已知的垃圾邮件相比较的服务:这些服务有:Vipul's Razor 2.x、 DCC、 Pyzor等,不过只有当每种服务的客户端软件安装时这些服务才能正常工作。(即通过use_razor2, use_dcc, use_pyzor进行)。另外,该选项中还包括了Enable RBL Checks(启用RBL检查),即选择SpamAssassin是否应使用RBLS(DNS黑名单)。这有助于检测难于检测的垃圾信息,但需要消耗一些时间、网络带宽以及一个可用的DNS服务器。

Languages(语言):最后两种配置是关于语言的,第一个是哪些语言应检查,默认选项是检查所有的语言,建议不要修改。
在成功配置好spamassassin后,需要启动spamassassin应用程序。要想运行spamassassin,必须以根用户身份运行如下的命令:
#/etc/rc.d/init.d/spamassassin start

4.与qmail协同工作
你的spamassassin已经启动并正常运行,现在需要设置它与邮件传输代理(Mail Delivery Agent)一起工作。本文介绍它与qmail协同工作的设置,因为qmail是在Linux环境中应用最广泛的邮件传输代理。
用户需要编辑/etc/mail/spamassassin/spamc.cf文件,并增加如图9所示的内容:

 

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


5.垃圾邮件黑名单

通常情况下,垃圾邮件发送者都会借助某些域和用户会发送垃圾信息。幸运的是,SpamAssassin有一个对付已知垃圾邮件制造者的手段。设置黑名单是很简单的事情。用户可以向配置文件etc/mail/spamassain/local.cf添加黑名单。黑名单的书写方式如下所示:
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下载最新的黑名单。不过,这个列表相当庞大,且有可能不会非常适合用户的需要,因此在下载此列表并添加到用户的黑名单时还需要进行细致的过滤和筛选。

【51CTO.com 独家特稿,转载请注明出处及作者!】

    责任编辑:Oo小孩儿 来源: 51CTO.com
    相关推荐

    2010-09-30 09:27:18

    企业反垃圾邮件

    2010-05-25 15:29:04

    垃圾邮件 邮件安全网络管理

    2011-03-09 10:18:25

    2010-09-17 15:59:37

    2011-07-22 16:28:31

    Active DireORF

    2011-01-24 14:36:26

    2010-09-29 10:37:31

    反垃圾邮件

    2009-10-27 09:32:45

    垃圾邮件管理策略邮件管理

    2014-04-04 13:58:40

    2013-08-07 10:24:51

    2011-01-19 15:21:32

    Qmail垃圾邮件

    2015-05-18 09:31:15

    2011-09-23 15:28:44

    2009-07-01 19:08:38

    IBM云安全云计算

    2014-09-29 16:52:00

    2011-11-18 14:06:37

    垃圾邮件

    2010-04-28 17:06:19

    2010-03-18 17:04:52

    垃圾邮件邮件安全病毒

    2024-03-18 08:38:34

    ML.NET机器学习开源

    2012-12-03 10:17:42

    恶意垃圾邮件垃圾邮件恶意邮件
    点赞
    收藏

    51CTO技术栈公众号