Фото пользователей в GAL Exchange 2010 и Outlook 2010

Долгое время всех интересовала и многократно обсуждалась в Exchange-сообществах возможность наладить фотографии пользователей в адресной книге GAL. Вобщем-то, в больших организациях, а тем более географически распределенных – было бы замечательно повесить картинку пользователя, которого вы никогда до этого не видели, или не часто встречаете. Сотрудники компаний весьма часто фотографируются на пропуски/бэйджики, и не редко эти фотографии публикуются на внутренних сайтах компаний. Но это все в отрыве от почты.

Было множество пересудов по поводу сторонних плагинов для Outlook, и вы даже можете взглянуть на пример кода для этого в MSDN. Несколько лет назад IT спецы написали ASP код для отображения фотографий сотрудников компании на внутреннем веб сайте, основываясь на аттрибуте идентификационного номера сотрудника (Employee ID) в Active Directory. Но это было больше для потехи самолюбия программеров, нежели корпоративное решение.

Больше так изголяться не придется, теперь в Exchange 2010 и Outlook 2010 это можно сделать легко и просто с помощью AD. В Active Directory существует аттрибут Picture (по классификации ldapDisplayName: thumbnailPhoto) для размещения фотографий, и вы можете легко вставить туда фото (не увлекайтесь, хайрез с ваших 20-мегапиксельных камер ни к чему :) ), но небольшую, до 10 KB – вполне, с помощью командлета Import-RecipientDataProperty Exchange 2010.

Держу пари – первым же вопросом у вас, при прочтении этого будет — «Насколько растолстеет база данных AD от импорта таких фотографий?» и «Как это скажется на трафике репликаций AD?». — Спокойно! Аттрибут ограничивает объемы контента до 10 KB, а командлет не позволит вам отправить файл больше этого размера. Вот, в примере ниже использовалась картинка в 9 KB, а ее еще можно ужать до 2KB-2,5KB, без особой потери качества, в таких-то масштабах картинок. К примеру, прикрепленный к учетке пользователя сертификат PKI занимает в базе примерно столько же места. Таким образом, хранение фотографий для 10,000 пользователей суммарно будет занимать около 100 Mb, а такие объемы — погоды не делают.

Примечание: * Рекомендуемый размер фотографий — 96×96 px.
А теперь со всем этим давайте попытаемся взлететь.


Некоторые изменения в Схему

Пункт первый: Схема AD. Требуется небольшое редактирование схемы — щелчок аттрибуту thumbnailPhoto, для его репликации в Global Catalog.

  1. Если вы еще не регистрировали оснастку MMC «AD Schema» — самое время:
    Regsvr32 schmmgmt.dll
  2. Открывайте оснастку «AD Schema»
  3. Разверните раздел «Attributes» и найдите thumbnailPhoto. (В оснастке AD Schema аттрибуты сортируются по ldapDisplayName).
  4. На странице свойств аттрибута выберите «Replicate this attribute to the Global Catalog» , и OK.


Редактирование аттрибута thumbnailPhoto для репликации в Global Catalog


Загрузка фотографий в Active Directory

Теперь можно приступать к загрузке фотографий с помощью командлета Import-RecipientDataProperty, как показано ниже:

Import-RecipientDataProperty -Identity "Vasya Pupkin" -Picture -FileData ([Byte[]]$(Get-Content -Path "C:\pictures\VasyaPupkin.jpg" -Encoding Byte -ReadCount 0))

Можно задействовать поточную операцию, применяя Get-Mailbox с фильтрами (или Get-DistributionGroupMember если вам нужны члены групп), а результаты потом отправить в цикл foreach. Имена пользователей и пути до изображений можно брать из CSV/TXT списка.


Фотографии в Outlook 2010

Теперь давайте займемся Outlook 2010 и посмотрим как там дела.

В свойствах Address Book/GAL для получателя:


Фото в свойствах пользователя из GAL

Теперь, когда вы получаете сообщения от пользователя, чье фото есть в базе — оно будет показано в предварительном просмотре письма:

При написании письма фотография также будет появляться, если навести курсор на имя получателя.


Фото получателя отображается при наведении курсора на адрес

Есть и другие места, где отображаются фото пользователей, наприер в секции Account Settings в виде Backstage Help.

Примечания от команды разработчиков Outlook

Команда разработчиков Outlook также обращает внимание на новый Outlook Social Connector, который отображает фотографии из GAL, а также из папки «Contacts» и социальных сетей, как показано на снимке:


Фото в панели «People» коннектора Outlook Social Connector

Есть еще видео о Коннекторе Соц-сетей для Outlook в блоге команды Outlook.

Фото в GAL и автономных адресных книгах (OAB)

Ну и после загрузки фотографий в Active Directory остается обновить автономную адресную книгу (OAB, Offline Address Book) для кеширующих клиентов Outlook. Делается это как всегда просто:

Update-OfflineAddressBook "Default Offline Address Book"

Аттрибуты OAB в Exchange 2010 могут настраиваться. Это можно сделать в свойствах ConfiguredAttributes объекта OAB (см.: Set-OfflineAddressBook cmdlet). Изначально ConfiguredAttributes распространяется с дефалтовым набором аттрибутов, и вы можете свободно редактировать набор, удаляя или добавляя нужные аттрибуты.

По умолчанию, thumbnailPhoto включается в OAB в качестве аттрибута Indicator. Это означает, что значение аттрибута не копируется в OAB, вместо этого он показывает, что клиет должен загрузить значение из AD. Если клиент Outlook (включая Outlook Anywhere по HTTPS) может обратиться в AD — фото будет загружено и показано. В отключенном режиме — ничего не грузится. Еще один пример подобного Индикатора — UmSpokenName аттрибут.

Все аттрибуты, включенные по умолчанию в OAB можно вывести командой:
(Get-OfflineAddressBook "Default Offline Address Book").ConfiguredAttributes

Для получения искомого результата и в автономном режиме, нужно изменить thumbnailPhoto на вид аттрибута «Value» в ConfiguredAttributes OAB. После того как вы сделаете это, и обновите OAB, фото будут добавляться в автономную адресную книгу (да-да, все 20,000 загруженных файлов :D ).
Опять же, в зависимости от количества пользователей и размеров фото — ожидайте прироста нагрузки на OAB, как минимум для всех пользователей по первому скачиванию, дальше проще, я проверял. Так что тестируйте весь механизм предварительно «на кошках», в тестовой среде, может вам и не захочется загонять фото в автономную адресную книгу OAB.

Чтобы Outlook в кеширующем режиме не отображали фотографии (помните: фото не в OAB, там только указатель на AD), можно просто удалить аттрибут thumbnailPhoto из свойств ConfiguredAttributes в OAB, следующей командой:

$attributes = (Get-OfflineAddressBook "Default Offline Address Book").ConfiguredAttributes
$attributes.Remove("thumbnailphoto,Indicator")
Set-OfflineAddressBook "Default Offline Address Book" -ConfiguredAttributes $attributes

Такие дела.
А на карибах сейчас +27 и периодически бывают дождики, но все равно клёво!
Что скажете?

MaxMVP Exchange 2010, Outlook

  1. Kevgeny
    19 Апрель 2010 в 12:45 | #1

    Какого размера должна быть фотграфия? Сто на сто пикселов?
    Квадратная?
    Например SharePoint любит квадратные фото, на мой взгляд 200х200 пикселов для него оптимальны.

    И как убрать фото? Можно наверноезаменить на blank, но хотелось бы по-правильному :-)

    • 19 Апрель 2010 в 17:04 | #2

      Там же написано «Рекомендуемый размер фотографий — 96×96 px»
      Убрать можно отредактировав аттрибут нужной учетной записи.

  2. Kevgeny
    19 Апрель 2010 в 19:33 | #3

    да, я при повторном просмотре увидел рекомендуемый размер.
    Теперь не могу в GAL получить фотографию. Атрибут объекта заполнен, значит проблема в Exchange. ОАБ пересоздавал, загружал на компьютер заново – не помогает.

  3. Kevgeny
    20 Апрель 2010 в 08:50 | #4

    В письме, в полях «кому» «от кого» и т.д.,фотография отображается, а в Address Book/GAL фото нет.
    Версия Outlook 14.0.45.36.1000 (32-разрядная)
    Ждём RTM?

  4. Павел
    20 Апрель 2010 в 10:48 | #5

    Максим, часто встречаю в вашем блоге стать практически дословно переведенные с блога команды разработчиков Exchange. Вы считаете, что не обязательно добавлять ссылки на оригинальные посты?

    • 20 Апрель 2010 в 12:59 | #6

      to Павел Доброхотов,
      Вы сильно ошибаетесь, на счет дословных переводов. Чтобы посмотреть, что такое дословный перевод воспользуйтесь Промтом, увидите разницу. Выложить перевод интересной статьи для широкой публики – лучше, чем писать в своем бложике «О, хаха, нашел интересную фичу – переименование почтовых ящиков» или что-нибудь похожее, как это делают некоторые другие. И такие статьи идут в отдельном разделе MS Exchage Team, на этом сайте об этом и указано. Уважайте и других, кому интресны эти материалы, и спасибо за ваше мнение.

  5. alex
    28 Май 2010 в 13:27 | #7

    а на Exchange 2003 это будет работать ?

Страницы комментариев
  1. 21 Март 2010 в 21:20 | #1
Improve the web with Nofollow Reciprocity.