Dovecot 从静态迁移到 passwd-file userdb 驱动程序

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 中找到经过身份验证的用户,身份验证查找 id=345505793(client-pid=30121 client-id=1)

dovecot:auth:错误:密码文件([电子邮件保护],93.184.216.34,): 在 userdb 中未找到用户

我尝试了很多变体,阅读了 Dovecot Wiki 的许多页面,包括验证数据库/密码文件,但我似乎无法正确解释该文档。

我如何将我的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
}

答案1

只是为了补充你的答案,你只需要密码字段后面的冒号用于输入要输入的default_values内容。userdb

/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
-------------------
[email protected]:{SHA512}longPasswordHash::

验证doveadm还给出了主文件夹:

$ doveadm user [email protected]
field   value
uid     5000
gid     5000
home    /srv/vmail/[email protected]
mail    maildir:/srv/vmail/[email protected]/Maildir

答案2

我错误地认为除user和之外的其他字段password是可选的,因为default_fields会处理它们。

实际上,文档州(重点是我的)

[密码文件]格式如下:

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 [email protected]

相关内容