五、邮件服务器的虚拟域
简介
虚拟域功能类似于httpd的虚拟主机服务,同样支持一台物理主机服务器创建和支持多个虚拟域名,并为其提供邮件服务,实现此功能需要涉及到mydestination、mydomain、myorigin几个参数。
当一台服务器运行多个虚拟域的情况下,势必会给查询带来负担,这样就需要一个快速的检索数据库,常用的有hash、ladp、mysql等,hash我们在前面已经讲过了,就是通过postmap来生成需要的索引文件*.db。确定是不灵活,当账户信息文件需要经常变化的时候,就需要手动多次生成索引文件
courier-authlib是Courier组件中的认证库,它是courier组件中一个独立的子项目,用于为Courier的其它组件提供认证服务。其认证功能通常包括验正登录时的帐号和密码、获取一个帐号相关的家目录或邮件目录等信息、改变帐号的密码等。而其认证的实现方式也包括基于PAM通过/etc/passwd和/etc/shadow进行认证,基于GDBM或DB进行认证,基于LDAP/MySQL/PostgreSQL进行认证等。因此,courier-authlib也常用来与courier之外的其它邮件组件(如postfix)整合为其提供认证服务。
安装courier-authlib
1、下载courier-authlib-0.67.0.tar.gz,解压缩并进入courier目录
[root@mail ~]# tar xf courier-authlib-0.67.0.tar.bz2
[root@mail ~]# ls
anaconda-ks.cfg courier-authlib-0.67.0 courier-authlib-0.67.0.tar.bz2 install.log install.log.syslog Mail Maildir main.cf sent
[root@mail ~]# cd courier-authlib-0.67.0
[root@mail courier-authlib-0.67.0]# ls
aclocal.m4 auth_getoption.html auth_mkhomedir.html authpgsqllib.cpp auth_sasl_ex.3 authuserdbpwd.c courier-authlib.lpspec.in libs README.authdebug.html.in
authconfigfile.cpp auth_getuserinfo.3 authmksock.c authpgsqlrc authsaslfrombase64.c authwait.h courier-authlib.service.in ltmain.sh README_authlib.html.in
authconfigfile.h auth_getuserinfo.html authmoduser2.c authpipe.c auth_sasl.html ChangeLog courier-authlib.spec Makefile.am README.authmysql.html
authcustom.c auth.h authmoduser3.c authpipelib.c authsasllogin.c checkpassword.c courier-authlib.spec.in Makefile.in README.authmysql.myownquery
authcustom.h authinfo.c authmysql.cpp authpipelib.h authsaslplain.c checkpasswordmd5.c courier-authlib.sysvinit.in missing README.authpostgres.html
authdaemon.c authldap.c authmysql.h authpwd.c authsasltobase64.c checkpasswordsha1.c courierauthsaslclient.h NEWS README.authsqlite.html
authdaemond.c authldapescape.c authmysqllib.cpp authpwdenumerate.c authshadow.c compile courierauthsasl.h NEWS.html README.html
authdaemondcpp.cpp authldap.h authmysqlrc auth_sasl.3 authsqlite.cpp config.guess courierauthstaticlist.h pgpkeys.txt README.ldap
authdaemond.in authldap.ldif authoption.c authsasl.c authsqlite.h config.sub cramlib.c preauthcustom.c samplepipe.pl
authdaemonlib.c authldaplib.cpp AUTHORS authsaslclient.c authsqlitelib.cpp configure cryptpassword.c preauthdaemon.c sysconftool
authdaemonrc.in authldaprc authpam.c authsaslclientcram.c authsqliterc configure.ac dbobj.config.in preauthldap.c userdb
authdaemontest.c authldap.schema authpasswd.1 authsaslclientcrammd5.c authsyschangepwd.c COPYING dbobj.h.in preauthmysql.cpp userdb-test-cram-md5.pl.in
auth_enumerate.3 authlib.3.in auth_passwd.3 authsaslclientcramsha1.c authsyscommon.c COPYING.GPL debug.c preauthpam.c
authenumerate.c authlib.html.in authpasswd.c authsaslclientexternal.c authsystem.passwd.in courier_auth_config.h depcomp preauthpwd.c
auth_enumerate.html auth_login.3 auth_passwd.html authsaslclient.h authtest.1 courier_auth_config.h.in INSTALL preauthshadow.c
auth_generic.3 auth_login.html authpasswd.html authsaslclientlogin.c authtest.c courierauthdebug.h INSTALL.html preauthuserdb.c
auth_generic.html authmigrate.in authpgsql.c authsaslclientplain.c authtest.html courierauth.h install-sh preauthuserdbcommon.c
auth_getoption.3 auth_mkhomedir.3 authpgsql.h authsaslcram.c authuserdb.c courier-authlib.lpspec liblog README
2、编译安装courier-authlib
依赖环境:
A modern version of gcc ()
The GNU linker ()
Libtool (). Additional, libtool's libltdl library, and its development files, must be installed. On some platforms this is a separate package. On Fedora, this is the libtool-ltdl-devel package, for example.
GNU make ()
The "
expect
" command.expect
is usually included with most systems.Expect
can be downloaded fromhttp://expect.nist.gov/
if it's not installed on your system. This utility is used to change system login passwords, by scripting thepasswd
command. If you do not haveexpect
installed you will not be able to change system login passwords. However non-system authentication modules (LDAP, PostgreSQL, and others) will work.Courier Unicode Library. Before installing Courier-IMAP, download and install .
编译相关选项:根据具体情况选择。
--prefix=/usr/local/courier-authlib
--sysconfdir=/etc
--without-authpam 不支持基于pam认证
--without-authshadow 不支持基于shadow认证
--without-authvchkpw 不支持基于vchkpw认证
--without-authpgsql 不支持基于pgsql认证
--without-authsqlite 不支持基于sqlitle认证
--with-authmysql 基于mysql认证
--with-mysql-libs=/usr/lib/mysql 指定mysql库文件路径
--with-mysql-includes=/usr/include/mysql 指定mysql头文件路径
--with-redhat 对redhat系统进行自动优化,其他系统不要使用此选项。
--with-authmysqlrc=/etc/authmysqlrc 指定mysqlrc配置文件位置
--with-authdaemonrc=/etc/authdaemonrc 指定守护进程配置文件位置
--with-mailuser=postfix 指定邮件收发管理用户
--with-mailgroup=postfix 指定用户组
--with-ltdl-lib=/usr/lib 指定ltdl库位置,需要libtool-ltdl和libtool-ltdl-devel包
--with-ltdl-include=/usr/include 指定ltdl头文件位置。需要libtool-ltdl和libtool-ltdl-devel包
--with-authdaemonvar=/var/spool/authdaemon 指定套接字socket文件位置。不指定默认在/usr/local/courier-authlib/var/spool/authdaemon下
注意:我这里安装的0.67版本,此软件包需要expect、Courier Unicode Library 1.2软件包,我这里下载的是expect5.4,而expect又需要tcl软件包,我这里yum安装的tcl和tcl-devel。
编译安装courier-unicode,依赖于pcre软件包,而pcre最新版又依赖其他包,所以都要一并装上。并且安装过程中需要使用普通用户,如果使用root安装会有以下错误提示:
编译中间错误提示configure: WARNING: === Do not compile Courier as root. Compileconfigure: WARNING: === Courier as a non-root user then su toconfigure: WARNING: === root before running make install. You must nowconfigure: WARNING: === remove this entire directory and then extract theconfigure: WARNING: === source code from the tarball as a non-root userconfigure: WARNING: === and rerun the configure script. If you have readconfigure: WARNING: === the INSTALL file you should have known this. Soconfigure: WARNING: === you better read INSTALL againconfigure: error: aborted.error: Bad exit status from /var/tmp/rpm-tmp.77978 (%prep)
RPM build errors:Bad exit status from /var/tmp/rpm-tmp.77978 (%prep)
提示我们不要用root 编译我们新建个用户,然后加入编译目录的权限
[root@mail ~]# ls
anaconda-ks.cfg autoconf-latest.tar.xz automake-1.15.tar.xz courier-0.76.4.20170218.tar.bz2 courier-authlib-0.67.0.tar.bz2 courier-unicode-1.4.tar.bz2 expect5.45.tar install.log.syslog libtool-2.4.tar.xz Maildir pcre2-10.23
autoconf-2.69 automake-1.15 courier-0.76.4.20170218 courier-authlib-0.67.0 courier-unicode-1.4 expect5.45 install.log libtool-2.4 Mail main.cf sent
安装依赖包,有些可能需要编译安装,因为yum安装的版本和编译安装之间由于时间问题,可能不兼容。
[root@mail courier-authlib-0.67.0]# yum -y install libtool-ltdl libtool-ltdl-devel expect perl-DBD-MySQL tcl tcl-devel libart_lgpl libart_lgpl-devel libtool-ltdl libtool-ltdl-devel
编译安装courier-authlib
[root@mail courier-authlib-0.67.0]# ./configure --prefix=/usr/local/courier-authlib --sysconfdir=/etc --without-authpam --without-authshadow --without-authvchkpw --without-authpgsql --without-authsqlite --with-authmysql --with-mysql-libs=/usr/lib/mysql --with-mysql-includes=/usr/include/mysql --with-redhat --with-authmysqlrc=/etc/authmysqlrc --with-authdaemonrc=/etc/authdaemonrc --with-mailuser=postfix --with-mailgroup=postfix --with-ltdl-lib=/usr/local/ltdl/lib/ --with-ltdl-include=/usr/local/ltdl/include/ --with-authdaemonvar=/var/spool/authdaemon/
&&make &&make install
3、修改文件权限及复制文件,这个和前面编译使用的参数定义配置文件是对应的
[root@mail courier-authlib-0.67.0]# chmod -R 755 /var/spool/authdaemon/
[root@mail courier-authlib-0.67.0]# ll /var/spool/authdaemon/ -d
drwxr-xr-x. 2 postfix postfix 4096 2月 28 16:10 /var/spool/authdaemon/
[root@mail courier-authlib-0.67.0]# cp /etc/auth
authdaemonrc.dist authmysqlrc.dist
[root@mail courier-authlib-0.67.0]# cp /etc/authdaemonrc.dist /etc/authdaemonrc
[root@mail courier-authlib-0.67.0]# cp /etc/authmysqlrc.dist /etc/authmysqlrc
4、修改/etc/authdaemonrc文件
#authmodulelist="authuserdb authpwd authmysql authcustom authpipe"
authmodulelist="authmysql "
##NAME: authmodulelistorig:4
#
# This setting is used by Courier's webadmin module, and should be left
# alone
#authmodulelistorig="authuserdb authpwd authmysql authcustom authpipe"
authmodulelistorig="authmysql "
daemons=5 用于设置进程数
##NAME: authdaemonvar:2
#
# authdaemonvar is here, but is not used directly by authdaemond. It's
# used by various configuration and build scripts, so don't touch it!
authdaemonvar=/var/spool/authdaemon/ 可以手动设置socket位置。
5、修改/etc/authmysqlrc配置文件
MYSQL_SERVER = localhost localhost mysql服务器的地址。localhost表示本机
MYSQL_PORT = 3306 3306 mysql的监听地址
MYSQL_USERNAME =extmail extmail 指定连接mysql的账号。因为后边要用extmail进行管理,extmail安装后默认用户为extmail。并且在实际工作中建议修改,记得其他涉及此账户的都要修改。
MYSQL_PASSWORD = extmail extmail 指定账号的密码
MYSQL_SOCKET = /var/lib/mysql/mysql.sock /var/lib/mysql/mysql.sock 指定mysql套接字位置。
MYSQL_DATABASE = extmail extmail 指定要使用的数据库,而不是数据库软件。这里使用extmail软件和它搭配使用,而涉及的数据库是extmail。
MYSQL_USER_TABLE = mailbox mailbox 指定存放用户数据所在的表,这个也是extmail自动生成的。
MYSQL_CRYPT_PWFIELD = password password 指定用户密码字段
MYSQL_UID_FIELD = 2525 '2525' 指定访问进程的uid,postfix的uid为2525。
MYSQL_GID_FIELD = 2525 '2525' 指定访问进程的gid。
MYSQL_LOGIN_FIELD = username username 指定用户账号字段,extmail自动生成。
MYSQL_HOME_FIELD =concat('/var/mailbox/',homedir) 指定用户家目录的位置。虚拟用户是没有家目录,所以和邮箱目录保持一致。contcat()是mysql的函数,作用是将括号内的内容连接起来。
MYSQL_NAME_FIELD = name 指定用户名称的字段
MYSQL_MAILDIR_FIELD = concat('/var/mailbox/',maildir) 指定用户邮箱目录的位置。
[root@mail ~]# more /etc/authmysqlrc |grep -v ^$ |grep -v ^#
MYSQL_SERVER mail.dtedugongbing.com
MYSQL_USERNAME extmail
MYSQL_PASSWORD extmail
MYSQL_PORT 3306
MYSQL_OPT 0
MYSQL_DATABASE extmail
MYSQL_USER_TABLE mailbox
MYSQL_CRYPT_PWFIELD password
MYSQL_UID_FIELD 2525
MYSQL_GID_FIELD 2525
MYSQL_LOGIN_FIELD username
MYSQL_HOME_FIELD concat('/var/mailbox/',homedir)
MYSQL_NAME_FIELD name
MYSQL_MAILDIR_FIELD concat('/var/mailbox/',maildir)
6、从源码包中复制执行脚本到init.d目录中。
[root@mail ~]# cp /root/courier-authlib-0.67.0/courier-authlib.sysvinit /etc/init.d/courier-authlib
[root@mail ~]# chkconfig add courier-authlib
[root@mail ~]# chkconfig --add courier-authlib
[root@mail ~]# chkconfig courier-authlib on
[root@mail ~]# chkconfig --list courier-authlib
courier-authlib 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
[root@mail ~]# chmod +x /etc/init.d/courier-authlib
[root@mail ~]# service courier-authlib start
Starting Courier authentication services: authdaemond
[root@mail ~]# ps aux |grep authlib
root 11993 0.0 0.0 4068 528 ? S 14:05 0:00 /usr/local/courier-authlib/sbin/courierlogger -pid=/var/spool/authdaemon//pid -start /usr/local/courier-authlib/libexec/courier-authlib/authdaemond
root 11994 0.0 0.0 73008 3012 ? S 14:05 0:00 /usr/local/courier-authlib/libexec/courier-authlib/authdaemond
root 11995 0.0 0.0 73008 856 ? S 14:05 0:00 /usr/local/courier-authlib/libexec/courier-authlib/authdaemond
root 11996 0.0 0.0 73008 856 ? S 14:05 0:00 /usr/local/courier-authlib/libexec/courier-authlib/authdaemond
root 11997 0.0 0.0 73008 856 ? S 14:05 0:00 /usr/local/courier-authlib/libexec/courier-authlib/authdaemond
root 11998 0.0 0.0 73008 856 ? S 14:05 0:00 /usr/local/courier-authlib/libexec/courier-authlib/authdaemond
root 11999 0.0 0.0 73008 856 ? S 14:05 0:00 /usr/local/courier-authlib/libexec/courier-authlib/authdaemond
root 12001 0.0 0.0 103332 896 pts/0 S+ 14:05 0:00 grep authlib
7、为用户创建存储用户邮件的目录,按照上面的配置需要创建/var/mailbox/目录,这里需要特别说明一下要实现虚拟域和虚拟用户必须要采用maildir的邮件存储方式(main.cf中配置)
[root@mail ~]# mkdir /var/mailbox/
[root@mail ~]# chown -R postfix /var/mailbox/
[root@mail ~]#
8、修改/var/lib/sasl2/smtp.cf文件。
[root@mail ~]# vim /usr/lib64/sasl2/smtpd.conf
pwcheck_method:authdaemond
log_level:3
mech_list:plain login
authdaemond_path : /var/spool/authdaemon/socket
7、修改main.cf配置文件,实现虚拟机和虚拟账户功能。
########################Virtual Mailbox Settings########################
virtual_mailbox_base = /var/mailbox 指定用户邮件存放目录的路径
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf 用户邮箱的映射表,通过mysql方式访问指定文件行查找。该文件是查询语句的集合。
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf 虚拟域映射表,该文件由extmail提供。
virtual_alias_domains =
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf 别名映射表
virtual_uid_maps = static:2525
virtual_gid_maps = static:2525
virtual_transport = virtual 指定另一个投递代理MDA
##########################QUOTA Settings######################## 配额相关
message_size_limit = 14336000 邮件大小显示
virtual_mailbox_limit = 20971520 邮箱大小限制
注意:
1、启用虚拟域以后,需要取消中心域,就是注释掉myhostname、mydestination、mydomain、myornigin几个参数,也可以把mydestination的值改成自己需要的。
2、对于mysql5.1以后的版本,其中的服务脚本extmail.sql执行中会有语法错误。需要修改源码包中extmail.sql配置文件,修改后再执行。sed -i ’s/TYPE=ISAM/ENGINE=INNODB’ extmail.sql。
extmail程序下载并安装。
1、编译安装extmail
2、将源码包中的init.sql和extmail.sql文件导入到mysql数据库中。
[root@mail docs]# service mysqld start
Initializing MySQL database: Installing MySQL system tables...
OK
Filling help tables...
OK
To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system
PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:
/usr/bin/mysqladmin -u root password 'new-password'
/usr/bin/mysqladmin -u root -h mail.dtedugongbing.com password 'new-password'
Alternatively you can run:
/usr/bin/mysql_secure_installation
which will also give you the option of removing the test
databases and anonymous user created by default. This is
strongly recommended for production servers.
See the manual for more instructions.
You can start the MySQL daemon with:
cd /usr ; /usr/bin/mysqld_safe &
You can test the MySQL daemon with mysql-test-run.pl
cd /usr/mysql-test ; perl mysql-test-run.pl
Please report any problems with the /usr/bin/mysqlbug script!
[ OK ]
Starting mysqld: [ OK ]
[root@mail docs]#
[root@mail docs]#
[root@mail docs]#
[root@mail docs]# mysql <extmail.sql 导入源码包中docs目录下的sql脚本文件extmail.sql和init.sql。
[root@mail docs]# mysql <init.sql
[root@mail docs]# mysql <extmail.sql
3、给extmail数据库授予extmail账户权限及设定密码。
mysql> GRANT ALL PRIVILEGES ON extmail.* TO extmail@localhost IDENTIFIED BY 'extmail';
Query OK, 0 rows affected (0.00 sec)
mysql> GRANT ALL PRIVILEGES ON extmail.* TO extmail@127.0.0.1 IDENTIFIED BY 'extmail';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges
Query OK, 0 rows affected (0.00 sec)
4、复制extmail中于mysql相关的配置文件到/etc/postfix/目录
[root@mail docs]# cp mysql_virtual_* /etc/postfix/
[root@mail docs]# ll /etc/postfix/mysql*
-rw-r--r--. 1 root root 166 3月 1 15:15 /etc/postfix/mysql_virtual_alias_maps.cf
-rw-r--r--. 1 root root 168 3月 1 15:15 /etc/postfix/mysql_virtual_domains_maps.cf
-rw-r--r--. 1 root root 170 3月 1 15:15 /etc/postfix/mysql_virtual_limit_maps.cf
-rw-r--r--. 1 root root 172 3月 1 15:15 /etc/postfix/mysql_virtual_mailbox_maps.cf
-rw-r--r--. 1 root root 173 3月 1 15:15 /etc/postfix/mysql_virtual_sender_maps.cf
[root@mail docs]#
5、创建并修改配置文件dovecot.conf
mail_location = maildir:/var/mailbox/%d/%n/Maildir 设定邮件的位置,%d表示域名,%n表示用户名。均为dovecot的自定义宏。
auth default {
mechanisms = plain 认证机制使用plain
passdb sql { 使用sql方式认证
args = /etc/dovecot-mysql.conf 指定查询文件
}
userdb sql { 使用sql方式认证
args = /etc/dovecot-mysql.conf 指定查询文件
}
6、创建dovecot.conf中指定的mysql查询文件
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'
说明:如果mysql服务器是本地主机,即host=localhost时,如果mysql.sock文件不是默认的/var/lib/mysql/mysql.sock,可以使用host=“sock文件的路径”来指定新位置。例如使用通用二进制格式安装的mysql,其sock文件通常在/tmp/myql.sock,则connect对应的位置应该是:
connect = host=/tmp/mysql.sock dbname=extmail user=extmail password=extmail
7、修改/var/www/extsuite/extmail/webmail.cf配置文件:
[root@mail ~]# more /var/www/extsuite/extmail/webmail.cf |grep -v ^# |grep -v ^$
SYS_CONFIG = /var/www/extsuite/extmail/
SYS_LANGDIR = /var/www/extsuite/extmail/lang
SYS_TEMPLDIR = /var/www/extsuite/extmail/html
SYS_HTTP_CACHE = 0
SYS_SMTP_HOST = 127.0.0.1
SYS_SMTP_PORT = 25
SYS_LOG_TYPE = syslog
SYS_LOG_FILE = /var/log/extmail.log
SYS_USER_LANG = zh_CN
SYS_MYSQL_PASS = extmail
SYS_MAILDIR_BASE = /var/mailbox
SYS_MYSQL_DB = extmail
SYS_MYSQL_HOST = localhost
SYS_MYSQL_SOCKET = /var/lib/mysql/mysql.sock
SYS_MYSQL_TABLE = mailbox
SYS_MYSQL_ATTR_USERNAME = username
SYS_MYSQL_ATTR_DOMAIN = domain
SYS_MYSQL_ATTR_PASSWD = password
SYS_MYSQL_ATTR_CLEARPW = clearpwd
SYS_MYSQL_ATTR_QUOTA = quota
SYS_MYSQL_ATTR_NDQUOTA = netdiskquota
SYS_MYSQL_ATTR_HOME = homedir
SYS_MYSQL_ATTR_MAILDIR = maildir
SYS_MYSQL_ATTR_DISABLEWEBMAIL = disablewebmail
SYS_MYSQL_ATTR_DISABLENETDISK = disablenetdisk
SYS_MYSQL_ATTR_DISABLEPWDCHANGE = disablepwdchange
SYS_MYSQL_ATTR_ACTIVE = active
SYS_MYSQL_ATTR_PWD_QUESTION = question
SYS_MYSQL_ATTR_PWD_ANSWER = answer
SYS_AUTHLIB_SOCKET = /var/spool/authdaemon/socket
SYS_CONFIG 指定程序目录
SYS_LANGDIR 指定语言字符集的目录
SYS_TEMPLDIR 指定临时文件的目录
SYS_HTTP_CACHE http是否要缓存
SYS_SMTP_HOST 指定smtp服务器
SYS_SMTP_PORT smtp服务端口号
SYS_SMTP_TIMEOUT 指定超时时间
SYS_SPAM_REPORT_ON 发现垃圾邮件是否报告
SYS_USER_LANG 指定语言支持
SYS_MAILDIR_BASE 指定用户的邮筒文件夹
SYS_MYSQL_TABLE 指定在mysql中对应的表
SYS_MYSQL_ATTR_USERNAME 用户名对应的字段属性
SYS_MYSQL_ATTR_DOMAIN 域对应的字段属性
SYS_MYSQL_ATTR_PASSWD 用户密码对应的字段属性
SYS_AUTHLIB_SOCKET 指定courier-authlib socket文件位置HTTP相关配置
安装配置extman文件
拷贝extman解压缩目录到/var/www/extsuite/
[root@mail ~]# mkdir /var/www/extsuite/extman
[root@mail ~]# mv /root/extman-1.1/* /var/www/extsuite/extman/
编辑配置文件 /var/www/extsuite/extman/webman.cf
SYS_MAILDIR_BASE = /var/mailbox 这个是postfix配置文件main.conf中设置的邮件存储位置
SYS_SESS_DIR = /tmp/extman/ 临时会话存放位置,需要创建。而属主属组为httpd启动进程的用户和组,这里使用的是postfix。
SYS_CAPTCHA_ON = 0 关闭验证码功能
SYS_DEFAULT_UID = 2525 需要同创建的postfix账户的uid相同
SYS_DEFAULT_GID = 2525
SYS_MYSQL_USER = extman 指定登录mysql使用的用户名
SYS_MYSQL_PASS = extman
SYS_MYSQL_DB = extmail
SYS_MYSQL_HOST = localhost
SYS_MYSQL_SOCKET = /var/lib/mysql/mysql.sock
创建/tmp/extman目录,并更改属组、属主。
[root@mail extman]# mkdir /tmp/extman/
[root@mail extman]# chown postfix:postfix /tmp/extman/
创建extman账户及密码,并授权
mysql> GRANT ALL PRIVILEGES ON extman.* TO extman@localhost IDENTIFIED BY "extman"
-> ;
Query OK, 0 rows affected (0.00 sec)
mysql> GRANT ALL PRIVILEGES ON extman.* TO extman@127.0.0.1 IDENTIFIED BY "extman";
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
修改extman目录下CGI目录权限。
[root@mail extman]# chown -R postfix:postfix cgi/
httpd配置文件在虚拟主机配置段内添加以下信息。
Scriptalias /extman/cgi /var/www/extsuite/extman/cgi
Alias /extman /var/www/extsuite/extman/html
<VirtualHost *:8081>
ServerName mail.dtedugongbing.com
DocumentRoot /var/www/extsuite/extmail/html/
ScriptAlias /extmail/cgi /var/www/extsuite/extmail/cgi
Alias /extmail /var/www/extsuite/extmail/html/
CustomLog logs/mail.qupeiyin.net.log common
Scriptalias /extman/cgi /var/www/extsuite/extman/cgi
Alias /extman /var/www/extsuite/extman/html
</VirtualHost>