sasl+Extmail实现基于虚拟用户的邮件系统架构(3)

四、为postfix开启基于cyrus-sasl的认证功能
   添加此功能之后,当用户需要向外域发送邮件的话POSTFIX启用Cyrus-SASL函数库,来启动saslauthd程序,到存放用户帐号密码的地方进行认证,如果认证成功,则允许发送出去

1、使用以下命令验正postfix是否支持cyrus风格的sasl认证, 
postconf  -a
如果您的输出为以下结果,则是支持的:

2、编辑postfix的主配置文件 /etc/postfix/main.cf
vim /etc/postfix/main.cf
添加以下内容:
############################CYRUS-SASL############################
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject_invalid_hostname,reject_non_fqdn_hostname,reject_unknown_sender_domain,reject_non_fqdn_sender,reject_non_fqdn_recipient,reject_unknown_recipient_domain,reject_unauth_pipelining,reject_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_security_options = noanonymous
smtpd_banner = Welcome to our $myhostname ESMTP,Warning: Version not Available!

3、创建文件 /usr/lib/sasl2/smtpd.conf
vim /usr/lib/sasl2/smtpd.conf
添加如下内容:
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN

4、让postfix重新加载配置文件
postfix reload

5、验证是否成功启用saslauthd服务

telnet 127.0.0.1 25

2011-09-22 14-02-50

五、安装Courier authentication library
     安装Courier authentication library是让postfix能够和MySQL数据库连接,将用户的帐号和密码放在数据库中,以便能够提供用户认证

1、编译、安装Courier authentication library

tar jxvf courier-authlib-0.62.4.tar.bz2 
cd courier-authlib-0.62.4
./configure --prefix=/usr/local/courier-authlib --sysconfdir=/etc --with-authmysql --with-mysql-libs=/usr/lib/mysql --with-mysql-includes=/usr/include/mysql --with-RedHat --with-authmysqlrc=/etc/authmysqlrc --with-authdaemonrc=/etc/authdaemonrc --with-ltdl-lib=/usr/lib --with-ltdl-include=/usr/include 
make 
make install

chmod 755 /usr/local/courier-authlib/var/spool/authdaemon 
cp /etc/authdaemonrc.dist  /etc/authdaemonrc       
cp /etc/authmysqlrc.dist  /etc/authmysqlrc   

2、修改/etc/authdaemonrc 文件 
对应的修改结果如下
authmodulelist="authmysql"
authmodulelistorig="authmysql"
daemons=10

3、编辑/etc/authmysqlrc 对应项需改结果如下:

MYSQL_SERVER localhost
MYSQL_PORT 3306                   指定mysql监听的端口
MYSQL_USERNAME  extmail      指定后文要用的数据库的所有者的用户名
MYSQL_PASSWORD extmail       指定后文要用的数据库的所有者的密码
MYSQL_SOCKET  /var/lib/mysql/mysql.sock
MYSQL_DATABASE  extmail
MYSQL_USER_TABLE  mailbox
MYSQL_CRYPT_PWFIELD  password
MYSQL_UID_FIELD  '2525'      postfix 用户的UID
MYSQL_GID_FIELD  '2525'      postfix 用户的GID
MYSQL_LOGIN_FIELD  username
MYSQL_HOME_FIELD  concat('/var/mailbox/',homedir)
MYSQL_NAME_FIELD  name
MYSQL_MAILDIR_FIELD  concat('/var/mailbox/',maildir)

cp courier-authlib.sysvinit /etc/init.d/courier-authlib  创建此服务加入系统服务列表
chmod 755 /etc/init.d/courier-authlib  
chkconfig --add courier-authlib    将此服务加入开机自动启动列表
chkconfig --level 2345 courier-authlib on    让此服务在2345级别下为开启状态

echo "/usr/local/courier-authlib/lib/courier-authlib" >> /etc/ld.so.conf.d/courier-authlib.conf 
ldconfig -v   重新加载库文件
service courier-authlib start   启动服务

4、新建虚拟用户邮箱所在的目录,并将其权限赋予postfix用户:
mkdir –pv /var/mailbox
chown –R postfix /var/mailbox

5、重新配置SMTP 认证,编辑 /usr/lib/sasl2/smtpd.conf ,确保其为以下内容:
pwcheck_method: authdaemond
log_level: 3
mech_list:PLAIN LOGIN
authdaemond_path:/usr/local/courier-authlib/var/spool/authdaemon/socket

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/e369c750043f1c782cb96242057dd8dc.html