Redhat, spamassasin反垃圾邮件的配置(含中文垃圾邮件)

Redhat, spamassassin反垃圾邮件的配置(含中文垃圾邮件)
本人使用RedHat Linux企业版服务器,自带了Sendmail邮件服务器和spamassasin发垃圾邮件装备。以前一直没有启用spamassasin,只是使用 SendMail作为内部邮件服务器,随着时间的推移,垃圾邮件非常繁多,让大家痛苦不堪。在实在不能忍受了之后,终于决定启动spamssasin重型 “装备”,开始与垃圾邮件做斗阵。

1.什么是spamassassin
比较标准的解释有两种:
(1)官方解释(http://wiki.apache.org/spamassassin/): “SpamAssassin is a mature, widely-deployed open source project that serves as a mail filter to identify spam”;
(2)百度百科(http://baike.baidu.com/view/1465405.htm):SpamAssassin 是一种安装在邮件伺服主机上的邮件过滤器,用来辨识垃圾信。它是使用大量的预设规则检查垃圾信,这些规则会检查寄到网域内所有邮件的标头,内文,以及送信 者。他采取的过滤方式是采用记分制,也就是说会根据我们所设定的标准来给予分数超过标准值的时候即判定为 SPAM(垃圾邮件)。
总之,spamassassin就是 spam assassin(垃圾邮件杀手),不但能标识垃圾邮件,而且可以过滤垃圾邮件(或阻止垃圾邮件打扰用户)。


2.如何安装spamassassin
掠过。


3.如何使用spamassassin
3.1启动spamd
# /usr/bin/spamd --daemonize --pidfile /var/run/spamd.pid
说明:启动命令为spamd,设置为后台程序,并将运行时的PID写入文件/var/run/spamd.pid文件中。

3.2下载中文垃圾垃圾邮件过滤规则Chinese_rules.cf
# wget -N -P /usr/share/spamassassin www.ccert.edu.cn/spam/sa/Chinese_rules.cf

3.3每次更新Chinese_rules.cf需要重启spamd方法如下
# kill -HUP `cat /var/run/spamd.pid`

如果希望每月自动更新中文垃圾垃圾邮件过滤规则,可以在/etc/crontab文件最后加上一行。
# vi /etc/crontab (加一行)
0 0 1 * * root wget -N -P /usr/share/spamassassin www.ccert.edu.cn/spam/sa/Chinese_rules.cf;kill -HUP `cat /var/run/spamd.pid`


4.下载并安装MIME-tools
wget http://www.mimedefang.org/static/MIME-tools-5.420.tar.gz
tar zxf MIME-tools-5.420.tar.gz && cd MIME-tools-5.420
perl Makefile.pl && make && make install

5.下载并安装mimedefang
#记得先安装MIME-tools
官网地址: http://www.mimedefang.org/
下载URL: http://www.mimedefang.org/static/mimedefang-2.57.tar.gz
tar zxf mimedefang-2.57.tar.gz && cd mimedefang-2.57
./configure #如果有报错, 请参考提示信息修改,我机器报错及解决办法在下面.
make && make install
useradd defang
cp examples/init-script /etc/init.d/ #这个是启动脚本

 

注: 1) #./configure报错信息:
configure: WARNING: Oops.. I couldn't find libmilter.a or libmilter.so.  Please install Sendmail
configure: WARNING: and its libraries.  You must run Build in the libmilter/ directory
configure: WARNING: to compile libmilter.
configure: WARNING: Oops.. I couldn't find libmilter/mfapi.h.  Please install Sendmail 8.12
configure: WARNING: and its header files.
#解决办法就是安装sendmail-devel包
2)  #如果留意./configure时最后的信息的话, 会提示了这么一行
#Note:  The MIMEDefang user 'defang' does not seem to exist.  Please create this user before continuing.
#那么我们增加这个用户即可, 记得如果不增加这个用户的话, 在后面运行脚本的时候也会提示的.
#make install后, 系统也有提示, 内容如下
Please create the spool directory, '/var/spool/MIMEDefang', if it does not exist.  Give it mode 700 or 750, and make it owned by the user and group you  intend to run MIMEDefang as.Please do the same with the quarantine directory, '/var/spool/MD-Quarantine'.
#照做即可, 我的机器安装后就已生成这两个目录, 权限为700, 不需要调整.


6. 配置sendmail.cf文件 (vi /etc/mail/sendmail.cf)
1). 找到这行
# Input mail filters
在这行下面添加一行, 内容如下
O InputMailFilters=mimedefang
2).再找到
#####                   MAIL FILTER DEFINITIONS
在下面找个合适地方,添加一行,内容如下
Xmimedefang, S=unix:/var/spool/MIMEDefang/mimedefang.sock, F=,T=S:60s;R:60s;E:60s
/etc/init.d/sendmail restart #重启sendmail

7. 可以发邮件测试一下, 如果每一封邮件头都被加上了X-Scanned-By: MIMEDefang 2.57, 可以认为配置成功.(这个在maillog中也有记录)

其它:
1). 中文过滤规则随时都在更新,因此用户可以在crontab中加入下载命令定时更新自己的规则,但注意每次更新都需要重启加载SpamAssassin规则的程序。假如用户想一个月更新一次,那么在root的crontab中应该添加一行:
0 0 1 * * wget -N -P /usr/share/spamAssassin http://www.ccert.edu.cn/spam/sa/Chinese_rules.cf; /etc/init.d/init-script restart
2). 安装mimedefang后,SpamAssassin的用户定义配置文件并不是缺省的local.cf而是samimedefang.cf。
3). 如需要做垃圾邮件网关,需要注意
域名服务器的配置不变,将域名MX记录指向过滤网关。过滤网关更改配置文件,编辑/etc/mail目录下的mailertable文件,添加内容如下:
zhangjianfeng.com esmtp:internal.zhangjianfeng.com
或者
zhangjianfeng.com esmtp:[192.168.0.1]
internal.zhangjianfeng.com和192.168.0.1为邮件服务器的域名和IP.
编辑保存后必须运行如下命令
makemap hash mailertable.db < mailertable
编辑 /etc/mail目录下的access文件,添加内容如下:
internal.zhangjianfeng.com    RELAY
makemap hash access.db < access
重启sendmail进程就行了。
如果希望一个网关同时过滤多个邮件服务器的邮件,只有把所有邮件服务器的DNS MX纪录指向邮件网关,并在邮件网关配置相应的邮件路由。

4).为了尽量减少误判,建议使用SpamAssassin提供的白名单功能。比如在/etc/mail/SpamAssassin/sa-mimedefang.cf中添加
whitelist_from *@cernet.edu.cn
会使所有来自cernet.edu.cn的邮件被视为正常邮件。

SpamAssassin主要配置文件是/etc/mail/spamassassin /local.cf和 /usr/share/spamassassin/*.cf,后者是默认的规则文件集,一般不要改动;前者可以让管理员修改配置添加规则。由于默认的规则 库不太符合国内中文邮件,所以你得添加一些适合中文的规则到local.cf文件中,下面的是由反垃圾邮件联盟网站ten提供的适合中文邮件规则集:
##################################################
#Follow is diables some bad rules for chinese mail
#################################################
score SUBJ_FULL_OF_8BITS 0.0
score BASE64_ENC_TEXT 0.0
score BAYES_99 0.1
score BAYES_90 0.1
score BAYES_80 0.1
score BAYES_70 0.1
score BAYES_60 0.1
score FROM_ILLEGAL_CHARS 0.1
score HEAD_ILLEGAL_CHARS 0.1
score SUBJ_ILLEGAL_CHARS 0.1
score MIME_BASE64_TEXT 0.1
score FAKE_HELO_AOL 0.1
score NO_RDNS_DOTCOM_HELO 0.1
score CHINA_HEADER 0.1 
 
鉴于相当多的网友询问如何在Spamassassin里配置CBL的黑名单作为其评分标准之一,
故整理了一下CBL/CDL/CBL+/CBL-的在Spamassassin里的配置格式,
其中有些设置了检查返验证码,有些没设,以及分值的设定等等,这些可根据各自的实际情况设置。
其中我们推荐优先使用CBL-和CML。

 

CODE

#最佳推荐之使用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

#header  RCVD_IN_CBL            eval:check_rbl('cbl', 'cbl.anti-spam.org.cn.')
#describe  RCVD_IN_CBL          Received via a relay in cbl.anti-spam.org.cn
#tflags  RCVD_IN_CBL            net
#score   RCVD_IN_CBL   2.0

#header  RCVD_IN_CBL_DIALUP eval:check_rbl('cdl-notfirsthop', 'cdl.anti-spam.org.cn.', '127.0.8.4')
#describe  RCVD_IN_CBL_DIALUP CBL: dialup sender did non-local SMTP
#tflags  RCVD_IN_CBL_DIALUP      net
#score   RCVD_IN_CBL_DIALUP  1.5

#header  RCVD_IN_CBL_PLUS        eval:check_rbl('cblplus', 'cblplus.anti-spam.org.cn.')
#describe  RCVD_IN_CBL_PLUS        Received via a relay in cblplus.anti-spam.org.cn
#tflags  RCVD_IN_CBL_PLUS        net
#score   RCVD_IN_CBL_PLUS 1.0

以下两行另存为一个.cf文件 ,过滤指定主题和内容

header CN_SUBJECT_992   Subject =~ /135/
describe CN_SUBJECT_992 Subject contains "135"
score CN_SUBJECT_992    0.3

 body CN_BODY_977        /91/.com/
describe CN_BODY_977    Body contains "91/.com"
score CN_BODY_977       1.500

body CH_FREE /免费/
describe CH_FREE 内有中文字"免费",疑为垃圾信件。
score CH_FREE 15

#whitelist_from *@163.com
whitelist_from *@koowo.com
blacklist_from *@listhost.us

更多spamassassin配置参数,请参见命令  perldoc Mail::SpamAssassin::Conf

vi /etc/procmailrc
# 启动SpamAssassin系統, filter all incoming mail through SpamAssassin and tags probable spam with a unique header
# 小于100K的信件要执行检查, 超过直接放过他!
#### 如果看到是被打上Spam字样,就送入nulluser信箱
#SHELL=/bin/sh
#LOGFILE=/var/log/procmail.log   #如果启用这个,就是加日志功能

:0fw: spamassassin.lock
* < 100000  #
| /usr/bin/spamassassin #仅检查100K以内的邮件

:0:
* ^X-Spam-Flag: Yes
/var/mail/nulluser

種垃圾郵件後續處理方式(要修改/etc/procmailrc )
1.直接刪除(較不建議)
:0:
* ^X-Spam-Status: Yes
/dev/null

2.移到spam帳號下
:0:
* ^X-Spam-Status: Yes
/var/spool/mail/spam

建立spam帳號
useradd spam
passwd spam
touch /var/spool/mail/spam
chown spam /var/spool/mail/spam(這樣才不會有權限問題)

3.移到每位user的home/mail/廣告信
:0:
* ^X-Spam-Status: Yes
$HOME/mail/廣告信

cd /root
pico -w touch_file.sh
—–touch_file.sh——–
for i in /home/*
do
#mkdir $i/mail
touch $i/mail/廣告信
chown `basename $i /home/` $i/mail/廣告信
done
——–
chmod +x touch_file.sh
./touch_file.sh


1.中文垃圾邮件过滤规则集(sendmail+Spamassassin+mimedefang环境)http://blog.chinaunix.net/u/17657/showart_244852.html)

2.用 SpamAssassin 消灭垃圾邮件(http://www.ibm.com/developerworks/cn/linux/other/l-spam/index.html)

3.基于sendmail的反垃圾邮件服务器的研究与实现(http://hi.baidu.com/findi/blog/item/991905af125780fcfbed501f.html

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值