服务器 频道

Linux下邮件系统完美解决方案架设攻略

启动/测试

    执行:
/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 : 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完成。

    最终测试

    现在通过简单的email收发来确认系统是否正常。

    发送测试邮件

    输入以下命令,通过telnet方式给test@extmail.org发送一封测试信件
telnet localhost 25
Trying 127.0.0.1... Connected to localhost.localdomain (127.0.0.1). Escape character is '^]'. 220 mail.extmail.org ESMTP Postfix - by extmail.org helo demo.extmail.org 250 mail.extmail.org mail from: 250 2.1.0 Ok rcpt to: 250 2.1.5 Ok data 354 End data with . Subject: Hello World Hello World! . 250 2.0.0 Ok: queued as 3E47685269 quit 221 2.0.0 Bye Connection closed by foreign host.
    此时通过另一个命令行窗口,观察maillog,命令为:
tail -f /var/log/maillog
    将看到如下信息:
Aug 1 12:51:06 centos postfix/qmgr[3017]: 041718526B: from=, size=833, nrcpt=1 (queue active) Aug 1 12:51:06 centos postfix/smtpd[3032]: disconnect from centos[127.0.0.1] Aug 1 12:51:06 centos amavis[2890]: (02890-01) Passed CLEAN, [127.0.0.1] -> , Message-ID: <20060801165039.3E47685269@mail.extmail.org>, mail_id: N8nxpoRn4Hlq, Hits: 0.107, 11561 ms Aug 1 12:51:06 centos postfix/smtp[3043]: 3E47685269: to=, relay=127.0.0.1[127.0.0.1], delay=27, dsn=2.6.0, status=sent (250 2.6.0 Ok, id=02890-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 041718526B) Aug 1 12:51:06 centos postfix/qmgr[3017]: 3E47685269: removed Aug 1 12:51:06 centos postfix/pipe[3035]: 041718526B: to=, relay=maildrop, delay=0, dsn=2.0.0, status=sent (delivered via maildrop service) Aug 1 12:51:06 centos postfix/qmgr[3017]: 041718526B: removed
    上述日志表示邮件经过了amavisd-new的扫描,并且已经通过maildrop投递到用户的maildir了。至此,整个ExtMail Solution 的安装配置已经基本告一段落。对于需要进行高级调整的朋友,请留意本文附录的备注。备注的内容将不断更新,敬请留意。
0
相关文章