Повільний 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.

Щоб прибрати цю проблему, потрібно щоб ім'я домену вело на сайт або будь-який веб сервер з доступним 443 портом. У цьому випадку Outlook за кілька миттєвостей зрозуміє, що цей спосіб автовизначення не доступний і перейде до наступного. Для цього в корені DNS свого домену потрібно створити запис @, яка буде вказувати на IP адреса вашого сайту.

Якщо цей спосіб з якоїсь причини не можна застосовувати, можна за допомогою редагування реєстру змусити Outlook 2016 пропускати певні типи перевірок. Для цього в гілці HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\ 16.0 \Outlook\AutoDiscover\ потрібно створити ключ типу DWORD зі значенням 1. Можливі імена ключів (імена говорять самі за себе):

  • ExcludeHttpsRootDomain
  • ExcludeScpLookup
  • ExcludeHttpsAutoDiscoverDomain
  • ExcludeHttpRedirect
  • ExcludeSrvRecord
  • ExcludeExplicitO365Endpoint (досить новий параметр, з'явився в Outlook 2016 версії 16.0.6741.2017, см. Доп. Інформацію в статті MS Outlook 2016 постійно запитує пароль)

Тобто щоб відключити 2 тип перевірки (HTTPS запит до кореневого домену) потрібно створити ключ з ім'ям ExcludeHttpsRootDomain і значенням 1.

Примітка. Аналогічні команди для різних версій Outlook
Outlook 2010.:
reg.exe add HKCU \ Software \ Microsoft \ Office \ 14.0 \ Outlook \ AutoDiscover / v ExcludeHttpsRootDomain / t reg_dword / d 0x1 / f
Outlook 2013:
reg.exe add HKCU \ Software \ Microsoft \ Office \ 15.0 \ Outlook \ AutoDiscover / v ExcludeHttpsRootDomain / t reg_dword / d 0x1 / f
Outlook 2016:
reg.exe add HKCU \ Software \ Microsoft \ Office \ 16.0 \ Outlook \ AutoDiscover / v ExcludeHttpsRootDomain / t reg_dword / d 0x1 / f

Аналогічно створюється параметр з ім'ям ExcludeHttpsAutoDiscoverDomain.

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