Exchange 2013 MAPI/HTTP

exchange-2013-logoВсем привет!

В недавно вышедшем Exchange 2013 SP1 был представлен новый протокол для клиентских подключений – MAPI over HTTP (MAPI/HTTP). В этой статье рассмотрим что это и как оно работает.


 

Немного теории

Еще со времен Exchange 2003 клиенты Outlook могли подключаться к серверу, используя протокол HTTP. Т.к. обращение клиента с сервером при обычном подключении происходило с использованием протокола MAPI (который на самом деле не является протоколом, как его обычно называют, а неким интерфейсом, набором функций), то цепочка получалась следующая: MAPI заворачивался в RPC – RPC заворачивался в HTTP и затем HTTP пакет отправлялся серверу. Этот способ подключения получил название Outlook Anywhere (или RPC-over-HTTP). Недостатком такой схемы было то, что RPC протокол “full-duplex”, в то время как HTTP протокол – “half-duplex”. Поэтому для реализации RPC-over-HTTP приходилось создавать 2 подключения для входящего RPC трафика и для исходящего RPC трафика (RCP_IN_DATA и RPC_OUT_DATA).

В общем виде, схема взаимодействия клиента Outlook с сервером Exchange выглядит следующим образом:

rpc-over-http

Что же нам предлагает MAPI-over-HTTP? Этот способ подключения исключает из схемы протокол RPC и упрощает его до следующего вида:

mapi-over-http

Более подробно, про новый способ подключения можно почитать вот здесь (Exchange Server 2013 Transitions from RPC to HTTP) и посмотреть видео здесь (Exchange 2013 and MapiHttp) и здесь (Outlook 2013 Client Protocols).

 

Практика

Давайте теперь на практике посмотрим, как работает MAPI-over-HTTP.

Стоит сразу отметить, что подключаться через MAPI-over-HTTP может только Outlook 2013 SP1. Скорее всего, такая же возможность появится и для Outlook 2010, но пока такой информации нету.

Итак, чтобы включить на Exchange сервере возможность использования MAPI-over-HTTP нужно проделать следующее (а по умолчанию такая возможность выключена):

  1. Сконфигурировать InternalUrl и ExternalUrl для виртуального каталога Mapi. Сделать это можно с помощью команды:

    Set-MapiVirtualDirectory -Identity "EX-01\mapi (Default Web Site)" -InternalUrl https://mapi-internal.e13.lab/mapi -ExternalUrl https://mapi-external.e13.lab/mapi -IISAuthenticationMethods Negotiate, Ntlm, OAuth
  2. Включить MapiHttp командой:

    Set-OrganizationConfig -MapiHttpEnabled $true

После этого, спустя примерно 40 минут, служба Autodiscover начнет отдавать данные и для MAPI-over-HTTP.

 

Давайте посмотрим, что выдает служба Autodiscover для Outlook 2013 RTM и Outlook 2013 SP1.

Outlook 2013 RTM:

Outlook_RTM_AD

Outlook 2013 SP1:

outlook_sp1_ad

Получается, что служба Autodiscover разным клиентам выдает разные ответы, в частности для клиента Outlook 2013 SP1 возвращается протокол “Exchange MAPI HTTP”.

Если сейчас заглянуть в логи Autodiscover, то в них можно увидеть, как именно эта служба определяет клиента:

Запрос от Outlook 2013 RTM:

2014-03-01T18:22:34.463Z,be026704-e27f-41b6-aa29-bd68e27b04be,
15,0,847,30,,Negotiate,True,E13\Msft,,
Microsoft Office/15.0 (Windows NT 6.2; Microsoft Outlook 15.0.4420; Pro),10.200.0.241,EX-01,EX-01.E13.LAB,
POX,200,,0,0,1,,,,,GlobalThrottlingPolicy_995e4693-23c6-46a8-8801-3c6ef89f30d6,,,
0,3,0,3,,3,15.6238,ADSessionSettingsFromAddress=0;
ADRecipientSessionFindBySid=0;
RequestedUser=Msft@e13.lab;
S:ServiceCommonMetadata.RequestSize=345

Запрос от Outlook 2013 SP1 (в лог добавляется предпоследняя строка с проверкой версии клиента):

2014-03-01T18:18:06.729Z,f0be2f00-996b-43cd-8553-7641b6898954,
15,0,847,30,,Negotiate,True,E13\Msft,,
Microsoft Office/15.0 (Windows NT 6.2; Microsoft Outlook 15.0.4569; Pro),
10.200.0.240,EX-01,EX-01.E13.LAB,
POX,200,,0,0,1,,,,,GlobalThrottlingPolicy_995e4693-23c6-46a8-8801-3c6ef89f30d6,,,
0,3,0,3,,0,15.6223,ADSessionSettingsFromAddress=0;
ADRecipientSessionFindBySid=15.6223;
RequestedUser=Msft@e13.lab;
MapiHttpEnabledSource=Compared (minimum: 15.0.847.0  target: 15.0.847.0);
S:ServiceCommonMetadata.RequestSize=345

 

После того, как клиент получает новые настройки, появляется всем знакомое предупреждение :)

outlook_2013_switch

После перезапуска Outlook, подключение к Exchange серверу будет осуществляться по протоколу MAPI-over-HTTP.

Outlook_SP1_mapi

 

Бонус

Появление окна с предупреждение о необходимости перезапуска Outlook – не случайно. И вот почему. После переключения на MAPI-over-HTTP в окне “Outlook Connection Status” пропадают значения Proxy Server (на картинке выше – первые два подключения пропадут после очередного перезапуска Outlook).

Если теперь заглянуть в свойства профиля Outlook и посмотреть на имя сервера, то мы увидим следующее:

sp1_server

Полностью строка выглядит следующим образом: “https://mapi-external.e13.lab/mapi/emsmdb/?MailboxId=c69707d7-8519-4847-9de2-1279ff152501@e13.lab”. Т.е. вместо старой строки с подключением (mailbox.guid@domain.com), мы имеем новую строку, которая составляется из Url к виртуальному каталогу Mapi и mailbox.guid почтового ящика.

Еще один интересный момент. Заходим в настройки proxy подключения профиля Outlook и… ненаходим закладку “Connection” :)

connection_tab

 

Удачи!

 

 

Читайте также:

1 комментарий

  1. 13.12.2014

    […] Про этот протокол для Outlook 2013 SP1 можно почитать вот в этой статье: Exchange 2013 MAPI/HTTP […]

Добавить комментарий