基于 LDAP 的 Dovecot 虚拟域设置

基于 LDAP 的 Dovecot 虚拟域设置

我在邮件服务器(我们称之为服务器 M)上设置了 Postfix + Dovecot 守护进程组合,它支持虚拟域和用户查找到 LDAP 服务器(我们称之为服务器 D)。现在,我已经设置了 Postfix 以将邮件传递给服务器 M 上专门创建的本地用户,以保存所有虚拟用户的邮件,因此用户的邮件目录格式为 /home/vmail/<domain>/<user id>。

在这种情况下,我还设置了 Dovecot 从用户目录中获取邮件:

用户数据库静态{
    args = uid=501 gid=501 主页=/home/vmail/%d/%n
}

密码查询如下:

passdb ldap {
    参数 = /etc/dovecot-ldap.conf
}

其中引用的配置文件包含以下内容:

主机 = 服务器 M
基础 = dc=www,dc=example,dc=com
ldap_version = 3
auth_bind = 是
pass_filter = (邮件=%u)

现在,此配置有效(LDAP 对象类实现了 inetOrgPerson),但是当我将 posixAccount 对象类添加到服务器 M 中的用户记录时,Dovecot 停止识别 user@domain 格式的用户。

检查邮件日志显示,Dovecot 以某种方式将用户识别为“user”而不是“user@domain”,从而导致我的 userdb 指令返回 /home/vmail//user 而不是 /home/vmail/domain/user

我应该如何更改配置才能让 Dovecot 再次将用户识别为“user@domain”?

答案1

在我看来,passdb passwd-file {...} 块或者类似的 userdb 块优先于 passdb ldap 块

答案2

找到答案了!

基本上,要让 Dovecot 在身份验证完成后将用户识别为“user@domain”,请添加:

pass_attrs = mail=用户

这会导致 Dovecot 从 LDAP 中的邮件属性识别用户。由于字段的格式为“user@domain”,因此 Dovecot 会将用户接受为“user@domain”

相关内容