Postfix smtpd 不會與 saslauthd 對話
我有一個 saslauthd 設置來針對 PAM 進行身份驗證。它似乎在做它的事情:
root@sasltest:~# testsaslauthd -u quest -p #### -s smtp 0: OK "Success."
我有 libsasl 2.1.23,後綴 2.7.1。
我有一個這樣配置的後綴:
smtpd_sasl_type = cyrus smtpd_sasl_path = /var/spool/postfix/private/saslauthd/mux smtpd_sasl_auth_enable = yes broken_sasl_auth_clients = yes smtpd_sasl_security_options = noanonymous
使用 master.cf :
submission inet n - - - - smtpd -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject
但是,嘗試在此後綴中進行身份驗證會給出以下錯誤消息:
Jan 23 22:13:14 sasltest postfix/smtpd[1252]: warning: SASL authentication problem: unable to open Berkeley db /etc/sasldb2: No such file or directory Jan 23 22:13:14 sasltest postfix/smtpd[1252]: warning: SASL authentication problem: unable to open Berkeley db /etc/sasldb2: No such file or directory Jan 23 22:13:14 sasltest postfix/smtpd[1252]: warning: X[A.B.C.D]: SASL LOGIN
認證失敗:認證失敗
同時,我的調試日誌記錄 saslauthd 沒有輸出。
我將此解釋為 libsasl2 嘗試使用 sasldb auth 而不是嘗試與 saslauthd 對話的意思。我不知道如何告訴 libsasl 我希望它與 saslauthd 對話。
各種說明會通知您創建文件 /etc/sasl2/smtpd.conf 或 /etc/postfix/sasl/smtpd.conf。我嘗試創建這些文件,其中包含:
pwcheck_method: saslauthd mech_list: LOGIN PLAIN
但是沒有效果。
如何指示 libsasl 使用 saslauthd 身份驗證?
(我當然可以創建 /var/spool/postfix/etc/sasldb2,但這仍然不會導致與 saslauthd 的連接。)
這個cyrus-sasl 郵件列表文章最終讓我走上了正確的道路。
為了後代,嘗試產生合理明確的配置。/etc/postfix/main.cf:
smtpd_sasl_type = cyrus smtpd_sasl_path = smtpd cyrus_sasl_config_path = /etc/postfix/sasl smtpd_sasl_auth_enable = yes broken_sasl_auth_clients = yes smtpd_sasl_security_options = noanonymous
上面 conf 中的技巧是 postfix+libsasl2 這樣做: $ {cyrus_sasl_config_path}/ $ {smtpd_sasl_path}.conf
一旦我們做到了這一點,在 /etc/postfix/sasl/smtpd.conf 中,我們可以告訴 libsasl 我們想與 saslauthd 交談:
pwcheck_method: saslauthd mech_list: LOGIN PLAIN saslauthd_path: private/saslauthd/mux
由於 smtpd 是 chroot 的,因此 saslauthd_path 相對於 /var/spool/postfix。我使用綁定安裝將 /var/run/saslauthd 變為私有。