七、安装Courier authentication library
1、首先我们要确认libtool-ltdl libtool-ltdl-devel expect是否安装上了
# yum -y install libtool-ltdl libtool-ltdl-devel
# yum install -y expect
备注:在RHEL5上安装courier时,需要安装0.64.0或之前版本。
# tar xf courier-authlib-0.64.0.tar.bz2
# cd courier-authlib-0.64.0
#./configure \
--prefix=/usr/local/courier-authlib \
--sysconfdir=/etc \
--without-authpam \
--without-authshadow \
--without-authvchkpw \
--without-authpgsql \
--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/lib \
--with-ltdl-include=/usr/include
# make
# make install
2、配置实用mysql连接认证
备注:可以使用--with-authdaemonvar=/var/spool/authdaemon选项来指定进程套接字目录路径
# chmod 755 /usr/local/courier-authlib/var/spool/authdaemon
# cp /etc/authdaemonrc.dist /etc/authdaemonrc
# cp /etc/authmysqlrc.dist /etc/authmysqlrc
修改/etc/authdaemonrc 文件
authmodulelist="authmysql"
authmodulelistorig="authmysql"
daemons=10
注:这里的数据库用户名及密码在真实生产环境中最好更改成你自己设定的。
修改/etc/authmysqlrc文件
MYSQL_SERVER localhost #数据库服务器
MYSQL_USERNAME extmail #数据库登录用户
MYSQL_PASSWORD extmail #数据登录密码
MYSQL_DATABASE extmail #数据库
MYSQL_USER_TABLE mailbox #数据库表
MYSQL_CRYPT_PWFIELD password #表中的哪个字段是密码
MYSQL_UID_FIELD 2525#postfix的uid
MYSQL_GID_FIELD 2525#postfix的gid
MYSQL_LOGIN_FIELD username #数据库中的用户名
MYSQL_HOME_FIELD concat('/var/mailbox/',homedir)#用户的邮件家目录
MYSQL_MAILDIR_FIELD concat('/var/mailbox/',maildir)#用户的邮件保存地址
3、提供服务脚本
# cp courier-authlib.sysvinit /etc/rc.d/init.d/courier-authlib
# chmod 755 /etc/init.d/courier-authlib
# chkconfig --add courier-authlib
# chkconfig --level 2345 courier-authlib on
# service courier-authlib start (启动服务)
4、配置postfix和courier-authlib
新建虚拟用户邮箱所在的目录,并将其权限赋予postfix用户:
#mkdir –pv /var/mailbox
#chown –R postfix /var/mailbox
接下来重新配置SMTP 认证,编辑 /usr/lib/sasl2/smtpd.conf ,确保其为以下内容:
pwcheck_method: authdaemond
log_level: 3
mech_list:PLAIN LOGIN
authdaemond_path:/usr/local/courier-authlib/var/spool/authdaemon/socket
# service saslauthd restart
八、配置让postfix支持虚拟域和虚拟用户
1、编辑/etc/postfix/main.cf,添加如下内容:
########################Virtual Mailbox Settings########################
virtual_mailbox_base = /var/mailbox
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
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
#maildrop_destination_recipient_limit = 1
#maildrop_destination_concurrency_limit = 1
##########################QUOTA Settings########################
message_size_limit = 14336000
virtual_mailbox_limit = 20971520
#virtual_create_maildirsize = yes
#virtual_mailbox_extended = yes
#virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql_virtual_mailbox_limit_maps.cf
#virtual_mailbox_limit_override = yes
#virtual_maildir_limit_message = Sorry, the user's maildir has overdrawn his diskspace quota, please Tidy your mailbox and try again later.
#virtual_overquota_bounce = yes
2、这里我们使用早已经写好的extmail.sql和init.sql建立数据库:这里因为版本需要我会将脚本贴在下一篇的博客文章中,大家有兴趣的话,可以下载安装一下。
# tar zxvf extman-1.1.tar.gz
# cd extman-1.1/docs
# mysql -u root -p < extmail.sql
# mysql -u root -p <init.sql
# cp mysql* /etc/postfix/
3、授予用户extmail访问extmail数据库的权限
mysql> GRANT all privileges on extmail.* TO extmail@localhost IDENTIFIED BY 'extmail';
mysql> GRANT all privileges on extmail.* TO extmail@127.0.0.1 IDENTIFIED BY 'extmail';
mysql> flush privileges;
说明:
1、启用虚拟域以后,需要取消中心域,即注释掉myhostname, mydestination, mydomain, myorigin几个指令;当然,你也可以把mydestionation的值改为你自己需要的。
2、对于MySQL-5.1以后的版本,其中extmail.sql脚本的执行会有错,因为TYPE=MyISAM在之后的版本中已经不支持了切记,可先使用如下命令进行修改之后再执行文件。
# sed -i 's@TYPE=MyISAM@ENGINE=InnoDB@g' extmail.sql
重启服务
# service postfix restart