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