Dovecot 從靜態遷移到 passwd-file userdb 驅動程序
我有一個電子郵件伺服器設置為使用 dovecot 和虛擬使用者:
passdb { driver = passwd-file args = username_format=%n /etc/vmail/%d/users } userdb { driver = static args = uid=109 gid=111 home=/home/vmail/%d/%n }
現在我需要為一些使用者設置儲存配額。顯然這對驅動程序來說是不可能的
static
,所以我想最簡單的啟用它的方法是切換到passwd-file
. 但是我很難讓它真正發揮作用。使用與
passdb
上述相同的方法和userdb { driver = passwd-file args = username_format=%n /etc/vmail/%d/users default_fields = uid=vmail gid=vmail home=/home/vmail/%d/%n }
93.184.216.34 我收到以下錯誤:
dovecot:imap:錯誤:未從 userdb 中找到經過身份驗證的使用者,auth 查找 id=345505793(client-pid=30121 client-id=1)
dovecot: auth: 錯誤: passwd-file(username@example.org,93.184.216.34,): user not found from userdb
我嘗試了許多變體並閱讀了 dovecot wiki 的許多頁面,包括AuthDatabase/PasswdFile,但我似乎無法正確解釋文件。
如何將我的
static
配置轉換為passwd-file
修改最少的配置?
/etc/vmail/%d/users
文件是標準格式user:{SHA512}…
這是
dovecot userdb
這些設置的輸出:userdb { args = username_format=%n /etc/vmail/%d/users auth_verbose = default default_fields = uid=vmail gid=vmail home=/home/vmail/%d/%n driver = passwd-file name = override_fields = result_failure = continue result_internalfail = continue result_success = return-ok skip = never }
我錯誤地認為除了
user
和之外的欄位password
是可選的,因為default_fields
會照顧它們。實際上,文件狀態(強調我的)
$$ The password file is $$採用以下格式:
user:password:uid:gid:(gecos):home:(shell):extra_fields
對於密碼數據庫,只有使用者和密碼欄位就足夠了。對於使用者數據庫,您還需要設置 uid、gid,最好還設置 home(請參閱 VirtualUsers)。Dovecot 未使用 (gecos) 和 (shell) 欄位。
所以這些欄位實際上是強制性的。但由於它們已經由 設置
default_fields
,它們可以為空:user:{SHA512}pwd:::
我是偶然想到的,因為唯一的工作帳戶是我正在測試配額的那個(使用每個使用者
userdb_quota_rule
的額外欄位)……這
doveadm user user@example.org
對於調試此問題也非常有用。
只是為了補充您的答案,您只需要在密碼欄位後添加兩個冒號即可獲取
default_values
inuserdb
。/etc/dovecot/local.conf ----------------------- passdb { driver = passwd-file args = scheme=CRYPT username_format=%u /etc/dovecot/passwd } userdb { driver = passwd-file args = username_format=%u /etc/dovecot/passwd default_fields = uid=vmail gid=vmail home=/srv/vmail/%u # driver = static # args = uid=vmail gid=vmail home=/srv/vmail/%u }
/etc/dovecot/passwd ------------------- user@example.com:{SHA512}longPasswordHash::
驗證
doveadm
也給出了主文件夾:$ doveadm user user@example.com field value uid 5000 gid 5000 home /srv/vmail/user@example.com mail maildir:/srv/vmail/user@example.com/Maildir