Chinaunix首页 | 论坛 | 博客
  • 博客访问: 462106
  • 博文数量: 144
  • 博客积分: 5675
  • 博客等级: 大校
  • 技术积分: 1512
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-20 10:46
文章分类

全部博文(144)

文章存档

2014年(1)

2013年(1)

2012年(12)

2011年(39)

2010年(48)

2009年(29)

2008年(14)

我的朋友

分类: 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,bindDNS服务必须的软件包,请务必安装,都则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应该是本机Iploops端口,也可能是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 serverldap 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

此处的passwordrootpw的密码,与在/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,定义dovecotldap的连接方式。

/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

阅读(666) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~