dovecot:启用辅助密码?

dovecot: enabling a secondary password?

我们正在处理涉及 dovecot 的不寻常情况,可能需要不寻常的解决方案。

我们最近要求所有 POP/IMAP 用户更改密码,几乎在所有情况下,他们都尽职尽责地这样做了。然而,一个用户有多个设备和机器反复查询电子邮件,由于任何人都无法控制的情况,他的一台计算机至少在几周内无法访问,因此,dovecot 的密码在该时间过去之前,无法更改用户的电子邮件访问权限。

因此,那台计算机一直在 dovecot 查询该用户使用旧的、现在无效的密码的电子邮件,并且这些查询失败。

另外,由于各种情况也是我们暂时无法控制的,我们不能让该用户在他使用的其他机器和设备上将密码改回旧值。

我们想知道是否有某种方法可以设置 dovecot 来识别和接受这个特定用户的两个 密码。换句话说,我们能否以某种方式为这个电子邮件地址设置一个二级密码,以便旧密码和新密码都允许该用户访问他的电子邮件?

我们通过在 10-auth.conf 中包含 auth-sql.conf.ext 来使用 auth sql。也许这个问题的解决方案是重构我们用于 SQL 身份验证的数据库并添加一个或多个列,然后以某种方式更改 auth-sql.conf.ext 中使用的 SELECT 语句以选择在两个密码之一之间。

如果这是唯一可用的选项,我们愿意尝试此过程,但我们甚至不确定如何完成。在任何情况下,我们都希望 dovecot 中有一些我们不熟悉的特性,可以让我们设置这个用户的 dovecot 电子邮件帐户,以允许使用两个不同的密码进行身份验证没有任何数据库更改。

我们有机会做到这一点吗?

提前谢谢你。

Allan Wind 提供的 link 帮助了我(谢谢!),以及我在过去忽略的那些 dovecot 文档中看到的其他一些东西。

事实证明,我可以在 auth-sql.conf.ext 中提供第二个 userdbpassdb 块,如果主 SQL 查询没有,它们将作为辅助回退' t return 一场比赛。我设置了一个可供这两个用户使用的 passwd-file,其中包含用户旧密码的哈希值,现在,两个密码都可以使用。

例如,次要 userdb 区块(应出现在原始 sql 基础 userdb 区块的正下方)如下所示:

# Fallback ...
userdb {
  driver = passwd-file
  args = scheme=md5-crypt username_format=%u /etc/dovecot/extra.userdb
}

第二个 passdb 块是相同的,只是它被命名为 passdb 而不是 userdb。它必须出现在同一文件中原始 passdb 语句之后。

所以,一切都好,结果好。

前进!