我有一个 LDAP 服务器,它通过端口 636 上的 ldaps 接受请求。我已经将它用于我的许多应用程序,并且我希望我的 dovecot 服务器也使用它进行身份验证。
dovecot ldap 配置:
uris = ldaps://<<ldap-url>>:636
auth_bind = yes
dn = <<dn>>
dnpass = <<pw>>
ldap_version = 3
base = <<base>>
deref = never
scope = subtree
default_pass_scheme = SSHA
blocking=yes # apparently this sometimes helps, but not in this case
# user filter
#user_attrs = mailHomeDirectory=mail,mailStorageDirectory=mail,mailQuota=quota_rule=*:bytes=%$
user_attrs =
user_filter = (&(objectClass=mailUser)(maildrop=%u))
# password filter
#pass_attrs = maildrop=user,userPassword=password
pass_attrs = userPassword=password
pass_filter = (&(objectClass=mailUser)(maildrop=%u))
#iterate_attrs = mail=user
#iterate_filter = (objectClass=mailUser)
LDAP 服务器已启动并正在运行,我可以使用 JXplorer 配置的 pass 和 base 绑定到配置的 dn,但不能使用 dovecot。
相关日志部分:
dovecot: auth-worker(15177): Error: LDAP: Can't connect to server: ldaps://ldap.ropi.dev:636
这个问题(以及扩展的解决方案)是一个非常独特的问题。所以我开始做这一切的全部原因是我想对我的服务器进行第一阶段。在大多数情况下,我从中删除了所有功能,这是最后一个。
这也意味着我有一段时间没有更新我的包了。
现在我使用 LetsEncrypt 证书进行 SSL 通信。问题是,LetsEncrypt 提供的链中的证书之一已于 2021.09.30 过期。由于我有一段时间没有更新系统,所以我的证书链没有新证书。这就是我不断收到 tls 握手错误的原因。
所以我的解决方案很简单:
感谢@naxto asenjo 帮助我发现了这个问题。