Как ldap выполняет поиск адреса электронной почты во втором / третьем альтернативных адресах электронной почты контактов? - PullRequest
1 голос
/ 09 августа 2011

У меня есть сервер LDAP с моими контактами электронной почты, так что я могу искать контакты по имени / электронной почте и т. Д. Однако кажется, что он только ищет и находит первый адрес электронной почты для любого контакта.

Например, если у меня есть человек:

LastName: Doe
FirstName: John
Email: jdoe@work.com
Email2: johndoe@home.com
Email3: johndoe@fun.com

Он только просматривает или возвращает первое электронное письмо. Например, если я ищу «Джон», он вернет только «jdoe@work.com», хотя на двух других адресах электронной почты есть «Джон». Фильтры поиска, которые я пробовал:

//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?

Ответы [ 3 ]

1 голос
/ 10 августа 2011

Фильтр:

(|(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*))

будет соответствовать.Рассматривали ли вы использование стандартных имен для примера записи, которую вы даете?

0 голосов
/ 29 марта 2017

Active Directory был выпущен с некоторыми вариантами схемы, которые сомнительны.Сейчас их трудно исправить.

Одним из них является то, что почта была помечена как однозначная.Это должен был быть многозначный атрибут.Таким образом, использование proxyAddresses, где он пытается перегрузить атрибут синтаксиса строки дополнительной информацией, используя smtp: или x500: или SIP: для указания протокола для адреса.Тогда верхний регистр (SMTP) означает первичный, а нижний регистр (smtp) означает вторичный.

Это также происходило для однозначного значения phoneNumber, и дополнительные значения теперь перетекают в атрибут otherPhone.

То же для:

  • факсимилеТелефонNumber и другиеFacsimileTelephoneNumber
  • labelledUri и url
  • homePhone и другиеHomePhone
  • пейджер и другиеPager
  • мобильный и прочийМобиль
0 голосов
/ 10 августа 2011

Exchange не хранит дополнительные почтовые адреса в таких полях, как mail2 или mail3. Все адреса хранятся в многозначном поле «proxyAddresses». Это поле содержит одну строку для каждого адреса в виде

адрес типа: адрес

Пример:

SMTP: test@contoso.local SMTP: user@contoso.local

Вторая запись в примере будет основным адресом для этой учетной записи, поскольку префикс SMTP указан в верхнем регистре.

Таким образом, вы будете искать (proxyAddress = % v ) или что-то в этом роде. Я не знаю синтаксис поиска LDAP из моей головы.

Редактировать : Другой вариант - использовать операцию ResolveNames веб-сервисов EWS (см. 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).

...