вторник, 7 июня 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://<smtp-domain>.ru/Autodiscover/Autodiscover.xml
  3. HTTPS запрос к записи Autodiscover домена (https://autodiscover.<smtp-domain>.ru/Autodiscover/Autodiscover.xml)
  4. Проверка локального XML файла
  5. HTTP перенаправление с http://<smtp-domain>.ru/Autodiscover/Autodiscover.xml на HTTPS-сайт
  6. Поиск в DNS-е SRV записи _autodiscover._tcp.<smtp-domain>.ru
  7. Кэшированные данные в профиле Outlook (Outlook 2013 и выше), при условии успешного предыдущего автообнаружения
Outlook последовательно перебирает эти методы, и если успешный ответ получен, дальнейшие проверки не выполняются. Если ни один из методов не вернул ответа, процедура Autodiscover считается проваленной.
Примечание. В Outlook 2016 помимо использования по-умолчанию MAPI over HTTP разработчики решили полностью выпилить возможность ручной настройки подключения к Exchange, теперь настройка ящика Exchange возможно только через автообнаружение. Протоколы Active Sync, POP и IMAP по-прежнему настраиваются вручную.
Для доменной среды предпочтительный метод автообнаружения —  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.
Медленный autodiscover для внешних клиентов в Outlook 2016Чтобы убрать эту проблему, нужно чтобы имя домена вело на сайт или любой веб сервер с доступным 443 портом. В этом случае Outlook за несколько мгновений поймет, что этот способ автообнаружения не доступен и перейдет к следующему. Для этого в корне DNS своего домена нужно создать  запись @, которая будет указывать на IP адрес вашего  сайта.
Если этот способ по какой-то причине не применим, можно с помощью редактирования реестра заставить Outlook 2016 пропускать определенные типы проверок. Для этого в веткеHKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\16.0\Outlook\AutoDiscoverнужно создать ключ типа DWORD со значением 1. Возможные имена ключей (имена говорят сами за себя):
  • ExcludeHttpsRootDomain
  • ExcludeScpLookup
  • ExcludeHttpsAutoDiscoverDomain
  • ExcludeHttpRedirect
  • ExcludeSrvRecord
Т.е. чтобы отключить 2 тип проверки  (HTTPS запрос к корневому домену) нужно создать ключ с именемExcludeHttpsRootDomain и значением 1.
ExcludeHttpsRootDomain - отключить проверку
Примечание. Аналогичные команды для различных версий 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 выполняться значительно быстрее.

Комментариев нет:

Отправить комментарий