Debian

Postfix smtpd 不會與 saslauthd 對話

  • December 27, 2020

我有一個 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 變為私有。

引用自:https://serverfault.com/questions/471887