我有一台前几天刚安装的 Barracuda 垃圾邮件防火墙 300。我正在处理一个 LDAP 查询,以便将其与我的 Exchange 服务器一起使用。到目前为止,我拥有的是:
(&
(!userAccountControl:1.2.840.113556.1.4.803:=2)
(|
(sAMAccountName=${recipient_local_part})
(othermailbox=smtp:${recipient_local_part}@ourdomain.com)
(proxyaddresses=smtp:${recipient_local_part}@ourdomain.com)
(mail=${recipient_email})
(userPrincipalName=${recipient_local_part})
)
)
为了方便您,我已将其格式化。我试图过滤掉目录中被禁用的用户,因为他们可能有有效的地址,但我不想再接受他们的邮件。我们会长期保留他们的电子邮件地址,但公司政策不允许我从目录中删除它们。
当查询运行时,我收到以下错误:
failed to issue LDAP find operation: Bad search filter
查询无需 (!userAccountControl:1.2.840.113556.1.4.803:=2) 即可工作,但该行可以过滤掉已禁用的帐户。
如何使用 LDAP 有效地过滤掉已禁用的帐户?
答案1
对于我来说测试这个有点困难,但是我认为你需要用括号来对 !useraccountcontrol 和或块进行分组。
(&
(
(!userAccountControl:1.2.840.113556.1.4.803:=2)
(|
(sAMAccountName=${recipient_local_part})
(othermailbox=smtp:${recipient_local_part}@ourdomain.com)
(proxyaddresses=smtp:${recipient_local_part}@ourdomain.com)
(mail=${recipient_email})
(userPrincipalName=${recipient_local_part})
)
)
)
答案2
你为什么要检查这么多选项?proxyAddresses 部分应该足够了:
(&(!用户帐户控制:1.2.840.113556.1.4.803:=2)
(代理地址=smtp:${recipient_local_part}@ourdomain.com))
谢谢,
布莱恩·戴斯蒙德
活动目录最有价值专家