Замена Exchange на Linux: перенос почты и группового ПО без Microsoft 365

Быстрый ответ
Замена Exchange на Linux строится на трёх компонентах: Postfix плюс Dovecot плюс Rspamd закрывают транспорт и хранение почты, SOGo даёт веб-почту, календари и нативную синхронизацию с Outlook и мобильными без плагинов, Nextcloud берёт на себя файлы и совместные документы. На перенос 500 ящиков закладывай 4-6 месяцев с учётом привыкания пользователей. Главный риск не техника, а репутация домена: без корректных SPF, DKIM и DMARC письма улетят в спам у половины получателей.

1. Диагноз

Поднял Exchange пятнадцать лет назад. Сейчас выключаю последний сервер и понимаю: сама миграция с exchange на linux — не праздник инноваций, а трезвый расчёт. Лицензии растут, обновления безопасности всё жёстче завязаны на облако Microsoft, а найти админа, который готов разбираться в EDB-базах и AD-схеме под Exchange, с каждым годом сложнее.

Знакомая картина: 300-700 ящиков на организацию, руководство не хочет 365 из-за подписки и требований к локальному хранению данных, а Exchange уже держится на честном слове и на тебе одном. Если это про твою инфраструктуру — статья закрывает вопрос целиком.

Что получишь на выходе:

  • рабочий почтовый стек Postfix + Dovecot + Rspamd с антиспамом и DKIM из коробки
  • SOGo как замену Exchange-груповерк: календари, контакты, ActiveSync-подобная синхронизация с Outlook и телефонами без плагинов
  • Nextcloud под файлы и совместную работу над документами
  • перенесённые ящики через imapsync, проверенные бэкапы и мониторинг

Времени на весь цикл — от 4 до 6 месяцев на 500 ящиков, если считать не только настройку серверов, но и передавливание пользователей, которые «всегда жили в Outlook вот так». Личный опыт: 70% времени уходит не на конфиги, а на людей.

2. Причины

Семь причин, почему компании уходят с Exchange именно сейчас, и почему каждая из них ломает терпение раньше, чем бюджет.

Причина Почему ломает
Рост стоимости лицензий CAL и Windows Server Каждый год дороже, а альтернативы бесплатны
Обновления безопасности всё чаще требуют облачную привязку Локальный Exchange превращается во второсортный продукт
Требования к хранению данных внутри страны 365 для части организаций юридически не вариант
Уход единственного специалиста, который понимал Exchange Инфраструктура становится чёрным ящиком
Проблемы с сертификатами и современными клиентами Старый EWS плохо дружит с новыми версиями Outlook и мобильными
Санкционные риски и непредсказуемость лицензирования Руководство хочет данные под своим контролем
Рост требований к резервному копированию EDB-баз Восстановление становится долгим и хрупким

Ни одна из причин по отдельности не критична. Все семь вместе — уже повод сесть и посчитать.

3. Рецепт

Архитектура

Outlook и мобильные

SOGo webmail и CalDAV

Dovecot IMAP

Внешняя почта

Postfix SMTP

Rspamd проверка

Файлы и документы

Nextcloud

Логика простая. Почта идёт через Postfix, там же Rspamd отсекает спам и подписывает DKIM. Dovecot хранит письма в Maildir. SOGo даёт пользователю единый интерфейс: веб-почту, календарь, контакты, и главное — синхронизацию с Outlook и телефонами через открытые протоколы, без установки коннекторов на каждую машину. Nextcloud живёт отдельно и закрывает файлы.

Системные требования

Компонент Версия на момент публикации
ОС Debian 13 (Trixie)
Postfix 3.10.x
Dovecot 2.4.x
Rspamd 4.1.x
SOGo 5.12.10
Nextcloud 34.0.4
PostgreSQL 16 или новее
Redis 7.4.x (для Rspamd)

На момент публикации актуальна версия X у каждого из перечисленных пакетов. Перед установкой проверь свежие релизы — стек развивается быстро, особенно Rspamd после мажорного скачка на ветку 4.x.

Таблица портов

Порт Протокол Назначение Доступен снаружи?
25 SMTP Приём почты от внешних серверов Да
587 SMTP Submission Отправка от клиентов с аутентификацией Да
993 IMAPS Доступ к ящикам по TLS Да
443 HTTPS SOGo и Nextcloud веб-интерфейс Да
5432 PostgreSQL База SOGo Нет, только localhost или VPN
6379 Redis Кэш и статистика Rspamd Нет
11334 HTTP Веб-интерфейс Rspamd Нет, только через SSH-туннель или VPN

Подготовка

Зависимости: PostgreSQL для SOGo, Redis для Rspamd, действующий домен с доступом к DNS-записям, сертификат Let’s Encrypt или корпоративный TLS. Проверь среду перед стартом.


apt update && apt install -y postfix dovecot-core dovecot-imapd \
  rspamd redis-server postgresql sogo sogo-activesync

Результат: пакеты установлены, службы ещё не связаны между собой. Дальше настраиваем каждую последовательно.

Шаг 1. Postfix как транспорт

Правим main.cf так, чтобы Postfix принимал почту на домен и отдавал её в Rspamd на проверку.


myhostname = mail.example.ru
mydomain = example.ru
myorigin = $mydomain
inet_interfaces = all
mydestination = localhost
virtual_mailbox_domains = example.ru
smtpd_milters = inet:127.0.0.1:11332
non_smtpd_milters = $smtpd_milters
milter_default_action = accept

Результат: Postfix слушает 25 и 587 порты, каждое письмо проходит через milter Rspamd на 11332 порту.

Шаг 2. Rspamd — антиспам и DKIM


rspamadm dkim_keygen -s mail -d example.ru -k /etc/rspamd/dkim/example.ru.key

Команда создаёт приватный ключ и выводит публичную часть — её нужно вставить в DNS TXT-запись селектора. Без этого шага письма будут доставляться, но без подписи, и часть почтовых систем начнёт их подозревать.


mail._domainkey.example.ru TXT "v=DKIM1; k=rsa; p=<публичный ключ>"

Шаг 3. Dovecot — хранение


mail_location = maildir:/var/mail/vhosts/%d/%n
passdb {
  driver = ldap
  args = /etc/dovecot/dovecot-ldap.conf.ext
}

Если у тебя уже есть Active Directory (а у большинства мигрирующих с Exchange он есть), подключай аутентификацию через LDAP-бинд. Пользователям не придётся заводить новые пароли — это снижает сопротивление миграции сильнее, чем любые уговоры.

Шаг 4. SOGo — веб-почта, календари, контакты


SOGoMailDomain = example.ru
SOGoIMAPServer = imap://127.0.0.1:143/?TLS
SOGoSMTPServer = smtp://127.0.0.1:587
OCSFolderInfoURL = "postgresql://sogo:pass@127.0.0.1:5432/sogo/sogo_folder_info"

Дальше подключаешь модуль ActiveSync — именно он даёт нативную синхронизацию с Outlook, iOS и Android без плагинов. Пользователь заходит по тем же данным, что и в почту, и получает календарь с контактами сразу.

Шаг 5. Nextcloud — файлы


sudo -u www-data php occ maintenance:install \
  --database "pgsql" --database-name nextcloud \
  --admin-user admin --admin-pass "смени_меня"

Результат: рабочий инстанс на 443 порту. Подключи LDAP-бэкенд для той же учётки Active Directory — двух паролей пользователю не нужно.

Шаг 6. Перенос ящиков с Exchange

Самый нервный этап. Используй imapsync — он умеет тянуть письма из Exchange по IMAP и класть их в Dovecot с сохранением дат и папок.


imapsync --host1 exchange.example.ru --user1 ivanov --password1 'старый_пароль' \
  --host2 mail.example.ru --user2 ivanov --password2 'новый_пароль' \
  --ssl1 --ssl2 --automap

Прогони скрипт по всем ящикам в цикле, с логированием в отдельный файл на каждого пользователя. Первый прогон делай в тестовом окне без удаления писем на источнике — на случай если что-то пойдёт не так.

4. Проверка


systemctl status postfix dovecot rspamd sogo

tail -f /var/log/mail.log

rspamc stat

Отдельно проверь доставку через внешние сервисы проверки SPF/DKIM/DMARC — отправь тестовое письмо и посмотри заголовки Authentication-Results на принимающей стороне. Если там pass по всем трём — доставка не будет проваливаться в спам у крупных провайдеров.

5. Осложнения

Ошибка Причина Решение
Письма попадают в спам у Gmail и Mail.ru Неполная связка SPF, DKIM, DMARC Проверить все три записи через внешний чекер, поправить DMARC-политику
imapsync падает на больших ящиках Таймаут по умолчанию слишком мал Добавить флаг с увеличенным таймаутом
SOGo не видит календарь после переноса Не пересоздан индекс OCSFolderInfo Пересобрать индексы через sogo-tool
Outlook не подключается по ActiveSync Модуль sogo-activesync не установлен или не включён Установить пакет, перезапустить sogod

imapsync --timeout1 600 --timeout2 600 --host1 exchange.example.ru ...

sogo-tool update-autoreply -a -F
sogo-tool reindex sogo
Осторожно с DMARC
Не включай DMARC с политикой reject сразу. Начни с p=none, посмотри отчёты неделю-две, и только потом ужесточай до quarantine и reject. Иначе можно на несколько дней потерять часть входящей и исходящей легитимной почты.

6. Альтернативы

Вариант Когда выбрать вместо основного
Mailcow Небольшая инфраструктура до 100-150 ящиков, где важнее скорость развёртывания, чем гибкость под нагрузку
Zimbra Open Source Если нужна единая панель без разделения на отдельные компоненты, но с меньшей активностью community-версии
Kopano Если критична совместимость именно с MAPI-протоколом Outlook
Гибрид с Microsoft 365 Часть ящиков остаётся в облаке, часть на своей инфраструктуре — компромисс на переходный период

Mailcow удобнее для старта, но на 500 ящиках и требованиях к отказоустойчивости мы от него отказались после месяца тестов — слишком много магии под капотом там, где нужна прозрачность. Разложенный по компонентам стек даёт контроль над каждым звеном.

7. Профилактика

  • Мониторинг очередей Postfix и статистики Rspamd через Zabbix-агент
  • Резервное копирование Maildir и баз PostgreSQL раздельно
  • Автозапуск и systemd-таймеры для регулярной проверки очереди почты
  • Регулярная проверка репутации IP-адреса на blacklist-агрегаторах
  • Тестовое восстановление из бэкапа не реже раза в квартал
  • Обновление DKIM-ключей раз в год
  • Проверка сертификатов TLS на истечение через мониторинг, а не вручную

Резервное копирование

Что бэкапим Как часто Где хранить Как восстанавливаем
Maildir всех ящиков Ежедневно Отдельный сервер + офсайт rsync обратно + перезапуск Dovecot
База PostgreSQL SOGo Ежедневно Отдельный сервер pg_restore из дампа
Конфигурация Postfix/Dovecot/Rspamd При каждом изменении Git-репозиторий git checkout + перезапуск служб
Данные Nextcloud Ежедневно Отдельный сервер + офсайт occ files:scan после восстановления файлов

Безопасность

  • UFW с явным разрешением только нужных портов из таблицы выше
  • fail2ban на SSH и на попытки перебора паролей SMTP-аутентификации
  • Отдельный системный пользователь для PostgreSQL без прав на shell
  • SSH только по ключу, без пароля
  • Ограничение доступа к веб-интерфейсу Rspamd по IP или через VPN

Обновление

Перед обновлением любого компонента — снимок диска или дамп базы. Обновляй по одному сервису за раз, не пакетом сразу. После обновления Rspamd проверь, что DKIM-подпись всё ещё формируется корректно — при мажорных скачках версии (как переход с 3.x на 4.x) меняется формат части конфигов. Откат — из снимка или из git-репозитория с конфигами.

8. FAQ

Почему почта не работает после настройки?

В девяти случаях из десяти дело в неполной цепочке SPF, DKIM, DMARC или в неправильном milter-подключении Rspamd к Postfix. Проверь заголовки Authentication-Results на тестовом письме и логи mail.log — там сразу видно, на каком этапе письмо отвалилось.

Как проверить что перенос почты с Exchange работает правильно?

Сравни количество писем и папок в старом и новом ящике через imapsync с флагом dry-run перед реальным переносом. После переноса попроси нескольких пользователей проверить последние письма и календарь на телефоне — это быстрее, чем сверять логи вручную.

Что делать если Outlook не видит новый календарь?

Проверь, что модуль sogo-activesync установлен и служба перезапущена. Дальше — пересоздай профиль Outlook с нуля, не пытайся донастроить старый профиль поверх Exchange-подключения.

Чем SOGo отличается от Mailcow?

SOGo — это только groupware-слой поверх твоего собственного Postfix и Dovecot, ты полностью контролируешь конфигурацию. Mailcow — готовый Docker-стек с той же ролью, но с меньшей гибкостью под нестандартные требования вроде специфичной схемы бэкапов или интеграции с существующим Active Directory.

9. Прогноз

После переноса почта работает предсказуемее, чем Exchange в последние годы жизни. Меньше магии, больше понятных логов: когда что-то падает, ты знаешь, куда смотреть, а не гадаешь между EDB-базой и сервисом транспорта.

Новый стек тоже будет ломаться. Будут свои грабли, свои ночные разборы. Но теперь это твои грабли, не чужие. Если после этой инструкции что-то не завелось — пиши в комментарии, разберёмся.

Андрей А.
Author: Андрей А.

Руководитель ИТ / Кризис-менеджер 25 лет в IT: от инженера в МегаФоне до руководителя отдела. Знаю, как выглядит бардак: нестабильные сети, устаревшая инфраструктура, конфликты в команде, раздутые сроки. Помогаю бизнесу выходить из кризиса: навожу порядок в легаси, стабилизирую то, что разваливается, выстраиваю прогнозируемые процессы. Не раз возвращал к жизни ИТ-структуры — знаю цену хаосу. 📍 Ищу проект для полной реорганизации / стабилизации. 📬 Telegram: @over_dude ✉️ mail@it-apteka.com

Оставайтесь на связи

Рецепты от IT-боли. Без воды, без рекламы, без маркетинговой шелухи.

Подписаться на IT-Аптеку →

Мы ВКонтакте

IT-Аптека — советы, новости и помощь рядом.

Вступить в группу ВКонтакте →
Поделитесь:

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Прокрутить вверх