◆安装和配置SASL、Authlib

最好先安装courier-authlib。为什么呢?因为后面配置 SASL验证smtp时需要authlib的socket路径。
1、 安装和配置courier-authlib
 
 tar jxvf courier-authlib-0.59.3.tar.bz2
cd courier-authlib-0.59.3
./configure --with-redhat --with-authmysql=yes --with-mailuser=vmail\ --with-mailgroup=vmail --with-mysql-libs=/usr/local/mysql/lib/mysql\ --with-mysql-includes=/usr/local/mysql/include/mysql\
--prefix=/usr/local/authlib --without-stdheaderdir
make
make install
make install-configure
2、在/etc/profile 文件追加文本行
 
echo “export COURIERAUTHCONFIG=/usr/local/authlib/bin/courierauthconfig” >>/etc/profile
 
       一般情况下,anthlib的安装应该是容易完成的。安装完成后,我们先找出配置文件中authdaemonvar的设置,这个值是干什么用的呢?它是后面SASL验证SMTP所必须的,因此需要先把它找出来,以便后面的配置能够准确无误。关于这个问题的教训,在配置sasl的时候再做说明。
 
3、在我的安装中,authdaemonvar的设置如下
[root@mail1 ~]#  grep "authdaemonvar" /usr/local/authlib/etc/authlib/authdaemonrc
##NAME: authdaemonvar:2
# authdaemonvar is here, but is not used directly by authdaemond.  It's
authdaemonvar=/usr/local/authlib/var/spool/authdaemon
 
4、配置authlib.在目录/usr/local/authlib/etc/authlib中,
 
修改文件authdaemonrcauthmysqlrc
 
[root@mail1 ~]# vi /usr/local/authlib/etc/authlib/authdaemonrc
authmodulelist="authmysql"
authmodulelistorig="authmysql"
authdaemonvar=/usr/local/authlib/var/spool/authdaemon
daemons=10
DEBUG_LOGIN=2
 
[root@mail1 ~]# vi /usr/local/authlib/etc/authlib/authmysqlrc
MYSQL_SERVER            localhost
MYSQL_USERNAME          postfix
MYSQL_PASSWORD          postfix
MYSQL_SOCKET            /tmp/mysql.sock
MYSQL_PORT              3306
MYSQL_OPT               0
MYSQL_DATABASE          postfix
MYSQL_USER_TABLE        mailbox
MYSQL_CRYPT_PWFIELD     password
DEFAULT_DOMAIN          mail.sery.com
MYSQL_UID_FIELD         '1001'
MYSQL_GID_FIELD         '1001'
MYSQL_LOGIN_FIELD       username
MYSQL_HOME_FIELD     '/var/mailbox/'
MYSQL_NAME_FIELD        name
MYSQL_MAILDIR_FIELD     concat('/var/mailbox/',maildir)
MYSQL_QUOTA_FIELD      concat(quota,'S')
MYSQL_WHERE_CLAUSE   active='1'
 
  照上面的格式修改,这是比较容易出错的地方,要特别小心。我曾经把MYSQL_USER_TABLE mailbox这一项的mailbox写成mailbov导致sasl验证一直没法通过!特别注意MYSQL_UID_FIELDMYSQL_GID_FIELD字段的值,这里是‘1001,也可以是其它的,但一定要与vmail用户及组相一致(id vmail可以得出这2者的值)
 
 
安装和配置SASL.
 
1、安装
tar zxvf cyrus-sasl-2.1.23.tar.gz
cd cyrus-sasl-2.1.23
export COURIERAUTHCONFIG=/usr/local/authlib/bin/courierauthconfig 再执行下面
./configure  --disable-anon -enable-plain --enable-login  --enable-sql --with-mysql=/usr/local/mysql  --with-mysql-includes=/usr/local/mysql/include/mysql  --with-mysql-libs=/usr/local/mysql/lib/mysql  --with-authdaemond
make
make install
 
2、 创建动态连接库
ln -s /usr/local/lib/sasl2 /usr/lib/sasl2  //sasl的安装目录是/usr/local/lib/sasl
echo "/usr/local/lib" >> /etc/ld.so.conf   //指定动态连接库的位置
ldconfig                                   //共享动态链接库生效
 
 
 
3、创建文件 /usr/local/lib/sasl2/smtpd.conf,并加入如下内容:
[root@mail1 ~]# cat /usr/local/lib/sasl2/smtpd.conf
pwcheck_method:authdaemond
mech_list:PLAIN LOGIN
log_level:3
authdaemond_path:/usr/local/authlib/var/spool/authdaemon/socket
allow_plaintext:true
auxprop_plugin:mysql
sql_hostnames:localhost
sql_user:postfix
sql_passwd:postfix
sql_database:postfix
sql_select:select password from mailbox where username='%u'
 
4、开启服务及sasldb2文件
 
[root@mail cyrus-sasl-2.1.23]# mkdir -pv /var/state/saslahthd
 
[root@mail1 ~]# /usr/local/authlib/sbin/authdaemond restart
 
 
运行以下语句始终不能创建/etc/sasldb2文件
saslpasswd2 -c -f /etc/sasldb2 -u mail.sery.com test

   最后一行authdaemond_paeth的设置来自anthlib 的配置文件authlibdaemonrc,千万不要把这个弄错了,我当初的smtp验证一直通不过就是由于这个原因。通过查看进程也可以知道这个路径(前提是authlib正常运行了),如下所示:

[root@mail1 ~]# ps auxww | grep authlib
root      3006  0.0  0.1   1744   404 ?        S    Feb19   0:00 /usr/local/authlib/sbin/courierlogger -pid=/usr/local/authlib/var/spool/authdaemon/pid -start /usr/local/authlib/libexec/courier-authlib/authdaemond
root      3007  0.0  0.3   2788   804 ?        S    Feb19   0:00 /usr/local/authlib/libexec/courier-authlib/authdaemond

 

    注:Sasl2需要使用文件/usr/local/authlib/var/spool/authdaemon/socket,但默认情况下,其属性是744,需要把它加上执行权限,以便文件属组(主)而外的其它用户可以执行。运行命令

 

chmod +x /usr/local/authlib/var/spool/authdaemon