Виртуальные каталоги Exchange: какой за что отвечает
Каждый клиентский протокол 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-клиенты | Да |
mapi | MAPI over HTTP | Outlook для Windows 2013 SP1 и новее | Да |
Rpc | Outlook Anywhere (RPC over HTTP) | Старые Outlook, fallback без MAPI/HTTP | Если есть старые клиенты |
EWS | Exchange Web Services (SOAP) | Outlook for Mac, Apple Mail и Календарь на macOS, Teams, сторонние приложения | Да |
Microsoft-Server-ActiveSync | Exchange ActiveSync (EAS) | iOS Mail, Android-клиенты, Outlook mobile, приложение «Почта» Windows | Да |
OAB | Offline Address Book | Outlook в кэшированном режиме | Да |
owa | Outlook on the web | Браузер | Да |
ecp | Exchange Admin Center, настройки OWA | Админы и пользователи через браузер | Только пользовательская часть |
API | Exchange REST API | Надстройки Outlook, Outlook mobile при Hybrid Modern Auth | По необходимости |
PowerShell | Remote 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-файлы.



