Облачное хранилище
Виртуальные каталоги Exchange в IIS: Autodiscover, mapi, EWS, ActiveSync, OAB, owa, ecp
Каталоги Default Web Site в Exchange 2016, 2019 и SE

Виртуальные каталоги Exchange: какой за что отвечает

IIS Exchange catalogsКаждый клиентский протокол Exchange живёт в своём виртуальном каталоге IIS: Outlook ходит в mapi, телефоны в Microsoft-Server-ActiveSync, браузер в owa. Если знать эту карту, проще разбираться, почему не работает конкретный клиент, что публиковать наружу через reverse proxy и что закрыть.

Статья относится к Exchange 2016, 2019 и Subscription Edition (SE): набор каталогов у них одинаковый.

Front End и Back End

Начиная с Exchange 2016 в IIS на сервере два сайта. Default Web Site (порт 443) принимает клиентов: он проверяет аутентификацию и проксирует запрос дальше. Exchange Back End (порт 444) содержит те же каталоги и выполняет саму работу с почтовыми ящиками.

Всё, что описано ниже, относится к Default Web Site. Настройки аутентификации и URL меняют именно там, каталоги Back End без необходимости не трогают.

Сводная таблица

Все каталоги ниже находятся в Default Web Site (Front End, порт 443).

КаталогПротокол / сервисКто работаетНаружу
AutodiscoverАвтообнаружение (autodiscover.xml, JSON)Outlook (Windows, Mac), телефоны по ActiveSync, EWS-клиентыДа
mapiMAPI over HTTPOutlook для Windows 2013 SP1 и новееДа
RpcOutlook Anywhere (RPC over HTTP)Старые Outlook, fallback без MAPI/HTTPЕсли есть старые клиенты
EWSExchange Web Services (SOAP)Outlook for Mac, Apple Mail и Календарь на macOS, Teams, сторонние приложенияДа
Microsoft-Server-ActiveSyncExchange ActiveSync (EAS)iOS Mail, Android-клиенты, Outlook mobile, приложение «Почта» WindowsДа
OABOffline Address BookOutlook в кэшированном режимеДа
owaOutlook on the webБраузерДа
ecpExchange Admin Center, настройки OWAАдмины и пользователи через браузерТолько пользовательская часть
APIExchange REST APIНадстройки Outlook, Outlook mobile при Hybrid Modern AuthПо необходимости
PowerShellRemote PowerShell (Exchange Management Shell)EMS, EAC, скрипты админовНет
aspnet_clientСлужебная папка ASP.NETНиктоНет

Подробно по каждому каталогу

Autodiscover

С него клиент начинает. Outlook или телефон отправляет адрес почты, а Autodiscover возвращает URL всех остальных сервисов: MAPI, EWS, OAB, ActiveSync. Если Autodiscover сломан, новый профиль Outlook не создаётся, а Free/Busy и автоответы работают через раз.

Клиенты ищут его по имени autodiscover.<домен> или через SRV-запись _autodiscover._tcp. Внутри домена Outlook сначала берёт адрес из SCP в Active Directory.

mapi

MAPI over HTTP — основной протокол Outlook для Windows с 2013 SP1. Внутри два подкаталога: /mapi/emsmdb для доступа к ящику и /mapi/nspi для адресной книги. Если Outlook показывает «Отключено» или бесконечно просит пароль, первым делом проверяйте этот каталог и его аутентификацию.

Rpc

Outlook Anywhere, то есть RPC поверх HTTP. Это предшественник MAPI over HTTP. Сейчас он нужен для Outlook 2010, для Outlook 2013 без SP1 и как запасной путь, если MAPI/HTTP отключён для организации или конкретного ящика.

EWS

Exchange Web Services — SOAP API для почты, календаря и контактов. Через EWS работают:

  • Outlook for Mac, Apple Mail и Календарь на macOS;
  • Outlook для Windows, частично: Free/Busy, автоответы, MailTips, общие календари;
  • Teams и Skype for Business (календарь и присутствие);
  • архиваторы, CRM, резервное копирование, инструменты миграции, интеграции с учётными системами.

Если у сторонней системы «не приходит почта из Exchange», почти всегда речь про EWS.

Microsoft-Server-ActiveSync

Exchange ActiveSync для мобильных устройств: встроенная почта iOS, Gmail и почтовые клиенты на Android, Outlook mobile в обычном режиме, приложение «Почта» в Windows. Здесь же работают политики мобильных устройств, удалённая очистка и карантин устройств.

OAB

Offline Address Book — автономная адресная книга. Outlook в кэшированном режиме периодически скачивает её отсюда по HTTPS. Если сотрудники не видят новых коллег в адресной книге, проверьте генерацию OAB и доступность этого каталога.

owa

Outlook on the web, веб-почта в браузере. Путь https://<сервер>/owa.

ecp

Exchange Admin Center (EAC), веб-консоль администрирования. Здесь же пользовательская страница «Параметры» в OWA: правила, подпись, автоответ. Поэтому закрыть ecp снаружи целиком нельзя, пользователи потеряют настройки OWA. Ограничивают доступ к админке, а не к каталогу.

API

Exchange REST API. На локальном Exchange его используют надстройки Outlook (add-ins) и Outlook mobile при гибридной современной аутентификации (Hybrid Modern Auth). Без гибрида и надстроек он обычно не нужен снаружи.

PowerShell

Remote PowerShell для Exchange Management Shell. Сюда подключается EMS, через него же работает EAC. Аутентификация Kerberos по HTTP (порт 80). Публиковать наружу нельзя.

aspnet_client

Служебная папка ASP.NET с клиентскими скриптами. К протоколам Exchange отношения не имеет, клиенты туда не ходят. Упоминается здесь из-за безопасности, см. последний раздел.

Что публиковать наружу, а что закрыть

На reverse proxy или файрволе наружу пропускайте только то, чем реально пользуются внешние клиенты.

Публиковать:

  • /autodiscover — без него внешние Outlook и телефоны не настроятся;
  • /mapi, /rpc (второй — только если есть старые Outlook), /oab — для Outlook;
  • /ews — для Mac, Teams и интеграций;
  • /Microsoft-Server-ActiveSync — для телефонов;
  • /owa — для веб-почты.

С ограничениями:

  • /ecp — нужен пользователям для настроек OWA. Админку снаружи отключают через Client Access Rules (Exchange 2019) или правилами на reverse proxy;
  • /api — только при гибриде или если используются надстройки.

Никогда:

  • /powershell;
  • /aspnet_client;
  • Exchange Back End (порт 444) и любые нестандартные каталоги.

Полезные команды PowerShell

У каждого каталога есть внутренний и внешний URL. Именно их Autodiscover отдаёт клиентам, поэтому при проблемах с подключением начинайте с их проверки. Команды выполняются в Exchange Management Shell.

Get-OwaVirtualDirectory          | fl Server,InternalUrl,ExternalUrl
Get-EcpVirtualDirectory          | fl Server,InternalUrl,ExternalUrl
Get-WebServicesVirtualDirectory  | fl Server,InternalUrl,ExternalUrl
Get-MapiVirtualDirectory         | fl Server,InternalUrl,ExternalUrl
Get-ActiveSyncVirtualDirectory   | fl Server,InternalUrl,ExternalUrl
Get-OabVirtualDirectory          | fl Server,InternalUrl,ExternalUrl
Get-OutlookAnywhere              | fl Server,InternalHostname,ExternalHostname
Get-ClientAccessService          | fl Name,AutoDiscoverServiceInternalUri

Проверить, включён ли MAPI over HTTP для организации:

Get-OrganizationConfig | fl MapiHttpEnabled

Список всех приложений и виртуальных каталогов на сайте IIS:

Import-Module WebAdministration
Get-WebApplication -Site "Default Web Site" | select Path, PhysicalPath

Если каталог сломан (часто после неудачного обновления), его пересоздают. Пример для OWA:

Remove-OwaVirtualDirectory -Identity "SERVER\owa (Default Web Site)"
New-OwaVirtualDirectory -Server SERVER -WebSiteName "Default Web Site"

После пересоздания заново задайте InternalUrl, ExternalUrl и настройки аутентификации, затем выполните iisreset.

Безопасность: веб-шеллы и посторонние файлы

После волн атак ProxyLogon (2021) и ProxyShell злоумышленники массово оставляли веб-шеллы в каталогах Exchange. Любимые места — aspnet_client, owa\auth и ecp: файлы оттуда доступны снаружи без авторизации или с минимальной.

Что проверять периодически:

  • новые .aspx в C:\inetpub\wwwroot\aspnet_client и в %ExchangeInstallPath%FrontEnd\HttpProxy\owa\auth;
  • файлы с датой изменения, не совпадающей с датой установки CU или SU;
  • каталоги на Default Web Site, которые вы не создавали.

Найти недавно изменённые .aspx:

$paths = "C:\inetpub\wwwroot\aspnet_client", "$env:ExchangeInstallPath\FrontEnd\HttpProxy"
Get-ChildItem $paths -Recurse -Include *.aspx |
    where LastWriteTime -gt (Get-Date).AddDays(-30) |
    select FullName, LastWriteTime

Для полной проверки у Microsoft есть скрипт Exchange Health Checker и средство EOMT, а главное — вовремя ставить обновления безопасности.

Частые вопросы

Какой каталог Exchange использует Outlook? Outlook для Windows работает через mapi (MAPI over HTTP), настройки получает из Autodiscover, адресную книгу качает из OAB, а календари и автоответы частично берёт через EWS. Старые версии Outlook используют Rpc.

Через какой каталог работает почта на телефоне? Через Microsoft-Server-ActiveSync. Для первичной настройки телефону нужен ещё Autodiscover.

Можно ли закрыть ecp снаружи? Целиком нельзя: в ecp находятся пользовательские настройки OWA. Закрывают только доступ к админке.

Нужно ли публиковать PowerShell наружу? Нет. Remote PowerShell нужен только администраторам внутри сети.

Что такое aspnet_client в Exchange? Служебная папка ASP.NET, к протоколам Exchange не относится. Её стоит проверять на посторонние .aspx-файлы.

Облачное хранилище