Postfix

PAM 可以與 Postfix 和 Dovecot SASL 一起使用嗎?

  • April 8, 2022

我已設置Postfix以將Dovecot SASL用於PAM和 Unix 使用者,並將 Dovecot LDA (LMTP) 用於本地郵箱儲存。經過一些測試,原來收到的郵件被拒絕,原因是:

錯誤:passdb 查找失敗

$$ user $$: 配置的 passdbs 不支持憑證查找

這既麻煩又麻煩——我選擇了基於 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 配置……

所有日誌都指出問題出在 Dovecot SASL 本身,而不是 Postfix 或 Dovecot 配置。任何建議將不勝感激。

我不知道這是否是問題的正確解決方案(現在回來閱讀anx對我原始文章的評論讓我想知道是否是這樣),但我設法通過添加第二個passdb條目來使查找和身份驗證工作Dovecot 的配置。

在 Dovecot 配置中,我在PAM 密碼數據庫條目之前添加了一個passwd密碼數據庫條目:

# 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]成功。但是,passwd數據庫無法驗證使用者,因為密碼不再儲存在/etc/passwdUnix 系統上的文件中。發生這種情況時,查找將繼續使用 PAM 密碼數據庫,該數據庫正確地驗證了使用者。這可以使用doveadm auth test [user]命令進行測試。


我將此添加為可接受的答案,因為解決方案/解決方法目前對我有用。如果有人有任何建議或知道如何以更好的方式解決此問題,我很樂意接受。只有 PAM 數據庫是Rocky Linux (實際上是 RHEL)上的預設配置,這讓我很驚訝它不能開箱即用。

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