安装和配置cyrus-sasl(用于实现身份验证的smtp服务器)<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

1. 安装cyrus-sasl

1)首先先要卸载系统已经安装cyrus-sasl

#rpm -q cyrus-sasl

#rpm -e cyrus-sasl  --nodeps

    2)编译安装cyrus-sasl2.1.22

#tar zxvf cyrus-sasl-2.1.22.tar.gz

#cd cyrus-sasl-2.1.22

#./configure --prefix=/usr/local/sasl2 \

--disable-gssapi --disable-anon --disable-digest \

--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=/usr/local/courier-authlib/var/spool/authdaemon/socket

/*  一定要加上--enable-login因为SASL2默认不支持login这种验证方式,而OUTLOOK是通过login来进行SMTP验证得)  */

        #make  ( 这里可能会编译错误,解决的方法: cp mac/libdes/public/des.h /root/tools/Postfix/cyrus-sasl-2.1.22/,

说明: mac/libdes/public/des.h 这个路径是cyrus-sasl源码包文件夹下面的mac路径

/root/tools/Postfix/cyrus-sasl-2.1.22/  这个路径是源码包的路径 )

        #make install

 

2. 配置sasl

(1) 创建运行时需要的目录并调试启动

#mkdir -pv /var/state/saslauthd

/var/目录下建一个目录给saslauthd进程存放临时数据.假如没有这些目录,运行saslauthd,会提示出错.

 

(2) 接着为确保CYRUS-SASL2函数库知道怎样验证所收来的SASL认证请求,必须创建一个SASL的配置文档。配置文档名为smtpd.conf位于/usr/local/sasl2/lib/sasl2这个目录,在该文档中您定义您希望使用的认证数据库方法,以下这个例子使用saslauthd来验证认证请求.

#vi /usr/local/sasl2/lib/sasl2/smtpd.conf

添加以下内容

pwcheck_method: saslauthd

 mech_list: PLAIN LOGIN

 

(3)启动并测试

#/usr/local/sasl2/sbin/saslauthd -a shadow pam

#/usr/local/sasl2/sbin/testsaslauthd  -u root -p root   //用户密码

例如:# /usr/local/sasl2/sbin/testsaslauthd -u root -p 123456

0: OK "Success."

假如出现以上信息,就说明saslauthd正常运行了。

testsaslauthd程式默认是没有编译的,您需要在源码目录树的saslauthd子目录中运行 make testsaslauthd命令生成.

 

(4)添加连接库 postfix编译安装会用到,否则报错.

#echo "/usr/local/sasl2/lib" >> /etc/ld.so.conf

#echo "/usr/local/sasl2/lib/sasl2" >> /etc/ld.so.conf

#ldconfig -v

 

(5)添加库连接到/usr/lib 因为postfix会到/usr/lib目录下去找SASL2库,而我们是把程式安装在/usr/local/sasl2中,所以我们要在/usr/lib目录下做一个链接:

#ln -s /usr/local/sasl2/lib/sasl2   /usr/lib/sasl2

 

(6)设置为开机启动

#echo “/usr/local/sasl2/sbin/saslauthd -a shadow pam” >>/etc/rc.local

三、安装配置courier-authlib (实现带验证的pop3服务器)

1、安装courier-authlib

#tar -jxvf courier-authlib-0.62.4.tar.bz2

#cd courier-authlib-0.62.4

#./configure --prefix=/usr/local/courier-authlib\

 --without-authpam\

--without-authdap\

 --without-authshadow\

 --without-vchkpw\

 --with-authmysql\

 --with-mysql-libs=/usr/local/mysql/lib/mysql\ --with-mysql-includes=/usr/local/mysql/include/mysql

#make

#make install

2、配置courier-authlib

1#cd /usr/local/courier-authlib/

#chmod 755 var/spool/authdaemon/

 

2#cd etc/authlib/

#cp authdaemonrc.dist  authdaemonrc

#cp authmysqlrc.dist   authmysqlrc

 

3#vi authdaemonrc

修改etc/authlib/authdaemonrc 文件为:

authmodulelist="authmysql"

authmodulelistorig="authmysql"

  daemons=10

 

4#vi authmysqlrc

修改etc/authlib/authmysqlrc 为以下内容

  MYSQL_SERVER      localhost

  MYSQL_PORT        3306   //指定你的mysql监听的端口,这里使用默认的3306

MYSQL_USERNAME     extmail    //这是为后文要用的数据库的所有者的用户名 MYSQL_PASSWORD     extmail    //这是为后文要用的数据库的所有者的密码

MYSQL_SOCKET      /tmp/mysql.sock   //mysql的接口文件

 MYSQL_DATABASE     extmail           //用于验证的数据库

 MYSQL_USER_TABLE   mailbox           //用于验证的数据库表

MYSQL_CRYPT_PWFIELD   password

MYSQL_UID_FIELD '501'                //501postfix用户uid

MYSQL_GID_FIELD '501'                //501postfixgid

MYSQL_LOGIN_FIELD     username

MYSQL_HOME_FIELD      concat('/var/mailbox/',homedir)

MYSQL_NAME_FIELD      name

MYSQL_MAILDIR_FIELD   concat('/var/mailbox/',maildir)

3、设置开机自启动

#cp /root/tools/postfix/courier-authlib-0.62.4/courier-authlib.sysvinit /etc/init.d/courier-authlib

#chmod 755 /etc/init.d/courier-authlib

#chkconfig --add  courier-authlib

#chkconfig --level 35 courier-authlib on

#service courier-authlib start

#netstat -an |grep 110

unix  2      [ ACC ]     STREAM     LISTENING     11090  /var/state/saslauthd/mux

unix  2      [ ]         DGRAM                    11089