庞大资源库的计算机教程网站!
设为首页
加入收藏
总编信箱
投稿或申请专栏请先 [登 陆]
首页 操作系统 程序设计 图形图像 媒体动画 机械电子 WEB开发 数 据 库 办公系列 路由技术 网络原理 网络应用
认证考试 安全技术
首页>操作系统>Linux>系统管理>正文
资料搜索
Google搜索
Google
返回上级列表

推荐文章

快速保存网页中所有图片的方法
Windows中让光驱巧妙“隐身”技
防范非法用户入侵Win 2000/XP系
两款比较典型的ASP木马防范方法
有关表格边框的css语法整理
Windows XP中可以被禁用的服务
SQL Server导出导入数据方法
Javascript所有对象的属性的获
网页(HTML)中的特殊字符
与篮球共舞,尽显模式本色
QQ病毒的手工清除方法
Photoshop为极品美女打造性感睫
天衣无缝:IIS与PHP水火也相容
SQL Server存储过程编写和优化

带SMTP认证功能的qmail配置

 作者:本站收集   日期:2005-4-12
字号选择〖 〗/ 双击滚屏 单击停止   
一、操作系统

RatHat Linux 6.2

二、必需的软件

1、qmail-1.03 (www.qmail.org)
2、checkpassword (cr.yp.to/checkpwd.html) 或 vpopmail (www.inter7.com/vpopmail)
3、qmail-smtpd.c (www.nimh.org/hacks/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 两种验证方式下均已实践通过。
上一篇:linux下配置PROXY SERVER和CACHE SERVER    下一篇:Sendmail relay规则及配置文件用法汇总  
[发送给好友]  [关闭窗口]  [返回顶部]   转载请注明来源:www.it00.com   
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
责任编辑: 原点 投稿作者: 本站收集
信息来源: 网络 录入时间: 2005-4-12
关于我们 - 广告服务 - 版权申明 - 网站地图 - 联系方式 - 总编信箱 - 会员投稿