让Postfix使用保存在MySQL中的加了密的密码字段(Ubuntu 6.06 TLS)

这两天在Ubuntu下折腾Postfix + Courier-IMAP + Cyrus-SASL + MySQL + PostfixAdmin,主要参考这个Howto(http://flurdy.com/docs/postfix/)
配置了Postfix Admin,所以邮件用户的密码用了md5的加密方式存放在MySQL数据库中的(不想用明文)。这样一来,IMAP服务器可以支持加密的密码字段,认证没有问题,但SMTP服务器不行。

Google了好久,发现网上大多数都是使用明文密码的,也有用saslauthd的pam认证方式来做的。我一开始是用明文的,觉得不好(能看到用户的密码,心里不安),又试了pam方式但没成功(不知道为什么,没深究)。最后终于找到牛人给Cyrus-SASL写的patch(针对2.1.19版本的),安装步骤参考 http://blog.matroid.org/display/26


$ cd ~
$ apt-get source libsasl2
$ sudo apt-get build-dep libsasl2
下载这个为Debian修改过的patch文件
$ wget http://blog.matroid.org/files/20060116-crypted-passwords-for-couriour-and-postfix-in-mysql/cyrus-sasl-2.1.19-checkpw.c.patch_mgr
$ cd cyrus-sasl-2.1.19.dfsg1
$ tar xvzf cyrus-sasl-2.1.19.dfsg1.tar.gz
$ ln -s cyrus-sasl-2.1.19.dfsg1 cyrus-sasl-2.1.19.orig
$ cp ../cyrus-sasl-2.1.19-checkpw.c.patch_mgr debian/patches/28_cyrus-sasl-2.1.19-checkpw.c.patch
做些修改,将patch文件里的cyrus-sasl-2.1.19.org替换为cyrus-sasl-2.1.19.dfsg1,不然会patch会失败。改好后,编译
$ fakeroot debian/rules binary
成功后,安装生成的deb包
$ cd ..
$ sudo dpkg -i *.deb

配置/etc/postfix/sasl/smptd.conf

pwcheck_method: auxprop
auxprop_plugin: sql
allowanonymouslogin: no
allowplaintext: yes
mech_list: PLAIN LOGIN
srp_mda: md5

srvtab: /dev/null
opiekeys: /dev/null

password_format: crypt

sql_user: username
sql_passwd: password
sql_hostnames: sql.example.org
sql_database: database_name
sql_select: SELECT password FROM mailbox WHERE username = '%u@%r'

重启Postfix就可以了。

5 Replies to “让Postfix使用保存在MySQL中的加了密的密码字段(Ubuntu 6.06 TLS)”

  1. "你好,我现在也正在ubuntu下建postfix,碰到了一些问题,能和你交流交流吗?"
    我也是的啊 ,
    QQ:305316339
    谢谢!

  2. 更正一下,不用做下面这个操作
    $ ln -s cyrus-sasl-2.1.19.dfsg1 cyrus-sasl-2.1.19.orig

    修改patch文件,把里面的cyrus-sasl-2.1.19.orig替换成cyrus-sasl-2.1.19.dfsg1就可以编译过去了。

  3. Pingback: wolfg's Weblog

Comments are closed.