linux-postfix服务器-电子邮件过滤和防病毒-技术笔记
电子邮件过滤和防病毒
postfix邮件服务系统可以针对SMTP会话中的地址,名称等信息进行检查,并根据main.cf 的配置参数将某一类型的数据发送到指定的策略配置文件,由该文件配置执行的动作,该文件经过hash加密导入数据库。
1. 根据客户端的主机名地/址过滤邮件,可以是单个ip,网段ip,域名,主机名。
vi /etc/postfix/main.cf
smtpd_client_restrictions = check_client_access hash:/etc/postfix/access //指定策略文件和hash数据库位置
下面设置策略文件:
vi /etc/postfix/access
192.168.4 REJECT //也可以使用DISCARD丢弃
192.168.4.1 OK
REJECT
postmap /etc/postfix/access //该命令用于将策略文件hash一下加入数据库
//客户端地址可能是邮件真实的来源地,而helo信息只是客户端告知的地址
//客户端的信息是
2根据hello信息中的主机名地址过滤
配置main.cf
smtpd_helo_required = yes //要求必须使用helo命令
smtpd_helo_restrictions = reject_invalid_hostname //拒绝使用无效主机名的主机
3根据发件人地址过滤邮件
smtp_sender_login_maps =
mysql:/etc/postfix/mysql_virtual_sender_maps.cf, //指定mysql类型的查询表文件和别名文件
mysql:/etc/posfix/mysql_virtual_alias_maps.cf
smtpd_sender_restrictions =
permit_mynetworks,
reject_sender_login_mismatch, //发件人与登录用户不匹配时拒绝
reject_non_fqdn_sender, //发件人地址不属于合法FQDN时拒绝
reject_unknown_sender_domain, //发件人地址未知或不存在时拒绝
//以上可以防止通过发信认证的用户伪造mail from 信息
check_sender_access hash:/etc/postfix/sender_access //用于指向含有邮件地址域名地址的查询表,即rcpt to: 提供的信息---实际上是收件人地址
如:vi /etc/postfixsender_access
REJECT
marketing@ REJECT
REJECT
REJECT
postmap /etc/postfix/sender_access
4根据收件人地址过滤
smtpd_recipient_restrictions =
permit_mynetworks, //允许本邮件系统发出的邮件
permit_sasl_authenticated, //允许通过sasl认证的用户作为发件人
reject_unauth_destination, //收件人地址域不包括在postfix授权网络内时拒绝
reject_non_fqdn_recipient, //收件人地址域不属于合法FQDN时拒绝
reject_unknow_recipient_domain //收件人地址域或不存在时拒绝。
//通过中国互联网协会发垃圾邮件中心的网站,/
可以根据ip查询谋个邮件服务器是否在其黑名单中
基于邮件内容过滤防毒
采用MailScanner 调度软件将接收到的全部邮件放入hold队列,mailscanner接着调用SpamAssassin对内容检查,根据预设规则评分,MailScanner采取相应处理,比如分数高于谋个值直接丢弃,在谋个范围进行调用F-port扫毒,或者低于谋个值直接投递
安装Mailscanner软件包Mailscanner-4.75.11-1.rpm.tar.gz 其中有数十个rpm包和Perl软件包,但解压后只需执行./install.sh脚本即可自动安装
修改配置文件MailScanner.conf
vi /etc/MailScanner/MailScanner.conf
Run As User = postfix //将运行程序的身份设为postfix
Run As Group = postfix
Incoming Queue Dir = /var/spool/postfix/hold //设置待过滤处理的邮件队列目录Outgoing Queue Dir = /var/spool/postfix/incoming //设置过滤处理后的邮件队列目录MTA = postfix //设置MTA服务器名称
Required SpamAssassin Score = 7 //高于此值的视为垃圾邮件,默认为6
High SpamAssassin Score = 10 //高于此值的视为高分垃圾邮件
Spam Actions = deliver header “X-Spam-status:Yes”
//对非高分垃圾邮件采取的动作继续投递,但在标头信息中添加引号中的信息High Scoring Spam Actions = delete forward
//对非高分邮件采取的动作,删除,同时发给指定用户邮箱集中处理
下面配置Postfix对mailscanner的支持
在main.cf文件添加
header_checks = regexp:/etc/postfix/header_checks //设置使用模式查询表
编辑header_checks文件,添加
/^Received:/ HOLD
调整邮件过滤队列目录的属主属组并启动Mailscanner服务
chown –R postfix.postfix /var/spool/MailScanner/incoming
chown –R postfix.postfix /var/spool/MailScanner/quarantine
service MailScanner start
chkconfig --level 35 MailScanner on
安装并配置Spam Assassin 垃圾邮件过滤器
Rhel5光盘含有SpamAssassin 的RPM包
SpamAssassin为Perl语言编写,依赖的perl语言软件包较多
安装时可能会提示需要安装谋个依赖软件包,可能提示的软件包如下:
perl-Archive-Tar*,perl-Digest-SHAl*,perl-IO-Socket-INET6*
Perl-IO-Socket-SSL,perl-Net-DNS*, per-Archive-Tar*,perl-IO-Socket-SSL*,perl-IO-Zlib* Perl-Socket6*,perl-Net-SSLeay*,perl-Digest-HMAC*
SpamAssassin配置文件位于/etc/mail/spamassassin/local.cf ----一般不需任何修改保持默认
启动服务
service spamassassin start
chkconfig –level 35 spamassassin on
安装配置F-Pro
可用于邮件病毒查杀的软件包括F-Port McAFee ClamAV Trend 等
F-Port使用于多种系统平台Linux系统可以使用其免费的workstation版本
可解压到系统的opt目录
./install-f-prot.pl
fpupdate 为其中的病毒库更新程序,可手动执行更新
可为其启用计划任务设置每天指定时间更新
service crond start
测试邮件内容过滤:
在服务器给自己发一封邮件
正文包含引号内内容
“XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X”收到的邮件主题将带有Spam?标记,说明被评为垃圾邮件
测试防病毒机制
再给自己发一封正文包括如下引号内内容
“X5o!p%@AP[4\PZX54(P^)7CC )7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*”查看、var/log/maillog将发现病毒记录。