13. 配置dovecot訪問mysql進行驗證
dovecot本身是支持mysql認證方式的,其在/etc/dovecot/conf.d/下提供了名爲auth-sql.conf.ext的配置文件:
[root@mail ~]# cd /etc/dovecot/conf.d/ [root@mail conf.d]# ls auth-master.conf.ext auth-master.conf.ext
但dovecot默認使用的收件認證方式是系統賬號口令驗證,因此auth-sql.conf.ext默認不被加載,所以要編輯/etc/dovecot/conf/10-auth.conf加載該文件:
[root@mail conf.d]# vi 10-auth.conf #!include auth-system.conf.ext #註釋該行 !include auth-sql.conf.ext #啓用該行
上述修改表示將不再加載系統賬號口令驗證的配置文件,而加載mysql認證的配置文件。
配置auth-sql.conf.ext文件:
[root@mail conf.d]# vi auth-sql.conf.ext passdb { driver = sql #sql驅動 # Path for SQL configuration file, see example-config/dovecot-sql.conf.ext args = /etc/dovecot/dovecot-sql.conf #詳細配置文件 } userdb { driver = sql #sql驅動 args = /etc/dovecot/dovecot-sql.conf #詳細配置文件 }
在/etc/dovecot下創建dovecot-sql.conf文件,並添加如下內容:
[root@mail dovecot]# vi dovecot-sql.conf driver = mysql #驅動 connect = host=localhost dbname=extmail user=extmail password=extmail #連接數據庫配置 default_pass_scheme = CRYPT password_query = SELECT username AS user,password AS password FROM mailbox WHERE username = '%u' user_query = SELECT maildir,uidnumber AS uid,gidnumber AS gid FROM mailbox WHERE username = '%u'
注:auth-sql.conf.ext文件的passdb和userdb的driver配置的內容不同於dovecot-sql.conf的driver,一個爲sql,一個爲mysql(我也不知道爲什麼,是否爲固定格式?)
如果重啓dovecot後,在/var/log/maillog中發現如下錯誤提示:Unknown passdb driver 'mysql',請安裝dovecot-mysql包。
14. 配置ExtMail和ExtMan
ExtMail提供了名爲webmail.cf的配置文件,可以對其程序內容和訪問mysql方式進行修改,編輯/var/www/extsuite/extmail/webmail.cf:
[root@mail ~]# cd /var/www/extsuite/extmail/ [root@mail extmail]# cp webmail.cf webmail.cf.default [root@mail extmail]# vi webmail.cf SYS_USER_LANG = zh_CN #修改默認語言 SYS_MAILDIR_BASE = /mailbox #修改maildir路徑 SYS_MYSQL_USER = extmail #訪問mysql的用戶,同extmail庫一致 SYS_MYSQL_PASS = extmail
ExtMan提供的配置文件名稱爲webman.cf,編輯/var/www/extsuite/extman/webman.cf:
[root@mail extmail]# cd .. [root@mail extsuite]# cd extman/ [root@mail extman]# cp webman.cf webman.cf.default [root@mail extman]# vi webman.cf SYS_MAILDIR_BASE = /mailbox SYS_CAPTCHA_ON = 0 #不使用驗證碼驗證登錄 SYS_DEFAULT_UID = 2525 #運行該程序的用戶UID,應爲postfix的UID SYS_DEFAULT_GID = 2525 #運行該程序的用戶GID,應爲postfix的GID SYS_MYSQL_USER = extmail SYS_MYSQL_PASS = extmail
創建/tmp/extman目錄,並修改屬主屬組爲postfix:
[root@mail ~]# mkdir /tmp/extman [root@mail ~]# chown postfix.postfix /tmp/extman
15. 部署ExtMail和ExtMan
到現在爲止,postfix已經配置支持虛擬用戶,courier-authlib和cryus-sasl也配置支持訪問mysql進行虛擬用戶的發件驗證,dovecot也可以訪問mysql進行虛擬用戶的收件驗證了,webmail也完成了配置,那麼現在只要將ExtMail和ExtMan部署,並通過ExtMan提供的Web管理接口創建虛擬用戶和虛擬域,就可以對整個郵件系統進行測試了!
由於收發郵件的服務都是由postfix用戶運行的,所以要將ExtMail和ExtMan的Web應用程序文件(見第9節)父目錄/var/www/extsuite的屬主和屬組修改爲postfix:
[root@mail ~]# chown -R postfix.postfix /var/www/extsuite/
修改apache服務器配置文件/etc/httpd/conf/httpd.conf:
[root@mail ~]# vi /etc/httpd/conf/httpd.conf <VirtualHost *:80> #開啓虛擬主機 DocumentRoot /var/www/extsuite/extmail/html/ ServerName mail.ahltnew.com #與系統主機名一致 ScriptAlias /extmail/cgi /var/www/extsuite/extmail/cgi Alias /extmail /var/www/extsuite/extmail/html ScriptAlias /extman/cgi /var/www/extsuite/extman/cgi Alias /extman /var/www/extsuite/extman/html SuexecUserGroup postfix postfix #表示切換成postfix用戶和postfix組來運行該Web程序 </VirtualHost>
16. 重啓所有相關服務
至此,所有的配置都已完成,重啓如下服務:
[root@mail ~]# service postfix restart #postfix [root@mail ~]# service saslauthd restart #cyrus-sasl [root@mail ~]# service courier-authlib restart #courier-authlib [root@mail ~]# service dovecot restart #dovecot [root@mail ~]# service httpd restart #apache server
至此,郵箱系統搭建基本結束。
注:postfix,courier-authlib,cyrus-sasl,dovecot運行過程中的日誌可以通過/var/log/maillog進行查看,apache server的日誌則通過/var/log/httpd/error_log進行查看。
訪問http://主機IP/extmail來登錄extmail,如果頁面提示Unix::Syslog not found,請安裝perl-Unix-Syslog軟件包:
[root@mail ~]# yum install perl-Unix-Syslog
可以只將select的權限賦予mysql的extmail用戶,新建一個mysql用戶用於修改extmail庫記錄內容,同時修改webman.cf的SYS_MYSQL_USER和SYS_MYSQL_PASS配置項內容爲該用戶名和口令,即可以實現WebMail的訪問和管理的權限分離。