如何configurationRoundcube / Dovecot *有效*双因素authentication

有几个Roundcube插件提供双因素authentication。 然而,我现在看到的问题是,我仍然可以简单地通过IMAP / SMTPlogin,没有2-FA(显然)。 2-FA在这里是(有效)无用的。

我认为我可以通过引入特定于应用程序的密码来解决这个问题,并且采取类似于Google对其2-FA和不支持它的应用程序的做法。

现在我想我可以为每个用户自动为Roundcube生成一个应用程序特定的密码,这与用于login到Roundcube Web界面的不同。 结果是用户仍然可以拥有自己的密码+ 2-FAlogin到Roundcube,但是同一密码不能直接用于IMAP / SMTP。 但是,我似乎无法find一种方法来configurationRoundcube使用不同的IMAP密码login到Web界面。

Roundcube和Dovecot都在同一台机器上运行。

我在这里错过了什么? 我在做什么是明智的? 这似乎是一个问题,可以比我试图更优雅的方式解决,所以我错过了什么? 我真正想要的只是可能的2-FAauthentication和其他地方的特定于应用程序的密码。

谢谢!

在尝试了一些之后,我发现了两个合理的解决scheme/解决方法,至less对于这个简单的情况。

选项1:使用allow_nets。 Dovecot允许passdb返回各种额外的字段,包括'allow_nets'( http://wiki2.dovecot.org/PasswordDatabase/ExtraFields/AllowNets )。 通过将allow_nets设置为127.0.0.1作为由Roundcube使用的密码,来自其他源的任何login尝试都将失败。 如果Roundcube在不同的机器上,显然需要调整IP。 这种方法的问题是非静态IP地址,如果用户有其他非2-FA方法通过例如在与Roundcube相同的机器上运行的代理login。

选项2:使用CheckPassword编写自定义身份validation脚本。 对passdb使用checkpassword驱动程序( http://wiki2.dovecot.org/AuthDatabase/CheckPassword )允许写入自定义身份validation脚本。 你可以在那里检查客户IP,或者做一些完全不同的事情。 这里可能的问题是性能,你可能需要一些额外的用户查找configuration,因为checkpassword不支持用户查找。 此外,validation用户如何实际尝试login的问题仍然存在。