一 系统运行环境
1.1、硬件要求
   基本上,能够安装linux系统就能够满足硬件的要求…….
1.2、运行环境
   操作系统为centos 5.2+VMware-workstation6.0.
   我使用的VM6虚拟机和Centos5.2做的本次试验.
1.3、所需软件
   1、Centos 服务器操作系统
   2、Postfix 邮件服务器系统的smtp服务器,在邮件服务器系统中充当MTA角色。
   3、Mysql 开源数据库,用于存储邮件系统虚拟域,虚拟帐户信息.
   4、apache web服务器软件,用于extman对邮件系统的后台管理,extmail的web邮件收发.
   5、php   extman和extmail需要使用php解析
   6、cyrus-sasl 用于实现身份验证的smtp服务器
   7、courier-authlib 现实带验证的pop3服务器
   8、courier-imap 用于实现pop3,imap收邮件功能
   9、extman 用于邮件服务器的后台管理
   10、extmail 用于实现webmail
   11、DBD-mysql 用于解决依赖关系,extmail将会用到
   12、unix-syslog 用于解决依赖关系,extmail将会用到
   13、BerkeleyDB 用于提供数据库效率
   14、openssl 提供安全的邮件服务器连接 (本次试验未配置此功能)
   15、maildrop 用于替代postfix的mta功能,邮件投递代理,将收到的邮件转发到用户的邮箱目录(本次试验未配置此功能)
   16、clamav   反病毒工具              (本次试验未配置此功能)
   17、SpamAssassin  反垃圾邮件过滤器  (本次试验未配置此功能)
   18、amavisd-new  是一个连接MTA和内容检测工具  (本次试验未配置此功能)
二 准备工作
2.1、下载所需要的软件
     按照上面给出的地址下载,默认情况,本文所有软件包都放置在/usr/local/src下.所使用的安装包都为源码包.
2.2、禁用服务和软件
     默认环境下,有部分服务和软件已被起用及安装到系统里,这些都影响到本系统的安装.所以需要禁止和卸载.
  2.2.1、禁用selinux
         Selinux 是 linux 系统中一个强制性的安全机制,但也带来了不少麻烦,为了避免不必要的麻烦,还是先关了吧。
         我之前在 Fedora cora 5 上安装邮件服务器时就因为没有关掉 selinux ,而苦恼了一段时间。
        [root @test root]# vi /etc/selinux/conifg
         #This file controls the state of SELinux on the system.
         #SELINUX= can take one of these three values:
         #enforcing - SELinux security policy is enforced.
         #permissive - SELinux prints warnings instead of enforcing.
         #disabled - SELinux is fully disabled.
         将 SELINUX=enforcing
         改成
         SELINUX=disabled
         #SELINUXTYPE= type of policy in use. Possible values are:
         #targeted - Only targeted network daemons are protected.
         #strict - Full SELinux protection.
         SELINUXTYPE=targeted
  2.2.2、卸载sendmail
         默认安装系统时,sendmail
         查看系统是否安装sendmail
         [root@mail mysql]# rpm -qa | grep sendmail
         sendmail-8.13.8-2.el5
         卸载
         [root@mail mysql]# rpm -e sendmail
         error: Failed dependencies:
         /usr/sbin/sendmail is needed by (installed) redhat-lsb-3.1-12.3.EL.el5.centos.i386
         smtpdaemon is needed by (installed) mdadm-2.6.4-1.el5.i386
         smtpdaemon is needed by (installed) fetchmail-6.3.6-1.1.el5.i386
         smtpdaemon is needed by (installed) mutt-1.4.2.2-3.0.2.el5.i386
         提示出错,有相关依赖关系,使用--nodeps强制卸载
         [root@mail mysql]# rpm -e  --nodeps sendmail
         warning: /var/log/mail/statistics saved as /var/log/mail/statistics.rpmsave
         会提示警告不要管,继续.
  2.2.3、卸载httpd
         [root@mail bin]# rpm -qa |grep httpd
         httpd-2.2.3-11.el5_1.centos.3
         [root@mail bin]# rpm -e --nodeps  httpd
         卸载sasl
         [root@mail mysql]# rpm -qa | grep sasl
         cyrus-sasl-plain-2.1.22-4
         cyrus-sasl-lib-2.1.22-4
         cyrus-sasl-2.1.22-4
         [root@mail mysql]# rpm -e --nodeps cyrus-sasl-plain cyrus-sasl-lib cyrus-sasl
2.3、创建邮件系统运行时所需要的用户和组
     因为安全和管理方面的考虑,一些软件我们不希望其以root用户为属主而运行,甚至有些软件没有为其创建专用用户,安装不能进行.因此,我们要预先创建postfix系统所用到的用户和组.对于centos或redhat等发行版,用命令useradd创建用户时,也就同时创建了一个同名的组.而另外一些linux发行版创建用户时不会创建同名组,这需要单独执行groupadd来创建所需组.
     下面是我们需要创建的用户和组,及其说明.
     用户名         组名                 作用                               备注
     mysql         mysql         数据库mysql运行用户
     extmail      extmail        虚拟邮件帐号所使用用户及组            uid:501,gid:501
     postfix      postfix        postfix主程序使用帐号和组
                  postdrop       postfix setid_group                   setgid_group=postdrop
     #这里有2个值得注意的地方,他们是extmail用户,组及postdrop.在postfix邮件系统中,有好几个程序是以extmail来运行,postdrop是postfix主配置文件main.cf里标明的, setgid_group=postdrop.
三 安装软件包
3.1、Mysql安装和配置
  3.1.1、编译安装mysql
         [root@mail /]# cd /usr/local/src
         [root@mail src]# ls
         apache  mysql  php  postfix
         [root@mail src]# cd mysql/
         [root@mail mysql]# ls
         mysql-5.1.36.tar.gz
         [root@mail mysql]# tar –zxvf  mysql-5.1.36.tar.gz
         [root@mail mysql]# cd mysql-5.1.36
         [[email protected]]#./configure 
                                 --prefix=/usr/local/mysql
                                 --enable-thread-safe-client 
                                 --enable-local-infile
                                 --with-charset=gbk 
                                 --with-low-memory
     #我在这里出错了,提示: configure: error: No curses/termcap library found
     #google说是缺少ncurses包,挂载安装盘,找到ncurses-devel-5.5-24.20060715.i386.rpm安装
     [[email protected]]#make
     [[email protected]]#make  install
     make[4]: Entering directory `/data0/software/mysql-5.1.34/mysql-test'
     #到这里时候会等待很久,我开始以为出错了,强行终止了,google发行已经有前人没耐心犯过错了~
  3.1.2、MySQL配置文件
         如果你想要设置一个选项文件,使用support-files目录中的一个作为模板。在这个目录中有4个模板文件,是根据
不同机器的内存定制的。
         [root@mail mysql-5.1.36]# cp support-files/my-medium.cnf /etc/my.cnf
         [root@mail mysql-5.1.36]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld   
  3.1.3、设置开机自动启动
         [root@mail mysql-5.1.36]# chmod 700 /etc/rc.d/init.d/mysqld
         [root@mail mysql-5.1.36]# chkconfig --add mysqld
         [root@mail mysql-5.1.36]# chkconfig --level 345 mysqld on
         [root@mail mysql-5.1.36]# cd /usr/local/mysql/
  3.1.4、初始化授权表 
         用mysql_install_db创建MySQL
         [root@mail mysql]#
         设定目录访问权限,并设置mysql,root帐号访问权限。
         [root@mail mysql]# chown -R root .
         [root@mail mysql]# chgrp  -R mysql .
         [root@mail mysql]# chown -R mysql var
  3.1.5、运行mysql
         [root@mail mysql]# bin/mysqld_safe  --user=mysql &
         (如果没有问题的话,应该会出现类似这样的提示:
         [1] 42264
         #Starting mysqld daemon with databases from /usr/local/mysql/var
         如果出现 mysql ended这样的语句,表示Mysql没有正常启动,你可以到log中查找问题
,Log文件的通常在 /etc/my.cnf中配置,大多数问题是权限设置不正确引起的.
         日志文件路径
         mysql安装路径(/usr/local/mysql)./var/主机名.err
         我的错误日志路径 /usr/local/mysql/var/mail.drvial.com.err
  3.1.6、测试mysql
         [root@mail mysql]# bin/mysqladmin  ping
         mysqld is alive
         [root@mail mysql]# bin/mysqladmin  version
         bin/mysqladmin  Ver 8.42 Distrib 5.1.36, for pc-linux-gnu on i686
         Copyright 2000-2008 MySQL AB, 2008 Sun Microsystems, Inc.
         This software comes with ABSOLUTELY NO WARRANTY. This is free software,
         and you are welcome to modify and redistribute it under the GPL license
         Server version          5.1.36-log
         Protocol version        10
         Connection              Localhost via UNIX socket
         UNIX socket             /tmp/mysql.sock
         Uptime:                 5 min 56 sec
         Threads: 1  Questions: 2  Slow queries: 0  Opens: 15  Flush tables: 1  Open tables: 8  Queries per second
         avg: 0.5
         查看3306端口是否打开。要注意在防火墙中开放该端口
         [root@mail mysql]# netstat -atln
         Active Internet connections (servers and established)
         Proto Recv-Q Send-Q Local Address               Foreign Address             State
         tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN
  3.1.7、设置root密码
         默认安装密码为空,为了安全你需要修改密码。
         [root@mail mysql]#/usr/local/mysql/bin/mysqladmin –u  root  password 密码
         修改环境变量文件/etc/profile,添加mysql的PATH变量.
         [root@mail mysql]#vi /etc/profile
         在以下字段添加添加pathmunge /usr/local/mysql/bin
         #Path manipulation
         if [ "$EUID" = "0" ]; then
         pathmunge /sbin
         pathmunge /usr/sbin
         pathmunge /usr/local/sbin
         pathmunge /usr/local/mysql/bin
         也可以做符号连接如下:
         [root@mail mysql]#cd bin
         [root@mail mysql]#for i in *; do ln -s /usr/local/mysql/bin/$i /usr/bin/$i; done
         这样既可以在任何目录路径下,都可以在shell提示符下直接执行/usr/local/mysql/bin下的管理程序.
  3.1.8、添加连接库
         postfix安装时候会用到,否则报错.
         [root@mail mysql]#echo “/usr/local/mysql/lib/mysql” >> /etc/ls.so.conf
         [root@mail mysql]# ldconfig
         Ok!Mysql安装完毕.
3.2、安装apache
  3.2.1、编译安装apache
         [root@mail src]# cd apache
         [root@mail apache]# ls
         httpd-2.2.11.tar.gz
         [root@mail apache]# tar -zxvf httpd-2.2.11.tar.gz
         [root@mail httpd-2.2.11]# ./configure
                                  --prefix=/usr/local/apache
                                  --enable-so
                                  --enable-rewrite
                                  --with-zlib
                                  --enable-mods-shared=most
         [root@mail httpd-2.2.11]#make
         [root@mail httpd-2.2.11]#make install
  3.2.2、设置开机自启动
         [root@mail apache]# cd /usr/local/apache/bin/
         [root@mail bin]# cp apachectl  /etc/rc.d/init.d/httpd
         [root@mail bin]# chmod 700 /etc/rc.d/init.d/httpd
         [root@mail bin]# vi /etc/rc.d/init.d/httpd
         在# |||||||||||||||||||| START CONFIGURATION SECTION  ||||||||||||||||||||下添加下面三行:
         #Comments to support chkconfig on RedHat Linux
         #chkconfig: 2345 90 90
         #description:http server
         注意:前面的#不能少,没有这三行,在使用chkconfig时会提示你:service httpd does not support chkconfig
         [root@mail bin]# chkconfig --add httpd
         [root@mail bin]# chkconfig --level 345 httpd on
         这样,在运行级别345上httpd就可以自动启动了。
         对于这个提示:
         httpd: Could not determine the server’s fully qualified domain name, using 127.0.0.1 for ServerName
         只需要编辑httpd.conf,找到ServerName xxxx这一行,去掉前面的注释即可。
  3.2.3、配置apache
         [root@mail bin]# cd /usr/local/apache/conf
         [root@mail conf]# vi httpd.conf
         更改user,group为postfix
         启动apache
         [root@mail conf]#service httpd start
         [root@mail apache]# netstat -atln
         Active Internet connections (servers and established)
         Proto Recv-Q Send-Q Local Address            Foreign Address           State
         tcp        0      0 :::80                       :::*                        LIST
         ok!apache安装完毕
3.3、安装php
  3.3.1、编译安装php
         [root@mail apache]# cd /usr/local/src/php
         [root@mail php]# tar -zxvf php-5.2.10.tar.gz
         [root@mail php]# cd php-5.2.10
         [root@mail php-5.2.10]#./configure 
                                --prefix=/usr/local/php
                                --with-apxs2=/usr/local/apache/bin/apxs
                                --with-mysql=/usr/local/mysql/
                                --with-mysqli=/usr/local/mysql/bin/mysql_config
                                --with-zlib --with-gd --enable-mbstring=all
         #我这里报错
         checking for xml2-config path…
         configure: error: xml2-config not found. Please check your libxml2 installation.
         #google是缺少libxml2-dev包, 挂载安装盘找到libxml2-dev包,并安装.
         [root@mail php-5.2.10]#make
         [root@mail php-5.2.10]#make install
         [root@mail php-5.2.10]# cp php.ini-dist  /usr/local/php/lib/php.ini
  3.3.2、编辑apache使支持php
         [root@mail php-5.2.10]#vi /usr/local/apache/conf/httpd.conf
         在DirectoryIndex处添加 index.php
         DirectoryIndex   index.html  index.php
         在AddType添加
         AddType application/x-httpd-php  .php
  3.3.3、测试apache是否支持pap
        [root@mail php-5.2.10]#vi /usr/local/apache/htdocs/index.html
        编辑apache/htdocs目录下的index.html
        添加如下代码
                Phpinfo();
        ?>
        保存,重命名为index.php
        [root@mail php-5.2.10]#mv  /usr/local/apache/htdocs/index.html  /usr/local/apache/htdocs/index.php
        在浏览器输入http://localhost 或者http://ip,确定apache是否以支持php.
        Ok,php安装完毕!
3.4、安装phpmyadmin
     (这个不是必须,用于管理Mysql数据库)
  3.4.1、解压拷贝到apache目录下
         将所文件解压后拷贝到apache的htdocs目录的某个目录下.
         [root@mail php]# tar -zxvf phpMyAdmin-3.2.0.1-all-languages.tar.gz
         [root@mail php]# cp -r phpMyAdmin-3.2.0.1-all-languages  /usr/local/apache/htdocs/phpMyadmin
         [root@mail php]# cd /usr/local/apache/htdocs/phpMyadmin/libraries
         phpmyadmin的配置文件是libraries/config.default.php.
         [root@mail libraries]# vi config.default.php
  3.4.2、解决需要一个密语验证的问题
         phpmyadmin登录MySQL的方式:
         config -- 直接在配置文件中写入一个能登录mysql的帐号和密码,只要浏览这个datamgr目录就可以直接以这个写入配置文件的mysql帐号进行管理mysql的操作。特点是方便,缺点是没有安全性。
         http -- 利用web服务器的验证功能,浏览datamgr这个目录前会跳出一个身份验证窗口,只要mysql帐号对得上就可以有datamgr目录的访问权。这样比较安全,不过用cgi或fastcgi的方式配置php将无法使用该功能,因为cgi不会想服务器发送一些验证信息变量。
         cookie -- 和http一样也会跳出一个验证窗口,不过这个不是用web服务器的验证功能,直接是php写的一个普通登录窗口,只要浏览器支持cookie就行,21世界的浏览器都应该支持cookie这个基本功能,所以我们一般选择cookie验证方式。
         这些字段和config.default.php对应的是
         $cfg['Servers'][$i]['auth_type'] = 'cookie';  (valid choices: config, http, HTTP, signon or cookie)
         $cfg['Servers'][$i]['user'] = 'root'; // MySQL user
         $cfg['Servers'][$i]['password'] = ''; // MySQL password (only needed
         config要三处都要填完,http填auth_type为http就行了,cookie的话除了填这里,还要填写一个加密用的私钥,往配置文件的上面找.
         $cfg['blowfish_secret'] = '111';
         blowfish_secret随便填写一些字符就行了,如111.
  3.4.3、为phpMyadmin安装mcrypt
         否则会提示以下警告:无法加载 mcrypt 扩展,请检查您的 PHP 配置
         安装步骤详见:
         1.先安装Libmcrypt

           #tar -zxvf libmcrypt-2.5.8.tar.gz
           #cd libmcrypt-2.5.8
           #./configure
           #make
           #make install
           说明:libmcript默认安装在/usr/local/lib
         2.安装mhash

           #tar -zxvf mhash-0.9.9.9.tar.gz
           #cd mhash-0.9.9.9
           #./configure
           #make
           #make install

         3.安装mcrypt
           #tar -zxvf mcrypt-2.6.8.tar.gz
           #cd mcrypt-2.6.8
           #LD_LIBRARY_PATH=/usr/local/lib ./configure
           #make
           #make install

           说明:由于在配置Mcrypt时,会找不到libmcrypt的链接库,导致无法编译,因为Libmcrypt的链接库在/usr/local/lib/文件夹 下。因些在配置mcrypt时要加入LD_LIBRARY_PATH=/usr/local/lib导入键接库

         II. 安装PHP扩展模块

             接着就要为PHP添加mcrypt模块了

          1. 静态编译

             在任意PHP文件中加入函数 phpinfo(),即可取得目前PHP的配置
             在这些配置后面新增需要加入的配置:’–with-mcrypt=/usr/local/include’
             然后进入php源代码目录,执行这条完整的configure命令

             配置完成,下面进行源码包的制作和安装
             make clean (一定需要)
             make
             make install

          2. 动态加载
             使用php的常见问题是:编译php时忘记添加某扩展,后来想添加扩展,但是因为安装php后又装了一些东西如PEAR等,不想删除目录重装,于是可以采 用phpize。方法是:

             要有与现有php完全相同的php压缩包 。我用的是php-5.2.6.tar.gz。 展开后进入里面的ext/mcrypt目录 (里面是mcrypt的php扩展),然后执行/usr/local/php/bin/phpize。phpize是安装php时安装好的一个工具,如果 你的机器没有安装phpize工具,那么可能还是要make,make install php,仅仅为了得到phpize.
执行完后,会发现当前目录下多了一些configure文件, 如果没报错,则根据提示运行

             ./configure –with-php-config=/usr/local/php/bin/php-config

             注意要先确保/usr/local/php/bin/php-config存在。

             make
             make install
             Php代码 1../configure –with-php-config=/usr/local/php/bin/php-config
./configure --with-php-config=/usr/local/php/bin/php-configmake install 之后系统会提示你mcrypt.so文件所在的目录。根据php.ini中指示的extension_dir指向的目录中, 将其复制过去。修改php.ini,在最后添加一句extension=bcmath.so
             最后重启APACHE服务,万事OK。

 

3.5、安装courier-authlib
  3.5.1、编译安装
         [root@mail postfix]# tar -jxvf courier-authlib-0.62.4.tar.bz2
         [root@mail postfix]# cd courier-authlib-0.62.4
         [root@mail courier-authlib-0.62.4]# ./configure 
                                             --prefix=/usr/local/courier-authlib
                                             --without-authpam         
                                             --without-authdap 
                                             --without-authshadow 
                                             --without-vchkpw 
                                             --with-authmysql
                                             --with-mysql-libs=/usr/local/mysql/lib/mysql
                                             --with-mysql-includes=/usr/local/mysql/include/mysql
        [root@mail courier-authlib-0.62.4]#make
        [root@mail courier-authlib-0.62.4]#make install
  3.5.2、配置authlib
         [root@mail courier-authlib-0.62.4]# cd /usr/local/courier-authlib/
         [root@mail courier-authlib]# chmod 755 var/spool/authdaemon/
         [root@mail courier-authlib]# cd etc/authlib/
         [root@mail authlib]# cp authdaemonrc.dist  authdaemonrc
         [root@mail authlib]# cp authmysqlrc.dist  authmysqlrc
         [root@mail authlib]# vi authdaemonrc
         修改/etc/authdaemonrc 文件为:
         authmodulelist="authmysql"
         authmodulelistorig="authmysql"
         daemons=10
         [root@mail authlib]# vi authmysqlrc
         修改/etc/authmysqlrc 为以下内容,其中501,501 为postfix 用户的UID和GID。
         MYSQL_SERVER localhost
         MYSQL_PORT 3306                   (指定你的mysql监听的端口,这里使用默认的3306)
         MYSQL_USERNAME  extmail      (这时为后文要用的数据库的所有者的用户名)
         MYSQL_PASSWORD extmail        (密码)
         MYSQL_SOCKET  /tmp/mysql.sock
         MYSQL_DATABASE  extmail
         MYSQL_USER_TABLE  mailbox
         MYSQL_CRYPT_PWFIELD  password
         MYSQL_UID_FIELD  '502'  501为postfix用户uid
         MYSQL_GID_FIELD  '502'  501为postfix组gid
         MYSQL_LOGIN_FIELD  username
         MYSQL_HOME_FIELD  concat('/var/mailbox/',homedir)
         MYSQL_NAME_FIELD  name
         MYSQL_MAILDIR_FIELD  concat('/var/mailbox/',maildir)
  3.5.3、设置开机自启动
         [root@mail bin]# cp /usr/local/src/courier-authlib-0.62.4/courier-authlib.sysvinit 
                        /etc/init.d/courier-authlib
         [root@mail bin]# chmod 755 /etc/init.d/courier-authlib
         [root@mail bin]# chkconfig --add courier-authlib
         [root@mail bin]# chkconfig --level 345  courier-authlib on
3.6、安装cyrus-sasl
  3.6.1、编译安装
         [root@mail postfix]# tar -zxvf cyrus-sasl-2.1.18.tar.gz
         [root@mail postfix]# cd cyrus-sasl-2.1.18
         [root@mail cyrus-sasl-2.1.18]# ./configure
                                       --prefix=/usr/local/sasl2
                                       --disable-gssapi
                                       --disable-anon 
                                       --disable-digest
                                       --enable-plain 
                                       --enable-login 
                                       --enable-sql 
                                       --with-mysql=/usr/local/mysql/
                                       --with-mysql-includes=/usr/local/mysql/include/mysql/
                                       --with-mysql-libs=/usr/local/mysql/lib/mysql/ -     
                                       --with-authdaemond=/usr/local/courier-authlib/var/spool/authdaemon/socket
         #一定要加--enable-login,因为SASL2默认不支持login这种验证方式,而OUTLOOK是通过login来进行SMTP验证的。
         [root@mail cyrus-sasl-2.1.18]#make
         #我在这里执行报错
         auth_getpwent.c:48:20: des.h: No such file or directory
         make[3]: *** [auth_getpwent.o] Error 1
         make[3]: Leaving directory `/usr/local/src/postfix/cyrus-sasl-2.1.18/saslauthd'
         make[2]: *** [all] Error 2
         make[2]: Leaving directory `/usr/local/src/postfix/cyrus-sasl-2.1.18/saslauthd'
         make[1]: *** [all-recursive] Error 1
         make[1]: Leaving directory `/usr/local/src/postfix/cyrus-sasl-2.1.18'
         make: *** [all] Error 2
         解决办法:将安装目录下mac/libdes/public/des.h拷贝到安装根目录
         [root@mail cyrus-sasl-2.1.18]# cp mac/libdes/public/des.h .
         [root@mail cyrus-sasl-2.1.18]#make install
  3.6.2、配置sasl
         创建运行时需要的目录并调试启动
         [root@mail cyrus-sasl-2.1.18]# mkdir -pv /var/state/saslauthd
         在/var/目录下建一个目录给saslauthd进程存在临时数据。假如没有这些目录,运行saslauthd时,会提示出错。接着为确保CYRUS-SASL2函数库知道怎样验证所收来的SASL认证请求,必须创建一个SASL的配置文档。配置文档名为smtpd.conf位于/usr/local/sasl2/lib/sasl2这个目录,在该文档中您定义您希望使用的认证数据库方法,以下这个例子使用saslauthd来验证认证请求.
         [root@mail cyrus-sasl-2.1.18]# vi /usr/local/sasl2/lib/sasl2/smtpd.conf
         添加以下内容
         pwcheck_method: saslauthd
         mech_list: PLAIN LOGIN  
  3.6.3、启动并测试
         [root@mail cyrus-sasl-2.1.18]#/usr/local/sasl2/sbin/saslauthd -a shadow  pam -d
         [root@mail cyrus-sasl-2.1.18]#/usr/local/sasl2/sbin/saslauthd -a shadow pam
         [root@mail cyrus-sasl-2.1.18]#/usr/local/sasl2/sbin/testsaslauthd -u root -p root(用户密码)
         0: OK "Success."
         假如出现以上信息,就说明saslauthd正常运行了。testsaslauthd程式默认是没有编译的,您需要在源码目录树的saslauthd子目录中运行# make testsaslauthd命令生成。
  3.6.4、添加连接库
         postfix编译安装会用到,否则报错.
         [root@mail cyrus-sasl-2.1.18]#echo "/usr/local/sasl2/lib" >> /etc/ld.so.conf
         [root@mail cyrus-sasl-2.1.18]#echo "/usr/local/sasl2/lib/sasl2" >> /etc/ld.so.conf
         [root@mail cyrus-sasl-2.1.18]# ldconfig
  3.6.5、添加库连接到/usr/lib
         因为postfix会到/usr/lib目录下去找SASL2库,而我们是把程式安装在/usr/local/sasl2中,所以我们要在/usr/lib目录下做一个链接:
         [root@mail ~]# ln -s /usr/local/sasl2/lib/sasl2/ /usr/lib/  这里特别注意,别链接错了,真郁闷浪费了我半天时间才弄好。
         这个必须连接放到/usr/lib下,否则为postfix开启基于cyrus-sasl的认证功能时,
         Ok,完毕~
3.7、安装postfix
  3.7.1、编译安装
         [root@mail postfix-2.6.0]# tar -zxvf postfix-2.6.0.tar.gz
         [root@mail postfix]# cd postfix-2.6.0
         [root@mail postfix-2.6.0]# make -f Makefile makefiles
                                    'CCARGS=-DHAS_MYSQL -I/usr/local/mysql/include/mysql
                                    -DUSE_SASL_AUTH  -DUSE_CYRUS_SASL  -I/usr/local/sasl2/include/sasl'  
                                    'AUXLIBS=-L/usr/local/mysql/lib/mysql -lmysqlclient -lz -lm -                                                       L/usr/local/sasl2/lib  -lsasl2'
         #这里注意啦! -lmysqlclient -lz –lm这三个开头是L的小写,不是i的大写,这个错误折腾了2小时…
         安装时要注意加下面两行:
         ln -s /usr/local/src/postfix-2.8-20100707/bin/sendmail /usr/sbin/sendmail
         cp /usr/local/mysql/lib/mysql/libmysqlclient.so.16 /usr/lib
       
         [root@mail postfix-2.6.0]#make
         [root@mail postfix-2.6.0]#make install
         Install_root: [/]/
         tempdir: [/usr/local/src/ postfix-2.4.5]/tmp
         config_directory: [/etc/postfix] /etc/postfix
         daemon_directory: [/usr/libexec/postfix] /usr/local/postfix/libexec
         data_directory = /var/lib/postfix
         command_directory: [/usr/sbin] /usr/local/postfix/sbin
         queue_directory: [/var/spool/postfix] /var/spool/postfix
         sendmail_path: [/usr/sbin/sendmail] /usr/sbin/sendmail
         newaliases_path: [/usr/bin/newaliases] /usr/bin/newaliases
         mailq_path: [/usr/bin/mailq] /usr/bin/mailq
         mail_owner: [postfix] postfix
         setgid_group: [postdrop]  postdrop
         html_directory: [no] no
         manpages: [/usr/local/man] /usr/local/postfix/man  
         readme_directory: [no] no
         按以上选项安装postfix.
  3.7.2、配置potfix
         生成别名二进制文件,这个步骤如果忽略,会造成postfix效率极低:
         [root @ test postfix-2.4.5] #  newaliases
         #这个必须执行,否则后面会报错fatal: open database /etc/aliases.db: No such file or directory
         [root@mail postfix-2.6.0]#cd /usr/local/postfix
         [root@mail postfix]#vi /etc/postfix/main.cf
         修改以下几项为您需要的配置
         myhostname = mail.drvial.com
         myorigin = drvial.com
         mydomain = drvial.com
         mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
         mynetworks = 192.168.2.0/24, 127.0.0.0/8
         inet_interfaces = all
         上述配置中,需要特别注意的是mydomain和myhostname,这2个项的值不要设置成一样,否则postfix将不能正确启动,虚拟邮箱不可用。
         说明:
         myorigin参数用来指明发件人所在的域名;
         mydestination参数指定postfix接收邮件时收件人的域名,即您的postfix系统要接收到哪个域名的邮件;
         myhostname 参数指定运行postfix邮件系统的主机的主机名,默认情况下,其值被设定为本地机器名;
         mydomain参数指定您的域名,默认情况下,postfix将myhostname的第一部分删除而作为mydomain的值;
         mynetworks 参数指定你所在的网络的网络地址,postfix系统根据其值来区别用户是远程的还是本地的,
         如果是本地网络用户则允许其访问;
         inet_interfaces 参数指定postfix系统监听的网络接口;
         注意:
         #在postfix的配置文件中,参数行和注释行是不能处在同一行中的;
         #任何一个参数的值都不需要加引号,否则,引号将会被当作参数值的一部分来使用;
         #每修改参数及其值后执行 postfix reload 即可令其生效;但若修改了inet_interfaces,则需重新启动postfix;
         #如果一个参数的值有多个,可以将它们放在不同的行中,只需要在其后的每个行前多置一个空格即可;postfix会把第一个字符为空格或tab的文本行视为上一行的延续;
  3.7.3、设置开机自启动
         [root@mail postfix]#echo“/usr/local/postfix/sbin/postfix start”>>/etc/rc.local
         启动postfix
         [root@mail postfix]#/usr/local/postfix/sbin/postfix  start
  3.7.4、可能的postfix启动故障
         1、fatal: file /etc/postfix/main.cf: parameter mail_owner: unknown user name value: postfix mynetworks
         =127.0.0.0/8,10.1.1.0/24
         解決方法inte--inteface=all
         2、fatal: file /etc/postfix/main.cf: parameter mail_owner: unknown user name value: postfix myhostname
         = mail.test.com mydomain = test.com myorigin = test.com inet_interfaces = all
         解決方法:postconf -e mail_owner=postfix
         3、fatal: open database /etc/aliases.db: No such file or directory
         解決方法 执行:newaliase
         4、warning: dict_nis_init: NIS domain name not set - NIS lookups disabled
         找到/etc/postfix/main.cf文件中的alias_maps = hash:/etc/aliases, nis:mail.aliases 去掉其后即可.
  3.7.5、连接postfix,验正服务启动状况:
         [root@mail postfix]# telnet localhost 25
         Trying 127.0.0.1...
         Connected to mail.drvial.com (127.0.0.1).
         Escape character is '^]'.
         220 mail.drvial.com ESMTP Postfix
         ehlo mail.drvial.com
         250- mail.drvial.com
         250-PIPELINING
         250-SIZE 10240000
         250-VRFY
         250-ETRN
         250-ENHANCEDSTATUSCODES
         250-8BITMIME
         250 DSN
         mail from:root@ drvial.com
         250 2.1.0 Ok
         rcpt to:drvial@ drvial.com
         250 2.1.5 Ok
         data
         354 End data with .
         subject:Mail test!
         Mail test!!!
     .
         250 2.0.0 Ok: queued as AB94A1A561
         quit
         221 2.0.0 Bye
         Connection closed by foreign host.
         切换到redhat用户进行收信:
         [root@mail postfix]# su – drvial
         $ mail
         Mail version 8.1 6/6/93.  Type ? for help.
         "/var/spool/mail/drvial": 1 message 1 new
         >N  1 [email protected]
         Wed Sep  5 10:59  15/488   "Mail test!"
         &
  3.7.6、为postfix开启基于cyrus-sasl的认证功能
         使用以下命令验正postfix是否支持cyrus风格的sasl认证,如果您的输出为以下结果,则是支持的:
         [root@mail postfix]#/usr/local/postfix/sbin/postconf -a
         cyrus
         dovecot
         [root@mail postfix]#vi /etc/postfix/main.cf
         在最后添加以下内容:
         ############################CYRUS-SASL############################
         broken_sasl_auth_clients = yes
         smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject_invalid_hostname
         ,reject_non_fqdn_hostname,reject_unknown_sender_domain,reject_non_fqdn_sender,
         eject_non_fqdn_recipient,reject_unknown_recipient_domain,reject_unauth_pipelining,reject_unauth_destination
         smtpd_sasl_auth_enable = yes
         smtpd_sasl_local_domain = $myhostname
         smtpd_sasl_security_options = noanonymous
         smtpd_sasl_application_name = smtpd
         smtpd_banner = Welcome to our $myhostname ESMTP,Warning: Version not Available!
         [root@mail postfix]#vi /usr/local/lib/sasl2/smtpd.conf
         添加如下内容:
         pwcheck_method: saslauthd
         mech_list: PLAIN LOGIN
         让postfix重新加载配置文件
         [root@mail postfix]#/usr/local/postfix/sbin/postfix reload
         [root@mail postfix]#telnet localhost 25
         Trying 127.0.0.1...
         Connected to mail.drvial.com (127.0.0.1).
         Escape character is '^]'.
         220 Welcome to our mail.drvial.com ESMTP,Warning: Version not Available!
         ehlo mail.drvial.com
         250- mail.drvial.com
         250-PIPELINING
         250-SIZE 10240000
         250-VRFY
         250-ETRN
         250-AUTH PLAIN LOGIN
         250-AUTH=PLAIN LOGIN               (请确保您的输出以类似两行)
         250-ENHANCEDSTATUSCODES
         250-8BITMIME
         250 DSN
  3.7.7、配置postfix以支持虚拟域和虚拟用户
      1、编辑/etc/postfix/main.cf,添加如下内容:
         ########################Virtual Mailbox Settings########################
         virtual_mailbox_base = /var/mailbox
         virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
         virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
         virtual_alias_domains =
         virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
         virtual_uid_maps = static:502  #501为你添加的postfix用户uid
         virtual_gid_maps = static:502  #501为你添加的postfix组gid
         virtual_transport = virtual
         maildrop_destination_recipient_limit = 1
         maildrop_destination_concurrency_limit = 1
         要注意的地方是 virtual_uid_maps及virtual_gid_maps的值,它是postfix用户的uid和postfix组的gid,与前面的文件
         /usr/local/courier-authlib/etc/authlib/authmysqlrc的"MYSQL_UID_FIELD""MYSQL_GID_FIELD"一定要保持一致,
         ##########################QUOTA Settings########################
         message_size_limit = 14336000
         virtual_mailbox_limit = 20971520
         virtual_create_maildirsize = yes
         virtual_mailbox_extended = yes
         virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql_virtual_mailbox_limit_maps.cf
         virtual_mailbox_limit_override = yes
         virtual_maildir_limit_message = Sorry, the user's maildir has overdrawn his diskspace quota, please Tidy your mailbox and try again later.
         virtual_overquota_bounce = yes
     2、添加为支持虚拟域和虚拟用户所用到的配置文件,以下4个配置文件是不存在的,需要创建.
        编辑/etc/postfix/mysql_virtual_alias_maps.cf ,添加如下内容:
        user = extmail
        password = extmail
        hosts = localhost
        dbname = extmail
        table = alias
        select_field = goto
        where_field = address
        编辑/etc/postfix/mysql_virtual_domains_maps.cf ,添加如下内容:
        user = extmail
        password = extmail
        hosts = localhost
        dbname = extmail
        table = domain
        select_field = description
        where_field = domain
        编辑/etc/postfix/mysql_virtual_mailbox_limit_maps.cf ,添加如下内容:
        user = extmail
        password = extmail
        hosts = localhost
        dbname = extmail
        table = mailbox
        select_field = quota
        where_field = username
        编辑/etc/postfix/mysql_virtual_mailbox_maps.cf ,添加如下内容:
        user = extmail
        password = extmail
        hosts = localhost
       dbname = extmail
       table = mailbox
       select_field = maildir
       where_field = username
       说明:
       1、这里用到的数据库及用户的建立可以后文中的extmail说明部分来实现,
          您可以参照那一部分来理解这里指定的数据库及其用户名等;
       2、以上新建文件亦可以从extman安装文件中获得,您也可以由此不用手动输入;
       3、虚拟用户邮箱目录我这里沿用了/var/mailbox,你可以指定为别的目录,比如常见到的/var/spool/mail,或者/home/domains等;但如果这里做了修改,请在后文中用到时作了相应的修改;

3.8、安装Courier-IMAP
  3.8.1、编译安装
         [root@mail postfix]# tar -jxvf courier-imap-4.5.1.tar.bz2
         [root@mail postfix]# cd courier-imap-4.5.1
         [root@mail courier-imap-4.5.1]# ./configure 
                                         --prefix=/usr/local/courier-imap
                                         --enable-unicode
                                         --disable-root-check
                                         --with-trashquota --without-ipv6
                                         CPPFLAGS='-I/usr/local/courier-authlib/include'
                                         LDFLAGS='-L/usr/local/courier-authlib/lib/courier-authlib' 
                                         COURIERAUTHCONFIG='/usr/local/courier-authlib/bin/courierauthconfig    
         [root@mail courier-imap-4.5.1]# make
         [root@mail courier-imap-4.5.1]# make install
 
  3.8.2、配置imap
         [root@mail courier-imap-4.5.1]# cd /usr/local/courier-imap/
         [root@mail courier-imap]# cp ./etc/imapd.dist  ./etc/imapd
         [root@mail courier-imap]# cp ./etc/imapd-ssl.dist  ./etc/imapd-ssl
         [root@mail courier-imap]# cp ./etc/pop3d.dist  ./etc/pop3d
         [root@mail courier-imap]# cp ./etc/pop3d-ssl.dist  ./etc/pop3d-ssl
         配置Courier-IMAP,为用户提供pop3服务:
         [root@mail courier-imap]# vi ./etc/pop3d
         POP3DSTART=YES
         注:如果你想为用户提供IMAP服务,则需在"/usr/local/courier-imap/etc/imapd"文件中设置"IMAPDSTART=yes";其它类同;
  3.8.3、设置开机启动
         [root@mail courier-imap]#cd /usr/local/src/courier-imap-4.5.1/
         [root@mail courier-imap-4.5.1]#cp courier-imap.sysvinit  /etc/rc.d/init.d/courier-imapd
         [root@mail courier-imap-4.5.1]#chmod 755 /etc/rc.d/init.d/courier-imapd
         [root@mail courier-imap-4.5.1]#chkconfig --add courier-imapd
         [root@mail courier-imap-4.5.1]#chkconfig --level 2345 courier-imapd on
         [root@mail courier-imap-4.5.1]#service courier-imapd start
  3.8.4、新建虚拟用户邮箱所在的目录
         新建虚拟用户邮箱所在的目录,并将其权限赋予postfix用户:
         [root@mail courier-imap-4.5.1]#mkdir –pv /var/mailbox
         [root@mail courier-imap-4.5.1]#chown –R postfix /var/mailbox
         接下来重新配置SMTP 认证,编辑 /usr/local/lib/sasl2/smtpd.conf:
         [root@mail courier-imap-4.5.1]#vi /usr/lib/sasl2/smtpd.conf
         确保其为以下内容:
         pwcheck_method: authdaemond
         log_level: 3
         mech_listLAIN LOGIN
         authdaemond_path:/usr/local/courier-authlib/var/spool/authdaemon/socket
3.9、安装Extmail
  3.9.1、解压安装
         [root@mail postfix]# tar -zxvf extmail.tar.gz
         [root@mail postfix]# cp -r extmail-1.0.5/  /usr/local/apache/htdocs/extmail
         [root@mail postfix]# cd /usr/local/apache/htdocs/extmail
         [root@mail extmail]# cp webmail.cf.default  webmail.cf
         [root@mail extmail]# cd html/
         [root@mail html]# cp -r default  ../
         [root@mail html]# cp -r p_w_picpaths  ../
         [root@mail html]# cp  index.html  ../
  3.9.2、修改主配置文件
        [root@mail extmail]# vi webmail.cf
        部分修改选项的说明:
        SYS_CONFIG = /usr/local/apache/htdocs/extmail/
        SYS_LANGDIR = /usr/local/apache/htdocs/extmail/lang
        SYS_TEMPLDIR = /usr/local/apache/htdocs/extmail/html
        SYS_MESSAGE_SIZE_LIMIT = 5242880    #用户可以发送的最大邮件
        SYS_USER_LANG = en_US
        语言选项,可改作:
        SYS_USER_LANG = zh_CN
        SYS_MAILDIR_BASE = /home/domains
        此处即为您在前文所设置的用户邮件的存放目录,可改作:
        SYS_MAILDIR_BASE = /var/mailbox
        SYS_MYSQL_USER = db_user
        SYS_MYSQL_PASS = db_pass
        以上两句句用来设置连接数据库服务器所使用用户名、密码和邮件服务器用到的数据库,这里修改为:
        SYS_MYSQL_USER = extmail
        SYS_MYSQL_PASS = extmail
        SYS_MYSQL_HOST = localhost
        指明数据库服务器主机名,这里默认即可
        SYS_MYSQL_SOCKET = /var/lib/mysql/mysql.sock
        连接数据库的sock文件位置,这里修改为:
        SYS_MYSQL_SOCKET = /tmp/mysql.sock
        SYS_MYSQL_TABLE = mailbox
        SYS_MYSQL_ATTR_USERNAME = username
        SYS_MYSQL_ATTR_DOMAIN = domain
        SYS_MYSQL_ATTR_PASSWD = password
        以上用来指定验正用户登录里所用到的表,以及用户名、域名和用户密码分别对应的表中列的名称;这里默认即可
        SYS_AUTHLIB_SOCKET = /var/spool/authdaemon/socket
        此句用来指明authdaemo socket文件的位置,这里修改为:
        SYS_AUTHLIB_SOCKET = /usr/local/courier-authlib/var/spool/authdaemon/socket
  3.9.3、apache相关配置
         [root @test root] # vi /etc/httpd/httpd.conf
         在这个…..省略后添加
        
         Options Indexes FollowSymLinks +ExecCGI
         AllowOverride None
         Order allow,deny
         Allow from all
        

        
         Options Indexes FollowSymLinks +ExecCGI
         AllowOverride None
         Order allow,deny
         Allow from all
        

        在这个模块里添加index.cgi,如下:
       
         DirectoryIndex index.html index.php index.cgi
       

        在这个模块里添加如下:
        AddHandler cgi-script .cgi
3.10、安装Unix-syslog和DBI-1.607,DBD-Mysql
      Extmail依赖unix-syslog,DBD-mysql.DBD-Mysql需要DBI包.
  3.10.1、安装Unix-syslog
          [root @mail postfix]# tar -zxvf Unix-Syslog-0.100.tar.gz
          [root @mail postfix]# cd Unix-Syslog-0.100
          [root@mail Unix-Syslog-1.1]#perl Makefile.PL
          [root@mail Unix-Syslog-1.1]#make
          [root@mail Unix-Syslog-1.1]## make install
  3.10.2、安装DBI-1.607,DBD-Mysql
          [root @mail postfix]# tar –zxvf  DBI-1.607.tar.gz
          [root@mail postfix]# cd DBI-1.607
          [root@mail DBI-1.607]# perl Makefile.PL
          [root@mail DBI-1.607]#make
          [root@mail DBI-1.607]#make install
          [root @mail postfix]# tar –zxvf   DBD-mysql-3.0002.tar.gz
          [root@mail postfix]# cd DBD-mysql-3.0002
          [root@mail DBD-mysql-3.0002]# perl Makefile.PL
          [root@mail DBD-mysql-3.0002]#make
          [root@mail DBD-mysql-3.0002]#make install
          好了,到此为止,您的Webmail已经可以使用了,可以在浏览器中输入指定的虚拟主机的名称进行访问,如下:
          http://localhost/extmail 或者 http://ip/extmail
3.11、安装Extman
  3.11.1、解压安装
          [root@mail postfix]# tar -zxvf extman-1.0.0.tar.gz
          [root@mail postfix]# cp -r extman-1.0.0 /usr/local/apache/htdocs/extman
          [root@mail postfix]# cd /usr/local/apache/htdocs/extman
          [root@mail extman]# mkdir /var/tmp/extman
          [root@mail extman]# chown postfix.postfix /var/tmp/extman
          [root@mail extman]# chown -R  postfix.postfix cgi
          [root@mail extmanl]# cd html/
          [root@mail html]# cp -r default  ../
          [root@mail html]# cp -r p_w_picpaths  ../
          [root@mail html]# cp  index.html  ../
  3.11.2、配置Extman
          [root@mail html]#vi webman.cf
          修改如下配置
          SYS_CONFIG = /usr/local/apache/htdocs/extman/
          SYS_LANGDIR = /usr/local/apache/htdocs/extman/lang
          SYS_TEMPLDIR = /usr/local/apache/htdocs/extman/html
          SYS_MAILDIR_BASE = /home/domains
          此处即为您在前文所设置的用户邮件的存放目录,可改作:
          SYS_MAILDIR_BASE = /var/mailbox/
          SYS_MYSQL_SOCKET = /var/lib/mysql/mysql.sock
          此处修改为:
          SYS_MYSQL_SOCKET = /tmp/mysql.sock
          SYS_SESS_DIR = /var/tmp/extman/
          SYS_CAPTCHA_ON = 0  #
  3.11.3、建立数据库
          使用extman源码目录下docs目录中的extmail.sql和init.sql建立数据库:
          [root@mail extman]# cd docs/
          [root@mail docs]# mysql -u root -p           Enter password:
          [root@mail docs]# mysql -u root -p           Enter password:
          在浏览器中输入以下连接进行访问:
          http://localhost/extman 或者 http://ip/extman
          进入邮件服务器的后台,添加域与添加用户邮箱。默认管理帐号为:[email protected]
          密码为:extmail*123*。我这里添加了一个 drvial.com 域和一个用户邮箱:[email protected]
          至于开通邮件服务器自动注册邮箱服务,只需要编辑该域,将“允许自由注册邮箱”前面打上勾即可。
  3.11.3、校验码和图形日志(这两个我还没弄呢~~)
          可以配置extman/webman.cf中SYS_CAPTCHA_ON = 0  #取消校验码,1为使用校验码,
          (1) 如果您安装后无法正常显示校验码,安装perl-GD模块会解决这个问题。如果想简单,您可以到以下地址下载适合您的平台的rpm包,安装即可:  http://dries.ulyssis.org/rpm/packages/perl-GD/info.html
          (2) extman-0.2.2自带了图形化显示日志的功能;此功能需要rrdtool的支持,您需要安装此些模块才可能正常显示图形日志。接下来安装图形日志的运行所需要的软件包Time::HiRes、File::Tail和rrdtool,其中前两个包您可以到时http://search.cpan.org搜索并下载获得,后一个包您可以到 http://oss.oetiker.ch/rrdtool/pub/?M=D下载获得; 注意安装顺序不能改换。
四、测试系统
      4.1、测试smtp
           通过以下命令获得 [email protected]的用户名和密码的BASE64编码
           获得用户名BASE64编码
           [root@drvial extman]# perl -e 'use MIME::Base64;print encode_base64("drvial\@drvial.com")'
           ZHJ2aWFsQGRydmlhbC5jb20=
           获得密码BASE64编码
           [root@drvial extman]# perl -e 'use MIME::Base64;print encode_base64("drvial")'
           ZHJ2aWFs
           [root@drvial extman]# telnet localhost 25
           Trying 127.0.0.1...
           Connected to localhost.localdomain (127.0.0.1).
           Escape character is '^]'.
           220 Welcome to our mail.drvial.com ESMTP,Warning:Version not Available!
           ehlo mail.drvial.com
           250-mail.drvial.com
           250-PIPELINING
           250-SIZE 14336000
           250-VRFY
           250-ETRN
           250-AUTH LOGIN PLAIN
           250-AUTH=LOGIN PLAIN
           250-ENHANCEDSTATUSCODES
           250-8BITMIME
           250 DSN
           auth login
           334 VXNlcm5hbWU6
           ZHJ2aWFsQGRydmlhbC5jb20==
           334 UGFzc3dvcmQ6
           ZHJ2aWFs==
           235 2.7.0 Authentication successful   #正常
           quit
           221 2.0.0 Bye
           Connection closed by foreign host.
      4.2、测试pop3
           [root@drvial extman]# telnet localhost 110
           Trying 127.0.0.1...
           Connected to localhost.localdomain (127.0.0.1).
           Escape character is '^]'.
           +OK Hello there.
           user [email protected]
           +OK Password required.
           pass drvial
           +OK logged in.   #正常
           quit
           +OK Bye-bye.
           Connection closed by foreign host.
      4.3、测试authlib
           [root@drvial extman]# /usr/local/courier-authlib/sbin/authtest -s login [email protected] drvial
           Authentication succeeded.
           Authenticated: [email protected]  (uid 501, gid 501)
           Home Directory: /var/mailbox/drvial.com/drvial
           Maildir: /var/mailbox/drvial.com/drvial/Maildir/
           Quota: (none)
           Encrypted Password: $1$uAYUSAHN$mTVYsRgWhXpzfHp9Dqld3/
           Cleartext Password: drvial
           Options: (none)
           如上显示正常
      4.4、测试sasl
           [root@drvial ~]# /usr/local/sasl2/sbin/testsaslauthd  -u root -p root
           0: OK "Success."