Рано или поздно очередной исследователь бюджетных альтернатив MS Exchange сталкивается с почтовым сервером из Германии mailcow. Кто-то, не замечая, проносится мимо, кто-то, притормаживая, знакомится ближе. Находятся и те, кто идёт дальше и разворачивает данное почтовое решение в своей ИТ-инфраструктуре. Например я, который в середине 2020 года мигрируя с сервисов Google, внедрил почтовую корову у себя, разместив основную и резервную площадки на виртуальных вычислительных ресурсах географически разнесённых .
Базируемый на программном обеспечении с открытым исходным кодом и разворачиваемый в докер-контейнерах, этот почтовый сервер обладает функционалом, сопоставимыми с возможностями MS Exchange. Почта с антивирусом и антиспамом, календари, задачи, контакты, мультидоменность и мультиарендность всего лишь малая часть того, о чём бы стоило рассказать. Но учитывая тот факт, что в сети уже предостаточно материала о mailcow, как о решении для обмена электронной почтой, в этой статье расскажу о нём, как о решении для мгновенного обмена сообщениями.
Так случилось, что в процессе эволюции мессенджеры стали значимым инструментом для коммуникаций между людьми и зачастую востребованы потребителями даже больше чем электронная почта. Причём у бизнес-консьюмеров требования, например, к той же безопасности пересылаемых данных особые.
Эта востребованность, однажды, настигла в моей деятельности и меня, поставив перед выбором: Какой мессенджер использовать?
Пользователь желал
К сожалению или нет, но воплотить свои хотелки собственными силами я не успел, ибо меня опередил mailcow предложив их из коробки:
- ejabberd
Первый мессенджер, о котором хочу рассказать, построен на базе свободного (GNU GPL), распределённого и устойчивого к отказам MQTT, SIP и XMPP-сервера.
Да-Да! На базе сервера, который использует тот самый Джаббер (англ. Jabber болтовня, трёп, тарабарщина), теперь известный как XMPP (англ. eXtensible Messaging and Presence Protocol) открытый, основанный на XML, свободный для использования протокол для мгновенного обмена сообщениями и информацией о присутствии в режиме, близком к режиму реального времени. Спроектированный легко расширяемым, протокол, помимо передачи текстовых сообщений, поддерживает передачу голоса, видео и файлов по сети.
В отличие от коммерческих систем мгновенного обмена сообщениями, XMPP является федеративной, расширяемой и открытой системой. Любой желающий может открыть свой сервер мгновенного обмена сообщениями, регистрировать на нём пользователей и взаимодействовать с другими серверами XMPP.
Настройка
По умолчанию ejabbberd в mailcow отключён. Для того, чтобы его активировать, необходимо включить поддержку XMPP для выбранного домена в панели управления (mailcow UI).
Указанный префикс домена используется в адресе авторизации XMPP (JabberID). Например, JID для пользователя почтового ящика cowboy@example.org будет таким cowboy@im.example.org. Пароль же совпадает с почтовым.
Перед включением поддержки XMPP для домена не не забудьте добавить две необходимые для получения сертификата записи CNAME в DNS в следующем формате:
# CNAMES# Name Type Valuexmpp_prefix IN CNAME mail.example.org. (ваш ${MAILCOW_HOSTNAME})*.xmpp_prefix IN CNAME mail.example.org. (ваш ${MAILCOW_HOSTNAME})
где,
xmpp_prefix
в нашем примере это
im
Правильность добавления можно проверить с помощью инструмента анализа DNS-записей в панели управления mailcow.
Если вы сначала включили XMPP, а затем добавили записи DNS не беда. Нужно дождаться, пока ejabberd автоматически получит сертификаты, или вручную перезапустить docker-контейнер ejabberd-mailcow с помощью команды:
$ docker-compose restart ejabberd-mailcow
После включения ejabberd вы можете повторно запустить анализ DNS-записей в панели управления mailcow, где вы найдете еще две SRV-записи.
# SRV records# Name Type Value_xmpp-client._tcp.xmpp_prefix IN SRV 10 1 5222 mail.example.org. (ваш ${MAILCOW_HOSTNAME})_xmpp-server._tcp.xmpp_prefix IN SRV 10 1 5269 mail.example.org. (ваш ${MAILCOW_HOSTNAME})
Эти записи необходимы для автоконфигурации клиентов XMPP и межсерверных соединений. Добавить их можно в любое время без перезагрузки ejabberd.
Управление доступом
Проверка сертификатов
Когда все настроено, убедитесь, что ejabberd смог получить сертификаты:
Если вы видите сообщение, похожее на это
ejabberd-mailcow_1 | 2021-02-13 14:40:19.507956+01:00 [error] Failed to request certificate for im.example.org, pubsub.im.example.org and 3 more hosts: Challenge failed for domain conference.im.example.org: ACME server reported: DNS problem: NXDOMAIN looking up A for conference.im.example.org - check that a DNS record exists for this domain (error type: dns
возможно, вам потребуется перепроверить конфигурацию DNS или перезапустить docker-контейнер ejabberd-mailcow для возобновления процесса в случае медленного обновления DNS
Открытие
https:/xmpp_prefix.domain.tld:5443/upload
должно направить вас на страницу 404 с действующим сертификатом.
На этом активацию и основную настройку XMPP на сервере mailcow можно считать завершённой. Подбирайте удобный jabber-клиент и общайтесь с родственниками, друзьями, коллегами, клиентами с глазу на глаз или в групповых чатах, в том числе c использованием end-to-end шифрования.
- DeltaChat
Второй мессенджер доступный к использованию в mailcow это скорее выглядящий как Telegram или WhatsApp почтовый клиент, который, а в качестве транспорта использует электронные сообщения со сквозным шифрованием. Своих серверов не имеет, доверив их роль почтовым, которые эти сообщения хранят и доставляют. Может работать с обычной, нешифрованной почтой. Углубляться в подробности не буду, ибо материала в сети достаточно. Например .
На стороне mailcow настроек для использования этого мессенджера не требуется. Папка DeltaChat для хранения сообщений в аккаунте пользователя, создаётся автоматически глобальными фильтрами по факту начала общения.
В итоге
Почтовая корова приросла функциями и при использовании универсальных mail-клиентов, таких как или , стала средством унифицированных коммуникаций. Почти