|
说明:Spam Locker是一款开放源代码,并以GPL授权发布,起源于APF技术,以SMTP行为识别为核心的反垃圾邮件系统。使用Perl语言撰写;
Spam Locker使用了多种目前反垃圾邮件领域的领先技术,比如本地黑白名单、灰名单技术,多RBL查询技术等等;
这些众多厂商引以为豪的反垃圾邮件技术,现在都可以通过Spam Locker免费使用;
Spam Locker是smtp阶段(邮件没收下来时),spamassassin是内容过滤阶段(邮件已经收下来了),所以2者可以混用。
参考:
http://wiki.extmail.org/spam_locker
1、安装Slockd
Spam Locker是Extmail团队设计开发的,因此在其官方YUM中下载安装:
也可以从本文附件中下载:
暂时关闭SPF插件功能
1
2
| [iyunv@mail ~]# vi /usr/local/slockd/config/plugin.cf
spf_plugin = no
|
设置DNS,Spam Locker很大程度依赖dns库,必须安装Net::DNS库才能正常工作(安装amavisd时已装上)
1
| [iyunv@mail ~]# echo "nameserver 202.101.224.68" >> /etc/resolv.conf
|
2、启动
1
2
3
4
5
6
7
8
9
| [iyunv@mail ~]# /usr/local/slockd/slockd-init start
[iyunv@mail ~]# echo "/usr/local/slockd/slockd-init start" >> /etc/rc.d/rc.local
[iyunv@mail ~]# ps aux|grep slockd
root 33573 0.0 0.6 137316 6428 ? SNs 16:00 0:00 slockd (master)
root 33574 0.5 1.2 165324 12432 ? SN 16:00 0:00 slockd (idle)
root 33575 0.5 1.2 165328 12416 ? SN 16:00 0:00 slockd (idle)
root 33591 0.0 0.0 103256 848 pts/1 S+ 16:01 0:00 grep slockd
[iyunv@mail tools]# netstat -tnlp|grep 10030
tcp 0 0 127.0.0.1:10030 0.0.0.0:* LISTEN 33573/slockd (maste
|
3、查看日志
1
2
3
| [iyunv@mail ~]# tail /var/log/slockd.log
starting child 33574
starting child 33575
|
4、测试slockd
返回554表示slockd正常工作了,查看日志;
1
2
3
4
5
6
| [iyunv@mail tools]# tail /var/log/slockd.log
starting child 33697
12-05 16:24:45 [33693]: socket error: 没有那个文件或目录 #这个错误暂时没查到原因
12-05 16:24:45 [33693]: [554 blocked using zen.spamhaus.org, see http://bl.extmail.org/cgi/rbl?192.168.0.1 ,from=<test@foo.com> to=<test@bar.com> helo=<FOOBAR> ip=<192.168.0.1> client=<>]
12-05 16:24:45 [33693]: Policy mode: Nope
12-05 16:24:45 [33693]: [Session ended and closing socket]
|
打开报错中的url查看原因:
http://bl.extmail.org/cgi/rbl?192.168.0.1
1
2
3
4
5
| 192.168.0.1 已被APF server或slockd 的RBL拦截
您的主机发送了过量的垃圾邮件
您的主机是开放中继(open-relay)
您的主机已被病毒或蠕虫感染
您的主机配置不正确或不符合RFC规定
|
启用SPF插件并重启进程:
1
2
3
4
| [iyunv@mail ~]# vi /usr/local/slockd/config/plugin.cf
spf_plugin = yes
[iyunv@mail ~]# /usr/local/slockd/slockd-init stop
[iyunv@mail ~]# /usr/local/slockd/slockd-init start
|
再次测试则会报551:
打开报错中的url查看原因:
http://bl.extmail.org/cgi/why?spf=test@foo.com
1
2
3
4
| 您没有获得以 foo.com 名义发送邮件的授权
可能的拦截原因如下:
您的IP地址没获得Sender域名SPF记录所规定的授权
您的IP地址没获得Sender域名MSPF记录所规定的授权
|
5、配置postfix集成Slockd
1
2
3
4
5
6
| [iyunv@mail tools]# vi /etc/postfix/main.cf
#在收件人限制选项最后加上
smtpd_recipient_restrictions =
……,
check_policy_service inet:127.0.0.1:10030
[iyunv@mail tools]# service postfix reload
|
6、插件介绍
(1)插件配置
插件执行顺序是按照插件在配置文件plugin.cf中的位置决定的。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
| [iyunv@mail tools]# vi /usr/local/slockd/config/plugin.cf
# spamtrap插件:垃圾邮件发件人地址的收集陷阱
spamtrap_plugin = yes
spamtrap_list = config/spamtrap_list
spamtrap_action = FILTER spamtrap:
# 本地黑白名单插件
localctrl_plugin = yes
#黑名单、白名单(同时控制收件和发件)
localctrl_bl = config/blacklist
localctrl_wl = config/whitelist
#发件人黑白名单
localctrl_sender_bl = config/sender_blacklist
localctrl_sender_wl = config/sender_whitelist
#收件人黑白名单
localctrl_recip_bl = config/recip_blacklist
localctrl_recip_wl = config/recip_whitelist
# SPF记录检测插件
spf_plugin = no
# 拒绝代码是硬错误还是软错误,NO为硬错误5xx
spf_soft_reject = no
# 合法则pass,返回OK,不合法则错误,如不确定则返回DUNNO
spf_default_action = DUNNO
# 多路RBL查询插件
dnsbl_plugin = no
# 拒绝代码是硬错误还是软错误,NO为硬错误5xx
dnsbl_soft_reject = no
# rbl 服务器列表
# 少数RBL可能拦截过于敏感,建议只使用以下两个RBL或者不使用
dnsbl_server_list =
zen.spamhaus.org,
bl.spamcop.net,
# 灰名单技术插件
greylist_plugin = yes
# 存储记录的数据库路径
greylist_db = /var/lib/greylist.db
# 延迟时间
greylist_delay = 60
|
(2)本地黑白名单插件说明:
过滤规则:
邮件进来---提取发件人地址信息---whitelist---blacklist--sender_whitelist--
--sender_blacklist----进入用户邮箱或下一处理过程
注意事项:
blacklist\whitelist只支持域名,不能设单个邮箱账号或IP
recipient_whitelist除了跳开Slockd的检测外,还连带跳开Amavisd/Dspam及Clamav等;
建议不要在recipient_whitelist 里放置本地域;
建议不要随便将容易被假冒的域,例如163等,放到sender_whitelist里。
(3)多路RBL查询插件说明:
slockd的RBL功能经常把大型运营商邮箱判断为垃圾并退回给发件人,
把slockd的RBL服务禁用掉,使用dspam进行垃圾邮件的过滤;
默认自带了很多RBL服务器地址,如需要使用也只建议使用以下两个:
zen.spamhaus.org,
bl.spamcop.net,
(4)灰名单技术挂件说明:
灰名单技术设计大体上是基于一种重试的原则,即第一次看到某个IP要想给某个收件人发信,
那么它将简单的返回一个临时错误(4xx),并拒绝 此请求,正常的邮件服务器都会在一段
时间内(如半小时)重发一次邮件。greylist发现还是刚才同样的ip地址和收件人,认为此
ip是来自合法服务器 的,予以放行。如果是非正常的邮件,那么或者将永远也不再进行重试,
或者会疯狂重试,但由于间隔太近,而遭拒绝。因此,greylist只要设置一个合适 的放行间隔,
就可以在很大程度上对这类垃圾邮件有着良好的免疫能力。greylist的一大特点就是不会丢信,
正规的邮件服务器认为4xx错误只是临时 性、软性的错误,会隔一段时间重试,因此邮件还是可以投递成功。
7、测试Slockd黑白名单
(1)测试发件人黑名单
说明:postfix会放过本地域,测试拒绝外部邮箱发件人:
说明:如果你搭建的是测试邮箱服务器,没有公网域名,可以在内网再搭建一个邮箱服务器,当作外部邮箱进行测试,在我以后的文档中也是必要的。
使用ywzhou@eplantstore.com邮箱给test@yourmail.com发封邮件
会收到退信提示:
查看slockd日志:
结论:可以看到邮件成功被本地黑名单插件localctrl拒绝了。
(2)测试收件人黑名单
使用ywzhou@eplantstore.com邮箱给test@yourmail.com和postmaster@yourmail.com分别发封邮件,
结果test收不到,postmaster可以收到,
说明收件人黑名单成功阻止了本地域某邮箱账号接收外部邮件;
使用postmaster@yourmail.com给test@yourmail.com发封邮件,
结果test可以收到,因为postfix信任本地域(mynetwork)邮箱,
要做到本地邮箱互发限制,可以使用postfix自带的访问表,以后在“限制”章节会讲。
结论:表明slockd已经和postfix整合了,可以使用黑名单阻止外部发件人以及阻止本地邮箱接收外部邮件。
百度云附件:slockd-0.99.zip
|
|