質問: まず -- 私の初質問になります。 書き方とかも初めてなのでおかしいところがあるかもしれません。 不足点などありましたらご指摘お願いいたします。 ### 環境 postfix・dovecot・saslauthd(Dovecot-auth?)を使ってメールサーバーを構築しています。 そこでユーザーを追加したところ表示上は問題ないのに認証ができませんでした。 * ubuntu14.04 LTS * saslauthd 2.1.25 ### 発生している問題 まず、自分のユーザー名を登録しました。 ``` sudo saslpasswd2 -c -u (ドメイン) kazuemon Password: (パスワード) Again: (パスワード) ``` その後、testsaslauthdを利用して認証テストを行いました。 ``` sudo testsaslauthd -u kazuemon -p (パスワード) 0: OK "Success." ``` そして、別のアカウントを追加しました。 ``` sudo saslpasswd2 -c -u (ドメイン) kazuemon2 Password: (パスワード) Again: (パスワード) ``` そのあとtestsaslauthdを利用して認証テストを行うと ``` sudo testsaslauthd -u kazuemon2 -p (パスワード) 0: NG "authentication failed." ``` となってしまいます。 sasldblistusers2を実行してみたところ、 ``` sudo sasldblistusers2 kazuemon@(ドメイン): userPassword kazuemon2@(ドメイン): userPassword ``` というように表示されます。 コレはubuntu側のユーザーに依存しているということなのでしょうか? ちなみにkazuemonを削除してみて、再作成したところ正しく認証できました。 初心者なのであまりよくわからなかったので質問しました。 ### /etc/default/saslauthd ``` START=”yes” ``` 以外の変更は加えていません。 よろしくお願いいたします。
回答: saslpasswd2 コマンドは /etc/sasldb2 ファイルにユーザー情報を登録するものですが、saslauthd が認証方式として /etc/sasldb2 ファイルを見るのか、他を見るのかは設定によります。 デフォルトでは `MECHANISMS="pam"` となっていて、PAM を使って認証するようになっていると思います。 PAM に特別な設定をしていなければ、pam_unix.so でシステムユーザー(/etc/{passwd,shadow})で認証します。 /etc/sasldb2 ファイルを使って認証するには、/etc/default/saslauthd で MECHANISMS="sasldb" と設定する必要があります。 アプリケーションによっては、libsasl2 ライブラリ経由で(saslauthd を使わずに) /etc/sasldb2 を見ることもできます。 ただし、Dovecot って /etc/sasldb2 を見れるのでしたっけ? (saslauthd または libsasl2 経由で) Dovecot のユーザー情報・認証も /etc/sasldb2 を使おうと思っていますか?