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

系统:ubuntu-10.04.3-server-amd64

服务器配置完整的FQDN名

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

你可以在postfix 下的main.cf配置文件中过滤垃圾邮件。


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


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


接下来是我的配置


配置 Amavisd-new, SpamAssassin 和 ClamAV


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  lzop


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


里面的内容为这样


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 [email protected] --to [email protected]


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


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可以通过许多方法来检验一封电子邮件到底是不是垃圾邮件:

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

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

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

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

5、自定义地址、主机名和域名的白名单(白名单中的邮件不会作为垃圾邮件)和黑名单(上了黑名单的邮件会被当作垃圾邮件)。SpamAssassin可以根据用户邮件的历史记录自动构建白名单。

6、使用人为指定的一些垃圾邮件(通常成为spam)和非垃圾邮件(通常成为ham)的例子来训练SpamAssassin识别用户收到的各种不同的垃圾邮件。

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

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

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

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

11、在灰名单系统中,当邮件服务器遇到陌生的邮件发送人或是陌生的邮件发送系统时,它先返回一个临时的SMTP失败代码。如果上述的邮件发送系统在经过一个合理的时间间隔后,试图重新发送邮件,邮件服务器会正常接收该邮件,及随后来自于该邮件发送系统的其他邮件(译注:邮件服务器认为这不是一个发送垃圾邮件的邮件发送系统,因此同意接收邮件)。因为当垃圾邮件发送者遇到上面的临时SMTP错误时,通常会把它当作永久性错误,或是试图在灰名单规定的时间间隔内连续多次发送该邮件,于是邮件服务器就会拒绝接收来自这个邮件发送系统的邮件(译注:邮件服务器认为这就是一个发送垃圾邮件的邮件发送系统,因此拒绝接收邮件)。

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

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

slockd 垃圾邮件拦截

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

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

如果修改后不起作用,可以重启slockd,重启方式:

/usr/local/slockd/slockd-init stop

/usr/local/slockd/slockd-init start

一、黑白名单

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

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

sender_blackist 黑名单,这项里即可写域名也可以对某域里某一用户。

sender_whitelist 白名单,同上。

recip_whitelist

recip blacklist

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

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

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

二、RBL

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

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

zen.spamhaus.org

bl.spamcop.net

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

/usr/local/slockd/slockd-init start

白名单是先于黑名单起作用的,所以测试时一定要细心。还有上面提到的黑白名单不同的效果,大家千万不要在blacklist文件里去编辑形如[email protected]的表达式,它只支持域的形式extmail.org,若是要编辑[email protected]那只能在sender_blacklist文件里去设置,还有所有的正值表达式都是用/表达式/的形式,不用/把内容括起来就被认为普通表达式。




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

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

1、

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

2、

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


3、

删除掉两处配置中的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


你可能感兴趣的:(ClamAV,spamassassin,Amavisd-new)