• 反垃圾邮件-Spam Locker的配置与安装
    时间:2008-09-04   作者:佚名   出处:互联网

    安装需求与准备工作

    安装需求

    支持Linux / BSD或Solaris,HP-UX等操作系统
    Perl 5.6+,建议Perl 5.8.0以上
    Net::DNS
    POSIX
    Fcntl
    Digest::MD5
    Digest::SHA1
    Digest::HMAC
    Net::IP
    

    解包软件

    cp -r src/slockd-0.083 /usr/local/slockd 
    

    安装相关Perl模块

    由于slockd是以smtp特征检测为主的软件,因此很大程度依赖dns库,必须安装Net::DNS库才能正常工作。除此外还有诸如HMAC,MD5及SHA1, Net-IP等模块。

    执行以下命令安装需要的模块,注意:这些模块在上文安装Amavisd-new时已经安装过,这里重复是为了强调slockd依赖这些软件包

    rpm -ivh RPMS/perl-Digest-SHA1-2.07-5.i386.rpm
    rpm -ivh RPMS/perl-Digest-HMAC-1.01-1hzq.i386.rpm
    rpm -ivh RPMS/perl-Net-IP-1.24-1hzq.i386.rpm
    rpm -ivh --nodeps RPMS/perl-Net-DNS-0.57-1hzq.i386.rpm
    
    附x86_64系统:
    
    rpm -ivh RPMS/perl-Digest-SHA1-2.07-5.x86_64.rpm
    rpm -ivh RPMS/perl-Digest-HMAC-1.01-13.noarch.rpm
    rpm -ivh RPMS/perl-Net-IP-1.25-1.el4.rf.noarch.rpm
    rpm --nodeps -ivh RPMS/perl-Net-DNS-0.59-1.fc3.rf.x86_64.rpm
    


    配置resolv.conf

    请确认/etc/resolv.conf里的dns服务器是离你的邮件服务器最近,速度最快的dns server,slockd很依赖dns的好坏,因此给系统配置一个快速的dns能大幅度提高处理速度。以下给出一个配置仅供参考:

    nameserver 202.96.128.68
    
    

    上述dns服务器是广东电信的DNS服务器,对于非广东朋友,请改为离你最近的dns 服务器ip

    如果可能的话,请配置一个简单的bind9,成为本地的dns cache server,可以获得最高性能。这里略过这一步骤,但您必须确保dns的配置是正确并且可靠的,否则slockd将不能工作!

    启动/测试

    执行:

    /usr/local/slockd/slockd-init start
    

    此时slockd将启动,并进入非daemon方式的监听模式,接受来自10030端口的请求,命令行下将显示如下调试信息:

    Starting spam locker daemon: slockd
    starting child 2908
    starting child 2909
    08-01 12:34:40 [2908]: Loading APF::Plugin::localctrl
    08-01 12:34:40 [2909]: Loading APF::Plugin::localctrl
    08-01 12:34:40 [2908]: Loading APF::Plugin::anvil
    08-01 12:34:40 [2908]: Loading APF::Plugin::fqdn
    08-01 12:34:40 [2909]: Loading APF::Plugin::anvil
    08-01 12:34:40 [2908]: Loading APF::Plugin::dnsbl
    08-01 12:34:40 [2909]: Loading APF::Plugin::fqdn
    08-01 12:34:40 [2909]: Loading APF::Plugin::dnsbl
    08-01 12:34:40 [2908]: Loading APF::Plugin::hostname
    08-01 12:34:40 [2909]: Loading APF::Plugin::hostname
    

    打开另一个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初步的正常工作了。

    后台方式运行slockd

    调试正确后,必须将slockd配置成后台服务进程(Daemon Process)。vi /usr/local/slockd/config/main.cf 将如下两个配置的注释去掉:

    # uncomment the following line if you need to daemonize
    setsid          1
    
    ## logging
    log_file        /var/log/slockd.log
    

    然后在运行slockd的命令行窗口按ctrl+c,关闭刚才运行的slockd。或者在另一个命令行窗口输入如下命令以杀死slockd进程:

    killall slockd 
    

    然后执行:

    /usr/local/slockd/slockd-init start
    

    自启动

    输入如下的命令,将slockd启动加入到系统里,这样下一次服务器重新启动,就可以自动执行slockd了。

    echo "/usr/local/slockd/slockd-init start" >> /etc/rc.d/rc.local
    

    与Postfix结合

    slockd调试正常后,必须配置postfix以使其打开对slockd的支持,编辑/etc/postfix/main.cf,将 check_policy_service inet:127.0.0.1:10030 这一行记录增加到smtpd_recipient_restrictions 里,例如:

    smtpd_recipient_restrictions =
      permit_mynetworks,
      permit_sasl_authenticated,
      reject_non_fqdn_hostname,
      reject_non_fqdn_sender,
      reject_non_fqdn_recipient,
      reject_unauth_destination,
      reject_unauth_pipelining,
      reject_invalid_hostname,
      check_policy_service inet:127.0.0.1:10030
    

    最后,重新启动postfix以使配置生效

    /etc/init.d/postfix restart 
    

    注意事项:

    上述配置是将slockd的查询放到最后,这也是进一步提高资源利用律的办法,因为有部分功能postfix已实现了,所以就先由postfix检测,如果检测不到再由slockd完成。

    网友留言/评论

    我要留言/评论