Exchange 2013: протокол MAPI over HTTP

В Exchange 2013 SP1 появился новый протокол для клиентских подключений к почтовому ящику — MAPI over HTTP (MAPI/HTTP). Данный протокол предназначен для улучшения стабильности и надежности подключения Outlook к серверу Exchange за счет переноса транспорта на уровень HTTP. В этой статье мы расскажем об архитектуре, особенностях работы этого протокола и приведем небольшую инструкцию по его настройке.

В предыдущих версиях Outlook мог взаимодействовать с Exchange по протоколу RPC . В Exchange 2003 появилась еще один протокол подключения — RPC over HTTP (или Outlook Anywhere ). Этот протокол преимущественно использовался для безопасного подключения к Exchange серверу внешних клиентов. В Exchange 2013 Outlook Anywhere по умолчанию используется для взаимодействия как с внешними, так и с внутренними клиентами. По сути, при взаимодействии по этому протоколу MAPI трафик заворачивался сначала в RPC, потом RPC в HTTP и только потом HTTP пакет передавался серверу. Основным недостатком протокола RPC over HTTP является плохая стабильность работы на неустойчивых соединениях (в общедоступных Wi-Fi сетях или через Интернет).

Архитектура MAPI - Outlook Anywhere MAPI over HTTP (на самом деле используется HTTPS) исключает из схемы протокол RPC и основан на HTTP 1.1, т.е. клиенты для взаимодействия с сервером используют команду POST. Outlook, подключенный через MAPI over HTTP работает так же, как и EWS, EAS или OWA. При его использовании лучше отрабатывают сценарии переключения между сетями, сбои в сети, выход из спящего режима и режима гибернации и т.д.

Преимущества MAPI over HTTP

  • Быстрое переподключение при разрыве связи (переустанавливается только TCP, а не RPC соединение)
  • Независимость содержимого сессии от подключения (пользователь в рамках сессии может сменить сеть подключения)
  • Аутентификация с помощью HTTP протокола

Первоначально, MAPI/HTTP на стороне клиента поддерживался только в Outlook 2013 SP1, но сейчас, после установки обновления 2899591 ( https://support.microsoft.com/en-us/kb/2899591/en-us ), он будет работать также и в Outlook 2010.

Чтобы включить поддержку MAPI over HTTP , система должна соответствовать требованиям:

  • На CAS серверах должен быть установлен Exchange 2013 SP1
  • Для оптимальной производительности MAPI/HTTP должен быть установлен .NET framework 4.5.2
  • В качестве клиентов используется Outlook 2013 SP1 или Outlook 2010 с обновлением KB2899591

После установки Exchange 2013 SP1 на CAS сервере должна появиться виртуальная директория MAPI. Сам протокол MapiOverHTTP при этом отключен.

Виртуальный каталог MAPI Проверим, что атрибут ExternalUrl пустой:

Get-MapiVirtualDirectory | ft server, *url*

Get-MapiVirtualDirectory ExternalUrl, как мы видим, пустой, нам нужно его заполнить (в данном примере мы зададим и ExternalUrl и Internal Url, учтите что сертификат Exchange должен соответствовать адресам, указанным во внешнем и внутренним URL адресах).

Get-MapiVirtualDirectory | Set-MapiVirtualDirectory -InternalUrl –ExternalUrl -IISAuthenticationMethods NTLM,Negotiate

Осталось активировать MAPI over HTTP на уровне организации Exchange. Убедимся, что протокол отключен:

Get-OrganizationConfig | FL *mapi*

Get-OrganizationConfig mapi Проверим также, на данный момент Outlook для подключения к Exchange использует протокол RPC/HTTP.

Outlook подключение RPC over HTTP Активируем поддержку протокола MAPI/HTTP со стороны сервера:

Set-OrganizationConfig -MapiHttpEnabled $true

MapiHttpEnabled После выполнения команды нужно подождать около часа для применения всех изменений на стороне Exchange. Если нужно, ускорить процесс можно перезапуском MS Exchange Host Service и пула Autodiscover на Mailbox сервере.

При выполнении авто обнаружения (Autodiscover) , Outlook запросит у сервера возможность поддержки MAPI over HTTP ( X-MapiHttpCapability ). Если сервер поддерживает этот протокол, то клиент получит ответ с данными НТТР.

При переключении на новый протокол Outlook выдает предупреждение:

The Microsoft Exchange administrator has made a change that requires you quit and restart Outlook.

The Microsoft Exchange administrator has made a change that requires you quit and restart Outlook

После перезапуска Outlook должен подключиться к ящику по протоколу MAPI over HTTP. Об этом будет свидетельствовать строка HTTP в колонке протокола в свойствах подключения Outlook.

Статус подключения Outlook - HTTP протокол Проверить возможность подключения по новому протоколу можно, перейдя на URL . Таким нехитрым способом мы узнаем имя CAS сервера, на котором мы авторизовались и имя Mailbox сервера.

Exchange MAPI/HTTP Connectivity Endpoint Добавив в URL значение ?Showdebug=yes можно вывести более интересную информацию. ( _https://mail.contoso.com/mapi/emsmdb/?showdebug=yes )

Также проверить работу нового протокола можно с помощью командлета Powershll Test-OutlookConnectivity:

Test-OutlookConnectivity -RunFromServerId serv3 -ProbeIdentity OutlookMapiHttpSelfTestProbe

OutlookMapiHttpSelfTestProbe

Траблшутинг :

Логи нового протокола хранятся здесь:

  • CAS: %ExchangeInstallPath%LoggingHttpProxyMapi
  • Mailbox Server: %ExchangeInstallPath%LoggingMAPI Client Access
  • Mailbox Server: %ExchangeInstallPath%LoggingMAPI Address Book Service

При включении поддержки MAPI over HTTP в группе DAG все сервера должны его поддерживать, в противном случае клиенты не смогут пользоваться своими ящиками.

По оценкам Microsoft использование MAPI over HTTP несколько увеличивает нагрузку на CPU на серверах CAS, но уменьшает расход памяти для каждого пользоватлея на 50-60%.

Новый прокол подключения Outlook к ящикам Exchange выигрывает с точки зрения производительности и сетевой гибкости. По словам разработчикам Microsoft, возможно уже в Exchange Server 2016 протокол MAPI over HTTP станет основным протоколом подключения, а от RPC over HTTP будут постепенно отказываться.

EnglishRussianUkrainian