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的虛擬郵件域;
建立數據庫用戶[email protected],初始密碼為:extmail*123* ,作為郵件域的管理賬戶;
建立數據庫用戶[email protected],初始密碼為: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) \\合並出用戶的宿主目錄完整路徑
本文URL地址:http://www.bianceng.cn/OS/Linux/201410/45498.htm
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>.建立虛擬用戶[email protected]的郵箱目錄,調整權限,並啟動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 [email protected] 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”)