Фото пользователей в 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:picturesVasyaPupkin.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 и периодически бывают дождики, но все равно клёво!
Что скажете?

  1. Pavel
    March 15th, 2010 at 09:09 | #1

    Супер! Еще одна причина переходить на 2010. Максим, у Вас в статье не все картинки отображаются.

    PS. Напечатайте фотку с карибов. :-)

    • March 15th, 2010 at 15:54 | #2

      Да. Спасибо Павел за наводку, баг поправил. Фотку с дня рождения? Ладно, будет )

    • March 17th, 2010 at 21:58 | #3

      Паша, перелогинься :)
      Фотки в Gmail’e, приглашения разосланы друзьям. Комменты приветствуются.


      местами фоткал на кредитный лансер, за качество извиняйте )

  2. Dim-soft
    March 15th, 2010 at 20:55 | #4

    а связка exchange 2007 + outlook 2010 так сумеет ?

  3. Sergey
    March 15th, 2010 at 22:41 | #5

    На Карибах всегда клёво)))

    • March 16th, 2010 at 23:37 | #6

      да :)

      • March 17th, 2010 at 21:47 | #7

        Кстати, для некоторых наших тупых и лживых “писательниц” поясню:
        Карибских островов действительно много, и выражение “на Карибах” означает несколько разных островов. Logic Epic fail. ТП такая ТП.
        Кстати вопрос: Уважаемый знатоки,
        Если человек выпросил в долг много денег, здоровьем собственного ребенка клялся их вернуть, а потом отказался – как он называется? а) Шлюха, b) Воровка, с) Ребята сверху еще ни одну сволочь не отпускали безнаказанной d) Все варианты верны.

        Берегите себя, не связывайтесь со старыми продажными толстозадыми суками!

  4. Maxim
    March 16th, 2010 at 11:11 | #8

    А на внешние контакты так можно делать?
    Скажем хочу что бы все письма от MS и других партнеров шли с логотипом.

  5. melcin
    March 17th, 2010 at 09:18 | #9

    @Dim-soft
    Каким образом. Если добавление атрибута возникает при forestprep.

  6. melcin
    March 17th, 2010 at 09:21 | #10

    @Maxim
    Это можно делать и в Оутлук 2007.

  7. Сергей
    March 18th, 2010 at 00:01 | #11

    @MaxMVP
    От такой действительно лучше держаться подальше, для нее нет ничего святого. А про деньги не переживайте, они вернутся.
    Удачи Вам!

  8. Марго
    March 18th, 2010 at 11:52 | #13

    @MaxMVP
    Знаете, Максим, деньги не любят, когда берут в долг и не возвращают. Их от такого потом не будет вообще. Так что эта барышня глупо поступила.

  9. Alexey
    March 18th, 2010 at 23:49 | #14

    @MaxMVP
    Если человек выпросил в долг много денег, здоровьем собственного ребенка клялся их вернуть, а потом отказался – значит он реальный дурак, или дура. Плохо таким в жизни придется.

  10. Panda
    March 19th, 2010 at 01:10 | #15

    Поддерживаю предыдущий камент – денег у нее после такого не будет никогда. А ты не парься и забей.

  11. Kevgeny
    April 19th, 2010 at 12:45 | #16

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

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

    • April 19th, 2010 at 17:04 | #17

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

  12. Kevgeny
    April 19th, 2010 at 19:33 | #18

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

  13. Kevgeny
    April 20th, 2010 at 08:50 | #19

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

  14. Павел
    April 20th, 2010 at 10:48 | #20

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

    • April 20th, 2010 at 12:59 | #21

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

  15. alex
    May 28th, 2010 at 13:27 | #22

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

  16. Иль
    October 1st, 2010 at 22:24 | #23

    Выполнил все инструкции – но не показывает нигде фото
    Exch 2010SP1 + Outlook 2010

  17. Anton
    October 11th, 2010 at 13:21 | #24

    Хорошая статья. Все отлично работает, правда я на 2007 делал.
    помогла dll от http://msexchangeteam.com/archive/2010/03/10/454223.aspx
    http://www.dewdney.co.uk/adext/adext.zip

  18. Vyacheslav
    December 1st, 2010 at 08:23 | #25

    Сделал всё как описано, в том числе и здесь http://msexchangeteam.com/archive/2010/03/10/454223.aspx
    С помощью tp://www.dewdney.co.uk/adext/adext.zip вижу, что фотки в AD загружены нормально.

    Но в Outlook 2010 изображений не видно.

  19. Дмитрий
    December 24th, 2010 at 15:26 | #26
  20. Константин
    March 11th, 2011 at 13:47 | #27

    А я так и не понял, всё это будет работать если в сети нет вообще Exchange? Есть только Active Directory 2008 и MS Outlook 2010.

  21. Виктор
    July 28th, 2011 at 11:42 | #29

    Благодарю за статью, а для групп можно картинки сделать?

  22. Виктор
    July 28th, 2011 at 12:59 | #30

    А как сделать картинки на группы?

  23. Денис
    November 7th, 2013 at 12:40 | #31

    Спасибо.

    А вот кто знает как сделать, что бы фото по умолчанию не обрезалось (получается так что со всех сторон урезается и все фото без макушек :) ), а что бы оно вписывалось – а не центрировалось.

  1. March 21st, 2010 at 21:20 | #1