1.建立虚拟用户数据库

[root@mail ~]#service mysqld restart            //重新启动一下mysql数据库
[root@mail ~]#tar zxf extman-0.2.5.tar.gz         
[root@mail ~]#cd extman-0.2.5/docs
[root@mail docs]#mysql -u root -p123456 < extmail.sql  //导入extmail.sql脚本,root用户登入数据库密码为123456
[root@mail docs]#mysql-u root  -p123456 < init.sql   //导入init.sql脚本
extmail.sql脚本完成的主要数据库操作如下:
创建名为extmail的数据库及该库中的一些表;
建立数据库用户extmail@localhost,初始密码为extmail,对数据库extmail中的表有select、update权限;
建立数据库用户webman@localhost,初始密码为extman,对数据库extmail中的表有select、insert、delete、update权限。
init.sql脚本完成的主要数据库操作如下:
初始化数据库Extmail;
建立名为extmail.org的虚拟邮件域;
建立数据库用户root@extmail.org,初始密码为:extmail*123* ,作为邮件域的管理账户;
建立数据库用户postmaster@extmail.org,初始密码为:extmail,作为基本邮件用户。
2.修改Postfix的配置
[root@mail docs]#vi /etc/postfix/main.cf
支持虚拟用户的配置有:
virtual_mailbox_base: 指定虚拟邮箱存储目录的路径起点
virtual_alias_maps: 指定虚拟邮件用户对应的别名文件位置
virtual_mailbox_maps: 虚拟邮箱地址和存储位置对应关系的映射位置
virtual_mailbox_domains: 域名
virtual_uid_maps: 设置虚拟邮件用户映射的本地用户的UID号
virtual_gid_maps: 设置虚拟邮件用户映射的本地组的GID号
3.为虚拟用户设置SMTP发信认证:
1>.编译安装courier-authlib软件包:
[root@mail ~]#tar jxf courier-authlib-0.60.2.tar.bz2
[root@mail ~]#cd courier-authlib-0.60.2
[root@mail courier-authlib-0.60.2]#./configure   --prefix=/usr/local/courier-authlib     --without-stdheaderdir    --with-authmysql    --with-redhat     --with-mysql-libs=/usr/local/mysql/lib/mysql     --with-mysql-includes=/usr/local/mysql/include/mysql
[root@mail courier-authlib-0.60.2]#make && make install
[root@mail courier-authlib-0.60.2]#make install-configure
2>.修改courier-authlib相关配置,并启动服务:
将courier-authlib的库文件路径添加到系统的搜索路径中:
[root@mail courier-authlib-0.60.2]#vi /etc/ld.so.conf
/usr/local/courier-authlib/lib/courier-authlib
[root@mail courier-authlib-0.60.2]#ldconfig
修改authdaemonrc主配置文件,仅保留authmysql认证方式,去掉其他方式:
[root@mail courier-authlib-0.60.2]#cd /usr/local/courier-authlib/etc/authlib
[root@mail authlib]#vi authdaemonrc
authmodulelist=“authmysql”           //需要修改的配置项
authmodulelistorig="authmysql"           //需要修改的配置项
[root@mail authlib]#chmod -R 755 /usr/local/courier-authlib/var/spool/authdaemon
修改authmysqlrc文件,用于描述如何向mysql数据库查询信息:
[root@mail authlib]#vi authmysqlrc
MYSQL_SERVER localhost \\msyql数据库服务器位置
MYSQL_USERNAME extmail \\数据库管理员账号
MYSQL_PASSWORD extmail \\数据库管理员账户密码
MYSQL_SOCKET /tmp/mysql.sock \\mysql.sock文件位置
MYSQL_DATABASE extmail \\虚拟用户数据库
MYSQL_USER_TABLE mailbox \\重mailbox表中获得账户的信息
MYSQL_CRYPT_PWFIELD password \\从pssword字段获得帐户密码
MYSQL_UID_FIELD uidnumber \\从uidnumber字段获得映射的本地用户UID
MYSQL_GID_FIELD gidnumber \\从gidnumber字段获得映射的本地组GID
MYSQL_LOGIN_FIELD username \\从username字段获得帐户名称(带@后缀)
MYSQL_HOME_FIELD concat(‘/mailbox/’,homedir) \\合并出用户的宿主目录完整路径
MYSQL_NAME_FIELD name \\从name字段获得帐户名称(不带@后缀)
MYSQL_MAILDIR_FIELD concat(‘/mailbox/’,maildir) \\合并出用户的完整邮件存储路径
复制courier-authlib脚本,并启动courier-authlib服务:
[root@mail authlib]#cp courier-authlib.sysvinit    /etc/init.d/courier-authlib    //courier-authlib.sysvinit文件位于源码包解压后的courier-authlib-0.60.2目录下
[root@mail authlib]#chmod 755 /etc/rc.d/init.d/courier-authlib
[root@mail authlib]#service courier-authlib start
[root@mail authlib]#chkconfig --level 35  courier-authlib  on
3>.修改Cyrus sasl设置:(修改smtpd.conf文件,此文件在搭建基于系统用户的邮件系统时已建立,现在将认证方式更改为authdaemond,即courier-authlib)
[root@mail authlib]#vi /usr/lib/sasl2/smtpd.conf
pwcheck_method: authdaemond
authdaemond_path:  /usr/local/courier-authlib/var/spool/authdaemon/socket
4.修改Dovecot的配置:
1>.dovecot文件需要修改的配置如下:
[root@mail ~]# Vi /etc/dovecot.conf
查找mail_location 把它修改为
mail_location = maildir:/mailbox/%d/%n/Maildir
查找 mechanisms = plain 在下面添加以下内容
passdb sql {
args = /etc/dovecot-mysql.conf
}
userdb sql {
args = /etc/dovecot-mysql.conf
}
2>.建立数据库查询配置文件:
[root@mail ~]# vi /etc/dovecot-mysql.conf
driver = mysql 
connect = host=localhost dbname=extmail user=extmail password=extmail 
default_pass_scheme = CRYPT \\msyql数据库中存储的密码串的加密算法
password_query = SELECT username AS user,password AS password FROM mailbox WHERE username = ‘%u’ \\用于查询用户密码的SQL语句
user_query = SELECT maildir, uidnumber AS uid, gidnumber AS gid FROM mailbox WHERE username = ‘%u’ \\用于查询用户的SQL语句
3>.建立虚拟用户postmaster@extmail.org的邮箱目录,调整权限,并启动dovecot服务:
[root@mail ~]#mkdir -p /mailbox/extmial.org/postmaster/Maildir
[root@mail ~]#chown -R postfix:postfix /Mailbox
[root@mail Maildir]#killall -9 dovecot        //如果dovecot服务已启动,先执行此步骤
[root@mail Maildir]#dovecot
5.测试虚拟用户实现结果:
1>.测试authlib服务,如果之前的配置没有错误,将会看到“Authentication succeeded”信息:
[root@mail ~]# /usr/local/courier-authlib/sbin/authtest -s login postmaster@extmail.org extmail
2>.测试对虚拟用户的smtp发信认证,出现“235 Authentication Successful”信息表示成功
[root@mail ~]# perl -e ‘use MIME::Base64; print encode_base64(“postmaster\@extmail.org”)’
[root@mail ~]# perl -e ‘use MIME::Base64; print encode_base64(“extmail”)