无标题文档
|
|
|
|
|
|
|
|
下一代互联网
  当前位置:EDU首页 > 教育信息化(旧) > 中国教育网络新版 > 技术荟萃 > 管理技巧
实现基于SpamAssassin的中文垃圾邮件过滤网关
http://www.media.edu.cn 2008-06-19 作者:陈光英 孙东红
    

一般情况下,原始的邮件服务器并没有垃圾邮件过滤功能。为了增添此功能,通常采用两种方案。第一,直接在邮件服务器上添加过滤模块。然而,一方面邮件服务器的工作性质决定其很难通过停止服务或者定期的暂停服务来安装或更新垃圾邮件过滤系统,同时也存在安全隐患。另一方面,针对不同的邮件服务器软件我们还需要编写不同的接口,很不方便。因此综合考虑安全性和便捷性,人们就更喜欢第二种过滤方式,即垃圾邮件过滤网关。我们将过滤网关放在与邮件服务器相同的网络环境下,只需在DNS服务器上做微小调整,过滤网关就可以正常工作。此外,过滤网关与邮件服务器使用的软件无关,一个网关可以同时为多个不同的邮件服务器提供运行支持。

 

本文主要介绍了利用开源反垃圾邮件平台SpamAssassin结合CCERT中文垃圾邮件过滤规则实现中文垃圾邮件过滤网关的方法。

 

运行框架

 

在实际连接中,过滤网关与邮件服务器处在相同的网络环境下。在逻辑框架中,邮件服务器的DNS MX记录指向邮件网关,这样所有发送到邮件服务器的邮件将首先经过网关处理,之后再转发给邮件服务器。

 

系统安装

 

下面将详细介绍如何安装一个垃圾邮件过滤网关。过滤网关使用Redhat 9操作系统,Sendmail 8.13.4,SpamAssassin 3.1.0,mimedefang 2.51,Perl 5.8.0。在安装Redhat9时选择全部安装(everything),安装所有组件,此时系统本身自带了Perl 5.8.0,Sendmail,SpamAssassin,除了Perl之外,Sendmail和SpamAssassin的版本都不是最新的,所以得重新安装。

 

安装Sendmail 8.13.4

 

可从网站http://www.sendmail.org下载最新版本,安装如下。

 

tarzvxf sendmail.8.13.4.tar.gz

 

cd sendmail-8.13.4  

 

cd devtools/Site

 

创建site.config.m4 文件内容如下:

 

APPENDDEF(`confENVDEF',`-DSASL=2')

 

APPENDDEF(`conf_sendmail_LIBS',`-lsasl2')

 

然后 

 

cd ../../sendmail

 

sh Build    //编译sendmail

 

cd ../cf/cf //进入sendmail配置文件目录

 

cp generic-linux.mc sendmail.mc

 

然后对sendmail.mc文件进行编辑,加入必要的功能模块。

 

此例中sendmail.mc文件中的内容如下:

 

divert(0)dnl

 

VERSIONID(`Spam-checking gateway')

 

OSTYPE(linux)dnl

 

DOMAIN(generic)dnl

 

FEATURE(virtusertable)dnl

 

FEATURE(mailertable)dnl

 

FEATURE(access_db)dnl###NextPage###

 

FEATURE (`access_list')dnl

 

FEATURE(always_add_domain)dnl

 

FEATURE(nouucp,`reject')dnl

 

FEATURE(`relay_based_on_MX')dnl

 

FEATURE(`accept_unresolvable_domains')dnl

 

define(`confDEF_USER_ID',``8:12'')dnl

 

define(`confPRIVACY_FLAGS',`goaway,noreceipts,restrictmailq,restrictqrun,noetrn')dnl

 

define(`confTO_QUEUERETURN',`1h')dnl

 

define(`confTO_QUEUEWARN',`1d')dnl

 

define(`confMAX_DAEMON_CHILDREN',`60')dnl

 

define(`ConfMAX_MESSAGE_SIZE',`10000000')dnl

 

define(`confMAX_CONNECTION_RATE_THROTTLE',`10')dnl

 

define(`confMAX_RCPTS_PER_MESSAGE',`500')dnl

 

define(`confMILTER_LOG_LEVEL', `8')dnl

 

INPUT_MAIL_FILTER(`mimedefang',

`S=unix:/var/spool/MIMEDefang/mimedefang.sock,F=,T=S:60s;R:60s;E:60s')dnl

 

define(`confAUTH_MECHANISMS',`LOGIN PLAIN GSSAPI DIGEST-MD5')dnl

 

TRUST_AUTH_MECH(`LOGIN PLAIN GSSAPI DIGEST-MD5')dnl

 

DAEMON_OPTIONS(`Port=smtp, Name=MTA')dnl

 

FEATURE(`no_default_msa')dnl

 

DAEMON_OPTIONS(`Port=587, Name=MSA, M=Ea')dnl

 

MAILER(local)dnl

 

MAILER(smtp)dnl

 

MAILER(procmail)dnl

 

编译sendmail

 

sh Build sendmail.cf

 

将生成的配置文件安装到相应的目录中

 

sh Build install-cf

 

将编译的sendmail文件安装到相应目录中

 

cd ../../sendmail

 

sh Build install

 

到此,sendmail安装成功。

 

安装SpamAssassin 3.1.0

 

可从网站http://SpamAssassin.apache.org获得最新版程序。SpamAssassin的安装很简单,如下操作:

 

tarvxf Mail-SpamAssassin-3.1.0.tar.gz

 

cd Mail-SpamAssassin-3.1.0

 

perl Makefile.PL

 

make

 

make install

 

不报错的话就安装成功了。添加中文垃圾邮件过滤规则规则可从

http://www.ccert.edu.cn/spam/sa/Chinese_rules.cf下载,把该规则放在/etc/mail/SpamAssassin目录下。

 

安装Mimedefang

 

可从网站http://www.mimedefang.org下载最新版本。这是一个结合sendmail和Perl的过滤软件,同时还能调用SpamAssassin判定垃圾邮件,此软件依赖很多Perl模块,因此在安装之前请确保已经安装了如下模块:

 

Digest-SHA1-2.00.tar.gz

 

IO-stringy-2.110.tar.gz

 

MailTools-1.1401.tar.gz

 

MIME-Base64-3.03.tar.gz

 

MIME-tools-5.417.tar.gz

 

Net-DNS-0.48.tar.gz###NextPage###

 

这些模块都能在网站http://www.cpan.org上找到。所有模块安装好后mimedefang的安装就非常简单了:

 

tar -zvxf mimedefang-2.51.tar.gz

 

cd mimedefang-2.51

 

./configure

 

Make

 

Make install

 

安装好后,将examples目录下的启动脚本init-script拷贝到/etc/init.d目录下。到此必要的程序都已经安装完毕。

 

运行mimedefang:/etc/init.d/init-script start

 

运行sendmail:/etc/init.d/sendmail start

 

中文过滤规则随时都在更新,因此用户可以在crontab中加入下载命令定时更新自己的规则,但注意每次更新都需要重启加载SpamAssassin规则的程序。假如用户想一个月更新一次,那么在root的crontab中应该添加一行:

 

0 0 1 * * wget -N -P /etc/mail/SpamAssassin

 

www.ccert.edu.cn/spam/sa/Chinese_rules.cf; /etc/init.d/init-script restart

 

安装mimedefang后,SpamAssassin的用户定义配置文件并不是缺省的local.cf而是samimedefang.cf。

 

邮件路由配置

 

域名服务器的配置不变,将域名MX记录指向过滤网关。过滤网关更改配置文件,编辑/etc/mail目录下的mailertable文件,添加内容如下:

 

example.com esmtp:internal.example.com

 

或者

 

example.com esmtp:[192.168.0.1]

 

internal.example.com和192.168.0.1为邮件服务器的域名和IP.编辑保存后必须运行如下命令

 

makemap hash mailertable.db < mailertable

 

编辑/etc/mail目录下的access文件,添加内容如下:

 

internal.example.com    RELAY

 

makemap hash access.db < access

 

重启sendmail进程就行了。

 

实用分析

 

过滤网关会在每一封邮件头中加上X-Scanned-By: MIMEDefang 2.51。因此看到这个扩展信头表明系统配置成功。

 

为了尽量减少误判,建议使用SpamAssassin提供的白名单功能。比如在/etc/mail/SpamAssassin/ sa-mimedefang.cf中添加

 

whitelist_from *@cernet.edu.cn

 

会使所有来自cernet.edu.cn的邮件被视为正常邮件。

 

如果希望一个网关同时过滤多个邮件服务器的邮件,只有把所有邮件服务器的DNS MX纪录指向邮件网关,并在邮件网关配置相应的邮件路由。

 

如果不希望垃圾邮件直接发送到邮件服务器(未经过网关),可以设置邮件服务器只接受来自过滤网关的邮件。

页面功能 【字体:   】 【打印】 【关闭】 【联系我们
相关链接
  • 网络管理员网络管理必备十招
  • 网管、安全管理员、机房管理制度的章程样本
  • 相关链接
  • BT控制七种武器与DoS防护三部曲
  • 网络冗余链路管理的实现
  • 相关链接
  • 北京工业大学校园信息化建设—为海量信息加把“锁”
  • 网络流量的异常检测方法
  • 相关链接
  • 基于本体的工作流网模型研究
  • 基于IP-MAC-PORT的IP防盗管理
  • 相关链接
  • 网络管理:网络管理员及其主要工作关键设备的管理
  • 无标题文档
    主管单位:中华人民共和国教育部  主办单位:教育部科技发展中心  承办单位:中国教育和科研计算机网CERNET
    《中国教育网络》编辑部 京ICP证060236号 联系电话:010-62603869
    建议使用800*600分辨率及Microsoft IE5.0版本以上浏览器
    copyright © 北京赛尔时代传媒文化有限公司 All Rights Reserved