我有一个电子邮件服务器设置为使用 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([email protected],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
}
只是为了补充您的答案,您只需要在密码字段后添加两个冒号即可获取
default_values
inuserdb
。验证
doveadm
也给出了主文件夹:我错误地认为除了
user
和之外的字段password
是可选的,因为default_fields
会照顾它们。实际上,文档状态(强调我的)
所以这些字段实际上是强制性的。但由于它们已经由 设置
default_fields
,它们可以为空:我是偶然想到的,因为唯一的工作帐户是我正在测试配额的那个(使用每个用户
userdb_quota_rule
的额外字段)......这
doveadm user [email protected]
对于调试此问题也非常有用。