PAMに対して認証するためのsaslauthdセットアップがあります。それはそのことをしているようです:
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がsaslauthdと通信しようとするのではなく、sasldbauthを使用しようとすることを意味すると解釈します。 libsaslにsaslauthdと通信させたいことを伝える方法がわからないこと。
さまざまな手順で、ファイル/etc/sasl2/smtpd.confまたは/etc/postfix/sasl/smtpd.confを作成するように通知されます。私はこれらのファイルを作成しようとしました:
pwcheck_method: saslauthd
mech_list: LOGIN PLAIN
しかし、効果はありません。
Saslauthd認証を使用するようにlibsaslに指示するにはどうすればよいですか?
(もちろん/ var/pool/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で、saslauthdと話したいことをlibsaslに伝えることができます。
pwcheck_method: saslauthd
mech_list: LOGIN PLAIN
saslauthd_path: private/saslauthd/mux
Smtpdはchrootされているため、saslauthd_pathは/ var/boost/postfixに相対的です。バインドマウントを使用して、/ var/run/saslauthdをプライベートにします。