在qmail里配置smtp不复杂,请看下文。 一、操作系统 rathat linux 6.2 二、必需的软件 1、qmail-1.03 () 2、checkpassword (cr.yp.to/checkpwd.html) 或 vpopmail () 3、qmail-smtpd.c () 关键文件 其实,qmail和checkpassword都可以是编译好的,并正在使用中的。这样只需一个文件就可以搞定, 而且不影响正常使用。 三、软件的安装 1、正常安装qmail,checkpassword 或 vpopmail 。 2、设置relay规则。 relay的意思是:服务器接受客户端的smtp请求,将客户端发往第三方的邮件进行转发。 relay 必须是可控制的。qmail下控制relay很简单,只要客户端接入的smtp进程的环境变量里 包含(relayclient="")就允许relay ,否则拒收。实现方法是在/etc/tcp.smtp 里对需要relay 的ip逐条设置(relayclient=""),然后用tcprules 生成规则表。因为本文要实现smtp认证后的 relay ,不需要对任何ip进行预先设定,所以默认规则设置成“只对本服务器relay”。 echo '127.0.0.1:allow,relayclient=""' > /etc/tcp.smtp /usr/local/bin/tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp 3、将qmail-smtpd.c 拷贝到qmail 的源文件目录里,最好先将原文件备份。 单独编译 qmail-smtpd 。(vi makefile;找到跟qmail-smtpd有关的命令) ./compile qmail-smtpd.c ./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` 4、将新生成的qmail-smtpd 拷贝到/var/qmail/bin 目录下。为了与原来的执行文件有区别, 这里把新的执行文件改名为 qmail-smtpd.auth 。 5、设置 /bin/checkpassword 或 /home/vpopmail/bin/vchkpw 可以setuid和setgid。这点 很重要,否则认证无法通过。这是因为smtpd 的进程是由qmaild 执行的。而密码验证程序 原来只使用于pop3进程,分别由root或vpopmail执行,为的是读shadow或数据库中的密码, 并取出用户的邮件目录。这些操作qmaild 都没有权限去做。如果smtp进程要调用密码验证 程序,则必须要使用 setuid 和setgid 。其实这点大可放心,这两个密码验证程序都是带 源代码的,本身非常安全,只需要放在安全的目录里就可以了(设置其他用户除qmaild 可 执行外都没有权限执行;其实如果没有其他shell帐户,也就不用这么麻烦了)。 chmod 4755 /bin/checkpassword 或 chmod 4755 /home/vpopmail/bin/vchkpw 6、命令行测试: 如果使用的是vpopmail,要把下面的 /bin/checkpassword 换成 /home/vpopmail/bin/vchkpw 。 #su - qmaild -c "/var/qmail/bin/qmail-popup localhost /bin/checkpassword pwd"〈回车> +ok ,〈18789.978689240@localhost> user realuser〈回车> +ok pass password〈回车> 如果结果显示的是用户目录,说明成功了;如果显示"-err authorization failed",除检查 密码外,还要检查用户上级的各个目录是否可读,还有密码验证程序的权限是否设置正确。 7、修改smtpd启动命令行,原来是: /usr/local/bin/tcpserver -h -r -l 0 -t 1 -c 100 -x/etc/tcp.smtp.cdb -u604 -g601 \ 0 smtp /var/qmail/bin/qmail-smtpd 2>&1 | /var/qmail/bin/splogger smtpd 3 & (其中604是qmaild 的uid,601是qmaild 的gid),改为: /usr/local/bin/tcpserver -h -r -l 0 -t 1 -c 100 -x/etc/tcp.smtp.cdb -u604 -g601 \ 0 smtp /var/qmail/bin/qmail-smtpd.auth /bin/checkpassword /bin/true 2>&1 \ | /var/qmail/bin/splogger smtpd 3 & 如果使用的是vpopmail,要把上面的 /bin/checkpassword 换成 /home/vpopmail/bin/vchkpw 。 8、kill掉原来的smtpd进程,启动新的smtpd进程。 9、在客户端上使用 outlookexpress 和 netscape 4.6 以上版本的邮件软件进行检验。 四、以上设置在 checkpassword 和 vpopmail 两种验证方式下均已实践通过。 通过上文的介绍,我们都知道了如何在qmail里配置smtp,希望对大家有所帮助! 【编辑推荐】 【责任编辑:褚杰 tel:(010)68476606】
原文:如何在qmail里配置smtp 返回操作系统首页 (责任编辑:admin) |