首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Dovecot从静态迁移到passwd文件userdb驱动程序

Dovecot从静态迁移到passwd文件userdb驱动程序
EN

Server Fault用户
提问于 2019-05-08 17:27:26
回答 2查看 3K关注 0票数 1

我有一个电子邮件服务器设置为对虚拟用户使用dovecot:

代码语言:javascript
复制
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

代码语言:javascript
复制
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: Error:身份验证用户未从userdb中找到,auth查找id=345505793 (client-pid=30121 client-id=1)

我尝试了许多变体,并阅读了包括AuthDatabase/PasswdFile在内的dovecot的许多页面,但我似乎无法正确地解释文档。

如何通过最小的修改将static配置转换为passwd-file

/etc/vmail/%d/users文件采用标准格式。

代码语言:javascript
复制
user:{SHA512}…

下面是这些设置的dovecot userdb输出:

代码语言:javascript
复制
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
}
EN

回答 2

Server Fault用户

回答已采纳

发布于 2019-05-08 19:05:18

我错误地认为,除了userpassword以外的字段是可选的,因为default_fields会处理这些字段。

实际上,文献资料状态(强调地雷)

密码文件是格式如下:user:password:uid:gid:(gecos):home:(shell):extra_fields用于密码数据库,只要有用户和密码字段就足够了。对于用户数据库,您需要设置uid、gid,最好也设置home (参见VirtualUsers)。(gecos)和(shell)字段被Dovecot使用。

所以这些字段实际上是强制性的。但是,由于它们已经由default_fields设置,所以它们可以是空的:

代码语言:javascript
复制
user:{SHA512}pwd:::

我认为这是偶然的,因为唯一的工作帐户是我正在测试配额的帐户(使用每个用户userdb_quota_rule额外字段)…。

doveadm user user@example.org对于调试此问题也非常有用。

票数 1
EN

Server Fault用户

发布于 2020-11-15 19:57:33

为了补充您的答案,您只需要在密码字段之后使用两个冒号即可获取default_values中的userdb

代码语言:javascript
复制
/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
}
代码语言:javascript
复制
/etc/dovecot/passwd
-------------------
user@example.com:{SHA512}longPasswordHash::

使用doveadm进行的验证还提供了主文件夹:

代码语言:javascript
复制
$ 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
票数 2
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/966426

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档