使用使用者名@域格式時,Dovecot 使用者查找失敗
我在 FreeBSD 伺服器上安裝了 Dovecot v2.0.11,使用者查找傳入電子郵件地址失敗,但查找系統使用者成功。
Dovecot 設置為使用系統使用者,所以我的 dovecot.conf 有
userdb { driver = passwd }
和
passdb { driver = passwd }
我啟用了身份驗證調試。
例如,我有一個名為 webmaster 的使用者,使用 doveadm 使用者作為“webmaster”的工作方式如下:
#doveadm user webmaster userdb: webmaster system_groups_user: webmaster uid : 1020 gid : 1020 home : /home/webmaster
但是使用 doveadm 使用者查找 webmaster@myregisteredname.com 失敗如下:
# doveadm user webmaster@myregisteredname.com userdb lookup: user webmaster@myregisteredname.com doesn't exist
這會導致 webmaster@myregisteredname.com 的傳入郵件因“未知使用者”錯誤而退回。
這是 /var/log/maillog 中記錄的失敗:
Apr 16 20:13:35 www dovecot: auth: passwd(webmaster@myregisteredname.com): unknown user
這是 /var/log/debug.log 中記錄的失敗:
Apr 16 20:13:35 www dovecot: auth: Debug: master in: USER 1 webmaster@myregisteredname.com service=doveadm Apr 16 20:13:35 www dovecot: auth: Debug: passwd(webmaster@myregisteredname.com): lookup Apr 16 20:13:35 www dovecot: auth: Debug: master out: NOTFOUND 1
使用者及其主目錄是從另一台伺服器導入的,並且使用者是使用 vipw 工具設置的。我確定我在導入時遺漏了一些東西,它沒有將系統使用者與 dovecot 查找“連結”。
關於那可能是什麼的任何想法?
編輯:使用 BillThor 的建議,我更新了 dovecot.conf 如下:
#doveconf -n passdb userdb passdb { args = username_format=%n driver = passwd } userdb { args = username_format=%n driver = passwd }
但是,現在, doveadm 使用者以不同的方式失敗:
#doveadm user webmaster@pantronx.com doveadm(root): Error: userdb lookup(webmaster@myregisteredname.com): Disconnected unexpectedly doveadm(root): Fatal: userdb lookup failed for webmaster@myregisteredname.com
而且,它不再適用於沒有域的使用者:
#doveadm user webmaster doveadm(root): Error: userdb lookup(webmaster): Disconnected unexpectedly doveadm(root): Fatal: userdb lookup failed for webmaster
當我收到上述消息時,/var/log/maillog 中有以下內容:
Apr 17 17:30:02 www dovecot: auth: Fatal: passdb passwd: Unknown setting: username_format=%u Apr 17 17:30:02 www dovecot: master: Error: service(auth): command startup failed, throttling
dovecot 中使用 passdb 的使用者 ID 不包括域。使用者應該使用的使用者 ID 是本地部分,而不是完整的電子郵件地址。
通過和失敗的檢查按預期工作。
auth_username_format=%n
在密碼數據庫定義之前設置確實有效。該域未經過驗證。
我正在使用 Ubuntu Server 12.04 並嘗試了上述解決方案。但是,我發現最簡單的方法是在 10-auth.conf 中設置
auth_username_format = %n
我使用 PAM 進行身份驗證,這是 Ubuntu 12.04 中的預設設置。