MySQL和Blowfish预先encryption的密码进行SASL(Postfix)authentication

我有一个Rails应用程序与运行用户注册和logindeviseauthenticationgem。 我想使用用户注册为Postfix用于authentication用户的表时Devise填充的数据库表。

该表具有Postfix可能需要的SASLauthentication的所有字段,除了在将设备放入数据库之前,Devise使用Blowfishencryption密码。

我怎么能得到Postfix / SASL解密这些密码,以便用户可以正确authentication? devise盐的密码,所以我不知道这是否有帮助。

有什么build议么? 我很可能想和Dovecot或者Courier做类似的事情,我还没有做到。

可以将postfixconfiguration为使用dovecot进行SASL身份validation,因此,您可以更好地从其他方法开始,并确定是否可以让Dovecot处理这些哈希。

请记住,哈希被devise为不被“解密”。 当有人想要login时,应用程序将原始的盐,用户提供的密码和重新计算哈希,如果哈希匹配,密码是“正确的”。

这些只是原始散列devise商店在数据库中,或者他们存储在模块化encryption格式(开始$x$... )? 如果他们是crypt格式,只要您指定scheme=CRYPT ,Dovecot应该能够支持它们。 唯一的是我没有看到SHA-1的MCF ID,只有$ 5 $是SHA-256,$ 6 $是-512(都是SHA-2家族哈希)。

或者,如果Devise使用数据库可访问的函数来创build密码(如MySQL的PASSWORD()函数),那么您应该能够使用任何邮件服务器的数据库连接器来创build自定义的数据库查询进行身份validation,从而使您可以执行某些操作喜欢

 SELECT NULL AS password, 'Y' as nopassword, userid AS user FROM users WHERE userid = '%u' AND mysql_pass = password('%w') 

我不确定这是否适合你,但在RSA的那个星期,有一家公司在那里为Linux上的mySQL提供透明数据encryption。 我以前从来没有见过这样做的好方法,但是这些人似乎已经拥有了。

当mySQL正在写入数据并被解密时,它们会encryption到光盘上。 根本没有改变应用程序或数据结构。 公司是Gazzang,网站是www.gazzang.com。

希望这可以帮助。