私はセットアップしましたポストフィックス使用するドブコットSASLとパムUnix ユーザー、およびローカル メールボックス ストレージ用の Dovecot LDA (LMTP)。いくつかのテストを行った結果、受信メールが次の理由で拒否されることが判明しました。
エラー: [ユーザー] の passdb 検索に失敗しました: 構成された passdb は資格情報の検索をサポートしていません
これは面倒で困ったものです。私が PAM ベースの認証を選んだのは、私が見つけたすべての情報源が、これが最もシンプルで信頼性の高い方法であると示唆していたからです。現時点で何が問題なのかをトラブルシューティングするのは困難です。本当に PAM の問題なのか、それとも私の設定に問題があるのかはわかりません。
ログ
ルックdoveadm
アップテスト:
$ doveadm auth lookup [user]
Error: passdb lookup failed for [user]: Configured passdbs don't support credentials lookups
ルックアップ テスト後の Dovecot デバッグ ログ:
$ cat /var/log/dovecot/dovecot-debug.log | tail -5
[date][time] auth: Debug: master in: PASS 1 [user] service=doveadm debug
[date][time] auth: Debug: pam([user]): Performing passdb lookup
[date][time] auth: Debug: pam([user]): passdb doesn't support credential lookups
[date][time] auth: Debug: pam([user]): Finished passdb lookup
[date][time] auth: Debug: passdb out: FAIL 1 reason=Configured passdbs don't support credentials lookups
関連する構成
ファイル/etc/dovecot/conf.d/10-auth.conf
:
auth_username_format = %Ln
auth_mechanisms = plain login
!include auth-system.conf.ext
ファイル/etc/dovecot/conf.d/auth-system.conf.ext
:
passdb {
driver = pam
args = session=yes failure_show_msg=yes dovecot
}
userdb {
driver = static
args = uid=vmail gid=vmail home=/var/vmail/%n
}
この/etc/pam.d/dovecot
ファイルは、Rocky Linux (RHEL と同等で、Fedora と同じ) Dovecot パッケージに付属するデフォルトです。
#%PAM-1.0
auth required pam_nologin.so
auth include password-auth
account include password-auth
session include password-auth
しかし、公式が提案した設定も試してみましたDovecot PAM ドキュメント結果は変わりませんでした。オプションの調査にかなりの時間を費やしたので、残りの構成には自信がありますが、PAM 構成についてはまだほとんど理解していません...
すべてのログは、問題が Postfix または Dovecot の設定ではなく、Dovecot SASL 自体にあることを示しています。 ご提案があれば、ぜひお知らせください。
答え1
これが問題の適切な解決策であるかどうかはわかりません(今戻って読んでいますanx のコメントpassdb
私の最初の投稿ではそうなのか疑問に思いましたが、 Dovecot の設定に2 番目のエントリを追加することで、検索と認証の両方を機能させることができました。
Dovecotの設定では、PAM パスワード データベースエントリーパスワードパスワードデータベースエントリ:
# e.g. /etc/dovecot/conf.d/auth-system.conf.ext
passdb { # This is not a typo
# Passwd can be used both as a passdb and a userdb
driver = passwd
}
passdb {
driver = pam
args = dovecot
}
これにより、ユーザー検索はdoveadm auth lookup [user]
成功します。ただし、パスワードデータベースは認証するUnix システムではパスワードがファイルに保存されなくなるため、ユーザーはパスワードを/etc/passwd
失ってしまいます。その場合、PAM パスワード データベースを使用して検索が続行され、ユーザーが正しく認証されます。これは、 コマンドを使用してテストできますdoveadm auth test [user]
。
この解決策/回避策は現時点ではうまく機能しているので、これを承認済みの回答として追加しました。誰かが提案をしたり、これをよりよい方法で解決する方法を知っている場合は、代わりに喜んで受け入れます。PAMデータベースだけがデフォルトの構成であるため、ロッキーリナックス(実質的には RHEL)、そのままでは動作しないのは驚きです。