您的位置:首页 > 运维架构 > Linux

在Linux下架设免费的防病毒邮件服务器

2004-12-11 16:45 225 查看









:

電子邮件在人们的工作与生活中正在扮演着越来越重要的角色,然而随着病毒制造技术和传播技术的不断发展,电子邮件已经成为病毒传播的最主要温床。
如何防止病毒邮件和广告邮件,是全世界所需要面临的问题。
前言
据有关部门统计,2004年在网络上的电子邮件有85%以上为广告邮件、病毒邮件。虽然架设邮件服务器比较简单,但是往往阻挡不住这些不请自来的广告邮件、病毒邮件,这也是近年来令网管人员非常头痛的问题。目前,有许多厂商看准这个商机,纷纷推出具有阻挡广告邮件及病毒邮件的软件。但购买这些软件,肯定会增加公司的成本。那么,如何在不增加成本的情况下,做到阻挡病毒和广告邮件呢?今天,我们介绍一种在Linux上,完全免费的防病毒邮件服务器架设方式:利用MailScanner+ClamAV作为Mail Gateway,将邮件内容含附件进行分析扫描,判断出是否属于已知病毒感染或是广告邮件,并针对信件属性进行不同处理。

二、安装
架设要求
操作系统:Fedora 1 (其它版本Linux也可以,本文采用的是Fedora系统,其它Linux系统的配置类似)
邮件传输代理(MTA):Sendmail 或Postfix 已经配置成功,并能正常发送邮件。
其他软件:perl (5.005以上),wget gcc
首先,请使用下面指令:
#rpm -qa | grep 软件名称
确认系统上有没有安装这些软件,如果有某个软件没有安装的话,请自行预先安装。
MailScanner的工作流程如图1。

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
           MailScanner工作流程图

由于Sendmail和postfix下MailScanner的安装配置略有不同,所以我们分开来讲。

基于Sendmail的安装
第一步:在MailScanner 的官方网页上免费下载MailScanner和ClamAV。下载地址为:http://www.sng.ecs.soton.ac.uk/mailscanner/downloads.shtml
可以用wget进行下载:
wget http://www.sng.ecs.soton.ac.uk/mailscanner/files/4/rpm/MailScanner-4.32.5-1.rpm.tar.gz wget http://crash.fce.vutbr.cz/crash-hat/1/clamav/clamav-0.72-1.i386.rpm 将上述两个文件解压缩到/tmp目录 :
cp MailScanner-4.32.5-1.rpm.tar.gz clamav-0.72-1.i386.rpm /tmp
cd /tmp
tar -xzvf MailScanner-4.32.5-1.rpm.tar.gz //解压缩如图2所示

  

第二步:解压完成后,切换到 MailScanner 目录下:
cd MailScanner-4.32.5-1
输入“./install.sh”命令,经过大约10分钟的时间,用户就会看见一段提示信息,提醒用户要先停止Sendmail的服务,并同时启动MailScanner的服务,如图3所示。

如果使用的MTA(邮件传输代理)软件是Sendmail ,那么您就执行以上的指令,并在重新启动之后,使用ps指令来观看目前是否有MailScanner的程序:
ps -ax|grep MailScanner
启动MailScanner成功之后,您就可以试着寄一封信到该主机的账号中,如果运作正常的话,那么在每封信件的标头的最后一段中会看到如下几行信息:
X-yoursite-MailScanner-Information: Please contact the ISP for more information
X-yoursite-MailScanner: Not scanned: please contact your Internet E-Mail Service Provider for details
X-MailScanner-From: xxx@xxx.xxx

基于posfix的安装
MailScanner 与postfix的配合有两种方法。
方法A:首先确认您的postfix能正常收发信件,然后按照上面基于Sendmail的安装步骤1、2进行安装。
安装完成后,接下来是调整配置文件,在/etc/postfix/main.cf中找到下面一行:
header_checks = regexp:/etc/postfix/header_checks
把前面的#号去掉,如图4所示。

    

然后在/etc/postfix目录下,新增一个叫做header_ checks的文件。
cd/etc/postfix //切换到/etc/postfix这个目录
vi header_checks //编辑此档,若没有的话会自动新增
增加下面内容:
/^Received:/ HOLD
存盘后退出。
然后再设置/etc/MailScanner/MailScanner.conf这个文件,将以下几个参数设定成为:
Run As User = postfix
Run As Group = postfix
Incoming Queue Dir = /var/spool/postfix/hold
Outgoing Queue Dir = /var/spool/postfix/incoming
MTA = postfix
再将/var/spool/MailScanner下的两个目录权限设定为postfix用户所有:
chown postfix.postfix /var/spool/MailScanner/incoming
chown postfix.postfix /var/spool/MailScanner/quarantine
再重新启动Postfix和MailScanner的服务。请注意,Postfix先启动,这和Sendmail不同。
service postfix start
Starting postfix: [OK]
service MailScanner start
Starting MailScanner daemons:
incoming postfix: [OK]
outgoing postfix: [OK]
MailScanner: [OK]
Postfix+MailScanner的配置就成功了!
方法B:首先按照上面基于Sendmail的安装步骤1、2进行安装。
然后复制一份Postfix的配置文件(这个方法的原理是运行2个postfix,然后在转交的同时进行杀毒处理);
cp -rp /etc/postfix /etc/postfix.in
确保在incoming的这个Postfix中不拒绝任何邮件:编辑 /etc/postfix.in/main.cf增加以下几行:
defer_transports = smtp local virtual relay
在 /etc/postfix.in/main.cf文件里,将
queue_directory = /var/spool/postfix
这行改为
queue_directory = /var/spool/postfix.in
接下来将 /var/spool/postfix复制一份,作为incoming postfix的队列目录
cp -rp /var/spool/postfix /var/spool/postfix.in
没有的话,也可以自己创建一个新的
mkdir /var/spool/postfix.in
当incoming postfix启动后,需要在这个目录中创建一些文件和目录,因此是必需建立的。
将正常的Postfix的SMTP功能禁止掉,以保证所有的SMTP都是走incoming postfix 进出的。
编辑 /etc/postfix/master.cf ,(注意,这里不是postfix.in目录)在smtp inet n -n - - smtpd 这行前面加个#,将它的smtp注销掉。如图5所示。

修改MailScanner.conf 文件 (默认位置是在/etc/MailScanner),下面几项设置为。
Run As User = postfix
Run As Group = postfix
Incoming Queue Dir = /var/spool/postfix.in/deferred
Outgoing Queue Dir = /var/spool/postfix/incoming
MTA = postfix
修改/var/spool/MailScanner/incoming 和/var/spool/MailScanner/quarantine的权限:
chown postfix.postfix /var/spool/MailScanner/incoming
chown postfix.postfix /var/spool/MailScanner/quarantine
最后再重新启动MailScanner服务。注意,和方法A不同,只需要启动MailScanner 服务就可以了
service MailScanner start
Starting MailScanner daemons:
incoming postfix: [OK]
outgoing postfix: [OK]
MailScanner: [OK]
配置成功!
注意如果使用这种方法配置,mailq可能会不能正确显示正在发送的邮件,需要增加一个alias,命令为:
alias mailq = ’ /usr/sbin/postqueue –p –c /etc/postfix.in’
最好把这句话加到/etc/profile里,使这个alias每次登陆都可以使用。
方法A和方法B都可以使postfix和MailScanner 配合使用,笔者的经验是方法A配置比较简单,但发信速度不如方法B快,读者可以根据实际情况选择。

启动防病毒软件Clamav
1.安装Clamav
建立所需要的群组 clamav
groupadd clamav
建立所需要的使用者Clamav
useradd -g clamav -d /dev/null clamav
安装Clamav
rpm –ivh clamav-0.72-1.i386.rpm
Preparing... #####[100%]
1:clamav ###### [100%]
看到上面的提示clamav 就安装成功了
2.修改/etc/MailScanner/MailScanner.conf文件
修改下面一行:
Virus Scanners = none改为
Virus Scanners = clamav

    

查看Virus Scanning 的值是否设置为 yes,如果不是请修改为yes 。

    

然后重新启动MailScanner。
注意:如果用方法A配置postfix,需要先停止MailScanner 服务,然后重启postfix 服务,最后再启动MailScanner 服务。用户可以自己编写一个脚本。
最后检查在/etc/cron.hourly 目录下的update_virus_scanners文件,注意不要误删除,这是定期升级clamav的病毒代码的脚本文件,默认情况下每小时执行一次。

三、MailScanner配置
虽然安装了MailScanner+Clamav后可以阻止大部份的病毒攻击,但是相对的也会负出一些代价,Mail Scanner并不是万能的。因为目前很多邮件都是用html格式来撰写的,所以会多出很多程序代码,或者是java语言,有些MailScanner辨识得出来就不会有事,但是如果辨识不出来,就算是真的没有病毒,也会被删除档案或是内容,或者用户在寄信时,若附加的档案文件名很像病毒,也会被退信,这些都是会造成困扰的部份,所以详细的设定是很重要的。
所有的设定值都包含在/etc/mailscanner/mailscanner.conf这个文件中(不同的系统设定可能有所不同)。在设定文件中空白行会被忽略,而注释则是由开头为『#』的符号开始,之后的一整行都为注释,所有的选项的格式都如下所示:
option = value
许多选项中的规则设定,也可能是包含在特定的文件中,如:filename.rules.conf和filetype.rules.conf,你可以在MailScanner安装目录中的 rules 目录里,发现一些MailScanner规则的范例及说明。MailScanner.conf里的设定看起来非常多,不过不用担心,mailscanner.conf提供了很多实用的默认值,你只需要修改其中的一部份就可以开始使用MailScanner了。
下面笔者把MailScanner.conf文件中的一些可能会修改的设定值介绍一下:
Max Children
缺省值: 5
MailScanner会使你的服务器在同一时间内有效地进行好几个进程来处理(processing)邮件,这个设定就是设置同时进行的行程数,假设你需要处理非常多的邮件,可以调高这个数字。一般来说,每个CPU可同时处理5个进程。假设你拥有四个CPU的话,可以设定为20。
Run As User  
这个选项是改变运行 MailScanner 的使用者(需要注意的是,请不要使用 root 作为使用者。如果用root作为使用者的话,MailScanner 权限就是root权限。一旦MailScanner被攻克了,那么黑客就拥有了root权限,就可以为所欲为。不使用root权限,黑客即使攻克了Mailscanner,也只能拥有一般用户权限,相对会安全很多)。
Run As Group  
这个选项是改变运行 MailScanner 的群组(同样不要使用 root 作为群组)。
Incoming queue dir
缺省值:/var/spool/mqueue.in
MailScanner扫描的邮件目录。
Outgoing queue dir
缺省值:/var/spool/mqueue
MailScanner 所扫描过后的邮件目录。
MTA
缺省值:Sendmail
指定要使用那个MTA软件。
Virus Scanning
缺省值: yes
扫描邮件病毒吗? 若将此选项设定为“no”会完全关闭病毒扫描的功能。
Virus Scanners
缺省值: none
指定你要使用哪个防病毒的软件。
注意:假如你要使用好几个软件,请用空格键将每一个名称分开。
Still Deliver Silent Viruses
缺省值: yes
如果这个选项设定为 "yes" 的时候,解毒后的邮件还是会发回给原始的收信人,即使这些地址是被那些被感染的PC使用随机的方式选出来的,而且并不是那些使用者想收到的。设定此选项为“yes”会让你的使用者知道你的 MailScanner是在保护他们的,但是如果有许多人抱怨收到太多的病毒通知时,那就设定为“no”吧。
Allow IFrame Tags
缺省值: no
你要允许 HTML中的 <IFrame> 标签包含在邮件中吗?允许各种的 Microsoft Outlook 安全弱点不是一个好的主意,但是如果你的信件中拥有大量此类的信件,也许你必需将此选项设定为“yes”,否则你的使用者大概会抱怨连连。
Quarantine Infections
缺省值: yes
设定存放受感染及危险的邮件附件存放目录,如果没有设定,它们会被删除,笔者推荐将这项选项设定为“no”。
Deliver Cleaned Messages
缺省值: yes
当一个已经感染病毒的邮件被完整的解毒干净后,若此选项设定为“yes”,则还是会将邮件寄给原来的收信人。
Notify Senders
缺省值: yes
如果这个选项被设定为“yes”,那就会传回一个中毒信息给原寄件人。
Spam Checks
缺省值: yes
如果这个选项被设定为“yes”,那么每封邮件都会被确认是否为广告信件。
Spam Actions
缺省值: deliver
这个选项可以联合一个或多个之后的关键词来达成处理 Spam 的方法。
“deliver” — 邮件正常地转送至原来的收信人。
“delete” — 删除邮件。
“store”— 将邮件存放至隔离区。
“bounce” — 将邮件退给寄信人。
“forward” — 提供一个 forward 的邮件地址给系统,系统会自动转寄一份。
“striphtml”— 将内嵌 HTML 的邮件转成Text,你必需要加入“deliver”,系统才会帮你寄邮件。
High Scoring Spam Actions
缺省值: deliver
这和“Spam Actions”选项一样,但它是针对 SpamAssassin 记录为“High Scoring”的邮件。
附件文件名规则(Attachment Filename Ruleset)
/etc/MailScanner/filename.rules.conf文件中包含了用来判定任何被指定的附件是要被接受还是拒绝,而不管在此类文件中是否含有病毒,例如拦住所有附件文件名后缀为exe的信件。由于许多Windows的邮件程序(例如:Microsoft Outlook)在不妨碍用户使用的前提下,都会隐藏文件名后缀,当一个恶意的附件名原本可能为 "Safe.txt.pif",而被显示成 "Safe.txt",很多使用者会以为它就是个TXT的文件,是安全的,所以即使是有经验的用户,也可能会将这个文件打开,然而这个文件却是一个 MS-DOS 快捷文件,可以执行任何任意的命令,而用户并不知道。因此拦截这些可能有害的文件名的附件是必要的。
filename.rules.conf这个规则文件总共分为4个字段,每一个字段请记得一定要用Tab键隔开,第1栏是代表allow/deny这个文件,而第2个字段是文件名称的规则,其规则是使用正规表示式,第3及第4栏则是通知,不需要通知的话,可以使用 "-" 符号代替。
修改配置文件举例:
在默认的设定中,MailScanner禁止了很多类型的文件传送,例如:exe文件、chm文件等,就连网页内容都会被拦截下来,所以需要系统管理人员重新来设置。
例1:
如果不想要网页内容被挡下的话,那么在/etc/MailScanner/MailScanner.conf这个设定文件中,找到以下三个参数:

Allow IFrame Tags = no设定为yes
Allow Script Tags = no 设定为yes
Allow Object Codebase Tags = no 设定为yes
设定完成后,存盘退出,再重新启动MailScanner。这样,您的E-mail就可以收发HTML格式的邮件了。
例2:
有的时候有些文件是属于chm格式的,像是说明文件,或是有些书本文件都是用chm的扩展名,而MailScanner默认则会针对此类文件进行过滤的动作,若是想要取消对此类文件的限制,可以在/etc/MailScanner/filename.rules.conf把对chm结尾的文件内容设定为allow。
将“deny/.chm$”设定成“allow /.chm$”即可,设定完成后,存盘离开,重新启动MailScanner您就可以收发chm格式的信件了。

总结
使用MailScanner+Sendmail(postfix) +clamav可以过滤邮件病毒,还有不错的垃圾邮件过滤效果。据统计,使用MailScanner来处理的邮件,每天已经超过5亿封,每天移除了大约2百万封的有毒信件和查出了7500万封的垃圾邮件,这些数字说明了MailScanner的受欢迎程度是多么的高。最重要的是,它们的性能已经足已和商业软件相比,但是却都是Open Source的套件,遵循着GPL(大众公有版权)发展,不需要支持任何的软件购置费用,您就可以拥有一个功能强悍的防毒/过滤的邮件服务器系统。

附:邮件病毒入侵后的五个清除步骤
一、断开网络 :断开你的网络连接,以避免病毒的进一步扩散。
二、文件备份:删除带毒的邮件,再运行杀毒软件进行清除,但为了防止杀毒软件误杀或是删除你还没有处理完的文档和重要的邮件,你应该首先将它们转移备份到其他储存媒体上。
三、借助杀毒软件:由于杀毒软件在开发时侧重点不同、使用的杀毒引擎不同,各种杀毒软件都有自己的长处和短处,交叉使用效果较理想。 在杀毒j时,请尽量使用两种以上的工具软件来交叉清理。
四、安全处理:包括登录网络的用户名、密码、邮箱和QQ密码等都需要重新设置,防止黑客已经在上次入侵过程中知道了你的密码。
五、预防邮件病毒:邮件病毒其实和普通的电脑病毒一样,只不过由于它们的传播途径主要是通过电子邮件,所以才被称为邮件病毒。它们一般是通过在邮件中附件夹带的方法进行扩散的,你运行了该附件中的病毒程序,才能够使你的电脑染毒。知道了这一点,我们就不难采取相应的措施进行防范了。

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息