一. 前言
随着email在企业里广泛使用,它已经成为传播病毒的最主要的手段,保护企业用户免受可能带病毒的邮件附件的感染,尤其是可执行文件的邮件附件,我们需要过滤那些可能带有病毒的附件的邮件,当前主要的做法是在Sendmail把邮件送到用户信箱前由Procmail进行过滤,但是更好的方法是在SMTP传送期间由Sendmail本身进行过滤,本文就是重点在于讲述如何使用Sendmail在SMTP传输期间进行过滤。
二. 基于Sendmail的过滤器的优点
较之于传统的Procmail的邮件过滤器,基于Sendmail的有如下优点:
1) 对每封邮件过滤一次,而不是对每个接收者过滤一次(传统的基于Procmail的做法)。
2) 如果安装在企业的主邮件服务器上,可以在第一道入口拒绝进来的带有可执行附件的邮件。
3) 可以利用internet上有经验的程序员写的过滤程序,而不是自己写的Procmail过滤程序。
4) 可以防止企业内部用户发出可执行的附件的邮件给外部用户,成为好的internet公民。
三. 所需软件
我们选用开放源的基于Sendmail和Perl语言的MIMEDefang 过滤系统,它利用最新版本Sendmail提供的mail filter API且使用Perl语言写的程序和过滤规则。
四. 步骤
a. 下载所需的相关软件
一台正在工作的Linux服务器 (这里我用的是Redhat 7.2)
Perl 5.001或者更高 (Redhat 7.2已经带有)
四个所需的Perl附加模块
MIME-tools-5.410.tar.gz
IO-stringy-1.212.tar.gz
MIME-Base64-2.11.tar.gz
MailTools-1.1401.tar.gz
Sendmail 8.12.1
MIMEDefang 2.1
b. 编译并安装四个Perl模块
直接进入每个目录运行 perl Makefile.PL;make;make test;make install 即可。
cd /root
for i in ./*;do tar xvfz $i;done
cd 每个相应的模块目录
perl Makefile.PL
make
make test (确保你测试成功)
make install
c. 编译Sendmail加入MILTER支持
放下面的行在 devtools/Site/site.config.m4 (用VI创建该文件)
APPENDDEF(`conf_sendmail_ENVDEF',`-DMILTER')
确保编译过程中看到Sendmail带参数 -DMILTER 进行编译。
新的Sendmail版本加强了安全性,不再运行以suid,需要设置用户名和组名smmsp, 在/etc/passwd中加入下面的行:
smmsp:x:25:25:Sendmail:/:
在/etc/group中加入下面的行:
smmsp:x:25:
cd /root/sendmail-8.12.1
cd sendmail
sh Build
cd ../cf/cf
cp generic-linux.mc sendmail.mc
vi sendmail.mc (且放下面的行到该文件中)
define(`confPRIVACY_FLAGS', `authwarnings,needmailhelo,novrfy,noexpn,restrictqrun')dnl
INPUT_MAIL_FILTER(`mimedefang', `S=unix:/var/run/mimedefang.sock, F=T, T=S:60s;R:60s;E:5m')
FEATURE(`smrsh',`/usr/sbin/smrsh')dnl
FEATURE(`mailertable',`hash -o /etc/mail/mailertable.db')dnl
FEATURE(`virtusertable',`hash -o /etc/mail/virtusertable.db')dnl
FEATURE(`access_db')dnl
FEATURE(redirect)dnl
FEATURE(always_add_domain)dnl
FEATURE(use_cw_file)dnl
FEATURE(use_ct_file)dnl
FEATURE(local_procmail,`',`procmail -t -Y -a $h -d $u')dnl
MAILER(smtp)dnl
MAILER(procmail)dnl
Cwlocalhost.localdomain
其中 INPUT_MAIL_FILTER行是MIMEDefang所必需的。
sh Build sendmail.cf
sh Build install-cf
cd ../..
cd sendmail
sh Build install
cd ../libmilter
sh Build install (创建libmilter库文件供MIMEDefang使用)
对其它的各种应用程序目录,同样用sh Build install安装。
d. 编译MIMEDefang
cd sendmail-8.12.1
mkdir -p /usr/local/include/sendmail
cp -R include/* /usr/local/include/sendmail
cp -R sendmail/*.h /usr/local/include/sendmail
mkdir -p /usr/local/lib
cp obj.Linux.2.4.9-7smp.i686/*/*.a /usr/local/lib
注:用你的obj.Linux.xxxxx平台的文件代替上面的obj.Linux.2.4.9-7smp.i686
cd mimedefang-2.1
./configure
make
make install
e. 设置过滤器规则
在mimedefang-2.1/example下面有各种预定义的规则,你需要拷贝一个到 /etc/mimedefang-filter,下面是我用的规则
我拷贝了suggested-minimum-filter-for-windows-clients到/etc/mail下且改成下面的:
$Administrator = 'itsecurity@yourdomain.com';
$DaemonAddress = 'itsecurity@yourdomain.com';
$Stupidity{"flatten"} = 0;
$Stupidity{"NoMultipleInlines"} = 0;
sub filter_begin {
}
sub filter {
my($entity, $fname, $ext, $type) = @_;
if (re_match_ext($entity, '^\.(exe|com|bat|vbs|scr|shs|dll|vxd|pif|reg|ocx)$')) {
action_discard();
action_notify_sender("Your message with attachment '$fname' had been deleted by our mail server because of security issue\n");
return action_quarantine($entity, "The message with attchment '$fname' was deleted by mail server.");
}
return action_accept();
}
1;
上面的过滤规则表示删除带上面所列出的扩展名的邮件且通知发送者邮件被删除,接收其它所有的邮件。我也更改/usr/local/bin/mimedefang.pl文件以致不要保留邮件附件在/var/spool/MIMEDefang目录中,该文件有详细的自我解释,请编辑该文件去掉保留一份被删除邮件附件在硬盘上的部分。
f. 启动系统并测试
简单地拷贝example目录下的为redhat而写的redhat-sendmail-init-script到 /etc/rc.d/init.d/sendmail并且更改Sendmail启动部分为
/usr/sbin/sendmail -L sm-mta -bd -q30m
/usr/sbin/sendmail -L sm-msp-queue -Ac -q30m
如果你的邮件服务器每天需要处理成千上万的邮件,则考虑拷贝另一个脚本redhat-sendmail-init-script-with-multiplexor到/etc/rc.d/init.d/sendmail,加快处理速度。
最后用/etc/rc.d/init.d/sendmail start启动sendmail,发送带.exe的附件进行测试。
自由广告区 |
分类导航 |
邮件新闻资讯: IT业界 | 邮件服务器 | 邮件趣闻 | 移动电邮 电子邮箱 | 反垃圾邮件|邮件客户端|网络安全 行业数据 | 邮件人物 | 网站公告 | 行业法规 网络技术: 邮件原理 | 网络协议 | 网络管理 | 传输介质 线路接入 | 路由接口 | 邮件存储 | 华为3Com CISCO技术 | 网络与服务器硬件 操作系统: Windows 9X | Linux&Uinx | Windows NT Windows Vista | FreeBSD | 其它操作系统 邮件服务器: 程序与开发 | Exchange | Qmail | Postfix Sendmail | MDaemon | Domino | Foxmail KerioMail | JavaMail | Winwebmail |James Merak&VisNetic | CMailServer | WinMail 金笛邮件系统 | 其它 | 反垃圾邮件: 综述| 客户端反垃圾邮件|服务器端反垃圾邮件 邮件客户端软件: Outlook | Foxmail | DreamMail| KooMail The bat | 雷鸟 | Eudora |Becky! |Pegasus IncrediMail |其它 电子邮箱: 个人邮箱 | 企业邮箱 |Gmail 移动电子邮件:服务器 | 客户端 | 技术前沿 邮件网络安全: 软件漏洞 | 安全知识 | 病毒公告 |防火墙 攻防技术 | 病毒查杀| ISA | 数字签名 邮件营销: Email营销 | 网络营销 | 营销技巧 |营销案例 邮件人才:招聘 | 职场 | 培训 | 指南 | 职场 解决方案: 邮件系统|反垃圾邮件 |安全 |移动电邮 |招标 产品评测: 邮件系统 |反垃圾邮件 |邮箱 |安全 |客户端 |