7. 编译安装courier-authlib

可以配置postfix使用虚拟用户和虚拟域,而这些信息通常会使用mysql数据库进行管理。因此postfix需要依赖插件完成对mysql数据库的访问,本文使用courier-authlib,该软件需要调用cyrus-sasl库文件,与mysql进行通信。

在编译安装courier-authlib之前,要先安装courier-unicode,避免在courier-authlib安装过程中出现如下错误:

configure: error: The Courier Unicode Library 1.2 appears not to be installed. You may need to install a separate development subpackage, in addition to the main package

访问The Courier Mail Server(http://www.courier-mta.org/authlib/)下载courier-unicode安装包并上传到服务器,解压并进行编译安装:

[root@mail ~]# tar -xvf courier-unicode-1.1.tar.bz2 
[root@mail ~]# cd courier-unicode-1.1
[root@mail courier-unicode-1.1]# ./configure 
[root@mail courier-unicode-1.1]# make && make install

注:在make && make install这一步执行后,如果提示如下错误:

./libtool: line 1125: g++: command not found
make[1]: *** [unicodecpp.lo] Error 1
make[1]: Leaving directory `/root/courier-unicode-1.1'
make: *** [all] Error 2

请安装gcc+和gcc-c++:

[root@mail courier-unicode-1.1]# yum install gcc+ gcc-c++

如果提示如下错误:

/usr/bin/install: cannot stat `.libs/libcourier-unicode.so.1.0.0': No such file or directory
make[1]: *** [install-libLTLIBRARIES] Error 1
make[1]: Leaving directory `/root/courier-unicode-1.1'
make: *** [install-am] Error 2

注意检查courier-authlib是否已经安装,其版本是否同courier-unicode版本匹配,然后尝试使用低版本的courier-unicode进行编译安装。


成功安装courier-unicode后,访问The Courier Mail Server(http://www.courier-mta.org/authlib/)下载courier-authlib安装包并上传到服务器,解压并进行编译安装:

[root@mail courier-unicode-1.1]# cd ../courier-authlib-0.66.1
[root@mail courier-authlib-0.66.1]# ./configure \
--prefix=/usr/local/courier-authlib \
--sysconfdir=/etc \
--without-authpam \    #不启用基于pam的认证方式
--without-authshadow \
--without-authvchkpw \
--without-authpgsql \
--with-authmysql \    #启用基于mysql的认证方式
--with-mysql-libs=/usr/lib64/mysql \    #指定mysql库文件存放位置
--with-redhat \
--with-authmysqlrc=/etc/authmysqlrc \    #指定配置文件authmysqlrc位置
--with-authdaemonrc=/etc/authdaemonrc \    #指定配置文件authdaemonrc位置
--with-authdaemonvar=/var/spool/authdaemon \   #指定authdaemon.pid和相应套接字存放位置 
--with-mailuser=postfix \    #调用courier-authlib的用户名
--with-mailgroup=postfix \    #调用courier-authlib的用户所属组名
[root@mail courier-authlib-0.66.1]# make && make install

注:如果在配置courier-authlib时出现错误,请检查是否安装了所依赖的软件包,比如libtool-ltdl/libtool-ltdl-devel、sqlite-devel等。


安装完成后,需要将authdaemon.pid和套接字所在目录的权限修改为755,以保证其他系统用户可以访问PID和套接字文件,才能与courier-authlib进行通信:

[root@mail ~]# chmod 755 /var/spool/authdaemon/
[root@mail ~]# ls -ld /var/spool/authdaemon/
drwxr-xr-x. 2 postfix postfix 4096 Dec 28 10:48 /var/spool/authdaemon/

复制2个配置文件并进行改名:

[root@mail ~]# cp /etc/authdaemonrc.dist /etc/authdaemonrc
[root@mail ~]# cp /etc/authmysqlrc.dist /etc/authmysqlrc

courier-authlib提供了SysV风格的启动脚本,脚本在安装包下,名称为courier-authlib.sysinit,可以自行添加:

[root@mail courier-authlib-0.66.1]# ls courier-authlib.sysvinit
courier-authlib.sysvinit
接下来,修改/etc/authdaemonrc配置文件的如下内容:
[root@mail etc]# vi authdaemonrc
authmodulelist="authmysql"
authmodulelistorig="authmysql"

由于mysql中暂时没有用户信息,因此暂不对与mysql相关的配置文件/etc/authmysqlrc进行配置。

下一篇文章将介绍通过Webmail程序Extmail以及后台管理程序ExtMan提供的脚本完成Mysql相关库和表结构的建立,以及配置courier-authlib和postfix来支持由mysql提供虚拟用户和虚拟域的认证访问