◆安装和配置SASL、Authlib

最好先安装courier-authlib。为什么呢?因为后面配置 SASL验证smtp时需要authlib的socket路径。

1、安装和配置courier-authlib

1)安装

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\
--prifix=/usr/local/authlib --without-stdheaderdir
make
make install
make install-configure

一般情况下,anthlib的安装应该是容易完成的。安装完成后,我们先找出配置文件中authdaemonvar的设置,这个值是干什么用的呢?它是后面SASL验证SMTP所必须的,因此需要先把它找出来,以便后面的配置能够准确无误。关于这个问题的教训,在配置sasl的时候再做说明。在我的安装中,authdaemonvar的设置如下:

[root@mail ~]# 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

2)配置authlib.在目录/usr/local/authlib/etc/authlib中,修改文件authdaemonrc及authmysqlrc。

vi /usr/local/authlib/etc/authlib/authdaemonrc
authmodulelist="authmysql"
authmodulelistorig="authmysql"
DEBUG_LOGIN=2

 

修改上面3项,其他的项保持不便。这个修改前2行表示用mysql认证模块;把DEBUG_LOGIN的值有默认的“0”改成“2”的用意是运行postfix时有更多的信息输出,通过生成的日志以帮助排错。

vi /usr/local/authlib/etc/authlib/authmysqlrc
MYSQL_SERVER localhost
MYSQL_USERNAME postfix
MYSQL_PASSWORD postfix

MYSQL_DATABASE postfix

MYSQL_SOCKET /tmp/mysql.sock
MYSQL_USER_TABLE mailbox
#MYSQL_CRYPT_PWFIELD password
MYSQL_CLEAR_PWFIELD password

DEFAULT_DOMAIN 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 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者的值)

2、安装和配置SASL.

1)安装

tar zxvf cyrus-sasl-2.1.21.tar.gz
cd cyrus-sasl-2.1.21
./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

如果在编译过程make)出现错误,如“client.c:64: error: static declaration of 'global_callbacks' follows non-static declaration saslint.h:112…”,需要加一个补丁程序,然后再执行编译过程。

用vi在当前位置创建补丁文件,起名为sasl.patch,其内容包括:

--- cyrus-sasl-2.1.20/lib/client.c~     2003-11-11 11:26:06.000000000 -0500

+++ cyrus-sasl-2.1.20/lib/client.c      2005-05-31 22:34:14.000000000 -0400

@@ -61,7 +61,7 @@

 

 static cmech_list_t *cmechlist; /* global var which holds the list */

 

-static sasl_global_callbacks_t global_callbacks;

+sasl_global_callbacks_t global_callbacks;

 

 static int _sasl_client_active = 0;


ln -s /usr/local/lib/sasl2 /usr/lib/sasl2  //sasl的安装目录是/usr/local/lib/sasl
echo "/usr/local/lib" >> /etc/ld.so.conf  //指定动态连接库的位置
ldconfig                   //共享动态链接库生效

2) 配置

创建文件 /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

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

图 4

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

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

即可,如果不这样处理,smtp验证无一例外会失败的。那么这里所说的其它用户是什么用户呢?答:postfix。


相关内容