Ubuntu下为邮件服务器配置反垃圾和反病毒

系统:ubuntu-10.04.3-server-amd64mysql

服务器配置完整的FQDN名linux

下面咱们来学习,反垃圾邮件,和反病毒。 ios

你能够在postfix 下的main.cf配置文件中过滤垃圾邮件。git


具体要怎样作,请参考中国反垃圾邮件联盟中的配置web


http://anti-spam.org.cn/sql


接下来是个人配置数据库


配置 Amavisd-new, SpamAssassin 和 ClamAVapache


apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip unrar bzip2 libnet-ph-perl libnet-snpp-perl libnet-telnet-perl nomarch lzop pax  rar  lha  arc  lzopubuntu


修改/etc/amavis/conf.d/15-content_filter_modesass


里面的内容为这样


use strict;
# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.
#
# Default antivirus checking mode
# Uncomment the two lines below to enable it back
#
@bypass_virus_checks_maps = (
\%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);
#
# Default SPAM checking mode
# Uncomment the two lines below to enable it back
#
@bypass_spam_checks_maps = (
\%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);
1; # ensure a defined return


修改

/etc/amavis/conf.d/21-Ubuntu_defaults

/etc/amavis/conf.d/20-debian_defaults


主要注意如下内容:


# @bypass_virus_checks_acl = qw( . ); # uncomment to DISABLE anti-virus code
# @bypass_spam_checks_acl = qw( . ); # uncomment to DISABLE anti-spam code
$final_virus_destiny = D_DISCARD; # (defaults to D_BOUNCE)
$final_banned_destiny = D_REJECT; # (defaults to D_BOUNCE)
$final_spam_destiny = D_PASS; # (defaults to D_REJECT)
$final_bad_header_destiny = D_PASS; # (defaults to D_PASS), D_BOUNCE suggested

这是对邮件的处理方式。


修改/etc/amavis/conf.d/50-user


里面的内容因该为这样


use strict;
#
# Place your configuration directives here. They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#
$pax='pax';
#------------ Do not modify anything below this line -------------
1; # ensure a defined return



而后,添加 clamav 用户到 amavis 用户组,并重启这两个服务

sudo freshclam  //先更新病毒库

adduser clamav amavis

sudo /etc/init.d/amavis restart

sudo /etc/init.d/clamav-daemon restart

sudo /etc/init.d/clamav-freshclam restart


而后,修改 /etc/postfix/main.cf,增长:


#### amavis config #####
content_filter = amavis:[127.0.0.1]:10024
receive_override_options = no_address_mappings


修改 /etc/postfix/master.cf,增长:


amavis unix - - - - 2 smtp
  -o smtp_data_done_timeout=1200
  -o smtp_send_xforward_command=yes
127.0.0.1:10025 inet n - - - - smtpd
  -o content_filter=
  -o local_recipient_maps=
  -o relay_recipient_maps=
  -o smtpd_restriction_classes=
  -o smtpd_client_restrictions=
  -o smtpd_helo_restrictions=
  -o smtpd_sender_restrictions=
  -o smtpd_recipient_restrictions=permit_mynetworks,reject
  -o mynetworks=127.0.0.0/8
  -o strict_rfc821_envelopes=yes
  -o smtpd_error_sleep_time=0
  -o smtpd_soft_error_limit=1001
  -o smtpd_hard_error_limit=1000
  -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
  -o smtpd_bind_address=127.0.0.1


注意,这些 “-o”前面都有空格,大家记住是空两格就好了

重启 Postfix:


1. /etc/init.d/postfix restart

2. postfix check


root@mail:~# netstat -tap

激活Internet链接 (服务器和已创建链接的)

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name

tcp 0 0 mail.extmail.org:10024 *:* LISTEN 20822/amavisd (mast

tcp 0 0 mail.extmail.org:10025 *:* LISTEN 22856/master

tcp 0 0 mail.extmail.org:mysql *:* LISTEN 2277/mysqld

tcp 0 0 *:www *:* LISTEN 15824/apache2

tcp 0 0 *:ssh *:* LISTEN 2176/sshd

tcp 0 0 mail.extmail.org:ipp *:* LISTEN 2938/cupsd

tcp 0 0 mail.extmail.org:8888 *:* LISTEN 6947/dispatch.fcgi

tcp 0 0 *:smtp *:* LISTEN 22856/master

tcp6 0 0 [::]:imaps [::]:* LISTEN 10281/couriertcpd

tcp6 0 0 [::]:pop3s [::]:* LISTEN 10357/couriertcpd

tcp6 0 0 [::]:netbios-ssn [::]:* LISTEN 2611/smbd

tcp6 0 0 [::]:pop3 [::]:* LISTEN 10316/couriertcpd

tcp6 0 0 [::]:imap2 [::]:* LISTEN 10240/couriertcpd

tcp6 0 0 [::]:ssh [::]:* LISTEN 2176/sshd

tcp6 0 0 localhost:ipp [::]:* LISTEN 2938/cupsd

tcp6 0 0 [::]:microsoft-ds [::]:* LISTEN 2611/smbd

root@mail:~#


出现上面 “10024”,“10025”,字样说明amavis安装成功接下来咱们来作反垃圾。


===========================================================================

安装 Razor,Pyzor 和 DCC 并配置 SpamAssassin

Razor,Pyzor 和 DCC 是网络协做式垃圾邮件过滤器,它们能够由 SpamAssassin 来调用。先安装它们


apt-get install l razor  pyzor


由于DCC不在咱们软件库中咱们要执行下面的操做


cd /tmp

wget http://launchpadlibrarian.net/11564361/ ... 5_i386.deb

wget http://launchpadlibrarian.net/11564359/ ... 5_i386.deb

dpkg -i dcc-common_1.3.42-5_i386.deb

dpkg -i dcc-server_1.3.42-5_i386.deb

(http://launchpadlibrarian.net/中找安装包)

而后修改 SpamAssassin 配置文件 /etc/spamassassin/local.cf,以调用它们:


gedit /etc/spamassassin/local.cf


把下列的代码写在最后面


#dcc
use_dcc 1
dcc_path /usr/bin/dccproc
#pyzor
use_pyzor 1
pyzor_path /usr/bin/pyzor
#razor
use_razor2 1
razor_config /etc/razor/razor-agent.conf
#bayes
use_bayes 1
use_bayes_rules 1
bayes_auto_learn 1
#whitelist
whitelist_from *@*.edu.cn *@ujn.cn *@ujn.org.cn
# ---------------------------------------------------------------------------
# URL: http://www.anti-spam.org.cn/
#### 最佳推荐之使用CBL- #####
header RCVD_IN_CBLLESS eval:check_rbl('cblless', 'cblless.anti-spam.org.cn.', '127.0.8.5')
describe RCVD_IN_CBLLESS Received via a relay in cblless.anti-spam.org.cn
tflags RCVD_IN_CBLLESS net
score RCVD_IN_CBLLESS 3.5
#### 最佳推荐之使用CML #####
header RCVD_IN_CML eval:check_rbl('cml', 'cml.anti-spam.org.cn.', '127.0.8.1')
describe RCVD_IN_CML Received via a white list relay in cml.anti-spam.org.cn
tflags RCVD_IN_CML net nice
score RCVD_IN_CML -20.0


上面白名单部分,你能够将你的本地虚拟域或者你认为安全的域列出来,这样能够避免域内邮件被过滤。下面的 rbl 来自 http://www.anti-spam.org.cn/。这样配置能够防止在 Postfix 直接配置的状况下,把来自这些地址的非垃圾邮件直接拒绝。


咱们再来编辑/etc/spamassassin/v310.pre


咱们把 #loadplugin Mail::SpamAssassin:lugin:CC

前的“#”给去掉


而后重置spamassassin 请执行


spamassassin --lint


而后从新启动 Amavisd-new:


/etc/init.d/amavis restart


注意这里不是启动 spamassassin,由于 spamassassin 以及配置为由 Amavisd-new 来调用了。


再更新咱们的SpamAssassin


sa-update --no-gpg


为了让它之后可以自动更新,咱们要作这样两步

执行下面的建一个脚本


crontab -e


把下面的代码复制


10 4 * * * /usr/bin/sa-update --no-gpg &> /dev/null


按ctrl+o 来保存,按ctrl+x来退出

这样天天早上 4 点 10 分,就会自动下载更新。

spamassassin 默认有不少规则,在/usr/share/spamassassin里面。


安装 Spam Locker 反垃圾邮件


在 Ubuntu 上安装 Spam Locker 比较简单了,大部分 perl 包在上面已经安装了。


咱们从www.extmail.org下载最新的 slockd-0.99.tar.gz 咱们将它解压,并放到/usr/local下面


tar zxvf slockd-0.99.tar.gz

mv slockd /usr/local/slockd


而后编辑 /usr/local/slockd/config/main.cf,将


setsid 1

log_file /var/log/slockd.log


两行前面的注释去掉。


将 /usr/local/slockd/slockd-init 复制到 /etc/init.d 目录下,而后创建启动关闭服务的连接文件:


cp /usr/local/slockd/slockd-init /etc/init.d/slockd

update-rc.d slockd start 19 2 3 4 5 . stop 21 0 1 6 .


建立 /etc/logrotate.d/slockd


/var/log/slockd.log {

daily

notifempty

missingok

rotate 5

compress

create 644 root root

sharedscripts

}


而后,编辑 /usr/local/slockd/config/whitelist,加入你的白名单列表。以后启动 slockd 服务。


/etc/init.d/slockd start


编辑 /etc/postfix/main.cf,将

smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated, reject_unknown_sender_domain,reject_non_fqdn_hostname, reject_non_fqdn_sender,reject_non_fqdn_recipient, reject_unknown_recipient_domain,reject_unauth_destination, reject_unauth_pipelining,reject_invalid_hostname, check_recipient_maps


中的

check_recipient_maps


替换为


check_policy_service inet:127.0.0.1:10030


便可。而后从新启动 Postfix。


/etc/init.d/postfix reload



启动/测试 slockd


在/usr/local/slockd目录下,执行


./slockd


此时slockd将启动,并进入监听模式,接受来自10030端口的请求,要注意的是,若是刚才配置了log_file路径,则调试信息必须经过以下命令得到:


tail -f /var/log/slockd.log


打开另外一个ssh/终端窗口,进入/usr/local/slockd/tools 目录,输入:


perl policy_sig -h localhost -p 10030 --helo FOOBAR \

--ip 192.168.0.1 --from test@foo.com --to test@bar.com


此时,程序应该返回以下错误信息:


action=504 <FOOBAR>: rejected, see http://bl.extmail.org/cgi/why?fqdn


这表示slockd初步的正常工做了。


ps 先看一下 spam lock 的进程还有没有


ps aux |grep slockd


会有以下显示


root 20821 1.9 5.1 48736 19708 ? S 13:19 0:08 gedit /usr/local/slockd/config/whitelist

root 21005 0.0 1.1 7592 4344 ? SNs 13:20 0:00 slockd (master)

root 21007 0.0 1.8 11636 7084 ? SN 13:20 0:00 slockd (idle)

root 21014 0.0 1.8 11612 7068 ? SN 13:20 0:00 slockd (idle)

root 21047 0.0 0.2 3560 820 pts/1 S+ 13:26 0:00 grep slockd


又出现问题发现spamassassin 重启不了


SpamAssassin Mail Filter Daemon: disabled, see /etc/default/spamassassin


如上错误,


咱们定位到 /etc/default/spamassassin 打开它


# Change to one to enable spamd

ENABLED=0


改成1 重启-


本篇文章来源于 Linux公社网站(www.linuxidc.com)  原文连接:http://www.linuxidc.com/Linux/2009-11/22514p11.htm



pamAssassin的工做原理

SpamAssassin能够经过许多方法来检验一封电子邮件究竟是不是垃圾邮件:

一、检查电子邮件的首部信息是否符合各类Internet标准(例如:数据的格式是否正确?)

二、检查电子邮件的首部和内容部分的信息是否包含一些垃圾邮件中常见的、用各类语言写成的短语或是句子(例如:“快速致富”或是退定该邮件的一些方法描述)。

三、将首部和内容部分的“校验和”与多个垃圾邮件信息在线数据库中的“校验和”做比较来确认垃圾邮件。

四、检查邮件发送者的IP地址是否在一些在线的站点列表中(这是一些已经被垃圾邮件发送者利用,或是怀疑被垃圾邮件发送者利用的站点)。

五、自定义地址、主机名和域名的白名单(白名单中的邮件不会做为垃圾邮件)和黑名单(上了黑名单的邮件会被看成垃圾邮件)。SpamAssassin能够根据用户邮件的历史记录自动构建白名单。

六、使用人为指定的一些垃圾邮件(一般成为spam)和非垃圾邮件(一般成为ham)的例子来训练SpamAssassin识别用户收到的各类不一样的垃圾邮件。

七、使用SPF协议(Sender Policy Framework)比较邮件发送系统的IP地址和邮件发送人的域名,来肯定该邮件发送系统是否容许该域名下的用户发送邮件。这是SpamAssassin 3.0中增长的新特性。

八、SpamAssassin会优先排除那些愿意使用Hashcash形式的邮件发送者(使用Hashcash形式会做一些附加计算,消耗一些时间)。由于垃圾邮件发送者若是支持这些附加计算,就不能迅速发送大量垃圾邮件了。这是SpamAssassin 3.0中增长的新特性。

九、SpamAssassin将信息格式验证、内容过滤和参考网络黑名单这三种方式相结合。基于过滤的系统要求用户参与,并且会引发邮件收发时的系统延迟。还有其余一些反垃圾邮件的方法,这些方法都各有利弊,,其中一些能够还能够用来替代SpamAssassin。

十、在一个挑战/应答系统中,系统会暂存一个陌生发送者发送的全部信息,并返回一个特定代码或是一组指令做为一个挑战。陌生发送者必须以某种方式做出应答,以验证其邮件地址,并证明(一般使用交谈的方式)发送者是一我的而不是一个自动垃圾邮件发送程序。若是发送者应答成功,系统就会真正接受该信息。

十一、在灰名单系统中,当邮件服务器遇到陌生的邮件发送人或是陌生的邮件发送系统时,它先返回一个临时的SMTP失败代码。若是上述的邮件发送系统在通过一个合理的时间间隔后,试图从新发送邮件,邮件服务器会正常接收该邮件,及随后来自于该邮件发送系统的其余邮件(译注:邮件服务器认为这不是一个发送垃圾邮件的邮件发送系统,所以赞成接收邮件)。由于当垃圾邮件发送者遇到上面的临时SMTP错误时,一般会把它看成永久性错误,或是试图在灰名单规定的时间间隔内连续屡次发送该邮件,因而邮件服务器就会拒绝接收来自这个邮件发送系统的邮件(译注:邮件服务器认为这就是一个发送垃圾邮件的邮件发送系统,所以拒绝接收邮件)。

十二、在限时地址系统中,一个电子邮件地址能够衍生出多个惟一性变体地址,用户能够在不一样的web表格、电子邮件或是新闻组等须要电子邮件地址的地方分别填写不一样的变体地址。能够限定这些变体地址的有效时间,也能够经过“激活”方式来激活某个原来无效变体地址。在这些系统中,若是用户的某一个变体地址收到了垃圾邮件,那么他(或她)就能轻易的找到发送垃圾邮件的公司(或是那些把你的邮件地址买给垃圾邮件发送者的公司),用户只须要取消这个变体地址就能够阻止垃圾邮件了。

1三、在小额付费系统中,邮件发送者每次发送邮件都必须付费(金额很小),这样一来发送大量的垃圾邮件就会致使高额的开销。在一些相似的系统中,若是收件人确认其收到的不是垃圾邮件,则小额付费会返还给邮件发送者。(SpamAssassin 3.0中经过Hashcash的方式来支持小额付费的一个变体,在这个变体中小额付费演变为Hashcash中处理时间的消耗而不是真的付钱。)

slockd 垃圾邮件拦截

网上记录,不记得来源,目前在EMOS1.5中正常使用

对于slockd,主要编辑黑白名单,及RBL

若是修改后不起做用,能够重启slockd,重启方式:

/usr/local/slockd/slockd-init stop

/usr/local/slockd/slockd-init start

1、黑白名单

blacklist  黑名单,这项里只能写域名

whitelist    白名单,这项里只能写域名

sender_blackist 黑名单,这项里便可写域名也能够对某域里某一用户。

sender_whitelist 白名单,同上。

recip_whitelist

recip blacklist

黑白名单配置文件路径 /usr/local/slockd/config/

黑白名单的编辑方法能够用正值表达式。编辑时格式:/正值表达式/

如里直接写就是普通表达式

2、RBL

vi /usr/local/slockd/config/plugin.cf

少数RBL可能拦截过于敏感,建议只使用如下的RBL

zen.spamhaus.org

bl.spamcop.net

3、关于启动slockd的命令,EMOS1.4集成的slockd能够不重启,修改即时生效。

/usr/local/slockd/slockd-init start

白名单是先于黑名单起做用的,因此测试时必定要细心。还有上面提到的黑白名单不一样的效果,你们千万不要在blacklist文件里去编辑形如[email=emos@extmail.org]emos@extmail.org[/email]的表达式,它只支持域的形式extmail.org,如果要编辑[email=emos@extmail.org]emos@extmail.org[/email]那只能在sender_blacklist文件里去设置,还有全部的正值表达式都是用/表达式/的形式,不用/把内容括起来就被认为普通表达式。




控制发送和接受附件的类型---支持发送exe文件:

Vim  /etc/amavis/conf.d/ 20-debian_defaults

一、

 qr'^\.(exe-ms)$', //阻挡zip,rar中的exe文件//加#,

二、

[ qr'^\.(exe|zip|rar|arc|arj|zoo)$'=> 0 ], # 在这里加支持的文件类型,并去掉原来的#号allow any within such archives


三、

删除掉两处配置中的exe

     qr'\.[^./]*\.(exe|vbs|pif|scr|bat|cmd|com|cpl|dll)\.?$'i,

=====================================

gitec@mail:/etc/apache2$ sudo  /etc/init.d/clamav-daemon start

* Clamav signatures not found in /var/lib/clamav

* Please retrieve them using freshclam

* Then run '/etc/init.d/clamav-daemon start'

出现这种错误应先更新病毒库。

sudo freshclam

sudo  /etc/init.d/clamav-daemon start

相关文章
相关标签/搜索