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
a) 编译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 Cu 502 Cg 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 Cna | grep 25
#netstat Cna | 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 在patch包打好之后,需要修改qmail的Makefile文件来配置相应的LDAP信息,具体如下(这里只说明必须修改的,其余的可选项请参考QLDAPINSTALL.TXT文档):
1) -LDAPFLAGS = -DCLEARTEXTPASSWORD
配置是否在LDAP目录中使用明文密码
2) -LDAPLIBS =
配置使用的LDAP接口库,在本例中为:
-LDAPLIBS = -L/root/LdapServer/lib -lldap Cllber Clldap_r Clpthread -lresolv
3) -LDAPINCLUDES =
配置使用的LDAP头文件,在本例中为:
-LDAPINCLUDES = -I/root/LdapServer/include
4)-SHADOWLIBS = -lcrypt Clshadow
-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 Cu 502 Cg 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 Cx CD”dc=gloomy,dc=openet,dc=com,dc=cn” CW Cf mailer.ldif
10. 测试基于LDAP的Pop3认证
在上述步骤完成后,从新测试qmail邮件系统的运行状况,主要从以下三个方面测试,具体命令如下:
1) 本地测试
具体请参考上面小节3的方法
2) Pop3+SMTP测试
具体请参考上面小节5的方法
3) 测试工具
#/var/qmail/bin/qmail-ldaplookup Cu test
#/var/qmail/bin/qmail-ladplookup Cm test@gloomy.openet.com.cn
声明: 此文观点不代表本站立场;转载须要保留原文链接;版权疑问请联系我们。