我有一个带有我的电子邮件联系人的LDAP服务器,以便我可以通过姓名/电子邮件等查找联系人。但是,它似乎只搜索并找到任何联系人的第一个电子邮件地址。
例如,如果我有一个人:
LastName: Doe
FirstName: John
Email: jdoe@work.com
Email2: johndoe@home.com
Email3: johndoe@fun.com
它只搜索或返回第一封电子邮件。例如,如果我搜索“John”,它将仅返回“jdoe@work.com”,即使其他两个电子邮件地址中包含“john”。我尝试过的搜索过滤器是:
//This one will both look through and match the first email but ignores the 2nd/3rd
(|(displayName=*%v*)(mail=*%v*)(uid=*%v*)(givenname=*%v*)(sn=*%v*)(cn=*%v*))
//This one throws an error saying "mail2" and "mail3" are invalid filters.
(|(displayName=*%v*)(mail=*%v*)(mail2=*%v*)(mail3=*%v*)(uid=*%v*)(givenname=*%v*)(sn=*%v*)(cn=*%v*))
我应该使用什么?
此外,是否有人链接到某个页面,其中列出了我可以在ldap人员搜索中添加的所有可能的过滤器?
答案 0 :(得分:1)
过滤器:
(|(displayName=*%v*)(mail=*%v*)(uid=*%v*)(givenname=*%v*)(sn=*%v*)(cn=*%v*))
与条目不匹配:
LastName: Doe
FirstName: John
Email: jdoe@work.com
Email2: johndoe@home.com
Email3: johndoe@fun.com
因为没有任何过滤器断言与给定条目中的任何属性名称匹配。
(|(Email=jd*)(Email2=john*)(Email3=john*)(lastName=Do*))
会匹配。您是否考虑过使用您提供的示例条目的标准名称?
答案 1 :(得分:0)
Exchange不会在mail2或mail3等字段中存储其他mailaddresses。所有地址都存储在多值字段“proxyAddresses”中。该字段以
的形式为每个地址包含一行地址类型:地址
示例:
SMTP:test@contoso.local SMTP:user@contoso.local
示例中的第二个条目是该帐户的主要地址,因为SMTP前缀全部为大写。
所以你会搜索(proxyAddress = %v )或类似的东西。我不知道我的LDAP搜索语法。
修改:另一个选项是使用EWS网络服务的ResolveNames操作(请参阅http://www.infinitec.de/post/2009/04/13/Resolving-the-primary-email-address-with-Exchange-WebServices-ResolveNames-operation.aspx和http://msdn.microsoft.com/en-us/library/aa563518(v=exchg.140).aspx)。
答案 2 :(得分:0)
发布了Active Directory,其中包含一些有问题的架构选择。现在很难修复它们。
其中一个是邮件被标记为单值。这应该是一个多值属性。因此使用proxyAddresses,它尝试通过使用smtp:或x500:或SIP来重载具有更多信息的字符串语法属性:以指示地址的协议。然后大写(SMTP)表示主要和小写(smtp)表示次要。
对于单值的telephoneNumber也会出现这种情况,现在额外的值会溢出到属性otherPhone中。
同样的: