ldap如何在contacts';第二/第三个备用电子邮件地址?
我有一个LDAP服务器和我的电子邮件联系人,这样我就可以按姓名/电子邮件等查找联系人。但是,它似乎只搜索并找到任何联系人的第一个电子邮件地址 例如,如果我有一个人:ldap如何在contacts';第二/第三个备用电子邮件地址?,ldap,exchange-server,exchangewebservices,ldap-query,Ldap,Exchange Server,Exchangewebservices,Ldap Query,我有一个LDAP服务器和我的电子邮件联系人,这样我就可以按姓名/电子邮件等查找联系人。但是,它似乎只搜索并找到任何联系人的第一个电子邮件地址 例如,如果我有一个人: LastName: Doe FirstName: John Email: jdoe@work.com Email2: johndoe@home.com Email3: johndoe@fun.com 它只搜索或返回第一封电子邮件。例如,如果我搜索“John”,它将只返回“jdoe@work.com即使其他两个电子邮件地址中有“jo
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人员搜索中放置的所有可能的筛选器?Exchange不会在mail2或mail3等字段中存储其他邮件地址。所有地址都存储在多值字段“proxyAddresses”中。此字段包含每个地址的一行,格式为 地址类型:地址 例如: smtp:test@contoso.local SMTP:user@contoso.local 示例中的第二个条目是该帐户的主地址,因为SMTP前缀都是大写的 所以您可以搜索(proxyAddress=%v)或类似的内容。我对LDAP搜索语法一无所知 编辑:另一个选项是使用EWS Web服务的ResolveNames操作(请参阅和)。过滤器:
(|(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*))
会匹配的。您是否考虑过对您给出的示例条目使用标准名称?Active Directory发布时带有一些值得怀疑的模式选择。现在很难修复它们 其中之一是邮件,被标记为单值。这应该是一个多值属性。因此,使用proxyAddresses,它试图通过使用smtp:或x500:或SIP:来指示地址的协议,用更多信息重载字符串语法属性。大写(SMTP)表示主要,小写(SMTP)表示次要 电话号码为单值时也会发生这种情况,额外的值现在溢出到属性otherPhone中 同样适用于:
- 传真电话号码和其他传真电话号码
- labelledUri和url
- 家庭电话和其他家庭电话
- 寻呼机和其他寻呼机
- 移动和其他移动
(proxyAddress=*%v*)
和(proxyAddress=*%v*)
,但其他两封电子邮件仍然不会显示(它仍然不会搜索这些字段)!:(但我感谢您的帮助!:)试试(proxyAddresses=smtp:**%v*)。不幸的是,(proxyAddresses=smtp:**%v*)
也不起作用。虽然我最终能够让它搜索第二封和第三封电子邮件((smtpemail2=*%v*)(smtpemail3=*%v*),但它仍然只返回第一封电子邮件,尽管它是通过第二封或第三封找到的!“你知道如何让它返回这三封邮件吗?”@Don Rhummy你说的“它仍然只返回第一封邮件”是什么意思。它应该返回整个条目,包括所有属性的所有值,除非您只请求特定的属性,在这种情况下,它将为您提供这些属性。有关LDAP搜索请求(包括筛选器)的讨论,请参阅本文。抱歉,我想我不清楚。“Email”、“Email1”等是这些字段的“友好名称”。在ldap查询中,ldap服务器如何称呼它并不重要,“邮件”将搜索主电子邮件地址。@DonThummy当然重要。LDAP属性有名称和别名,您必须使用服务器能够理解的名称或别名。您似乎认为LDAP过滤器有一些神奇的特性,比如名称重写。他们没有。