如何使用 passdb 配置 doveadm -A?

如何使用 passdb 配置 doveadm -A?

我正在使用 Dovecot 和 passdb 作为用户数据库:

passdb {
    args = scheme=sha512-crypt /etc/mail/passwd
    driver = passwd-file
}

userdb {
    args = uid=vmail gid=vmail home=/var/vmail/%d/%n
    driver = static
}

我无法将该-A标志与任何 doveadm 命令一起使用(而使用则-u user可以)。例如:

$ doveadm expunge -A mailbox Trash all
Error: User listing returned failure
doveadm: Error: Failed to iterate through some users

dovecot 日志显示:

... dovecot[1225]: auth: Error: Trying to iterate users, but userdbs don't support it

有没有办法配置这种支持,或者这只是一个限制?

答案1

static驱动程序确实不支持迭代,但您可以passwd-file以最小的努力切换到该驱动程序确实支持迭代。

您可以对 passdb 和 userdb 使用同一个文件:

passdb {
    args = scheme=sha512-crypt /etc/mail/passwd
    driver = passwd-file
}

userdb {
    default_fields = uid=vmail gid=vmail home=/var/vmail/%d/%n
    args = /etc/mail/passwd
    driver = passwd-file
}

使用此配置,您必须确保 /etc/mail/passwd 具有八个以冒号分隔的字段,请参阅https://wiki2.dovecot.org/UserDatabase::::::. (只需在当前文件的每一行后面附加六个冒号即可。)

重新加载,您的doveadm -A命令就会成功。

相关内容