PAM は Postfix および Dovecot SASL で使用できますか?

PAM は Postfix および Dovecot SASL で使用できますか?

私はセットアップしましたポストフィックス使用するドブコット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)、そのままでは動作しないのは驚きです。

関連情報