|
13. 配置dovecot访问mysql进行验证
dovecot本身是支持mysql认证方式的,其在/etc/dovecot/conf.d/下提供了名为auth-sql.conf.ext的配置文件:
1
2
3
| [iyunv@mail ~]# cd /etc/dovecot/conf.d/
[iyunv@mail conf.d]# ls auth-master.conf.ext
auth-master.conf.ext
|
但dovecot默认使用的收件认证方式是系统账号口令验证,因此auth-sql.conf.ext默认不被加载,所以要编辑/etc/dovecot/conf/10-auth.conf加载该文件:
1
2
3
| [iyunv@mail conf.d]# vi 10-auth.conf
#!include auth-system.conf.ext #注释该行
!include auth-sql.conf.ext #启用该行
|
上述修改表示将不再加载系统账号口令验证的配置文件,而加载mysql认证的配置文件。
配置auth-sql.conf.ext文件:
1
2
3
4
5
6
7
8
9
10
11
| [iyunv@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文件,并添加如下内容:
1
2
3
4
5
6
| [iyunv@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:
1
2
3
4
5
6
7
| [iyunv@mail ~]# cd /var/www/extsuite/extmail/
[iyunv@mail extmail]# cp webmail.cf webmail.cf.default
[iyunv@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:
1
2
3
4
5
6
7
8
9
10
| [iyunv@mail extmail]# cd ..
[iyunv@mail extsuite]# cd extman/
[iyunv@mail extman]# cp webman.cf webman.cf.default
[iyunv@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:
1
2
| [iyunv@mail ~]# mkdir /tmp/extman
[iyunv@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:
1
| [iyunv@mail ~]# chown -R postfix.postfix /var/www/extsuite/
|
修改apache服务器配置文件/etc/httpd/conf/httpd.conf:
1
2
3
4
5
6
7
8
9
10
| [iyunv@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. 重启所有相关服务
至此,所有的配置都已完成,重启如下服务:
1
2
3
4
5
| [iyunv@mail ~]# service postfix restart #postfix
[iyunv@mail ~]# service saslauthd restart #cyrus-sasl
[iyunv@mail ~]# service courier-authlib restart #courier-authlib
[iyunv@mail ~]# service dovecot restart #dovecot
[iyunv@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软件包:
1
| [iyunv@mail ~]# yum install perl-Unix-Syslog
|
可以只将select的权限赋予mysql的extmail用户,新建一个mysql用户用于修改extmail库记录内容,同时修改webman.cf的SYS_MYSQL_USER和SYS_MYSQL_PASS配置项内容为该用户名和口令,即可以实现WebMail的访问和管理的权限分离。
|
|