MAATRIX / Блог / SOGo: своя групповая почта с календарём — и кому она того стоит

SOGo: своя групповая почта с календарём — и кому она того стоит

MAATRIX

Почта у вас уже есть — Postfix с Dovecot, iRedMail или что-то ещё, письма ходят исправно. Но команда хочет видеть чужие календари, бронировать переговорку, синхронизировать контакты между телефоном и ноутбуком, и рано или поздно кто-то спрашивает: «а нельзя как в Exchange?». SOGo — это ответ на этот вопрос без перехода на Microsoft 365 или Google Workspace: групповая надстройка с календарями, адресными книгами и ActiveSync поверх уже работающего почтового сервера. Разберём честно, кому она нужна, как встраивается в существующую инфраструктуру и где у неё потолок.

Что такое SOGo и какую задачу он решает

SOGo — open-source groupware-сервер: веб-интерфейс почты плюс общие календари (CalDAV), адресные книги (CardDAV) и синхронизация с мобильными устройствами и Outlook по протоколу ActiveSync (EAS). Важно сразу разделить понятия: SOGo — не почтовый транспорт. Он не принимает и не отправляет письма сам, не заменяет Postfix и Dovecot. Он работает как надстройка: подключается к уже существующему IMAP-серверу за вашей почтой, показывает письма через веб-интерфейс, а сверх этого добавляет то, чего в голом IMAP нет вообще, — общие календари с приглашениями на встречи, разделяемые адресные книги, ресурсы (переговорки, проекторы) и подключение телефонов и Outlook как к настоящему серверу Exchange.

Здесь же стоит закрыть частую путаницу: если вы ставите Mailcow, SOGo у вас уже есть — он идёт в комплекте как встроенный webmail с календарём, отдельно ставить ничего не нужно. Эта статья — про другой сценарий: у вас своя почта, собранная вручную из Postfix и Dovecot, или iRedMail без включённого SOGo, или любой другой IMAP-сервер, и вы хотите добавить groupware-слой отдельно, не переезжая на новый почтовый стек целиком. iRedMail, кстати, предлагает SOGo как опциональный компонент прямо при установке — если вы ещё не разворачивали почту, посмотрите установку iRedMail, это может закрыть вопрос сразу.

Если календарь и контакты — единственное, что нужно, без веб-почты и Exchange-совместимости, есть более лёгкие варианты: Radicale или Baïkal поднимаются за 10 минут и почти не едят ресурсов, но не умеют ActiveSync и веб-интерфейс уровня SOGo. SOGo — тяжелее и функциональнее, это осознанный компромисс.

Кому подходит по размеру команды

SOGo реалистично закрывает диапазон примерно от 5 до 100–150 пользователей. Ниже этой планки овчинка не стоит выделки: для команды из трёх человек проще договориться голосом или завести общий календарь в любом бесплатном сервисе, а разворачивать и поддерживать отдельный groupware-сервер — избыточная инженерная нагрузка ради удобства, которое можно получить проще.

Верхняя граница — не жёсткий технический потолок (SOGo способен обслуживать и тысячи ящиков при должном железе), а практическая: чем больше организация, тем важнее становятся вещи, которых у SOGo нет или которые у него слабее, чем у настоящего Exchange, — детальные права доступа, публичные папки, интеграция с Active Directory на уровне групповых политик, централизованное управление мобильными устройствами (MDM). На этом масштабе разговор смещается в сторону Zimbra, Exchange Server или облачных Microsoft 365 / Google Workspace, где эти вещи встроены, а не собраны из подручных средств.

Свояк, для кого SOGo — почти идеальное попадание: небольшая компания или отдел на 10–50 человек, где нужны общий календарь встреч, видимость занятости коллег, разделяемая адресная книга контактов клиентов и синхронизация с телефонами сотрудников — но нет требования к сложной иерархии прав, публичным папкам с вложенными разрешениями или интеграции с корпоративным AD на уровне групповых политик. Юридические фирмы, агентства, небольшие ИТ-команды, консалтинг — типичные профили.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.

Арендовать VPS под SOGo

Архитектура: SOGo как надстройка, а не почтовый сервер

Прежде чем ставить SOGo, полезно понимать, из чего он состоит и куда именно он подключается:

  • SOGod — главный демон, обслуживает веб-интерфейс, CalDAV/CardDAV и ActiveSync. Слушает по умолчанию порт 20000, наружу отдаётся через реверс-прокси (Nginx или Apache) по HTTPS.
  • IMAP-бэкенд — SOGo не хранит почту сам, а идёт за письмами на ваш существующий Dovecot (или другой IMAP-сервер) по обычному IMAP/IMAPS. Это ключевая точка интеграции: если IMAP работает и логин/пароль пользователя проходят — SOGo сможет показать его почту.
  • База данных — календари, контакты, настройки пользователей, ACL на общие ресурсы SOGo хранит отдельно, в PostgreSQL или MySQL. Это его собственные данные, не связанные с самой почтой: удаление этой базы не тронет письма, но снесёт все календари и адресные книги.
  • Источник пользователей — SOGo должен знать, кто вообще имеет право логиниться. Источником может быть тот же SQL, LDAP (в том числе OpenLDAP, если у вас уже есть централизованный каталог), либо связка с базой iRedMail или Postfix virtual-таблицами.
  • Memcached — обязателен для хранения сессий и блокировок; без него SOGo не запустится корректно при нескольких воркерах.

Из этой схемы следует главный практический вывод: почтовый транспорт вы не трогаете вообще. Postfix продолжает принимать и отправлять письма как принимал, Dovecot продолжает быть хранилищем ящиков. SOGo встаёт сбоку, спрашивает у Dovecot письма по IMAP и добавляет то, чего у голого IMAP не было.

Установка и подключение к существующему почтовому серверу

Официальный путь — пакеты из репозитория проекта SOGo для вашего дистрибутива (текущий адрес репозитория и инструкция по добавлению GPG-ключа — на сайте проекта, sogo.nu, он может отличаться по версии Debian/Ubuntu). После добавления репозитория:

sudo apt update
sudo apt install -y sogo sogo-activesync memcached postgresql

sogo-activesync — отдельный пакет, без него телефоны на Android/iOS/Outlook не смогут подключиться по EAS, только по CalDAV/CardDAV. Дальше создайте базу данных под SOGo:

sudo -u postgres createuser sogo
sudo -u postgres createdb -O sogo sogo
sudo -u postgres psql -c "ALTER USER sogo WITH PASSWORD 'замените-на-свой-пароль';"

Основной конфиг — /etc/sogo/sogo.conf, формат plist. Минимальный рабочий фрагмент для подключения к уже существующему Dovecot и базе пользователей на SQL (например, из iRedMail или собственной схемы virtual-таблиц Postfix):

{
  SOGoTimeZone = "Europe/Moscow";
  SOGoMailDomain = "example.com";
  mailingMechanism = smtp;
  SOGoSMTPServer = "smtp://127.0.0.1:587";
  SOGoIMAPServer = "imap://127.0.0.1:143";
  SOGoSieveServer = "sieve://127.0.0.1:4190";

  OCSFolderInfoURL = "postgresql://sogo:пароль@127.0.0.1:5432/sogo/sogo_folder_info";
  OCSSessionsFolderURL = "postgresql://sogo:пароль@127.0.0.1:5432/sogo/sogo_sessions_folder";

  SOGoUserSources = (
    {
      type = sql;
      id = users;
      viewURL = "postgresql://sogo:пароль@127.0.0.1:5432/sogo/sogo_users_view";
      canAuthenticate = YES;
      isAddressBook = YES;
    }
  );
}

Если пользователи и пароли уже живут в LDAP, вместо type = sql источник описывается через type = ldap с параметрами hostname, baseDN, bindDN и фильтром поиска — SOGo умеет проверять пароль напрямую через bind к LDAP, отдельно хранить хэши не нужно. После правки конфига перезапустите демон и настройте реверс-прокси, который отдаёт SOGo наружу по HTTPS и проксирует WebSocket для ActiveSync push:

sudo systemctl restart sogo memcached

В Nginx фронт обычно выглядит как proxy_pass http://127.0.0.1:20000; с нужными заголовками (X-Real-IP, X-Forwarded-For, Host) на виртуальном хосте вида mail.example.com с TLS-сертификатом Let's Encrypt. Важный нюанс: доменное имя для SOGo может быть тем же, что и у вебмейла (webmail.example.com), но должно резолвиться и иметь собственный сертификат — общий SSL-терминатор на несколько сервисов вполне нормальная практика, если реверс-прокси корректно разруливает пути.

Календари, контакты и ActiveSync на практике

После установки у каждого пользователя появляется личный календарь и адресная книга, доступные через веб-интерфейс SOGo и по CalDAV/CardDAV любому клиенту, который их поддерживает: Thunderbird, Apple Calendar/Contacts, DAVx5 на Android. Настройка клиента — стандартный CalDAV/CardDAV, адрес вида https://mail.example.com/SOGo/dav/user@example.com/Calendar/.

Отдельные календари можно делать общими: владелец заходит в настройки календаря, выдаёт коллеге право «читать» или «читать и писать», и у того в списке появляется чужой календарь с занятостью или полными деталями встреч — в зависимости от выданного уровня доступа. Это закрывает базовый сценарий «видеть, когда коллега свободен», ради которого чаще всего и затевается вся эта история.

Для Outlook и телефонов ключевая фишка — ActiveSync: SOGo эмулирует протокол Exchange ActiveSync достаточно, чтобы Outlook (через встроенную поддержку Exchange-аккаунтов, без плагинов), iPhone и Android воспринимали его как обычный сервер Exchange — с двусторонней синхронизацией почты, календаря, контактов и задач в одном профиле. Пользователю на телефоне достаточно добавить аккаунт типа Exchange, указать адрес сервера, логин и пароль — остальное EAS сделает сам. Это самая сильная сторона SOGo по сравнению с более простыми CalDAV-серверами: для конечного пользователя всё выглядит и работает как знакомый Exchange-аккаунт, а не как «ещё один календарь, который нужно отдельно подключать».

Бронирование ресурсов (переговорки, проекторы) делается через специальные учётные записи-ресурсы: создаётся отдельный «пользователь»-ресурс, приглашение на встречу с этим ресурсом либо принимается автоматически по правилам, либо требует подтверждения ответственного. Работает, но настраивается вручную и не так гибко, как политики бронирования в Exchange Online.

Чем SOGo уступает настоящему Exchange

Честность здесь важнее маркетинга, поэтому перечислим конкретно, где SOGo не дотягивает:

ВозможностьExchange / M365SOGo
Общие календари, ActiveSyncЕстьЕсть
Публичные папки с вложенной структуройПолноценныеНет прямого аналога
Детальные права (делегирование по ролям, аудит доступа)РазвитыеБазовые (владелец/чтение/чтение-запись)
Интеграция с AD / групповыми политикамиНативнаяЧерез LDAP-bind, без GPO
Централизованное управление устройствами (MDM)Intune и аналогиНет встроенного
Веб-интерфейс уровня OWAФункциональный, но визуально проще
Совместное редактирование, Teams-интеграцияЕсть в экосистеме M365Нет, это не входит в задачи SOGo

Самое ощутимое ограничение на практике — отсутствие публичных папок в привычном экзеченджевском смысле (общая структурированная папка с вложенными подпапками и раздельными правами на каждую). В SOGo можно расшарить отдельный календарь или адресную книгу целиком, но воспроизвести сложную иерархию доступа корпоративного Exchange не получится — и если в компании уже есть такая иерархия, миграция потребует её упрощения, а не переноса один в один.

Второй момент — веб-интерфейс SOGo выполняет свою работу, но не пытается конкурировать по полировке с Outlook Web App: это рабочий, но заметно более простой UI. Для команды, которая ждёт того же лоска, что у Microsoft, это может стать источником недовольства — стоит показать интерфейс до внедрения, а не после.

Наконец, SOGo не даёт того, что вокруг Exchange выросло экосистемой — совместное редактирование документов, встроенные видеозвонки, Teams. Если организации нужен именно этот набор, а не только почта с календарём, честнее сразу рассматривать связку с Nextcloud для файлов и совместной работы либо смотреть в сторону облачных пакетов.

Обслуживание: бэкап, обновления, ресурсы

SOGo не требователен к железу сам по себе: для 10–50 пользователей достаточно 2 ГБ RAM и 1–2 ядер сверх того, что уже выделено под почтовый сервер, если SOGo стоит на той же машине — это ориентир, а не измеренная величина, реальное потребление зависит от активности пользователей и того, сколько параллельных ActiveSync-сессий держит демон. При росте команды в первую очередь упирается PostgreSQL, а не сам SOGo — заранее заложите ресурсы под базу и её резервное копирование.

Бэкап устроен просто, но состоит из двух независимых частей, и про это часто забывают: почта бэкапится там же, где и раньше (дамп ящиков Dovecot), а календари, контакты и настройки SOGo — это отдельный дамп базы PostgreSQL (pg_dump), без которого при восстановлении вернётся почта, но пропадут все календари и общие адресные книги. Настройте pg_dump по расписанию через cron и выгружайте копию за пределы сервера — как и с любой базой данных, локальный снапшот на том же диске не защищает от отказа диска.

Обновления ставятся через обычный apt upgrade пакетов sogo и sogo-activesync из подключённого репозитория — перед крупным обновлением, как и с любым сервисом с собственной БД, сделайте дамп PostgreSQL. Логи демона — в /var/log/sogo/sogo.log, туда стоит заглядывать при жалобах на медленную синхронизацию или не приходящие приглашения на встречи: часто причина в самом IMAP-бэкенде (Dovecot тормозит или недоступен), а не в SOGo.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.

Арендовать VPS под SOGo

Нужны сами нейросети для контента?

Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.

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

SOGo заменяет Postfix и Dovecot?

Нет. SOGo — это надстройка, которая подключается к уже работающему почтовому серверу по IMAP и добавляет календари, контакты и ActiveSync. Сам транспорт почты как ходил через Postfix, так и продолжает.

Если у меня уже стоит Mailcow, нужно ли ставить SOGo отдельно?

Нет, в Mailcow SOGo уже встроен как основной вебмейл с календарём — отдельно разворачивать нечего, разве что донастроить то, что уже есть в панели Mailcow.

Подключится ли обычный Outlook без плагинов?

Да, через встроенную в Outlook поддержку аккаунтов Exchange/ActiveSync — SOGo эмулирует протокол EAS достаточно, чтобы Outlook воспринимал его как сервер Exchange. Отдельный коннектор Exchange (MAPI) SOGo не поддерживает, но для базовой почты, календаря и контактов ActiveSync хватает.

Можно ли перевести на SOGo только часть сотрудников, а остальным оставить обычный webmail?

Да, SOGo работает поверх тех же почтовых ящиков IMAP — можно давать доступ к groupware-функциям выборочно, а остальные продолжат пользоваться прежним вебмейлом или почтовым клиентом без изменений.

Что произойдёт с почтой, если SOGo упадёт или его придётся переустановить?

Ничего — письма как хранились в Dovecot, так там и останутся, SOGo их не копирует и не перекладывает. Под угрозой только собственные данные SOGo (календари, контакты, настройки), поэтому бэкап базы PostgreSQL отдельно от бэкапа почты обязателен.

Нужен ли SOGo LDAP или хватит обычной SQL-базы пользователей?

LDAP не обязателен. Если пользователи и так описаны в таблицах Postfix/Dovecot (virtual-домены) или в базе iRedMail, SOGo подключается к ним напрямую через type = sql. LDAP имеет смысл, если у вас уже есть централизованный каталог и хочется управлять учётками из одного места.

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →