Autodiscover mailcow и Outlook 365: почему нужны настройки
АйТи Фреш
Linux, Docker и DevOps

Thunderbird сам находит mailcow, а Outlook 365 просит серверы вручную: настраиваем Autodiscover

Автор: , директор ООО «АйТи-Фреш» · · ~12 мин чтения
Иллюстрация: Thunderbird получает настройки mailcow автоматически, а Outlook блокируется на пути ActiveSync и требует ручного ввода
Microsoft закрыла Outlook путь автонастройки

Если Thunderbird сам находит все настройки mailcow по домену, а Outlook 365 требует вписать IMAP и SMTP вручную или зависает на ActiveSync — DNS тут почти ни при чём. Новые версии Outlook больше не принимают Autodiscover от mailcow, а ActiveSync в них требует OAuth2. Разбираю, как это проверить и как подключать рабочие места без ручной беготни.

Симптом: одни клиенты настраиваются сами, другие — нет

Типичная картина при подключении новой компании к корпоративной почте на mailcow: вводишь e-mail и пароль в Thunderbird — через пару секунд клиент сам подхватывает IMAP, SMTP, порты и шифрование, писать вручную ничего не нужно. Тот же e-mail и пароль в Outlook (неважно, классический Outlook 365 из Microsoft 365 или новый Outlook для Windows) — мастер настройки либо сразу просит ввести серверы вручную, либо пытается подключиться по ActiveSync и зависает на проверке пароля.

Разница не случайна и не зависит от версии Windows или от того, кто настраивал DNS-записи. Thunderbird и Outlook используют два разных механизма автообнаружения — autoconfig и Autodiscover — и второй у новых версий Outlook работает по другим правилам, которые mailcow не может обойти на своей стороне.

Autoconfig и Autodiscover — не одно и то же

Thunderbird и open-source-клиенты используют механизм autoconfig: клиент запрашивает https://autoconfig.ваш-домен/mail/config-v1.1.xml (путь именно с /mail/), получает XML с настройками IMAP, SMTP и портов и сразу их применяет. В mailcow этот адрес обслуживает nginx-mailcow, передавая запрос скрипту autoconfig.php, — отдельной настройки не нужно, кроме DNS-записи autoconfig, указывающей на почтовый сервер.

Outlook использует другой протокол — Autodiscover: клиент отправляет POST на https://autodiscover.ваш-домен/Autodiscover/Autodiscover.xml (или находит сервер через SRV-запись _autodiscover._tcp) и ждёт ответ в формате, изначально разработанном для Exchange. mailcow отвечает скриптом autodiscover.php и работает из коробки; менять что-то нужно только для кастомизации — через data/web/inc/vars.local.inc.php, где задаётся массив $autodiscover_config, объединяемый со значениями по умолчанию из vars.inc.php. Ключевые параметры: 'autodiscoverType' ('activesync' по умолчанию или 'imap') определяет, какой протокол предложит ответ, а 'useEASforOutlook' => 'no' отключает объявление ActiveSync для десктопного Outlook, оставляя IMAP/SMTP.

Проверить, что оба механизма отвечают, можно без клиента. Для autoconfig достаточно curl -s https://autoconfig.example.com/mail/config-v1.1.xml — в ответе должны быть блоки incomingServer и outgoingServer с вашим FQDN. Для Autodiscover нужен POST с адресом ящика в теле запроса: curl -s -X POST -H 'Content-Type: text/xml' --data @req.xml https://autodiscover.example.com/Autodiscover/Autodiscover.xml, где в req.xml стандартный Request со схемой autodiscover/outlook/requestschema/2006 и полем EMailAddress. Если оба ответа пришли, а Outlook всё равно просит серверы вручную, — проблема не на вашей стороне.

Схема двух механизмов автонастройки почтовых клиентов mailcow: autoconfig для Thunderbird и Autodiscover для Outlook
Развилку решают autodiscoverType и useEASforOutlook

Почему новые версии Outlook не принимают Autodiscover от mailcow

Официальная страница mailcow по клиенту Outlook прямо говорит: Autodiscover работает только со старыми версиями Outlook, а новые — 2021, Outlook из Microsoft (Office) 365 и новый Outlook для Windows — его для mailcow больше не поддерживают и требуют ручной настройки. Там же сказано, что начиная с Outlook 2019 ActiveSync с mailcow не работает: Microsoft отключила в этих версиях Basic Auth для ActiveSync и требует OAuth2, а этот метод с mailcow несовместим. Формулировка документации: это не баг mailcow, а результат изменений на стороне Microsoft.

Честно предупрежу про пограничную зону: сама документация в разных местах относит Outlook 2019 то к «ещё работает», то к «уже нет». Поэтому на практике я считаю так: Outlook 2016 и старше — автонастройка может отработать полностью; 2019 — проверяю на конкретной машине; 2021, Microsoft 365 и новый Outlook — сразу ручной IMAP. Отсюда вывод: диагностировать стоит не пересборкой DNS-записей, а выяснением версии Outlook на конкретном рабочем месте.

И ещё одна вещь, которую многие пропускают: даже там, где ActiveSync в Outlook формально подключается, mailcow его для десктопа не рекомендует. На странице настройки Autodiscover прямо написано, что ActiveSync не стоит использовать с десктопным клиентом, а на странице Outlook — что поддержка ActiveSync в Outlook для Windows работает ненадёжно. Для старых версий есть обходной путь — ручной запуск классического мастера OLCFG.EXE из каталога Office16, — но я его использую только для экспериментов, не для продуктива.

Сравнение версий Outlook: какие принимают Autodiscover от mailcow, а каким нужна ручная настройка IMAP
Версия Outlook решает, нужна ли ручная настройка

Что настроить на стороне mailcow, чтобы не тратить время впустую

Раз ActiveSync для современных версий Outlook в любом случае не подключится, а для старых не рекомендован, разумно сразу отключить его объявление и не тратить время сотрудников на бесплодные попытки. Файл data/web/inc/vars.local.inc.php по умолчанию отсутствует — создаём его:

<?php
$autodiscover_config = array(
  'autodiscoverType' => 'imap',
  'useEASforOutlook' => 'no',
);

Значения сливаются с $autodiscover_config из vars.inc.php, остальные ключи трогать не нужно. После правки Autodiscover-ответ для старых Outlook будет предлагать IMAP/SMTP, а не пытаться пройти через ActiveSync. Отдельный клиент eM Client mailcow и так исключает из ActiveSync — это видно в комментариях к конфигу.

Второй частый источник поломанной настройки — перепутанные порты в блоках imap, pop3, smtp того же $autodiscover_config. У каждого сервиса есть поля port и tlsport, и документация mailcow предупреждает: не ставьте STARTTLS-порты в port. Autodiscover всегда указывает на TLS-обёрнутые сервисы (IMAPS 993, SMTPS 465) через port, а STARTTLS-порты (IMAP 143, submission 587) идут в tlsport и дополнительно объявляются только autoconfig для Thunderbird. По умолчанию значения берутся из переменных IMAPS_PORT, IMAP_PORT, SMTPS_PORT, SUBMISSION_PORT из mailcow.conf, так что переопределять их имеет смысл, только если снаружи открыт не весь набор портов. Если перепутать, клиент получит порт, где ждёт TLS-хендшейк, а сервер предлагает STARTTLS, — и подключение оборвётся таймаутом или ошибкой сертификата.

Ручная настройка Outlook: что вписывать, когда автообнаружение не сработает

Для Outlook 2021, Microsoft 365 и нового Outlook для Windows ручная настройка через IMAP — не временный костыль, а штатный сценарий, который описывает документация mailcow. Указываем: сервер входящей почты — полное доменное имя mailcow (например, mail.example.com), порт 993, шифрование SSL/TLS; сервер исходящей почты — тот же адрес, порт 587, STARTTLS; имя пользователя — полный e-mail. Порт 465 с SSL/TLS тоже рабочий вариант, если 587 закрыт у провайдера.

Отдельный нюанс — календари и контакты. Документация mailcow отмечает, что новый Outlook для Windows не поддерживает CalDAV и CardDAV ни сам, ни через плагин, Outlook для macOS тоже не синхронизирует календари и контакты с mailcow, а для классического Outlook на Windows рекомендован плагин Outlook CalDav Synchronizer с профилем SOGo. Если для компании важны общие календари, это стоит обсудить заранее, а не после жалобы «календарь не синхронизируется» — миграция на mailcow обычно и есть тот момент, когда такие ограничения удобнее всего проговорить.

И про новый Outlook для Windows у меня отдельная позиция. Документация mailcow предупреждает, что учётные данные, введённые в новом Outlook, передаются в Microsoft и обрабатываются в её дата-центрах, и прямо не советует его использовать. Для компании, которая ушла на собственный почтовый сервер как раз ради контроля над данными, это аргумент поставить классический Outlook или Thunderbird, а не спорить с пользователем, почему «встроенная почта Windows» — плохая идея.

Кейс «Смелая мысль»: 9 рабочих мест, три разных версии Outlook

У клиента — креативное агентство «Смелая мысль», 9 рабочих мест. При переезде на mailcow шесть сотрудников работали в Outlook из подписки Microsoft 365, трое — на старых лицензионных Outlook 2016 на личных ноутбуках. mailcow стоял с настройками по умолчанию (autodiscoverType = activesync, useEASforOutlook = yes). В первой волне три ящика на Outlook 2016 подключились через Autodiscover по ActiveSync без единого клика вручную. Остальные шесть на Microsoft 365 зависали на проверке пароля или сразу уходили к ручному вводу серверов.

Вместо попыток «починить» Autodiscover для всех разом мы переключили vars.local.inc.php на autodiscoverType = imap и useEASforOutlook = no. На шести рабочих местах Microsoft 365 настройка ушла на ручной ввод IMAP (993/SSL) и SMTP (587/STARTTLS) — по 5–7 минут на ящик вместе с проверкой отправки. Три Outlook 2016 через неделю тоже перевели на IMAP через Autodiscover: у одного из них ActiveSync начал дублировать письма в «Отправленных», а у дизайнера пропала синхронизация папки с вложенными подпапками — ровно та ненадёжность, о которой предупреждает документация. Календари у всех подключили через CalDav Synchronizer.

Отдельно предупредили руководителя агентства: при переходе на новый Outlook для Windows календари через CalDAV работать перестанут совсем, а учётные данные почты уйдут в облако Microsoft. Решили новый Outlook не ставить и зафиксировали это в памятке для новых сотрудников. Итог: все 9 ящиков работают по IMAP, суммарно на подключение ушло около полутора часов вместо целого дня переписки в поддержке.

Чек-лист массового подключения рабочих мест к mailcow с учётом версий Outlook
Памятка ручной настройки экономит часы

Чек-лист для массового подключения рабочих мест

Когда предстоит подключить сразу много рабочих мест к mailcow, я прохожу по одному порядку, чтобы не разбирать одни и те же жалобы по кругу. Сначала — узнать, какие версии Outlook реально стоят у сотрудников (2016 и старше, 2019, или 2021/Microsoft 365/новый Outlook): от этого зависит, сработает ли автонастройка вообще. Затем — проверить DNS-записи autoconfig и autodiscover и ответы обоих механизмов через curl. И сознательно решить, объявлять ли ActiveSync: я почти всегда ставлю autodiscoverType = imap, useEASforOutlook = no.

Дальше — проверить порты в $autodiscover_config: TLS-обёрнутые сервисы в port, STARTTLS — только в tlsport, не перепутать местами. И в конце — подготовить готовую памятку с параметрами ручной настройки (сервер, порт, шифрование, логин — полный e-mail) для тех рабочих мест, где Autodiscover заведомо не отработает: раздать её сразу, а не когда сотрудник уже написал в поддержку, что почта не настраивается.

Для телефонов логика обратная: ActiveSync на iOS и Android через встроенные почтовые приложения работает нормально, и отключение useEASforOutlook их не затрагивает — параметр касается только десктопного Outlook. А если нужно проверить, что именно отдаёт сервер конкретному клиенту, смотрите лог nginx-mailcow: docker compose logs --tail=200 nginx-mailcow | grep -i autodiscover покажет запросы Outlook и их коды ответа.

Частые вопросы

Почему Thunderbird настраивается сам, а Outlook — нет, хотя DNS-записи одинаковые?

Thunderbird использует autoconfig (файл /mail/config-v1.1.xml), который mailcow отдаёт сам. Outlook использует Autodiscover, а версии 2021, Microsoft 365 и новый Outlook для Windows больше не принимают Autodiscover от mailcow; ActiveSync в них требует OAuth2, который mailcow не поддерживает.

Это можно исправить на стороне mailcow — донастроить конфиг и заставить ActiveSync заработать?

Нет. Ограничение введено на стороне Microsoft для новых версий Outlook и не связано с настройками mailcow. Рабочий путь — ручная настройка IMAP/SMTP; на сервере стоит выставить autodiscoverType = imap и useEASforOutlook = no, чтобы старые клиенты тоже получали IMAP.

Какие версии Outlook ещё могут подключиться через ActiveSync и Autodiscover?

Outlook 2016 и старше ещё принимают Autodiscover от mailcow; Outlook 2019 — пограничный случай, документация сама себе противоречит, проверяйте на месте. Но даже для старых версий mailcow не рекомендует ActiveSync на десктопе — лучше IMAP.

Какие порты указывать при ручной настройке Outlook на mailcow?

Входящая почта (IMAP) — порт 993 с SSL/TLS; исходящая (SMTP) — порт 587 с STARTTLS или 465 с SSL/TLS. Имя пользователя — полный адрес электронной почты, а не логин без домена.

Почему после настройки Autodiscover Outlook подключается, но не видит календарь и контакты?

Потому что IMAP не синхронизирует календари. В классическом Outlook на Windows их подключают плагином Outlook CalDav Synchronizer (профиль SOGo). Новый Outlook для Windows и Outlook для macOS CalDAV/CardDAV с mailcow не поддерживают.

Нужно ли отдельно настраивать autoconfig и autodiscover DNS-записи или достаточно одной?

Нужны обе, если в компании есть и Thunderbird, и Outlook: CNAME autoconfig обслуживает Thunderbird и совместимые клиенты, CNAME autodiscover (и при желании SRV _autodiscover._tcp) — Outlook и мобильные клиенты. Они обслуживают разные протоколы и не заменяют друг друга.

Столкнулись с похожей задачей? Обращайтесь — решим

Если у вас происходит что-то из описанного в этой статье — или любая другая проблема с ИТ-инфраструктурой, — обращайтесь в любое время. Мои специалисты и я лично разберём ситуацию, найдём настоящую причину и доведём до решения.

Возьмёмся и за разовую задачу, и за постоянное обслуживание. Первичная консультация — бесплатно и без обязательств.

📞 +7 903 729-62-41 ✈ Telegram @ITfresh_Boss

С уважением, Семёнов Евгений Сергеевич, директор «АйТи Фреш» — IT-аутсорсинг для компаний до 50 рабочих мест, 15+ лет практики

Источники

© ООО «АйТи-Фреш» · Москва · Все статьи