四、安装Courierauthentication library
注意:确保安装libtool-ltdl,libtool-ltdl-devel不然会报错
# tar jxvf courier-authlib-0.62.4.tar.bz2
# cd courier-authlib-0.62.4
#./configure --prefix=/usr/local/courier-authlib --sysconfdir=/etc--with-authmysql --with-mysql-libs=/usr/lib/mysql--with-mysql-includes=/usr/include/mysql --with-RedHat--with-authmysqlrc=/etc/authmysqlrc --with-authdaemonrc=/etc/authdaemonrcCFLAGS="-march=i686 -O2 -fexpensive-optimizations" CXXFLAGS="-march=i686 -O2-fexpensive-optimizations"
# make
# make install
# 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" #修改这3行
daemons=10
编辑/etc/authmysqlrc 为以下内容,其中2525,2525 为postfix 用户的UID和GID。
MYSQL_SERVER localhost MYSQL_PORT 3306 (指定你的mysql监听的端口,这里使用默认的3306) MYSQL_USERNAME extmail (这时为后文要用的数据库的所有者的用户名) MYSQL_PASSWORD extmail (密码) MYSQL_SOCKET /var/lib/mysql/mysql.sock #此行前注释去掉 ------------------------------------------------ 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)
# cp courier-authlib.sysvinit/etc/init.d/courier-authlib #courier提供的启动脚本
# chmod 755 /etc/init.d/courier-authlib
# chkconfig --add courier-authlib
# chkconfig --level 2345 courier-authlib on
#echo"/usr/local/courier-authlib/lib/courier-authlib" >>/etc/ld.so.conf #或添加库文件/etc/ld.so.conf.d/courier.conf
[root@station71 courier-authlib-0.62.4]# ldconfig -v | grep courier
/usr/local/courier-authlib/lib/courier-authlib:
libcourierauthcommon.so-> libcourierauthcommon.so.0
libcourierauth.so-> libcourierauth.so.0
libcourierauthsasl.so-> libcourierauthsasl.so.0
libcourierauthsaslclient.so-> libcourierauthsaslclient.so.0
#库文件成功载入
# service courier-authlib start (启动服务)
ps aux |grep courier
#查看进程启动
新建虚拟用户邮箱所在的目录,并将其权限赋予postfix用户:
#mkdir –pv /var/mailbox
#chown –R postfix/var/mailbox #所有用户的邮件都在这里
接下来重新配置SMTP 认证,编辑 /usr/local/lib/sasl2/smtpd.conf ,确保其为以下内容:
#加入这些内容
pwcheck_method: authdaemond
log_level: 3
mech_list:PLAIN LOGIN
authdaemond_path:/usr/local/courier-authlib/var/spool/authdaemon/socket
五、让postfix支持虚拟域和虚拟用户
1、编辑/etc/postfix/main.cf,添加如下内容:
########################Virtual MailboxSettings######################## 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 ##########################QUOTASettings######################## 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'smaildir has overdrawn his diskspace quota, please Tidy your mailbox and tryagain later. virtual_overquota_bounce = yes
2、使用extman源码目录下docs目录中的extmail.sql和init.sql建立数据库:
# tar zxvf extman-1.1.tar.gz
# cd extman-1.1/docs
# mysql -u root -p <extmail.sql #添加extmail.sql数据库到mysql
# mysql -u root -p <init.sql
# cp mysql* /etc/postfix/
3、授予用户extmail访问extmail数据库的权限
mysql> GRANT all privileges on extmail.* TOextmail@localhost IDENTIFIED BY 'extmail';
mysql> GRANT all privileges on extmail.* TOextmail@127.0.0.1 IDENTIFIED BY 'extmail';
说明:启用虚拟域以后,需要取消中心域,即注释掉myhostname,mydestination, mydomain, myorigin几个指令;当然,你也可以把mydestionation的值改为你自己需要的。