參照阿信兄之前解說的方法與鳥哥的linux私房菜-postfix 的設定技巧與安裝
http://linux.vbird.org/linux_server/0390postfix.php
目前進度如下(我測試過3、4次,應該沒什麼問題)
Postfix 遠端寄信方法
一、使用 postfix+sasl2 認證(採用 pam 認證方式),目前僅在 debian 3.0 testing 成功
1.安裝 postfix-tls sasl2-bin libsasl2-digestmd5-plain libsasl2-modules-plain
※libsasl2-digestmd5-plain 應該可以不用安裝,outlook express 是採用 plain 的方式認證,我移除掉後還是可以寄信
※注意:若在 stable 時安裝了 postfix 與 postfix-tls,系統內會多出 sasl-bin、libsasl-modules-plain、libsasl-gssapi-mit、libsasl-digestmd5-des、libkrb53、libsasl7
2.設定saslauthd
編輯/etc/default/saslauthd
START=yes
MECHANISMS=pam
3.新增 /etc/postfix/sasl/smtpd.conf
加入 pwcheck_method: saslauthd
4.將 /var/run/saslauthd 的 目錄 owner 修改一下
chown postfix:postfix /var/run/saslauthd
5.修改 /etc/postfix/main.cf 加入以下字串(加在最後面或是像我是加在 mynetworks 之後)
smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
smtpd_client_restrictions = permit_sasl_authenticated
smtpd_sasl_security_options = noanonymous
6.修改/etc/postfix/master.cf
找到
smtp inet n - - - - smtpd
修改成
smtp inet n - n - - smtpd
7.重新啟動 saslauthd 和 postfix
/etc/init.d/saslauthd restart
/etc/init.d/postfix restart
二、使用 pop-before-smtp,debian 3.0 stable 與 testing 都可以
1.安裝 pop-before-smtp 套件
2.修改 /etc/postfix/main.cf
在 mynetworks 後加入 hash:/var/lib/pop-before-smtp/hosts
例如 mynetworks = 127.0.0.0/8, 192.168.0.0/16, bash:/var/lib/pop-before-smtp/hosts
新增
smtpd_recipient_restrictions = permit_mynetworks,reject_non_fqdn_recipient,check_client_access hash:/var/lib/pop-before-smtp/hosts,check_relay_domains
3.重新啟動 postfix
/etc/init.d/postfix restart
目前碰到的問題是 postfix+sasl2 認證在 debian 3.0 stable 上還是不行,mail.err 會顯示 no sasl,一定要安裝 sasl 1.5 後,postfix 才能正常啟動,但是這樣就會造成認證失敗,mail.err 訊息顯示找不到 sasldb 檔。
但是升級到 testing 後,就可以將 sasl-bin、libsasl-modules-plain、libsasl-gssapi-mit、libsasl-digestmd5-des、libkrb53 等安裝 postfix-tls 時系統自行安裝的檔案移除,而且 stable 系統預設無法移除的 libsasl7 也可以移除。然後重新啟動 saslauthd 和 postfix,認證就可以成功了。
前前後後摸了幾個月了,還是無法在 debian 3.0 stable 下成功使用 postfix + sasl2 認證,真的快認輸了,有誰能給一個方向?