1 概述
计算机网络经过长期的发展,不同的操作系统和应用程序以不同的格式在网络上存储了大
量的信息,一个网络管理员无法在一个集中的信息库中,以方便的方法管理网络信息和资
源。用户必须使用不同的应用程序获取不同的信息和资源,这大大增加了用户的负担,也
使许多信息难于共享,从而在一定程度上制约了网络的发展,因而需要一种新的技术,能
够以通用的格式和方式实现信息的存储和共享,实现网络的共享。
目录服务技术就是用于实现上述需求的。目录服务可以命名、描述和指定一个企业范围内
的用户和资源,从而简化通信与管理;它可以使用户通过简单的搜索查找资源及其他用
户;它可以帮助管理人员收集和控制散布与该机构的信息,并可以使他们通观地审视这些
信息。 目前基于目录服务的各种网上应用越来越多。特别是随着Intranet的崛起以及轻
型目录服务LDAP(Lightweight Directory Access Protocol)的开发,人们对其价值
的认识日趋明朗。
本文档详细描述了Unix中常用的邮件服务器qmail的安装和配置过程,以及qmail和LDAP
的整合,重点在于qmail的基本应用及其通过LDAP Server来进行Pop3认证的配置过程,
对于其它诸如邮件网关、邮件虚拟域、邮件列表、SMTP认证等不做叙述。本文档假定你对
qmail邮件服务器和OpenLDAP的LDAP Server有基本的了解,在各种软件包安装之前,请
认真阅读软件包附带的相关安装说明文档。
邮件服务器基于LDAP的应用扩展,是目前基于LDAP管理Internet信息的应用之一,此外
基于LDAP的WWW网关也是使用LDAP的一个方向,下图给出了这两种应用的总体结构:
2 安装前的准备
操作系统
RedHat Linux 6.2
所需软件包
1. qmail-1.03.tar.gz (http://www.qmail.org)
2. ucspi-tcp-0_88_tar.gz (http://cr.yp.to/ucspi-tcp.html)
3. checkpassword-0_90_tar.gz (http://cr.yp.to/checkpwd.html)
4. qmail-ldap-1_03-20010301_patch.gz (http://www.nrg4u.com/)
5. openldap-2_0_7.tgz (http://www.openldap.org)
主机IP地址和域名配置,在本例中为:
IP:192.168.0.117
DomainName :gloomy.openet.com.cn
(LDAP Server的RootDN为:dc=gloomy dc=openet dc=com dc=cn)
3 安装与配置
1. 卸载SendMail邮件系统
由于大多数Linux发行版本中都预装了SendMail邮件系统,所以在安装qmail 邮件服务器
前最好卸载SendMail邮件服务器,使用如下命令:
#netsysv (取消系统boot时启动SendMail)
#mv /usr/lib/sendmail /usr/lib/sendmail.bak
#mv /usr/sbin/sendmail /usr/sbin/sendmail.bak
#mv /usr/bin/newaliases /usr/bin/newaliases.bak
#mv /usr/bin/mailq /usr/bin/mailq.bak
2. 安装qmail软件包
a) 首先确定qmail的安装路径,若选默认安装的话,使用如下命令,否则需要修改qmail
软件包中相应的conf*文件:
#mkdir /var/qmail
b) 增加qmail所需要的组和用户,使用如下命令:
#groupadd nofiles
#useradd -g nofiles -d /var/qmail/alias alias
#useradd -g nofiles -d /var/qmail qmaild
#useradd -g nofiles -d /var/qmail qmaill
#useradd -g nofiles -d /var/qmail qmailp
#groupadd qmail
#useradd -g qmail -d /var/qmail qmailq
#useradd -g qmail -d /var/qmail qmailr
#useradd -g qmail -d /var/qmail qmails
c) 编译qmail源代码并安装,使用如下命令:
#tar zxvf qmail-1.03.tar.gz
#cd qmail-1.03
#make setup check
d) 建立相应的配置文件,使用如下命令:
#config-fast gloomy.openet.com.cn
#cd /var/qmail/alias
#touch .qmail-postmaster .qmail-mailer-daemon .qmail-root
#chmod 644 qmail*
e) 选择邮件的存储方式:
在qmail中,支持三种邮件存储方式,分别是典型的/var/spool/mail方式、传统的Unix
user/Mailbox方式和新的 user/Maildir方式,其中前两种方式为大多数的邮件客户端
所支持,但是它们均存在安全上的隐患,所以在这里使用了第三种方式,下面分别叙述三
种方式的建立方法:
/var/spool/mail 方式
#cp /var/qmail/boot/proc /var/qmail/rc
user/Mailbox 方式
#cp /var/qmail/boot/home /var/qmail/rc
user/Maildir 方式
1)#cp /var/qmail/boot/home /var/qmail/rc
2)建立相应的邮件用户,例如:#useradd test
#passwd test
3)使用qmail提供的工具建立Maildir,命令如下:
$ /var/qmail/bin/maildirmake Maildir
$ echo ./Maildir/ .qmail
(注意这里必须以用户权限建立邮箱)
4)修改 /var/qmail/rc 文件,把其中的/Mailbox 改为/Maildir/
5) 为了使root用户也能收发邮件,使用如下命令:
# su alias
$ cd
$ /var/qmail/bin/maildirmake Maildir
$ echo ./Maildir/ .qmail
f) 建立启动qmail的shell文件run_mail,其内容为:
#cat run_mail
csh -cf ‘/var/qmail/rc’ &
3. 测试qmail基本邮件系统
首先启动qmail邮件服务器,然后测试邮件的收发,使用如下命令:
#run_mail
#echo to : ReceiverName | /var/qmail/bin/qmail-inject
(其中 ReceiverName 为邮件接受者的ID,例如test)
在邮件发送后,可以查找是否收到邮件,分三种方式,依赖邮件的存储方式:
/var/spool/mail 方式
$cd /var/spool
$vi ReceiverName
或者用
$mail
user/Mailbox 方式
打开用户根目录下的Mailbox文件,看是否收到邮件
user/Maildir 方式
$cd Maildir
$ls new
(注意在以上测试时,如果发生错误,可以查看/var/log/maillog文件获得出错原因)
4. 添加Pop3和SMTP服务
可以使用inetd超级服务器或TcpServer来建立相应的Pop3和SMTP服务,为了支持大容量
的邮件用户,建议使用TcpServer来监听服务端口启动相应的服务,建立命令如下:
#tar zxvf ucspi-tcp-0_88_tar.gz
#cd ucspi-tcp-0.88
#make setup check
#tar zxvf checkpassword-0_90_tar.gz
#cd checkpassword-0.90
#make setup check
修改上面建立的run_mail文件,修改后的内容如下:
#cat run_mail
csh -cf '/var/qmail/rc' &
tcpserver –u 502 –g 501 -c 100 0 smtp /var/qmail/bin/qmail-smtpd &
tcpserver -c100 0 pop3 /var/qmail/bin/qmail-popup gloomy.openet.com.cn
/bin/checkpassword /var/qmail/bin/qmail-pop3d Maildir &
修改/var/qmail/control/rcpthosts文件,来增加SMTP接收邮件的域
例如:#cat /var/qmail/control/rcpthosts
gloomy.openet.com.cn
ldap,openet.com.cn
tbs.openet.com.cn
openet.com.cn
5. 测试Pop3和SMTP服务
首先启动qmail邮件服务器,然后测试,使用如下命令:
1) 本地测试
#run_mail
#netstat –na | grep 25
#netstat –na | grep 110
#telnet localhost 110
user test
pass test
list
retr 1
2) 远程测试
利用Windows下的图形邮件客户端(如 outlook、foxmail等)来测试邮件的收发,客户
端邮件帐号的建立请参考附带的帮助文档。
6. 为qmail增加LDAP支持
qmail可以通过LDAP来代替传统的/etc/passwd方式的Pop3认证,以便提高认证效率和有
效的支持大容量的邮件客户,为了使qmail获得LDAP支持,需要在qmail的基础上增加具
备LDAP认证的Patch包,具体操作使用如下命令:
#gunzip qmail-ldap-1_03-20010301_patch.gz
#cd qmail-1.03
#patch -p1 < /path to qmail-ldap patch/qmail-ldap patch name
在patch包打好之后,需要修改qmail的Makefile文件来配置相应的LDAP信息,具体如下
(这里只说明必须修改的,其余的可选项请参考QLDAPINSTALL.TXT文档):
1) -LDAPFLAGS = -DCLEARTEXTPASSWORD
配置是否在LDAP目录中使用明文密码
2) -LDAPLIBS =
配置使用的LDAP接口库,在本例中为:
-LDAPLIBS = -L/root/LdapServer/lib -lldap –llber –lldap_r –lpthread
-lresolv
3) -LDAPINCLUDES =
配置使用的LDAP头文件,在本例中为:
-LDAPINCLUDES = -I/root/LdapServer/include
4)-SHADOWLIBS = -lcrypt –lshadow
-SHADOWOPTS = -DPW_SHADOW
配置使用的密码认证方式
在Makefile设置修改完毕后,重新编译qmail源文件,然后覆盖安装qmail,使用如下命
令:
#make setup check
7. 安装OpenLDAP
本例中采用了OpenLDAP的开放源代码LDAP Server,详细的管理请参考
(http://www.openldap.org)站点的文档以及《LDAP配置手册》,下面概述其安装配置
过程:
#tar zxvf openldap-2_0_7.tgz
#cd openldap-2.0.7
#./configure
#make depend
#make
#make test
#make install
修改OpenLDAP Server的配置文件,启动slapd服务器,具体如下:
#cd path to LDAP Server/
#vi etc/openldap/slapd.conf
主要修改slapd.conf文件中的如下部分,在本例中为:
#############################################
# ldbm database definitions
#############################################
database ldbm
suffix "dc=gloomy , dc=openet , dc=com , dc=cn"
rootdn "dc=gloomy , dc=openet , dc=com , dc=cn"
rootpw secret
index objectclass,mail,uid
index qmailUser
8. 配置qmail+LDAP
在LDAP Server安装测试完毕后,修改并建立相应的qmail配置文件,增加对LDAP
LookUp的支持,分为如下几步:
1) 在/var/qmail/control/下建立相应的LDAP支持文件:
#cat ldapserver
192.168.0.117
#cat ldapbasedn
dc=gloomy , dc=openet , dc=com , dc=cn
#cat ldapobjectclass
qmailUser
2) 为LDAP添加相应的支持qmail邮件用户的schema:
#cd qmail-1.03
#cp qmail.schema /root/LdapServer/etc/openldap/schema
修改slapd.conf文件,加入下面一行:
include /root/LdapServer/etc/openldap/schema/qmai.schema
3) 修改前面建立的run_mail启动脚本,修改后的内容如下:
#cat run_mail
csh -cf '/var/qmail/rc' &
tcpserver –u 502 –g 501 -c 100 0 smtp /var/qmail/bin/qmail-smtpd &
tcpserver -c100 0 pop3 /var/qmail/bin/qmail-popup gloomy.openet.com.cn
/var/qmail/bin/auth_pop /var/qmail/bin/qmail-pop3d Maildir &
9. 在LDAP DIT中增加qmail邮件用户目录
首先启动LDAP服务器,然后创建相应的*.ldif文件(有关LDIF文件的格式,请参考
RFC2849的描述),插入LDAP数据库中,具体的命令如下:
#/root/LdapServer/libexec/slapd
在本例中建立的的交换文件为mailer.ldif,其具体内容如下:
#cat mailer.ldif
dn: cn=testUser , dc=gloomy , dc=openet , dc=com , dc=cn
cn: testUser
sn: testUser
objectClass: top
objectClass: person
objectClass: inetOrgPerson
objectClass: qmailUser
mail: test@gloomy.openet.com.cn
mailHost: gloomy.openet.com.cn
mailMessageStore: /home/test/Maildir/
mailQuota: 1000000S,100C
uid: test
userPassword: test
插入qmail用户目录到LDAP的目录信息树中,使用如下命令:
#/root/LdapServer/bin/ldapadd –x –D”dc=gloomy,dc=openet,dc=com,dc=cn”
–W –f mailer.ldif
10. 测试基于LDAP的Pop3认证
在上述步骤完成后,从新测试qmail邮件系统的运行状况,主要从以下三个方面测试,具
体命令如下:
1) 本地测试
具体请参考上面小节3的方法
2) Pop3+SMTP测试
具体请参考上面小节5的方法
3) 测试工具
#/var/qmail/bin/qmail-ldaplookup –u test
#/var/qmail/bin/qmail-ladplookup –m test@gloomy.openet.com.cn
4 参考资料
1) Life with qmail (http://www.lifewithqmail.org/lwq.html)
2) Life with qmail-LDAP (http://www.lifewithqmail.org/ldap/)
3) QLDAPINSTALL (http://www.nrg4u.com/)
4) Open LDAP 2.0 Administrator’s Guide
(http://www.openldap.org/doc/admin/)
5) 《LDAP配置手册》
5 总结
LDAP使得过去杂乱无序的网络资源和信息管理呈现出一种树状的有序体系,不但使
Internet资源的管理和控制变得易于进行,而且同时在另外一方面也提高了各种信息和资
源的使用效率,LDAP用10%的代价实现了X.500 DAP 90%的功能,是目前Internet上越来
越广泛的应用之一,本文通过对qmail邮件服务器和LDAP整合应用的安装和配置的描述,
希望能够对掌握LDAP这个下一代因特网服务与应用的基础提供一定的帮助。