Инструменты и методы диагностики соединений с клиентами MAPI

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

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

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 при этом отключен.

Проверим, что атрибут ExternalUrl пустой:

Get-MapiVirtualDirectory | ft server, *url*

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

Get-MapiVirtualDirectory | Set-MapiVirtualDirectory -InternalUrl https://mail.contoso.com/mapi –ExternalUrl https://mail.contoso.com/mapi -IISAuthenticationMethods NTLM,Negotiate

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

Get-OrganizationConfig | FL *mapi*

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

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

Set-OrganizationConfig -MapiHttpEnabled $true

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

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

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

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

Проверить возможность подключения по новому протоколу можно, перейдя на URL https://mail.contoso.com/mapi/emsmdb . Таким нехитрым способом мы узнаем имя CAS сервера, на котором мы авторизовались и имя Mailbox сервера.

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

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

Test-OutlookConnectivity -RunFromServerId serv3 -ProbeIdentity OutlookMapiHttpSelfTestProbe

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

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

  • CAS: %ExchangeInstallPath%\Logging\HttpProxy\Mapi\
  • Mailbox Server: %ExchangeInstallPath%\Logging\MAPI Client Access\
  • Mailbox Server: %ExchangeInstallPath%\Logging\MAPI 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 будут постепенно отказываться.

Основанное на COM -модели, а также программный интерфейс обработки сообщений от компании Microsoft , позволяющий приложениям работать с различными системами передачи электронных сообщений . MAPI позволяет получать, читать, создавать, отправлять сообщения, присоединять к ним файлы, получать доступ к присоединенным файлам и т. д.

Примерами приложений, использующих MAPI, являются Microsoft MAPI Controls и Microsoft Outlook .

Архитектура MAPI

MAPI обеспечивает единообразные способы взаимодействия приложений со множеством различных систем передачи электронных сообщений. Подсистема MAPI включает в себя:

  • программные интерфейсы;
  • спулер MAPI - отдельный процесс, посылающий сообщения в систему передачи электронных сообщений и принимающий от неё сообщения;
  • общий интерфейс пользователя - диалоговые окна , при помощи которых пользователь может найти адрес, создать и отправить сообщение.

Между подсистемой MAPI и системами передачи сообщений находятся поставщики услуг, связывающие системы. Большинство систем передачи сообщений включает три вида услуг: поставщиков хранения сообщений, поставщиков адресной книги или каталогов и поставщиков транспорта сообщений. Существуют и другие, реже используемые поставщики, такие как поставщики захвата сообщений и поставщики профилей.

Сообщения создаются при помощи форм, путём ввода информации пользователем или программно, без участия пользователя. Перед отправкой сообщения поставщик хранилища сообщений проверяет уникальность каждого адресата и наличие всей необходимой для передачи сообщения информации. В случае успешной проверки, сообщение помещается в очередь исходящих сообщений. Если хранилище сообщений имеет сильную связь (то есть может связываться с ним напрямую, без использования интерфейса MAPI) с поставщиком транспорта и сообщение не требует дополнительной обработки, то оно посылается поставщику транспорта без использования спулера. В остальных случаях спулер при необходимости производит обработку сообщения и, основываясь на адресе получателя, находит подходящий для отправки сообщения поставщик транспорта.

Интерфейсы MAPI

Имеется несколько клиентских интерфейсов MAPI:

  • MAPI - основной интерфейс, основан на технологии COM. Остальные API являются прослойкой между клиентским приложением и MAPI.
  • Simple MAPI - содержит набор функций, обеспечивающих базовый уровень функциональности. Рекомендуется использовать только для обратной совместимости со старыми приложениями.
  • Common Messaging Calls (CMC) - кроссплатформенное API, основанное на программном интерфейсе X.400 (XAPIA). Содержит набор функций для добавления в приложение простых возможностей работы с сообщениями.
  • Collaboration Data Objects (CDO) Library (предыдущие версии назывались OLE Messaging Library, Active Messaging Library) - содержит объекты OLE-автоматизации для приёма и отправления электронной почты и работы с папками и с адресной книгой.

Формы

Формы MAPI предназначены для создания и просмотра сообщений. Для каждого класса сообщений необходима своя форма. MAPI определяет несколько классов сообщений и реализует формы для их просмотра. Каждая форма реализуется в виде исполняемого COM-сервера, называемого сервером форм. Для использования формы приложение через интерфейс форм MAPI обращается к менеджеру форм, который загружает необходимый сервер форм и устанавливает связь между ним и вызывающим приложением.

Поставщики услуг

Поставщики услуг реализуют объекты, используемые прежде всего MAPI, но некоторые из которых могут использоваться и клиентскими приложениями. Часть объектов реализуется всеми поставщиками услуг, остальные специфичны для одного типа поставщика. Следующие объекты могут быть реализованы поставщиками:

  • Контейнер адресной книги - содержит элементы адресной книги; поставщик адресной книги может иметь один или несколько контейнеров адресной книги.
  • Вложение - содержит дополнительные данные, связанные с сообщением.
  • Элемент управления - кнопки, вызывающие обработку при их нажатии.
  • Список рассылки - описывает группировку индивидуальных адресатов сообщений.
  • Папка - содержит сообщения и контейнеры сообщений.
  • Регистрация - обрабатывает информацию о событиях и запросы клиентов.
  • Адресат сообщения - описывает индивидуального адресата сообщения.
  • Сообщение - содержит информацию, которую можно послать адресатам при помощи системы электронных сообщений.
  • Хранилище сообщений - иерархическая база данных сообщений.
  • Поставщик - обрабатывает запуск и остановку поставщика.
  • Захват спулера - производит специальную обработку входящих и исходящих сообщений.
  • Состояние - обеспечивает доступ к состоянию поставщика услуг.
  • Таблица - обеспечивает доступ к данным объекта в виде строк и столбцов, аналогично таблицы базы данных.

На этой странице:

  • Outlook Web Access (OWA) - веб-интерфейс доступа к ящику - полный доступ к личным данным ящика и почте через обозреватель
  • Соединение по протоколам POP3 / IMAP / SMTP - доступ к почте через обычные почтовые протоколы, доступа к личным данным нет (они продолжают быть доступны через OWA)
  • Соединение с коммуникаторами Windows Mobile (устарело) - полный доступ к личным данным ящика и почте с коммуникаторов/компьютеров Windows Mobile или иных (по возможностям производителя)
  • Соединение по протоколу MAPI (Outlook 2003/2007) - полная синхронизация личных данных и почты с вашим личным Microsoft Outlook

Outlook Web Access (OWA) - веб-интерфейс доступа к ящику

В личном кабинете указан сайт, который должен использоваться для работы с OWA. Сайт работает по протоколу HTTPS.

Обычно это https://owa.1gb.ru/owa .

Соединение по протоколам POP3 / IMAP / SMTP

Может использоваться для почтовых клиентов, отличных от Microsoft Outlook, а также в случае покупки тарифа Exchange без поддержки MAPI.

Все параметры подключения даны на странице с ящиками Exchange.

Соединение с коммуникаторами Windows Mobile

"Стандартный" или выше.

В настройках сервера для синхронизации необходимо выбрать сайт, соответствующий сайту для доступа к OWA.

В личном кабинете указан сайт, который должен использоваться для работы с OWA. Сайт работает по протоколу HTTPS. Обычно это owa.1gb.ru.

Логин - полный логин в формате, аналогичном ad1\[ваш логин], он показан в личном кабинете на странице с ящиками Exchange. Здесь ad1 - имя домена, логин - имя пользователя, если есть отдельное окно для домена, то ad1 необходимо записать туда, а имя пользователя писать без ad1.

Альтернативный порт для SMTP сервера - 587. Используйте его в том случае, если у вас не получается отправить почту.

Соединение по протоколу MAPI (Outlook 2003/2007)

Возможность доступна в тарифе ящика "Расширенный" .

Вам потребуются следующие параметры:

По умолчанию, протокол MAPI требует доступа по ряду TCP портов, которые часто закрыты для подключения (порты 135, 6000-6004). В том случае, если MAPI не работает, попробуйте описанные далее варианты:

Альтернативный порт для SMTP сервера - 587. Используйте его в том случае, если у вас не получается отправить почту.

Подключение к Exchange с помощью VPN

Возможность доступна и для Outlook 2003, и для Outlook 2007.

Параметры VPN подключения и пример работы описаны на странице https://www.1gb.ru/1152 .

Подключение к Exchange с помощью HTTPS (Outlook Anywhere)

Возможность доступна для Outlook 2007.

Старое или внутренне название технологии - RPC over HTTP(S). Outlook Anywhere позволяет подключаться к Exchange серверу по протоколу HTTPS, в том числе - через обычный HTTP(S) прокси.

  • Работает в любых сетевых условиях (HTTPS доступ есть практически на любом компьютере)
  • Медленнее, чем прямой MAPI или VPN
  • В случае использования HTTP-прокси менее безопасно, чем VPN

Важно: для того, чтобы Outook Anywhere заработал на вашем компьютере, необходимо установить сертификат безопасности .

Для настройки Outlook Anywhere в свойствах учетной записи Exchange нужно открыть закладку Connection, внизу поставить галку "Connect to Microsoft Exchange using HTTP", затем установить дополнительные опции с помощью кнопки "Exchange Proxy Settings".

Мы всегда готовы ответить на ваши вопросы!

После того, как сервис CommuniGate Pro добавлен в Почтовый профиль, параметры сервиса могут быть перенастроены. Позже вы можете выбрать пункт Mail ("Почта") в Панели Управления, открыть там требуемый Профиль и изменить установки сервиса CommuniGate Pro . Вы можете также использовать пункт Services в меню Tools программы Outlook для того, что бы изменить установки сервиса CommuniGate Pro.

Сервер

Панель Server (Сервер) позволяет вам указать данные сервера CommuniGate Pro и данные Пользователя:

Server Name Это имя вашего сервера CommuniGate Pro. Оно должно быть именем домена, имеющего A-запись в DNS, указывающую на IP-адрес сервера.
Обратите внимание: MAPI-Коннектор добавляет это имя к Имени Пользователя (смотрите ниже), что бы сформировать полное имя пользователя и отправить его на сервер. Эта возможность упрощает поддержку нескольких доменов на одном IP адресе. Убедитесь, что указанное имя является или именем некоторого Домена , обслуживаемого CommuniGate Pro, или Псевдонимом Домена, зарегистрированным в CommuniGate Pro; в противном случае сервер выдаст сообщение об ошибке the account has been moved to a remote system ("пользователь был передвинут на удаленную систему"). Server Port Порт, который использует сервер CommuniGate Pro для MAPI клиентов. Это тот же порт, что используется для IMAP клиентов. Use a Secure (SSL/TLS) connection Если выбрана эта опция, MAPI-Коннектор устанавливает незащищённое сетевое соединение на указанный порт и использует команду STARTTLS для того, что бы шифровать все данные, пересылаемые между рабочей станцией и Сервером. Команда STARTTLS позволяет вам использовать один и тот же IMAP порт как для незащищённых, так и для безопасных соединений.
Если выбрана эта опция и указан Порт Сервера 993 (стандартный номер порта для безопасных IMAP соединений), то MAPI-Коннектор будет устанавливать с этим портом безопасное соединение. Этот метод должен использоваться только в том случае, если единственным доступным портом на сервере является порт для установки безопасных IMAP соединений.
Дополнительную информацию смотрите в разделе PKI . Use Windows Integrated Authentication (Kerberos) Если ваша рабочая станция Windows входит в Windows/Active Directory Домен или контролируется другим Центром Распространения Ключей (KDC) Kerberos, то выберите эту опцию. MAPI-Коннектор будет использовать ваше имя пользователя и права в Windows для соединения с сервером CommuniGate Pro.
Если вы используете эту опцию, то убедитесь, что:

  • У этого Пользователя CommuniGate включён метод Аутентификации через Kerberos .
  • Ваш Домен в CommuniGate Pro имеет соответствующие Kerberos Ключи , экспортированные из Active Directory или Центра Распространения Ключей (KDC) Kerberos.
Use the Following Authentication details Укажите эту опцию, если вам необходимо явно задавать имя Пользователя. Account Name Это имя пользователя, с которой будет работать сервер CommuniGate Pro. Имя может быть полным и иметь вид accountName@domainName . Если используется простая форма имени (имя, не содержащее символ @), то MAPI-Коннектор добавит значение, указанное в поле Server Name , к указанному имени пользователя. Password Пароль для указанного Пользователя CommuniGate Pro. Remember Password Если этот флажок не отмечен, MAPI-Коннектор будет открывать диалоговое окно Входа на сервер каждый раз, когда ему необходимо будет соединиться с сервером CommuniGate Pro. Если эта опция выбрана, указанный пароль будет сохранен в настройках MAPI-Коннектора. Use Secure Authentication Если отмечен этот флажок, MAPI-Коннектор пересылает пароли, используя безопасный (шифрующий) SASL CRAM-MD5 метод. Безопасный метод не будет работать, если пароли хранятся на сервере с использованием метода одностороннего шифрования (дополнительную информацию смотрите в разделе Безопасность). В этом случае этот флажок не должен быть отмечен, а MAPI-Коннектор будет пересылать пароли в открытом виде.
Обратите внимание: если, соединяясь с сервером через публичные сети, вам необходимо пересылать пароли в открытом виде, то целесообразно отметить флажок Use a Secure connection ("Использовать безопасное соединение"), что бы вся информация передавалась в зашифрованном виде.

Установки Пользователя

Диалоговое окно Account Settings ("Установки Пользователя") открывается при нажатии кнопки Account Settings на панели Server. Это окно позволяет вам указать имя Пользователя, используемое MAPI-Коннектором, а так же другие настройки общего характера:

Подключение

Панель Connection ("Подключение") позволяет вам выбрать используемый метод сетевого соединения.

Offline При необходимости работы в автономном режиме (без соединения с сервером, используя только локальный кэш сообщений), вы можете указать Коннектору всегда начинать работу в автономном режиме.
Это предотвратит попытки соединения при старте (например, ваш модем не будет пытаться совершить вызов).

Дополнительно

На панели Advanced ("Дополнительно") вы можете указать других Пользователей CommuniGate Pro, с которыми вы хотите работать.

Используйте кнопки Add и Remove ("Добавить и Удалить") для того, что бы указать дополнительные имена Пользователей CommuniGate Pro. Если вы хотите получить доступ к Пользователю, находящемуся в другом домене, укажите его полное имя в форме: accountName @domainName .

Пользователи должны дать вам права на доступ к их папкам, в противном случае вы не сможете видеть и открывать папки, принадлежащие этим Пользователям. Дополнительную информацию смотрите в разделе Папки .

Настройки, указываемые в Синхронизации, будут доминировать над настройками выбора папок для работы в .

Include all folders in Send/Receive operation Используйте эту опцию для того, что бы выбрать для загрузки все папки пользователя, игнорируя выбор, сделанный в Outlook -> Tools -> Options -> CommuniGate Pro. Always download entire message Если эта опция отмечена, то Коннектор будет загружать сообщения полностью (в противном случае будут загружаться только Заголовки сообщений).Для задания места, в котором MAPI-Коннектор должен хранить свой локальный кэш, используйте настройки Корневой папки Кэша файлов. Локальный кэш будет использоваться для большинства операций MAPI-Коннектора; он также позволяет вам использовать MAPI приложения (такие, как Outlook) в автономном режиме. Local Outlook Application Data folder Используйте эту опцию если вы хотите хранить кэш файлы в месте, используемом на вашей рабочей станции по умолчанию. Этот кэш будет доступен только на этой рабочей станции. Global Outlook Application Data folder Используйте эту опцию если вы хотите задействовать возможности Windows по работе на разных компьютеров и планируете использовать Outlook на нескольких компьютерах.
Обратите внимание: кэш файлы могут быть довольно большими (так как, в зависимости от настроек Коннектора, в них может содержаться полная копия всех ваших папок, находящихся на сервере). Если кэш файлы становятся слишком большими, вы можете столкнуться с задержками при входе на другую рабочую станцию, так как это рабочая станция должна будет скопировать все данные заново. Custom Используйте эту опцию, если вы хотите хранить кэш файлы в специальном месте. Например, для того что бы избежать задержек при работе с других компьютеров, вы можете выбрать совместно используемую папку на файловом сервере.