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的访问和管理的权限分离。