四、为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
五、安装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