Функция автоматического обнаружения (Autodiscover) появилась еще в Exchange Server 2007. Основанная задача Autodiscover – возможность поиска почтовым клиентом почтового сервера Exchange и автоматического подключения почтового ящика. От пользователя Outlook нужно только указать свое email и пароль, все остальное Outlook при помощи Autodiscover выполнит сам.
При тестировании нового почтового клиента Outlook 2016 при внешнем подключении к Exchange было замечено, что автоматическая настройка клиента может занимать несколько минут (в нашем случае около 8 мин). Проблема заключается в том, что Autodiscover отрабатывает слишком долго.
Чтобы разобраться с проблемой, нужно понимать порядок работы Autodiscover. Для корректной работы автоматического обнаружения клиент любым доступным способом должен получить XML файл с настройками и автоматически настроится согласно этим параметрам.
Клиенты Outlook 2007 и выше при первоначальной настройке пытаются обнаружить файл Autodiscover.xml несколькими способами, порядок перебора которых жестко запрограммирован в Outlook. Последовательно перебираются следующие варианты:
- Поиск и обращение к записи SCP ( Service Connection Point) в Active Directory (работает только на компьютерах в составе домена Active Directory)
- Обращение по HTTPS к корневому домену (определяется по SMTP адресу пользователя) по url адресу https://<smtp-domain>.ru/Autodiscover/Autodiscover.xml
- HTTPS запрос к записи Autodiscover домена (https://autodiscover.<smtp-domain>.ru/Autodiscover/Autodiscover.xml)
- Проверка локального XML файла
- HTTP перенаправление с http://<smtp-domain>.ru/Autodiscover/Autodiscover.xml на HTTPS-сайт
- Поиск в DNS-е SRV записи _autodiscover._tcp. <smtp-domain>.ru
- Кэшированные данные в профиле Outlook (Outlook 2013 и выше), при условии успешного предыдущего автообнаружения
Outlook последовательно перебирает эти методы, и если успешный ответ получен, дальнейшие проверки не выполняются. Если ни один из методов не вернул ответа, процедура Autodiscover считается проваленной.
Для доменной среды предпочтительный метод автообнаружения — Service Connection Point в Active Directory. Второй метод (HTTPS запрос с корню домена), практически не используется, но именно он и проверяется в первую очередь для внешних клиентов. Если адрес <smtp-domain>.ru ведет на сервер, который не доступен или не отвечает на HTTPS (443), процедура автообнаружения замирает, ожидая ответа и в итоге отваливается по таймауту. Отсюда большая задержка при настройке клиента.
Если запустить утилиту Test E-mail AutoConfiguration (средство Проверки автоконфигурации электронной почты), можно увидеть, что Autodiscover пытается выполнить 11 HTTPS запросов к http://<smtp-domain>.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 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 выполняться значительно быстрее.