Предыстория: почему я отказался от XMPP
В прошлом посте я разворачивал приватный XMPP-сервер на базе Prosody. Казалось бы — открытый протокол, федеративная сеть, E2EE через OMEMO, поддержка звонков. На бумаге всё отлично.
На практике вышло иначе.
Что не понравилось:
- Зоопарк клиентов. Каждое приложение реализует протокол по-своему. Gajim умеет одно, Conversations — другое, Dino — третье. Элементарная отправка голосового сообщения превращается в выяснение совместимости. На Windows позвонить так и не удалось вовсе.
- Сложная настройка. Настроить сервер + правильный TLS + TURN для звонков + добиться, чтобы это всё работало на iOS и Android одновременно — серьёзная задача даже для человека с техническим бэкграундом. Объяснить это родственникам — невозможно.
- Нет единой платформы. В отличие от Telegram или Signal, пользователь XMPP должен сам разобраться, какой клиент ставить и почему именно его.
Короче говоря: технически интересно, практически бесполезно для задачи «держать связь с семьёй».
Задача: связь с людьми в РФ без VPN
Ситуация простая. Один человек — за рубежом. Другой — в России. VPN нестабилен или заблокирован. Провайдер включил «белые списки» — доступны только разрешённые домены.
Требования к решению:
- текстовые сообщения и файлы
- голосовые сообщения
- сквозное шифрование
- работа без VPN через разрешённую инфраструктуру
- простота — чтобы мог настроить любой человек
- групповые чаты
Неожиданное решение: мессенджер поверх email
Электронная почта существует десятилетиями. Почтовые серверы mail.ru и Яндекс почти наверняка попадают в белые списки — отключить их значит сломать огромную часть привычной интернет-инфраструктуры.
Именно на этом построен Delta Chat — мессенджер, который использует обычную почту как транспорт.
Как это работает
Delta Chat не изобретает новый протокол. Для отправки сообщений используется SMTP, для получения — IMAP. Сообщение формируется локально, шифруется, отправляется как обычное письмо и отображается у получателя не как письмо — а как элемент чата.
Интерфейс при этом выглядит как обычный мессенджер: диалоги, вложения, голосовые сообщения, групповые чаты. Никаких следов «почты» снаружи нет.
Шифрование
Delta Chat использует сквозное шифрование OpenPGP (Autocrypt). Это значит:
- сообщение шифруется на устройстве отправителя
- расшифровывается только на устройстве получателя
- почтовый сервер (включая mail.ru и Яндекс) видит только зашифрованный набор байтов — содержимое переписки ему недоступно
Обмен ключами происходит автоматически — пользователь ничего не настраивает вручную.
Почему это работает при белых списках
При «белых списках» в РФ:
- произвольные серверы недоступны
- VPN режутся или деградируют
- нестандартные протоколы блокируются DPI
Но SMTP/IMAP через mail.ru или Яндекс — это стандартный разрешённый трафик. Delta Chat работает именно поверх него, без каких-либо нестандартных соединений.
Ограничения, которые важно понимать
Это не серебряная пуля. Честный список ограничений:
- Не анонимно. Email-адреса участников известны обеим сторонам и почтовому провайдеру.
- Метаданные доступны провайдеру. Кто, кому и когда писал — видно на уровне сервера, даже при E2EE.
- Антиспам. Высокая частота коротких сообщений выглядит подозрительно для антиспам-систем. Яндекс особенно строг — часть сообщений может попасть в спам или вообще не дойти. Mail.ru в тестах работал значительно стабильнее.
- Голосовые звонки используют WebRTC (P2P). При белых списках они с высокой вероятностью не будут работать или будут нестабильны. Текстовые сообщения и файлы — работают.
- E2EE только между пользователями Delta Chat. Если собеседник использует обычный почтовый клиент — шифрования не будет.
Вывод: Delta Chat — надёжный резервный канал связи, а не полноценная замена популярным мессенджерам по качеству реального времени.
Быстрая настройка через mail.ru
Это самый простой путь — без технических знаний, за 5 минут. Для яндекса принцип аналогичный.
1. Скачать Delta Chat
Клиенты доступны для iOS, Android, Windows, macOS, Linux:
👉 delta.chat/ru/download
2. Создать ящик на mail.ru
Если нет — зарегистрировать на mail.ru. Желательно сделать это заранее с обычного браузера.
3. Создать пароль приложения
Обычный пароль от почты Delta Chat не примет — нужен специальный пароль для внешних приложений:
- Откройте почту на mail.ru → правый верхний угол → иконка профиля
- Перейдите в Безопасность → Пароли для внешних приложений
- Нажмите Создать пароль, задайте название (например:
DeltaChat), выберите полный доступ к почте - Подтвердите действие (пароль или SMS)
- Скопируйте и сохраните сгенерированный пароль — он показывается только один раз
4. Настроить Delta Chat
- Откройте Delta Chat → Создать новый профиль
- Выберите Использовать другой сервер → Использовать электронную почту как релей
- Введите email и пароль приложения
- Приложение настроится автоматически
Совет по антиспаму
Если используете Яндекс или mail.ru — зайдите в веб-интерфейс почты и пометьте первые входящие сообщения от Delta Chat как «Не спам». Это обучит фильтр. Также рекомендуется отключить подтверждения прочтения в настройках Delta Chat — меньше автоматических исходящих писем, меньше шансов попасть под антиспам.
Для энтузиастов: свой chatmail-сервер
Если вы хотите больше контроля — звонки, уведомления на iPhone, увеличенные лимиты на файлы, нулевое хранение метаданных — можно развернуть собственный chatmail relay.
Chatmail — это специализированный почтовый сервер, оптимизированный под Delta Chat. Он не хранит логи, не требует регистрации с личными данными, поддерживает push-уведомления для iOS и Android и позволяет передавать файлы размером до 300 МБ.
Что потребуется
- VPS с Debian 12
- Минимум 1 CPU, 512 МБ RAM, 10 ГБ диска (достаточно для тысяч адресов)
- Домен с возможностью управления DNS
- Локальный Linux-компьютер для запуска скриптов деплоя (нужны
python3-dev,python3.12-venv,gcc)
Открытые порты на сервере
| Порт | Назначение |
|---|---|
| 22 | SSH (администрирование) |
| 25 | SMTP (федерация между серверами) |
| 80 / 443 | HTTPS (веб, Let’s Encrypt) |
| 143 / 9993 | IMAP |
| 465 / 587 | SMTP Submission (отправка клиентами) |
| 3478 | STUN/TURN (P2P-звонки) |
Деплой шаг за шагом
Шаг 1. Предварительные DNS-записи
Создайте у вашего DNS-провайдера:
chat.example.org. 3600 IN A <IP-адрес сервера>
chat.example.org. 3600 IN AAAA <IPv6-адрес, если есть>
www.chat.example.org. 3600 IN CNAME chat.example.org.
mta-sts.chat.example.org. 3600 IN CNAME chat.example.org.
Шаг 2. SSH-ключи
Скрипты деплоя не поддерживают ввод пароля — нужен SSH-ключ:
ssh-keygen -t ed25519 -f ~/.ssh/chatmail
ssh-copy-id -i ~/.ssh/chatmail.pub root@chat.example.org
eval $(ssh-agent)
ssh-add ~/.ssh/chatmail
Временно в /etc/ssh/sshd_config на сервере: PermitRootLogin yes — только для первоначальной настройки.
Шаг 3. Клонирование и инициализация
git clone https://github.com/chatmail/relay
cd relay
scripts/initenv.sh
scripts/cmdeploy init chat.example.org
Будет создан файл chatmail.ini.
Шаг 4. Настройка chatmail.ini
Ключевые параметры, которые стоит поменять:
[params]
mail_domain = chat.example.org
# Максимальный размер сообщения (по умолчанию ~30 МБ)
max_message_size = 314572800 # 300 МБ
# Хранение сообщений (дни)
delete_mails_after = 20
delete_large_after = 7 # файлы >200 КБ удаляются быстрее
# Неактивные пользователи удаляются через:
delete_inactive_users_after = 90
# Контакт для политики конфиденциальности (обязательно заполнить)
privacy_postal = Ваш адрес
privacy_mail = admin@chat.example.org
# Мониторинг через Prometheus/Grafana (опционально)
# mtail_address = 127.0.0.1
Пароли не задаются вручную. При регистрации через QR-код пароль генерируется автоматически. Значение
password_min_lengthвлияет на длину автогенерированной строки — менять не обязательно.
Шаг 5. Запуск деплоя
scripts/cmdeploy run
Скрипт установит Postfix, Dovecot, настроит TLS через Let’s Encrypt и логику Chatmail. Если каких-то DNS-записей не хватает — скрипт сообщит об этом.
Шаг 6. Финальные DNS-записи
scripts/cmdeploy dns
Скрипт выведет список из 6–7 записей (MX, DKIM, SPF, SRV). Все их нужно добавить в DNS — это критично для доставляемости и прохождения DMARC-проверок.
Шаг 7. Проверка
scripts/cmdeploy status # статус сервисов и DNS
scripts/cmdeploy test # тест отправки/получения
scripts/cmdeploy bench # нагрузочный тест (опционально)
После нагрузочного теста не забудьте удалить тестовых пользователей: временно установите delete_inactive_users_after = 0, выполните scripts/cmdeploy run, затем верните значение 90 и снова запустите деплой.
Шаг 8. Закрыть SSH
# На сервере в /etc/ssh/sshd_config:
PermitRootLogin no
# systemctl restart ssh
Ограничить регистрацию (для приватного использования)
Если не хотите, чтобы посторонние регистрировались:
ssh root@chat.example.org
touch /etc/chatmail-nocreate
Пока этот файл существует — регистрация новых адресов заблокирована.
Как подключиться к своему серверу
Откройте браузер на устройстве с Delta Chat и перейдите на https://chat.example.org — там будет QR-код. Отсканируйте его в приложении и аккаунт создастся автоматически.
Кастомизация приветственной страницы
После деплоя на https://chat.example.org появляется стандартная страница с QR-кодом и кратким описанием. Её можно переделать под себя — поменять текст, добавить инструкции для родственников, убрать лишнее.
Страницы генерируются из Markdown-файлов в директории www/src/ локальной копии репозитория. Основные файлы:
| Файл | Содержимое |
|---|---|
www/src/index.md | Главная страница с QR-кодом |
www/src/info.md | Страница «О сервере» |
www/src/policy.md | Политика конфиденциальности |
Например, чтобы добавить простую инструкцию прямо на главную страницу — откройте www/src/index.md и отредактируйте текст под QR-кодом:
## Как подключиться
1. Установите [Delta Chat](https://get.delta.chat) на телефон
2. Откройте приложение → нажмите «Создать профиль»
3. Отсканируйте QR-код выше
4. Готово — можно писать
По вопросам: admin@chat.example.org
Для локального превью с автообновлением в браузере запустите:
scripts/cmdeploy webdev
Когда результат устраивает — загрузить на сервер:
scripts/cmdeploy run
Эта команда синхронизирует локальные файлы www/src/ с сервером, пересобирает HTML и перезапускает Nginx. Достаточно запускать её после каждого изменения страниц.
Если хотите вести веб-страницы полностью отдельно от репозитория — укажите
www_folder = /путь/к/своей/папкевchatmail.ini. Можно также отключить встроенные страницы совсем:www_folder = disabled.
Включить звонки (опционально)
По умолчанию звонки отключены. Чтобы включить:
- Меню (три точки) → Дополнительные параметры → Debug → активировать Calls
⚠️ При включённых белых списках звонки, скорее всего, работать не будут. Но можно включить заранее — когда сеть позволит, функция будет доступна.
Итог
Delta Chat — нетривиальное, но рабочее решение. Оно использует инфраструктуру, которую сложно просто взять и заблокировать, обеспечивает сквозное шифрование и не требует от пользователя почти никаких технических знаний.
Для связи с родственниками в РФ через mail.ru — это один из наиболее реалистичных вариантов на сегодняшний день.
Рассылка
Получайте уведомления о новых постах и не только. Без спама.