手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>网站运营>建站经验>列表

Qmail下防止滥用mail relay完全解决方案

来源:互联网 作者:west263.com 时间:2008-04-16
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!
[root@www Qmail-smtpd-auth-0.26]# cp Qmail-smtpd.c ../Qmail-1.03

最好先将原文档备份。单独编译 Qmail-smtpd :

[root@aidmail Qmail-smtpd]# make Qmail-smtpd

            ./load Qmail-smtpd rcpthosts.o commands.o timeoutread.o

            timeoutwrite.o ip.o ipme.o ipalloc.o control.o constmap.o

            received.o date822fmt.o now.o Qmail.o cdb.a fd.a wait.a

            datetime.a getln.a open.a sig.a case.a env.a stralloc.a

            alloc.a substdio.a error.a str.a fs.a auto_Qmail.o  `cat

            socket.lib`

将新生成的Qmail-smtpd 拷贝到/var/Qmail/bin 目录下。在之前应该对原来的执行文档进行备份。

4.3.编译安装kpw-0.22.tar.gz

解压缩,编译安装:

[root@www src]# tar xvfz cmd5checkpw-0.22.tar.gz

            [root@www src]# cd cmd5checkpw-0.22

            [root@www cmd5checkpw-0.22]# make ;make instll

4.4.配置relay规则。

relay的意思是:服务器接受客户端的smtp请求,将客户端发往第三方的邮件进行转发。 Qmail下控制relay很简单,只要客户端接入的smtp进程的环境变量里包含(RELAYCLIENT="")就允许relay ,否则拒收。实现方法是在/etc/tcp.smtp 里对需要relay的IP逐条配置(RELAYCLIENT=""),然后用tcprules 生成规则表。因为本文要实现SMTP认证后的relay ,无需对任何IP进行预先设定,所以默认规则配置成"只对本服务器relay"。/etc/tcp.smtp内容应该为:

127.0.0.1:allow,RELAYCLIENT=""

            :allow

重新生成新的tcp.smtp.cdb文档:

/usr/local/bin/tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp

4.5.配置/home/vpopmail/bin/vchkpw 的SetUID和SetGID。

这点很重要,否则认证无法通过。这是因为smtpd 的进程是由Qmaild 执行的。而密码验证程式原来只使用于pop3进程,分别由root或vpopmail执行,为的是读shadow或数据库中的密码,并取出用户的邮件目录。这些操作Qmaild 都没有权限去做。假如smtp进程要调用密码验证程式,则必须要使用 setuid 和setgid 。其实这点大可放心,这两个密码验证程式都是带源代码的,本身很安全,只需要放在安全的目录里就能够了(配置其他用户除Qmaild 可执行外都没有权限执行;其实假如没有其他SHELL帐户,也就不用这么麻烦了)。

chmod 4755 /home/vpopmail/bin/vchkpw

4.6.修改smtpd启动命令行

#!/bin/sh

            QmailDUID=`id -u Qmaild`

            NOFILESGID=`id -g Qmaild`

            exec /usr/local/bin/softlimit -m 2000000

            /usr/local/bin/tcpserver -v -p -x /etc/tcp.smtp.cdb

            -u $QmailDUID -g $NOFILESGID 0 smtp /var/Qmail/bin/Qmail-smtpd 2>&1

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!