Dovecot 与 PostgreSQL 用户数据库:密码散列

Dovecot with PostgreSQL users database: Password hashing

我正在尝试使用 Postfix 和 Dovecot 设置邮件服务器。

我使用 bcrypt 散列密码将我的用户存储在 PostgreSQL 数据库中。

经过一些研究,我找到了从 PostgreSQL 数据库读取用户的方法,但密码以纯文本形式存储。

如何设置 Dovecot 以使用 bcrypt 散列密码从 PostgreSQL 数据库中读取用户?

Dovecot 完全支持 BLF-CRYPT password scheme 自从最近的 2.3 版本显然。

对于 PostgreSQL 使用何种方案应该没有什么区别,密码只是数据库中的一个文本字段,它以散列文本形式存储和检索。用于散列的方案由密码的前几个字符已知,例如 a$ 代表 bcrypt

可以使用 doveadm -s BLF-CRYPT 对密码进行哈希处理,并将输出复制到数据库中与用户对应的行中的密码字段。

对于身份验证,dovecotpostfix 一样,需要用户提供的 SQL 查询,其配置中包含一些已记录的占位符(请参阅 password_query),因此它不需要假定 table 或用户视图的任何特定结构。