当前位置:Linux教程 - Email - email - 给qmail邮件服务器加个病毒防火墙

email - 给qmail邮件服务器加个病毒防火墙

给qmail邮件服务器加个病毒防火墙
2004-04-23 15:18 pm
来自:Linux文档
现载:Www.8s8s.coM
地址:无名

近期邮件病毒泛滥,正好从网上看到几篇关于qmail防毒的文章,于是边做边比较了一下网上的几种方法,并且做出了最后的选择。
希望能给大家qmail防毒的一些整体概念,有错误和不对之处请大家批评指正。
同时亦欢迎大家与我联系交流。
QQ:577507
Email:wind@sd163.net

首先请允许我把网上能见到的几篇防毒的文章的链接贴出来:
1.linuxforum文章荟萃中
linux(redhat7.1)+MTA(qmail)掃瞄郵件病毒和拒收帶病毒郵件軟件安裝配置一文!
http://www.linuxforum.net/docnew/showflat.php?Board=new&Number=410
2.linuxforum邮件服务器版中的精华文章第一篇:
** AMaViS ** 一个 UNIX 下查病毒的邮件网关。
http://www.linuxforum.net/forum/gshowflat.php?Cat=&Board=dns&Number=166952&page=1&view=collapsed&sb=5&o=all&fpart=
3.水木清华FreeBSD版的一篇文章
Freebsd下安装Drweb for qmail
http://www.linuxforum.net/forum/showflat.php?Cat=&Board=dns&Number=303664&page=0&view=collapsed&sb=5&o=21&fpart=
4.linuxforum邮件服务器版精化文章第二篇
Procmail 過濾mail病毒
http://www.linuxforum.net/forum/gshowflat.php?Cat=&Board=dns&Number=188250&page=0&view=collapsed&sb=5&o=all&fpart=

而在国外关于邮件服务器防病毒的文章倒处都是,我就不引了,只所以链接这几篇文章是想让喜欢技术(不仅仅是达到目的)的网友方便学习和研究!
我先大体地介绍一下,以上几篇文章中使用的技术:

第一篇:
说它之前先再引一个链接:
http://www.linuxforum.net/forum/showthreaded.php?Cat=&Board=dns&Number=285647&page=&view=&sb=&o=&vc=1
这也是linuxforum上的一个 thread,希望大家仔细看一下,看完后就应该可以明白TREND公司的ANTI-VIRUS的工作方式了!我介绍的第一篇文章中的方法和TREND公司的ANTI-VIRUS的工作方式是一样的,即:都是使用防病毒SMTP网关代替原来的SMTP服务,然后把正常的信件转发到原来的SMTP上。这样就必然带来一个问题就是原来的ESMTP的功能没有了:如SMTP_AUTH等。解决方法可以使用上面这个讨论中的方法,即:在防病毒网关前再加一道关,当然,这一关支持SMTP_AUTH,转发到防病毒网关上,然后查杀完毒后再转到最终的SMTP上。:)太麻烦了点,可是也没办法,当然若你根本就没有SMTP的AUTH就不会这么麻烦了,只要病毒网关转到真正的SMTP上就可以了。
这篇文章中使用的是H+BEDV公司的Mail Gate,跟Trend公司的ANTI-VIRUS一样都是商业软件。
此文中提供了一个hbedv.key文件,经测试,可以把该公司的任何产品注册成为正式版,过期时间为2003年5月31日,还有近一年,不错,呵呵。
第二篇:
这篇文章中使用的软件是:AMaViS+McAfee,AMaVis是一个opensource的软件,McAfee是一个商业杀毒软件,虽然是试用版,但是文章作者说这个McAfee的杀毒软件用了很久都没有任何问题,一直可以更新病毒库。
AMaVis是一个可以适用于各种主流MTA的病毒网关(这样叫或许不太合适,暂切这样叫吧),可用于sendmail,qmail,postfix,exim等,详细可以查看它的文档。对于qmail来说,AmaVis是直接替换qmail-queue,经过我的测试,感觉AmaVis的效率有些低。
需要介绍一下的是另一个opensource软件:qmail-scanner。qmail-scanner是专门为qmail写的,AmaVis则可用于各种MTA,对qmail来说,两者都是在qmail-queue上做动作。不同点是qmail-scanner不替换qmail-queue,而是使用一个QMAILQUEUE的被丁来实现可选择地替换qmail-queue,我认为qmail-queue要胜于AmaVis。
第三篇:
drweb这个东东不大常见,是一家俄国公司的产品,气人的是它没有英文版网站,在网站上找产品列表费了我好大劲。这里免费提示给大家:http://www.drweb.ru/linux-bsd/ 。它的软件全部采用服务器-客户端的的方式运行,服务器是一个后台运行的病毒扫描程序,应该比命令行方式的病毒扫描工具效率高,客户端是则是针对某个一种服务器的另一个软件包当有数据包通过时,直接向它的Server提交扫描,支持Sendmail,Exim,QMail,Postfix,Communigate Pro,Samba,ZMailer这几种服务器,分别有FreeBSD、linux、Solaris版的,对qmail来说也是替换qmail-queue。
后来又看了一下qmail-scanner的说明文档说,其支持几个第三方软件如Sophie,Trophie,来实现DAEMON型的病毒扫描工具,或许可以跟drweb的有得一拼了。
第四篇:
文中使用的procmail,过滤几个字符串,这种并非真正的病毒防火墙,本文不作讨论。

综上所述,我进行了以下设计:
因为我们的SMTP不是用IP进行限制relay的,故原系统的SMTP_AUTH不能少,同时又不想做邮件转发,代替SMTP服务的方式我们舍弃,因此我们只能在qmail-queue上做手脚。

以下是我们的选择:
用qmail-scanner或AmaVis替换qmail-queue。

qmail-scanner和AmaVis皆需要第三方的杀毒软件
qmail-scanner可以使用以下软件:
1 Trend's Virus scanner
2 Sophos's "sweep" virus scanner
3 H+BEDV's antivir scanner
4 Kaspersky's AVPlinux scanner
5 MacAfee's (NAI's) virus scanner
6 Command's virus scanner
7 F-Secure Anti-Virus scanner
8 F-Prot Anti-Virus scanner
9 InocuLAN Anti-Virus scanner
10 RAV Antivirus
11 Sophie: Daemon front-end to Sophos Sweep (see FAQ for details)
12 Trophie: Daemon front-end to Trend iscan (see FAQ for details)
13 Spam Assassin Daemon (see FAQ for details)

AmaVis可以使用的杀毒软件如下:
1 Network Associates Virus Scan
2 DrSolomon (obsolete)
3 H+BEDV AntiVir/X
4 Sophos Sweep
5 Kaspersky Lab AntiViral Toolkit Pro (AVP)
6 CyberSoft VFind
7 Trend Micro FileScanner
8 CAI InoculateIT
9 F-Secure Inc. (former DataFellows) F-Secure AV

我的测试结果是qmail-scanner的效率更高一些(都使用H+BEDV的杀毒工具),同时qmail-scanner支持的第11、12三个软件可以以Daemon的形式运行那两种杀毒软件,效率就更高了,不过qmail-scanner需要给原来的qmail打一个补丁,稍微麻烦一点,但相对于它提供的功能,这点工作算什么呢?:)
因此,我的最终选择是:
qmail-scanner+H+BEDV Server edtion
只所以选择H+BEDV公司的产品,是因为,呵呵,有上面那个兄对的那个key可以注册成为正式版本(:。

安装步骤:

首先,要保证qmail本身正常运行,同时我们要给qmail-queue打一个补丁,所以需要qmail的源代码。
我在REDHAT7.3完全安装的机器上测试通过,安装qmail-scanner的时候有可能会缺少Perl的模块,查看README。
如果缺少的话,可以用如下命令通过网络安装模块:
#perl -MCPAN -e shell
>install Time::HiRes
或者是直接到这个地方去下载全部的modules,这个版本是for perl5.6.1的
http://www.perl.com/CPAN/src/stable.tar.gz
然后按说明文件安装:
#tar zxvf stable.tar.gz
#cd perl-5.6.1
#rm -f config.sh Policy.sh
#sh Configure
#make
#make test
#make install
一切OK

所需要的软件(包)及获得地址:
qmail-1.03.tar.gz
http://www.qmail.org/qmailqueue-patch
是使qmail支持QMAILQUEUE参数的一个补丁
http://prdownloads.sourceforge.net/qmail-scanner/qmail-scanner-1.12.tgz
这是qmail-scanner
courier-imap-deliverquota-1.4.2-3.i686.rpm
courier-imap-maildirmake-1.4.2-3.i686.rpm
courier-imap-userdb-1.4.2-3.i686.rpm
libstdc++2-2.10.0-2.i686.rpm
maildrop-devel-1.4.0-1.i386.rpm
maildrop-1.4.0-1.i386.rpm
qmail-scanner需要安装maildrop,而maildrop的rpm包需要以上其它的几个包,都可以在rpmfind.net找到。
http://www.hbedv.com/files/antivir/release/avlxsrv.tgz
ftp://mail.redhut.net/linux/hbedv.key
这是H+BEDV公司的杀毒产品

#cd qmail-1.03
#patch -p1 < ../qmailqueue.patch
......
有别的patch再打别的patch,但qmailqueue.patch一定要打
#make setup check
安装设置,保证没做以下的步骤时可以正常收发,若不能请查看其它安装文档,等可以正常收发邮件了再来做下面的步骤。

#tar zxvf avlxsrv.tgz '解压杀毒软件包
#cd antivir-2.0.3-server
#install '安装,把key文件拷到安装目录
#antivir --updater '更新病毒库
#antivir --version '看到了吧,最新版本

#rpm -ivh courier-imap-deliverquota-1.4.2-3.i686.rpm courier-imap-maildirmake-1.4.2-3.i686.rpm courier-imap-userdb-1.4.2-3.i686.rpm libstdc++2-2.10.0-2.i686.rpm maildrop-devel-1.4.0-1.i386.rpm maildrop-1.4.0-1.i386.rpm
安装qmail-scanner所需的maildrop

#tar zxvf qmail-scanner-1.12.tgz
#cd qmail-scanner-1.12
#./configure --admin admin --domain domain.net --scanners antivir --notify sender --lang en_GB --archive yes --unzip yes
#./configure --admin admin --domain domain.net --scanners antivir --notify sender --lang en_GB --archive yes --unzip yes --install
#/var/qmail/bin/qmail-scanner-queue.pl -r
#/var/qmail/bin/qmail-scanner-queue.pl -g

好了qmail-scanner已经安装完成了
然后修改qmail-smtp服务的启动环境变量,加入QMAILQUEUE变量,查看qmail-scanner的README.html查看帮助,我使用的是daemontools控制qmail的服务,所以

#vi /var/qmail/supervise/qmail-smtpd/run

在#!/bin/sh的下一行加入以下两行:
QMAILQUEUE=/var/qmail/bin/qmail-scanner-queue.pl
export QMAILQUEUE

#svc -d /var/qmail/supervise/qmail-smtpd
#svc -u /var/qmail/supervise/qmail-smtpd
重启SMTP服务,用这台服务器的一帐号发送一封尼姆达,再收信,OK,收到病毒报告信了吗?

下面再简单地介绍一下AmaVis:
AmaVis也是一个开放源代码的软件,跟qmail-scanner差不多,不过需要perl的module更多,./configure的安装选项有差别,看一下帮助就知道了,很简单的,使用上则必须替qmail-queue文件,检查病毒后会立即返回错误信息,并使发送不成功,而不是返回一封警告信件。
good luck :)'

-------