电子邮件应用越来越广泛,利用电子邮件传播的蠕虫病毒迅速泛滥,严重危害了用户计算机的正常使用。出于“病从口入”的考虑,目前最有效的办法就是在电子邮件服务器上部署防毒
4006-054-001 立即咨询发布时间:2022-10-05 21:44 热度:
QMAIL邮件防毒原理和部署实践 该软件包locale目录是各国语言目录,其中tw_BIG5是台湾大五码的汉字,如果您需要汉化,可以从网上下载BIG5<->GB码转换软件进行转换,实现Qmail-scanner告警信息的简体字汉化。下文配置参数中cn_GB目录正是由tw_BIG5目录通过BIG5和GB码转换软件转换而来。 参考文献:
胡春英
摘要:电子邮件应用越来越广泛,利用电子邮件传播的蠕虫病毒迅速泛滥,严重危害了用户计算机的正常使用。出于“病从口入”的考虑,目前最有效的办法就是在电子邮件服务器上部署防毒体系。本文从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
因为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文档》
摘要:虚拟参考站的出现是GPS定位的有一项突破,它标志着GPS的发展进入了一个新阶段,它不仅使GPS提高了精度,同时扩大了...
20世纪70年代功能翻译理论在德国蓬勃发展。1971年卡塔琳娜·赖斯 (KatharinaReiss) 在《翻译批评的可能性与局限性》( Possibiliti...
近年来,包括我国在内的世界各国先后发布限时停售传统燃油车的政策。预计10年后,在我国销售的增量新车中,将没有内燃...
结合某项目的太阳能光伏照明设计,具体阐述并网发电系统的构成及功能,并对光伏发电的效益做一定的分析...
随着信息时代的到来,数字化技术被广泛应用。数字化技术在飞机装配中的应用显示了许多优势,使我国航空产品的开发发生...
本文简要介绍了通过AutoCAD的DXF数据格式与MAPGIS的MPJ数据格式直接转换在地质工作中存在的一些不足之处,重点阐述了AutoCAD的...