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
中提供第二个 userdb
和 passdb
块,如果主 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
语句之后。
所以,一切都好,结果好。
前进!
我们正在处理涉及 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
中提供第二个 userdb
和 passdb
块,如果主 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
语句之后。
所以,一切都好,结果好。
前进!