焦点期刊
在线客服

著作编辑 著作编辑

投稿邮箱: 941198995@qq.com

QMAIL邮件防毒原理和部署实践-计算机职称论文发表

时间:2014-09-25 22:32:04 阅读量:0次 所属分类:电子论文

电子邮件应用越来越广泛,利用电子邮件传播的蠕虫病毒迅速泛滥,严重危害了用户计算机的正常使用。出于“病从口入”的考虑,目前最有效的办法就是在电子邮件服务器上部署防毒体系。本文从Qmail的邮件系统机制出发,系统介绍了Qmail邮件系统构造,分析了Qmail

QMAIL邮件防毒原理和部署实践

胡春英

摘要:电子邮件应用越来越广泛,利用电子邮件传播的蠕虫病毒迅速泛滥,严重危害了用户计算机的正常使用。出于“病从口入”的考虑,目前最有效的办法就是在电子邮件服务器上部署防毒体系。本文从Qmail的邮件系统机制出发,系统介绍了Qmail邮件系统构造,分析了Qmail邮件防毒的原理,并介绍Qmail邮件防毒体系的部署和应用。

关键词:电子邮件 病毒 防毒 Qmail Qmail-Scanner ClamAV Maildrop

一、 引言

随着Internet的迅速扩展,电子邮件应用越来越广泛,一种利用电子邮件传播的蠕虫病毒迅速泛滥,伴随电子邮件的广泛应用猖獗肆虐,严重危害了用户计算机的正常使用,并给网络带来很大的负载影响。

出于“病从口入”的考虑,要防止电子邮件病毒的危害,目前最有效的办法就是在电子邮件服务器上部署防毒体系,利用电子邮件存贮转发的机制,在用户收到电子邮件之前对电子邮件进行查毒过滤,在用户发送电子邮件之前也对电子邮件也进行查毒过滤。

二、 Qmail邮件系统原理

Qmail软件是由Dan Bernstein开发出来的为标准Unix服务器提供邮件传输代理 (mail transfer agent,MTA)功能的大型电子邮件系统,作为企业级电子邮件系统广泛应用于各大企业。

Qmail系统由几个可执行、可灵活替换的程序构成,这些程序彼此互相协作,共同提供电子邮件服务。Qmail系统中有9个核心程序,其中qmail-smtpd负责接收来自远程主机(包括远程邮件服务器和SMTP客户端)的电子邮件并将它们传送给qmail-queue处理,qmail-inject则是用来接收本地产生的电子邮件并传送给qmail-queue程序,qmai-queue程序处理qmail-smtpd和qmail-inject发来的邮件,移进邮件队列以便发送。一旦电子邮件被成功的放在邮件队列中,Qmail系统就调用qmail-send程序来处理他。

考虑到电子邮件是经过编码后传送的,为检查病毒需要先对电子邮件进行解码,这要花费一定的CPU计算时间和I/O时间。对电子邮件解码之后,进行查毒需要分析特殊字节序列,这也需要一定的CPU计算时间和I/O时间。所以,要实现对Qmail邮件系统进行防毒,需要选择合适的环节来进行。

三、 Qmail邮件防毒的原理

为实现电子邮件系统防毒,在Qmail邮件系统中最合适的部分就是在qmail-queue环节,因为在此环节电子邮件已经存储在邮件系统的硬盘上,如果是本地电子邮件,则尚未转发到用户的信箱中;如果是远程电子邮件,则尚未交给qmail-remote发送到远程邮件系统。

所以,Qmail邮件防毒的原理就是替换原来Qmail系统的qmail-queue,采用新的队列处理程序先对电子邮件进行解码和查毒:如果查毒结果是病毒邮件,则即刻从队列中丢弃这封电子邮件;如果查毒结果是正常邮件,则交给Qmail系统原来来qmail-queue进行队列处理。

在本文介绍的电子邮件防毒部署中,采用Maildrop软件包中的reformime程序将电子邮件队列中的电子邮件解码到临时目录,采用Clam AntiVirus对临时目录下的解码后电子邮件进行查毒,采用Qmail-Scanner代替qmail-queue进行电子邮件队列管理。

四、 Qmail邮件防毒体系部署

本文介绍的软件系统全部为GNU软件系统,可以从网上进行下载安装。

4.1 Maildrop安装

本系统主要是用到Maildrop软件包中的reformime程序,Maildrop软件包可从http://sourceforge.net/project/showfiles.php?group_id=5404下载:

tar zxvf maildrop-1.5.2.tar.gz

./configure [options]

make

make install-strip

make install-man

4.2 安装 perl-Time-HiRes

安装该Perl包主要是为安装Qmail-Scanner做准备,是RedHat Linux系统自带的RPM软件包,如果您的Linux系统没有安装则按以下进行安装:

rpm -ivh perl-Time-HiRes-1.20-23.i386.rpm

4.3 安装Clam AV

4.3.1 安装Clam AV软件包

从网上http://clamav.sourceforge.net/可下载ClamAV的软件包,并进行安装:

grouadd clamav

useradd –g clamav –s /bin/false clamav

tar zxvf clamav-0.68-1.tar.gz

cd clamav-0.68-1

./configure

make check

make install

touch /var/log/clam-update.log

chown clamav:clamav /var/log/clam-update.log

4.3.2 更新病毒库

Clam AV提供免费的病毒库更新服务,运行/usr/local/bin/freshclam可以更新病毒库。如果需要定时更新,可以在/etc/crontab中加入07 2 * * * clamav /usr/local/bin/freshclam --quiet -l /var/log/clam-update.log,以便每天定时更新病毒库。

4.3.3 改进查毒性能

ClamAV包括clamscan和clamd/clamdscan两部分,clamd是一个守护进程,由clamdscan通过TCP/IP连接并做查毒,而clamscan每次查毒都要把病毒库先导入内存。采用clamd系统性能会提高很多,如需使用clamd,要修改/usr/local/etc/clamav.conf,把Example前加# 或删掉,并运行clamd守护进程。

4.4 安装qmail-scanner

这是最最关键最最麻烦的一步!实际上,qmail-scanner不过是一个perl脚本,麻烦的是要给qmail打补丁并进行配置,使得qmail以qmail-scanner做为邮件queue的处理程序。Qmail-scanner调用maildrop的reformime对queue里的邮件进行解码,然后调用clam av进行查毒,根据查毒结果决定把来信过滤并发送警告,还是正常交给qmail-queue去处理。

4.4.1 安装Qmail的Queue补丁

从网上http://www.qmail.org/qmailqueue-patch可以下载Qmail的Queue补丁,并进行安装:

patch < qmailqueue-patch.txt

重新编译qmail:make

停止目前系统中的qmail进程,并make setup check

4.4.2 安装Qmail-scanner软件包

从网上http://qmail-scanner.sourceforge.net/可以下载Qmail-scanner软件包,并进行安装:

groupadd qscand

useradd -g qscand -s /bin/false qscand

tar zvxf qmail-scanner-1.21.gz

cd qmail-scanner-1.21

该软件包locale目录是各国语言目录,其中tw_BIG5是台湾大五码的汉字,如果您需要汉化,可以从网上下载BIG5<->GB码转换软件进行转换,实现Qmail-scanner告警信息的简体字汉化。下文配置参数中cn_GB目录正是由tw_BIG5目录通过BIG5和GB码转换软件转换而来。

因为Redhat 8.0不允许perl脚本setuid,以上的解决办法就是用.c编译为可执行文件,并设置setuid,在可执行文件中调用qmail-scanner-queue.pl脚本,最后把qmail-scanner-queue.pl的setuid取消。

目前系统缺省是my $clamscan_binary='/usr/local/bin/clamscan',如果你愿意改为clamdscan来检测病毒(性能更好点),可以改为

my $clamscan_binary='/usr/local/bin/clamdscan';

4.4.3 配置Qmail使用Qmail-Scanner查毒

第4.4.1章已介绍为Qmail打补丁,支持Qmail根据QMAILQUEUE变量选择不同的Qmail队列处理程序。因此,这里只需要在/etc/qmail/tcp.smtp增加QMAILQUEUE变量即可:

127.0.0.1:allow,RELAYCLIENT="",QMAILQUEUE="/usr/local/qmail/bin/qmail-queue"

:allow,QMAILQUEUE="/usr/local/qmail/bin/qmail-scanner-queue"

上述即是127.0.0.1本地的QMAILQUEUE为QMAIL自己的qmail-queue,而所有外部IP将使用/usr/local/qmail/bin/qmail-queue来做Qmail队列处理。

配置tcp.smtp后要还要运行

/usr/local/qmail/bin/tcprules /etc/qmail/tcp.smtp.cdb /etc/qmail/tcp.smtp.tmp < /etc/qmail/tcp.smtp

把/etc/qmail/tcp.smtp的配置更新到tcp.smtp.cdb库。

五、 维护测试

至此已完成所有安装和配置,你可以重新启动Qmail(最好重新启动邮件服务器),以便进行测试。

值得注意的是,以后对Qmail-Scanner有任何配置需要,直接修改/usr/local/qmail/bin/qmail-scanner-queue.pl即可,而且即配即生效,无需重新做什么,因为qmail-scanner-queue.pl只是一个Perl脚本。

主要排错监测日志如下:

/var/spool/qmailscan/quarantine.log

/var/spool/qmailscan/qmail-queue.log

/var/log/clamd.log

/var/log/maillog

参考文献:

[1]《Life With Qmail》

[2]《Clam AntiVirus Readme文档》

[3]《Qmail Scanner Readme文档》

 


本文链接:https://www.133lw.com/lunwen/dzlw/6907.html