◆安装和配置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中,
修改文件authdaemonrc及authmysqlrc。
[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_FIELD和MYSQL_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