Медленный Exchange Autodiscover в Outlook 2016

Медленный Exchange Autodiscover в Outlook 2016

Функция автоматического обнаружения (Autodiscover) появилась еще в Exchange Server 2007. Основанная задача Autodiscover – возможность поиска почтовым клиентом почтового сервера Exchange и автоматического подключения почтового ящика. От пользователя Outlook нужно только указать свое email и пароль, все остальное Outlook при помощи Autodiscover выполнит сам.

При тестировании нового почтового клиента Outlook 2016 при внешнем подключении к Exchange было замечено, что автоматическая настройка клиента может занимать несколько минут (в нашем случае около 8 мин). Проблема заключается в том, что Autodiscover отрабатывает слишком долго.

Чтобы разобраться с проблемой, нужно понимать порядок работы Autodiscover. Для корректной работы автоматического обнаружения клиент любым доступным способом должен получить XML файл с настройками и автоматически настроится согласно этим параметрам.

Клиенты Outlook 2007 и выше при первоначальной настройке пытаются обнаружить файл Autodiscover.xml несколькими способами, порядок перебора которых жестко запрограммирован в Outlook. Последовательно перебираются следующие варианты:

  1. Поиск и обращение к записи SCP (Service Connection Point) в Active Directory (работает только на компьютерах в составе домена Active Directory)
  2. Обращение по HTTPS к корневому домену (определяется по SMTP адресу пользователя) по url адресу https://.ru/Autodiscover/Autodiscover.xml
  3. HTTPS запрос к записи Autodiscover домена (https://autodiscover..ru/Autodiscover/Autodiscover.xml)
  4. Проверка локального XML файла
  5. HTTP перенаправление с http://.ru/Autodiscover/Autodiscover.xml на HTTPS-сайт
  6. Поиск в DNS-е SRV записи _autodiscover._tcp..ru
  7. Кэшированные данные в профиле Outlook (Outlook 2013 и выше), при условии успешного предыдущего автообнаружения

Outlook последовательно перебирает эти методы, и если успешный ответ получен, дальнейшие проверки не выполняются. Если ни один из методов не вернул ответа, процедура Autodiscover считается проваленной.

Примечание. В Outlook 2016 помимо использования по-умолчанию MAPI over HTTP разработчики решили полностью выпилить возможность ручной настройки подключения к Exchange, теперь настройка ящика Exchange возможно только через автообнаружение. Протоколы Active Sync, POP и IMAP по-прежнему настраиваются вручную.

Для доменной среды предпочтительный метод автообнаружения — Service Connection Point в Active Directory. Второй метод (HTTPS запрос с корню домена), практически не используется, но именно он и проверяется в первую очередь для внешних клиентов. Если адрес .ru ведет на сервер, который не доступен или не отвечает на HTTPS (443), процедура автообнаружения замирает, ожидая ответа и в итоге отваливается по таймауту. Отсюда большая задержка при настройке клиента.

Если запустить утилиту Test E-mail AutoConfiguration (средство Проверки автоконфигурации электронной почты), можно увидеть, что Autodiscover пытается выполнить 11 HTTPS запросов к http://.ru /autodiscover/autodiscover.xml, каждый из которых отваливается по таймату примерно через 30 секунд. Отсюда столь длинная задержка при первом запуске Outlook.

Медленный autodiscover для внешних клиентов в Outlook 2016Чтобы убрать эту проблему, нужно чтобы имя домена вело на сайт или любой веб сервер с доступным 443 портом. В этом случае Outlook за несколько мгновений поймет, что этот способ автообнаружения не доступен и перейдет к следующему. Для этого в корне DNS своего домена нужно создать запись @, которая будет указывать на IP адрес вашего сайта.

Если этот способ по какой-то причине не применим, можно с помощью редактирования реестра заставить Outlook 2016 пропускать определенные типы проверок. Для этого в ветке HKEY_CURRENT_USERSOFTWAREMicrosoftOffice16.0OutlookAutoDiscover нужно создать ключ типа DWORD со значением 1. Возможные имена ключей (имена говорят сами за себя):

  • ExcludeHttpsRootDomain
  • ExcludeScpLookup
  • ExcludeHttpsAutoDiscoverDomain
  • ExcludeHttpRedirect
  • ExcludeSrvRecord
  • ExcludeExplicitO365Endpoint (довольно новый параметр, появился в Outlook 2016 версии 16.0.6741.2017, см. доп. информацию в статье MS Outlook 2016 постоянно запрашивает пароль )

Т.е. чтобы отключить 2 тип проверки (HTTPS запрос к корневому домену) нужно создать ключ с именем ExcludeHttpsRootDomain и значением 1.

ExcludeHttpsRootDomain - отключить проверку

Примечание. Аналогичные команды для различных версий Outlook
Outlook 2010:
reg.exe add HKCUSoftwareMicrosoftOffice14.0OutlookAutoDiscover /v ExcludeHttpsRootDomain /t reg_dword /d 0x1 /f

Outlook 2013:
reg.exe add HKCUSoftwareMicrosoftOffice15.0OutlookAutoDiscover /v ExcludeHttpsRootDomain /t reg_dword /d 0x1 /f

Outlook 2016:
reg.exe add HKCUSoftwareMicrosoftOffice16.0OutlookAutoDiscover /v ExcludeHttpsRootDomain /t reg_dword /d 0x1 /f

Аналогично создается параметр с именем ExcludeHttpsAutoDiscoverDomain.

Таким образом, можно заставить Outlook 2016 пропускать все не доступные методы Autodiscover. В результате, при запуске Outlook эта проверка не будет выполняться, и сам процесс Autodiscover и первого запуска Outlook выполняться значительно быстрее.

Outlook
Медленный Exchange Autodiscover в Outlook 2016