分类: LINUX
2008-10-25 09:30:46
#【版本及原作者信息:】 #
# 1.作者:胡昌文 #
# 2.官方网站:hi.baidu.com/iloveqiong #
# 3.E-MAIL:wtcmaster@126.com # #
###############################################################################
本文运行环境为RedHat Linux Enterprise AS 5,用到的软件均为系统自带的开源软件,可从系统安装介质中获取,同时,由于RHEL AS5已经是较新的版本,很多功能都可以实现,为了节省时间,使用RPM包安装,对源码编译安装起到抛砖引玉的作用!
如果配置不当之处,还请高手指点......
【步骤:】
1.安装所有可能使用的软件(bind,postfix,dovecot,cyrus-sasl,openldap,db4).
2.配置DNS.
3.配置openldap.
4.配置postfix.
5.配置cyrus-sasl,实现smtp认证。
6.配置dovecot,实现pop3,imap认证。
7.配置MUA,测试邮件系统。
OK,现在就开工吧......
第一步:安装BIND,POSTFIX,DOVECOT,CYRUS-SASL,OPENLDAP
这些软件的安装都是使用rpm -ivh 命令安装的,软件包在5张系统安装光盘中都可以找到,当然如果你使用的是其它Linux版本,请根据你的实际情况安装。在这些软件包的安装过程中,看似简单,还是有很多问题需要注意,分别如下:
①.bind-untils,caching-nameserver,redhat-config-bind,bind是DNS服务必须的软件包,请务必安装,都则DNS服务将不能正常工作。另外,在RHEL AS5中,系统不会自动创建/etc/named.conf文件,这个文件需要自己手工创建(如果不会,在此博客中找:hi.baidu.com/iloveqiong).
②.如果你在DNS中创建了多个zone文件,需要多个域进行解析,但是有的可以正常解析,有的不行,请首先检查配置,其次,注意zone文件的权限,named用户(DNS的默认运行帐户)对此zone文件是否有读取的权限(权限问题是很多服务运行失败的一个重要原因,可以通过日志分析).
③.查看BIND的解析日志方法:在/etc/syslog.conf文件末尾加上下面参数:
level4.* /var/log/bind.log
完成后,创建/var/log/bind.log文件,软件restart日志服务即可。
④.在安装软件过程中,许多软件包存在依赖关系,安装时请根据其提示先行安装其依赖包。
⑤.在还装这个软件前,你还必须配置好你系统的网络环境:
hostname:mx.dne.com
ipadd:192.168.20.200
netmask:255.255.255.0
gateway:192.168.20.254
nameserver:192.168.20.200 192.168.20.254
配置好后,你必须重启network服务或reboot系统,使配置生效。
⑥.一般linux系统都会自带sendmail邮件系统,在安装postfix前,为了避免冲突,关闭sendmail服务或卸载sendmail软件包。
第二步:配置BIND,使其可以正确解析MX记录。
①.手工创建/etc/named.conf文件,并添加以下三段参数:
zone "cisco.com" IN {
type master;
file "cisco.com.zone";
allow-update { none; };
};
zone "20.168.192.in-addr.arpa" IN {
type master;
file "192.168.20.local";
allow-update { none; };
};
zone "dne.com" IN {
type master;
file "dne.com.zone";
allow-update { none; };
};
其它参数全部使用默认值,如果你想改变,请根据实际情况调整!
②.添加zone文件,文件名称必须与在/etc/named.conf文件指定的一样,分别是:cisco.com.zone,dne.com.zone,192.168.20.local
其文件内容分别如下:
【cisco.com.zone】
$TTL 86400
cisco.com. IN SOA cisco.com. root.cisco.com. (
42 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
IN NS cisco.com.
cisco.com. IN A 192.168.20.200
cisco.com. IN MX 10 mx.dne.com.
【dne.com.zone】
$TTL 86400
dne.com. IN SOA dne.com. root.dne.com. (
42 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
IN NS dne.com.
dne.com. IN A 192.168.20.200
dne.com. IN MX 10 mx.dne.com.
mx IN A 192.168.20.200
【192.168.20.local】
$TTL 86400
@ IN SOA dne.com. root.dne.com. (
1997022700 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS cisco.com.
200 IN PTR localhost.
200 IN PTR mx.dne.com.
BIND的配置过程中,请注意其中的每一个细节,如遇到问题,请参阅日志文件,或与我联系!
③.测试BIND服务是否正常运行,用以下三中方法:
方法一:使用netstat -nutlp | grep 53 命令,查看当前系统是否在监听53端口,监听的ip应该是本机Ip和loops端口,也可能是0.0.0.0(全部ip),视配置情况而定。
方法二:使用nslookup,解析A记录,然后使用set type=mx命令更改解析环境,解析MX记录。
方法三:使用dig命令,dig mx.dne.com是解析A记录,dig dne.com mx是解析MX记录。
BIND配置OK后,开始接下来的工作......
第三步:配置openldap,加入用户帐户信息,使ldap client可以正常查询用户帐户信息。
①.如果你的ldap server和ldap client在同一台机器上,你还必须安装安装openldap-client软件包(本环境就是这样的)。
②.配置/etc/openldap/slapd.conf文件。
####################################################################
# including schema file configurations
####################################################################
include /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/nis.schema
pidfile /var/run/openldap/slapd.pid
argsfile /var/run/openldap/slapd.args
####################################################################
# ldbm and/or bdb database definitions
####################################################################
database bdb
suffix "dc=dne,dc=com"
rootdn "cn=manager,dc=dne,dc=com"
rootpw {SSHA}RXYhzn7u8+VtPhG1tTsWkDBOXF3SVmgL
directory /var/lib/ldap
####################################################################
# index configurations
####################################################################
index objectClass,uid eq
index uidNumber,gidNumber eq
####################################################################
# multi-server replace configurations
####################################################################
replogfile /var/lib/ldap/openldap-master-replog
replica host=mx.dne.com:389
binddn="cn=manager,dc=dne,dc=com"
bindmethod=simple credentials=master
####################################################################
# access power configurations(here just for testing)
####################################################################
access to *
by * write
####################################################################
注意:schema文件的意思和权限设定的方法请在此博客中检索:hi.baidu.com/iloveqiong
③.启动ldap服务,使用ldapsearch命令查看ldap配置是否正确,然后配置/etc/openldap/ldap.conf文件.
###################################################################
BASE dc=dne,dc=com
URI
TLS_CACERTDIR /etc/openldap/cacerts
###################################################################
④.编写ldap.ldif文件(ldap的数据文件)。
###################################################################
# dc information configurations
###################################################################
dn: dc=dne,dc=com
dc: dne
objectclass: domain
###################################################################
# organizationalUnit configurations
###################################################################
dn: ou=gtsc,dc=dne,dc=com
ou: gtsc
objectclass: organizationalUnit
###################################################################
# user named wen configurations
###################################################################
dn: uid=wen,ou=gtsc,dc=dne,dc=com
uid: wen
cn: wen
uidNumber: 504
gidNumber: 501
homeDirectory: wen/inbox
userPassword: wen
description: new objectclass posixAccount
ou: gtsc
objectClass: posixAccount
objectClass: organizationalUnit
###################################################################
⑤.向ldap server database中添加数据,使用以下命令:
ldapadd -x -D 'cn=manager,dc=dne,dc=com' -W -f ldap.ldif
然后输入密码,即可向ldap后台数据库中添加数据。
⑥.使用ldapsearch命令查看ldap 是否工作正常。
ldapsearch 'uid=wen' 或则 ldapsearch -x -D 'cn=manager,dc=dne,dc=com' -w password
此处的password是rootpw的密码,与在/etc/openldap/slapd.conf中配置的一样,如果能正常查询,则说明工作正常。
第四步:配置postfix,达到在没有dovecot,ldap,cyrus-sasl配合的情况下,通过mail命令收发邮件。
①.一般情况下,安装了postfix 后,通过命令postfix start启动postfix服务,就可以达到用mail 命令收发邮件的目的,但是这里,我们不这样做----用手工创建的/etc/postfix/main.cf文件替代默认产生的main.cf文件。
②.创建/etc/postfix/main.cf文件。
###################################################################
#
# this is the kernel file of postfix mail system created by D&A GTSC Hu Changwen
#
###################################################################
###################################################################
# basic information configuration
###################################################################
myhostname = mx.dne.com
mydomain = dne.com
myorigin = $mydomain
mydestination = dne.com
mynetworks = 192.168.20.0/24 127.0.0.1/8
debug_peer_level = 1024
inet_interfaces = all
mail_spool_directory = /var/spool/mail
###################################################################
③.使用命令postfix start启动postfix,然后使用mail命令测试postfix。
第五步:配置cyrus-sasl实现smtp认证。
①.配置/etc/postfix/main.cf文件,开启smtp认证功能,并配置认证策略。
在/etc/postfix/main.cf文件中加入以下参数:
####################################################################
# sasl auth & smtp auth
####################################################################
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain =
smtpd_sasl_security_options = noanonymous
smtpd_sasl_auth_clients = yes
smtpd_recipient_restrictions = permit_mynetworks,
permit_sasl_authenticated,reject
####################################################################
②.配置/usr/lib/sasl2/smtpd.conf文件,确定其认证方法。
/usr/lib/sasl2/smtpd.conf文件内容如下:
####################################################################
pwcheck_method:saslauthd
mech_list:PLAIN LOGIN
####################################################################
③.创建/etc/saslauthd.conf文件,定义saslauthd进程从ldap数据库中取数据的方法:
/etc/saslauthd.conf文件的内容如下:
#####################################################################
ldap_servers:
ldap_search_base: ou=gtsc,dc=dne,dc=com
ldap_filter: uid=%u
#####################################################################
④.重启postfix,启动saslauthd服务,测试smtp认证。
#postfix reload
#/etc/initd/saslauthd start
#testsaslauthd -u wen -p wen
0:OK:SUCCESS!
注意:也可以通过MUA,使用wen/wen这个帐户,进行需要验证的邮件发送来测试smtp认证。
第六步:配置dovecot,测试pop3,imap收邮件认证。
①.正常情况下,dovecot软件包安装后,启动服务就可以通过Pop3认证来收邮件了,但是这种情况下,dovecot是使用系统帐户来认证的,这里我们需要通过ldap来认证,所以需要另外配置/etc/dovecot.conf文件。
②.在/etc/postfix/main.cf文件中添加以下参数:
#################################################################
# virtual mailbox configuration
#################################################################
virtual_mailbox_domains = cisco.com
virtual_alias_maps = hash:/etc/postfix/virtual
virtual_mailbox_base = /var/spool/mail
virtual_mailbox_maps = ldap:ldaphomedir
virtual_transport = virtual
virtual_uid_maps = static:510
virtual_gid_maps = static:510
#################################################################
# ldap server configuration
#################################################################
ldaphomedir_server_host = 192.168.20.200
ldaphomedir_server_port = 389
ldaphomedir_version = 3
ldaphomedir_search_base = ou=gtsc,dc=dne,dc=com
ldaphomedir_query_filter = (uid=%u)
ldaphomedir_result_attribute = homeDirectory
#################################################################
注意:这里是配置了虚拟网域和虚拟帐户,并且邮件的存放位置也要根据ldap中的信息来确定。
③.配置/etc/dovecot.conf文件,确定认证方式:
#################################################################
# basic configurations
#################################################################
protocols=imap pop3
listen=*
log_path=/var/log/dovecot
mail_debug=yes
mail_location = mbox:/var/spool/mail/%u
#################################################################
# define auth method
#################################################################
auth default {
mechanisms = plain login
passdb ldap {
args = /etc/dovecot-ldap.conf
}
userdb ldap {
args = /etc/dovecot-ldap.conf
}
user = root
}
#################################################################
④.配置/etc/dovecot-ldap.conf,定义dovecot与ldap的连接方式。
/etc/dovecot-ldap.conf文件的内容如下:
#################################################################
hosts = 192.168.20.200
dn = cn=manager,dc=dne,dc=com
dnpass = master
ldap_version = 3
base = ou=gtsc,dc=dne,dc=com
#deref = never
#scope = subtree
user_attrs = uid,homeDirectory,,uid,,
user_filter = (uid=%u)
pass_attrs = uid,userPassword
pass_filter = (uid=%u)
default_pass_scheme = plain
user_global_uid = 510
user_global_gid = 510
##################################################################
⑤.重新启动dovecot服务。
注意:收发邮件前,请在/var/spool/mail/下创建用户存放邮件的目录,并且给予适当的权限。
第七步:使用MUA测试邮件系统。
我是使用outlook express,添加帐户,认证帐户是wen/wen,要求使用验证,进行邮件收发测试,OK。