linux社区爱心援助Linux认证系列教程业界动态站务新闻公司招聘建议留言网址大全LPI专题CISCO专题
设为首页
加入收藏
管理团队
JSP  
JAVA  
PERL  
 您的位置:首页 > article > linux网络与应用 > Linux服务器 >
栏目导栏
资料搜索
热门文章
·Linux网关设置
·WebLogic管理精华
·Webmin的下载与安装
·RedHat Linux 9.0 Samba配置详
·网吧LINUX游戏服务器加迅闪更新
·Linux下配置完整安全的DHCP服务
·Tomcat性能调整
·Linux下FTP服务器配置
·怎样设置域名的DNS服务器
·linux9.0+apache+php+mysql安装
·Eclipse+Tomcat+MyEclipse配置
·Linux服务器网卡驱动安装及故障
·Linux网络服务器配置详解
·FC5+Apache2+PHP5+MYSQL5环境配
·让linux系统支持ASP
最新文章
·Slackware EyooLinux服务器配置
·Linux系统下安装bind后配置实现
·Fedora Linux系统Samba服务器架
·服务器维护:RHEL 5系统下故障
·服务器应用:实现Linux与宿主机
·RED HAT AS4 U4下Gssftp服务的
·高手进阶:Redhat Linux上vsft
·Fedora Linux操作系统中TFTP的
·Ubuntu Linux操作系统安装配置
·Linux FTP服务器和SVN服务器的
·Linux操作系统下自带BIND的使用
·Linux系统下DNS服务器的架设
·Linux下Apache安装/增加mod_re
·虚拟磁盘Linux服务端测试及故障
·为网络启动和软硬件升级建立TF
Google
 
带SMTP认证功能的qmail配置
[ 作者:  加入时间:2006-07-09 01:08:38  来自:Linux联盟收集 ]
一、操作系统sjDLinux联盟
sjDLinux联盟
RatHat Linux 6.2sjDLinux联盟
sjDLinux联盟
二、必需的软件sjDLinux联盟
sjDLinux联盟
1、qmail-1.03 (www.qmail.org)sjDLinux联盟
2、checkpassword (cr.yp.to/checkpwd.html) 或 vpopmail (www.inter7.com/vpopmail)sjDLinux联盟
3、qmail-smtpd.c (www.nimh.org/hacks/qmail-smtpd.c) 关键文件sjDLinux联盟
sjDLinux联盟
其实,qmail和checkpassword都可以是编译好的,并正在使用中的。这样只需一个文件就可以搞定,sjDLinux联盟
而且不影响正常使用。sjDLinux联盟
sjDLinux联盟
三、软件的安装sjDLinux联盟
sjDLinux联盟
1、正常安装qmail,checkpassword 或 vpopmail 。sjDLinux联盟
sjDLinux联盟
2、设置relay规则。sjDLinux联盟
relay的意思是:服务器接受客户端的smtp请求,将客户端发往第三方的邮件进行转发。sjDLinux联盟
relay 必须是可控制的。qmail下控制relay很简单,只要客户端接入的smtp进程的环境变量里sjDLinux联盟
包含(RELAYCLIENT="")就允许relay ,否则拒收。实现方法是在/etc/tcp.smtp 里对需要relaysjDLinux联盟
的IP逐条设置(RELAYCLIENT=""),然后用tcprules 生成规则表。因为本文要实现SMTP认证后的sjDLinux联盟
relay ,不需要对任何IP进行预先设定,所以默认规则设置成“只对本服务器relay”。sjDLinux联盟
sjDLinux联盟
echo '127.0.0.1:allow,RELAYCLIENT=""' > /etc/tcp.smtpsjDLinux联盟
/usr/local/bin/tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtpsjDLinux联盟
sjDLinux联盟
3、将qmail-smtpd.c 拷贝到qmail 的源文件目录里,最好先将原文件备份。sjDLinux联盟
单独编译 qmail-smtpd 。(vi Makefile;找到跟qmail-smtpd有关的命令)sjDLinux联盟
sjDLinux联盟
./compile qmail-smtpd.csjDLinux联盟
sjDLinux联盟
./load qmail-smtpd rcpthosts.o commands.o timeoutread.o sjDLinux联盟
timeoutwrite.o ip.o ipme.o ipalloc.o control.o constmap.o sjDLinux联盟
received.o date822fmt.o now.o qmail.o cdb.a fd.a wait.a sjDLinux联盟
datetime.a getln.a open.a sig.a case.a env.a stralloc.a sjDLinux联盟
alloc.a substdio.a error.a str.a fs.a auto_qmail.o `cat sjDLinux联盟
socket.lib`sjDLinux联盟
sjDLinux联盟
4、将新生成的qmail-smtpd 拷贝到/var/qmail/bin 目录下。为了与原来的执行文件有区别,sjDLinux联盟
这里把新的执行文件改名为 qmail-smtpd.auth 。sjDLinux联盟
sjDLinux联盟
5、设置 /bin/checkpassword 或 /home/vpopmail/bin/vchkpw 可以SetUID和SetGID。这点sjDLinux联盟
很重要,否则认证无法通过。这是因为smtpd 的进程是由qmaild 执行的。而密码验证程序sjDLinux联盟
原来只使用于pop3进程,分别由root或vpopmail执行,为的是读shadow或数据库中的密码,sjDLinux联盟
并取出用户的邮件目录。这些操作qmaild 都没有权限去做。如果smtp进程要调用密码验证sjDLinux联盟
程序,则必须要使用 setuid 和setgid 。其实这点大可放心,这两个密码验证程序都是带sjDLinux联盟
源代码的,本身非常安全,只需要放在安全的目录里就可以了(设置其他用户除qmaild 可sjDLinux联盟
执行外都没有权限执行;其实如果没有其他SHELL帐户,也就不用这么麻烦了)。sjDLinux联盟
sjDLinux联盟
chmod 4755 /bin/checkpassword 或sjDLinux联盟
chmod 4755 /home/vpopmail/bin/vchkpwsjDLinux联盟
sjDLinux联盟
6、命令行测试:sjDLinux联盟
如果使用的是vpopmail,要把下面的 /bin/checkpassword 换成 /home/vpopmail/bin/vchkpw 。sjDLinux联盟
sjDLinux联盟
#su - qmaild -c "/var/qmail/bin/qmail-popup localhost /bin/checkpassword pwd"〈回车>sjDLinux联盟
+OK ,〈18789.978689240@localhost>sjDLinux联盟
user realuser〈回车>sjDLinux联盟
+OKsjDLinux联盟
pass password〈回车>sjDLinux联盟
sjDLinux联盟
如果结果显示的是用户目录,说明成功了;如果显示"-ERR authorization failed",除检查sjDLinux联盟
密码外,还要检查用户上级的各个目录是否可读,还有密码验证程序的权限是否设置正确。sjDLinux联盟
sjDLinux联盟
7、修改smtpd启动命令行,原来是:sjDLinux联盟
sjDLinux联盟
/usr/local/bin/tcpserver -H -R -l 0 -t 1 -c 100 -x/etc/tcp.smtp.cdb -u604 -g601 sjDLinux联盟
0 smtp /var/qmail/bin/qmail-smtpd 2>&1 | /var/qmail/bin/splogger smtpd 3 & sjDLinux联盟
sjDLinux联盟
(其中604是qmaild 的UID,601是qmaild 的GID),改为:sjDLinux联盟
sjDLinux联盟
/usr/local/bin/tcpserver -H -R -l 0 -t 1 -c 100 -x/etc/tcp.smtp.cdb -u604 -g601 sjDLinux联盟
0 smtp /var/qmail/bin/qmail-smtpd.auth /bin/checkpassword /bin/true 2>&1 sjDLinux联盟
| /var/qmail/bin/splogger smtpd 3 & sjDLinux联盟
sjDLinux联盟
如果使用的是vpopmail,要把上面的 /bin/checkpassword 换成 /home/vpopmail/bin/vchkpw 。sjDLinux联盟
sjDLinux联盟
8、KILL掉原来的smtpd进程,启动新的smtpd进程。sjDLinux联盟
sjDLinux联盟
9、在客户端上使用 OutlookExpress 和 Netscape 4.6 以上版本的邮件软件进行检验。sjDLinux联盟
sjDLinux联盟
四、以上设置在 checkpassword 和 vpopmail 两种验证方式下均已实践通过。
sjDLinux联盟
Linux联盟收集整理 ,转贴请标明原始链接,如有任何疑问欢迎来本站Linux论坛讨论
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
无相关信息