1.2.4. 使用 LDAP 作为 Dovecot 身份验证后端
LDAP 目录中的用户通常可以向目录服务进行身份验证。Dovecot 可在用户登录到 IMAP 和 POP3 服务时使用此来验证它们。这个验证方法有几个优点,例如:
- 管理员可以在目录中集中管理用户。
- LDAP 帐户不需要任何特殊属性。它们只需要能够向 LDAP 服务器进行身份验证。因此,此方法独立于 LDAP 服务器上使用的密码存储方案。
- 用户不需要通过名称服务交换机(NSS)界面和可插拔验证模块(PAM)框架在服务器上本地提供。
先决条件
- Dovecot 已安装。
- 虚拟用户功能已配置。
- 到 LDAP 服务器的连接支持 TLS 加密。
- Dovecot 服务器上的 RHEL 信任 LDAP 服务器的证书颁发机构(CA)证书。
- 如果用户存储在 LDAP 目录中的不同树中,则存在用于 Dovecot 的专用 LDAP 帐户,以搜索目录。此帐户需要搜索其他用户的可辨识名称(DN)的权限。
- 如果启用了 FIPS 模式,这个 Dovecot 服务器支持 Extended Master Secret (EMS)扩展或使用 TLS 1.3。没有 EMS 的 TLS 1.2 连接会失败。如需更多信息,请参阅红帽知识库解决方案 强制实施 TLS 扩展"Extended Master Secret" 。
流程
在
/etc/dovecot/conf.d/10-auth.conf文件中配置身份验证后端:注释掉您不需要的
auth-*.conf.ext身份验证后端配置文件的include语句,例如:#!include auth-system.conf.ext通过取消下列行的注释来启用 LDAP 身份验证:
!include auth-ldap.conf.ext
编辑
/etc/dovecot/conf.d/auth-ldap.conf.ext文件,并按如下所示将override_fields参数添加到userdb部分:userdb { driver = ldap args = /etc/dovecot/dovecot-ldap.conf.ext override_fields = uid=vmail gid=vmail home=/var/mail/%n/ }由于值固定,Dovecot 不会从 LDAP 服务器查询这些设置。因此,这些属性也不是必须出现。
使用以下设置创建
/etc/dovecot/dovecot-ldap.conf.ext文件:根据 LDAP 结构,配置以下之一:
如果用户存储在 LDAP 目录中的不同树中,请配置动态 DN 查找:
dn = cn=dovecot_LDAP,dc=example,dc=com dnpass = <password> pass_filter = (&(objectClass=posixAccount)(uid=%n))Dovecot 使用指定的 DN、密码和过滤器在目录中搜索身份验证用户的 DN。在此搜索中,Dovecot 将过滤器中的
%n替换为用户名。请注意,LDAP 搜索必须只返回一个结果。如果所有用户都存储在特定条目下,请配置 DN 模板:
auth_bind_userdn = cn=%n,ou=People,dc=example,dc=com
启用绑定到 LDAP 服务器的身份验证以验证 Dovecot 用户:
auth_bind = yes将 URL 设置为 LDAP 服务器:
uris = ldaps://LDAP-srv.example.com为安全起见,只能通过在 LDAP 协议上使用 LDAPS 或
STARTTLS命令来使用加密连接。对于后者,在设置中额外添加tls = yes。对于正常工作的证书验证,LDAP 服务器的主机名必须与其 TLS 证书中使用的主机名匹配。
启用 LDAP 服务器的 TLS 证书的验证:
tls_require_cert = hard将基本 DN 设置为要开始搜索用户的 DN:
base = ou=People,dc=example,dc=com设置搜索范围:
scope = onelevelDovecot 仅在指定的基本 DN 中使用
onelevel范围搜索,并且也使用子树中的subtree范围搜索。
对
/etc/dovecot/dovecot-ldap.conf.ext文件设置安全权限:# chown root:root /etc/dovecot/dovecot-ldap.conf.ext # chmod 600 /etc/dovecot/dovecot-ldap.conf.ext
后续步骤