当前位置: 主页 > 服务器技术 > Mail服务器 > 解决SpamAssassin的学习系统sa-learn不能使用的问题

解决SpamAssassin的学习系统sa-learn不能使用的问题

时间:2010-5-31来源:互联网 点击:
1、解决SpamAssassin的学习系统
sa-learn --rebuild -D -p user_prefs
建立时,库在/root/.spamassassin下,不能正常使用
groupadd spamd
useradd -g spamd -s /bin/false spamd
vi /etc/sysconfig/spamassassin
SPAMDOPTIONS="-d -x -c -u spamd -H -v -m5"
#SPAMDOPTIONS="-d -c -m5 -H"
#修改local.cf
vi /etc/mail/spamassassin/local.cf
#修改或添加
use_bayes 1
use_bayes_rules 1
bayes_path /home/spamd/.spamassassin/bayes
bayes_auto_learn  1
#不要无限学习,及时关闭,bayes_auto_learn 0
service spamassassin restart
#如此开始学习,库在/home/spamd/.spamassassin下
#删除/root/.spamassassin
#查看自学习的统计数据信息
sa-learn --dump magic
#如何判别是否使用bayes
#默认ham和spam都学习到200封以上,系统开始使用bayes判别,查看文件头出现“tests=BAYES_xx”字样。
#可根据需要在local.cf中添加修改一下参数来调整启用条件
#学习的白名单信件数的启用线
bayes_min_ham_num       200
#学习的垃圾信件数的启用线
bayes_min_spam_num      200
#调整白名单学习分值,避免误学减分词汇,(默认值: 0.1)
bayes_auto_learn_threshold_nonspam -10.0
#规则重新生效命令
kill -HUP `cat /var/run/spamd.pid`
◆bayes_auto_learn_threshold_nonspam n.n (默认值: 0.1)低于该评分线的邮件将自动的作为非垃圾邮件学习.bayes_auto_learn_threshold_spam n.n (默认值: 12....
***********************手动学习***********************
#学习不是以附件方式发送的垃圾邮件
sa-learn --spam  --local /home/vpopmail/domains/xxx/Maildir/cur/
◆可以在local.cf中添加如下参数,已修改BAYES的分数,加强邮件过滤。
◆默认规则打分在/usr/share/spamassassin/50_scores.cf
score  BAYES_50 2.5
score  BAYES_60 3.0
score  BAYES_80 3.5
score  BAYES_95 4.0
score  BAYES_99 4.0
◆手动学习邮件-邮件方式采用Maildir格式
(网上说的以附加档桉方式转寄的邮件后直接学习是不对的,在spamassasin官网中的sa-learn说明中叙述的很清楚,去除转发spam或ham为附件或讨论spam规则的邮件,学习这也邮件会导致错误的判断。)
解决办法:
1、配置IMAP,建立两个账户white和black,使用IMAP管理,用户收到错判的邮件,以附件的方式发给white或black,管理员验证收到的附件后通过IMAP把附件转移到相应的ham或spam夹中,再使用sa-learn 进行手动学习。
2、官网中有去除转发邮件头并还原附件的脚本(我没有测试过),使用outlook空白邮件转发后使用脚本转换。
3、目前我使用的方法:
#手动建立自学习库,建立两个邮箱
#useradd -M black_list
#useradd -M white_list
◆如果qmail的邮件方式采用Maildir格式的话,如果收到垃圾信的话, (就把信 "以附件方式转寄") 到  blacklist 信箱; 如果是被 Spamassassin 误判为垃圾信的邮件, 就把它转寄给 whitelist。由邮箱管理员收取后进行验证,并使用邮件软件(foxmail等)直接导出邮件或附件,以此去除掉转发邮件头。建立spam和ham文件夹,把导出邮件上传的相应的夹中,使用如下方法手动学习。可以让这两个信箱收集可以给 Spamassassin 学习的范本. 学习的指令如下:
学习黑名单:
sa-learn --spam --showdots  --local /home/vpopmail/domains/xxx/spam/
学习白名单:
sa-learn --ham --no-sync --local /home/vpopmail/domains/xxx/ham/
学习完成后, 即可将信箱清空:
让系统每小时自动学习黑/白名单: 于 /etc/cron.hourly 建立一个可执行的 shell 档, 内容为:
#!/bin/sh
if [ -s /var/spool/mail/blacklist ]; then
sa-learn --spam  --no-sync --showdots --local/home/vpopmail/domains/xxx/spam/ > /dev/null 2>&1
true > /home/vpopmail/domains/xxx/spam/
fi
if [ -s /var/spool/mail/whitelist ]; then
sa-learn --ham --no-sync --showdots --local /home/vpopmail/domains/xxx/ham/ > /dev/null 2>&1
true > /home/vpopmail/domains/xxx/ham/
fi
另一个
crontab -e
0 * * * * /usr/bin/sa-learn --spam  --showdots --local /home/vpopmail/domains/xxx/spam/
0 * * * * /usr/bin/sa-learn --ham --showdots --local /home/vpopmail/domains/xxx/ham/
站长资讯网
. TAG: SpamAssassin 系统

查看[解决SpamAssassin的学习系统sa-learn不能使用的问题]所有评论
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:
推荐内容最近更新人气排行
关于我们 | 友情链接 | 网址推荐 | 常用资讯 | 网站地图 | RSS | 网站留言