Thunderbird сам находит mailcow, а Outlook 365 просит серверы вручную: настраиваем Autodiscover
Если 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 всё равно просит серверы вручную, — проблема не на вашей стороне.
Почему новые версии 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, — но я его использую только для экспериментов, не для продуктива.
Что настроить на стороне 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 реально стоят у сотрудников (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 и мобильные клиенты. Они обслуживают разные протоколы и не заменяют друг друга.
Источники
- mailcow docs — Autodiscover / Autoconfig — Путь data/web/inc/vars.local.inc.php, структура $autodiscover_config, ключи autodiscoverType/useEASforOutlook, разница между полями port (TLS-wrapped) и tlsport (STARTTLS) для сервисов imap/pop3/smtp. https://docs.mailcow.email/manual-guides/u_e-autodiscover_config/
- mailcow docs — Microsoft Outlook (client setup) — Autodiscover для mailcow работает только со старыми Outlook; 2021/Microsoft 365/новый Outlook требуют ручной настройки; с Outlook 2019 ActiveSync не работает (Basic Auth отключён, нужен OAuth2); ActiveSync в Outlook для Windows не рекомендован; новый Outlook без CalDAV/CardDAV и передаёт учётные данные Microsoft; ручные параметры IMAP 993 / SMTP 587. https://docs.mailcow.email/client/client-outlook/
- GitHub mailcow-dockerized — Issue #1382 (autoconfig with selected ports only) — Обсуждение того, что autoconfig объявляет и TLS-wrapped, и STARTTLS-порты, тогда как Autodiscover — только TLS-wrapped; подтверждает разницу между полями port и tlsport на практике. https://github.com/mailcow/mailcow-dockerized/issues/1382
- GitHub mailcow-dockerized — шаблон nginx sites-default.conf.j2 — Маршруты /Autodiscover/Autodiscover.xml → autodiscover.php, /Autodiscover/Autodiscover.json и /mail/config-v1.1.xml → autoconfig.php. https://github.com/mailcow/mailcow-dockerized/blob/master/data/conf/nginx/templates/sites-default.conf.j2



