邮件系统服务器搭建记录(五)(Postfix+Cyrus-sasl+Courier-authlib+Dovecot+ExtMail+MySQL)
13.配置dovecot访问mysql进行验证dovecot本身是支持mysql认证方式的,其在/etc/dovecot/conf.d/下提供了名为auth-sql.conf.ext的配置文件:
1
2
3
# cd /etc/dovecot/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
# 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
# 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
# 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
# cd /var/www/extsuite/extmail/
# cp webmail.cf webmail.cf.default
# 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
# cd ..
# cd extman/
# cp webman.cf webman.cf.default
# 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
# mkdir /tmp/extman
# 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
# chown -R postfix.postfix /var/www/extsuite/
修改apache服务器配置文件/etc/httpd/conf/httpd.conf:
1
2
3
4
5
6
7
8
9
10
# 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
# service postfix restart #postfix
# service saslauthd restart #cyrus-sasl
# service courier-authlib restart #courier-authlib
# service dovecot restart #dovecot
# 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
# yum install perl-Unix-Syslog
可以只将select的权限赋予mysql的extmail用户,新建一个mysql用户用于修改extmail库记录内容,同时修改webman.cf的SYS_MYSQL_USER和SYS_MYSQL_PASS配置项内容为该用户名和口令,即可以实现WebMail的访问和管理的权限分离。
页:
[1]