Содержание статьи
Быстрый старт
Приложение качай с официального сайта — есть версии для Android, iOS, Windows, macOS и Linux. При первом запуске достаточно ввести имя пользователя — почтовый аккаунт создастся автоматически на сервере chatmail. При желании можно подключить собственный аккаунт Gmail или «Яндекса».
Система релеев
Изначально Delta Chat задумывался как мессенджер поверх любого почтового сервера, но на практике это привело к проблемам:
- спам‑фильтры удаляли зашифрованные сообщения;
- серверы ограничивали число пересылок в час;
- серверы собирали метаданные;
- регистрация требовала номер телефона;
- при пересылке ломались заголовки.
Вдобавок, если провайдер заблокирует конкретный сервер, ты фактически лишишься доступа к своему аккаунту. В ответ на эти ограничения появились relay-серверы.
По факту релей — это частный почтовый сервер, обычно на базе chatmail. Любой желающий может арендовать VPS на Linux, купить домен и за считаные минуты развернуть свой релей.
Delta Chat поддерживает multi-relay: один аккаунт может иметь несколько адресов на разных релеях. Собеседник при получении сообщения видит все твои адреса и отвечает на каждый из них.
Это соответствует идее федеративного устройства сети — у чата нет единой точки отказа. Если публичные серверы станут недоступны, общение продолжится через частные релеи.
Пишем свой клиент
Вместо того чтобы разбираться в мегабайтах документации, которая часто расходится с реализацией, я попросил Claude собрать минимально работающий клиент на чистом Python, сверяясь с исходниками Delta Chat. Идеальная задача для ИИ: исходники открыты, результат легко проверяется — либо сообщение дошло и расшифровалось, либо нет.
Для работы нужны два репозитория:
- deltachat-core-rust — ядро Delta Chat на Rust. Здесь реализована вся криптография (через rPGP), протокол SecureJoin, работа с IMAP и SMTP, формат сообщений;
- chatmail — серверная часть chatmail-релеев. Здесь видно, как сервер фильтрует сообщения (filtermail), какие пакеты принимает, а какие отклоняет.
Задача — собрать клиент, у которого есть три функции:
- Регистрация — создать аккаунт на chatmail-сервере и сгенерировать ключ PGP.
- Добавление контакта и отправка — отправить сообщение первым.
- Эхо‑бот — принимать входящие сообщения, расшифровывать и отвечать на них.
Если все три сценария работают — клиент отправляет, принимает, шифрует и расшифровывает, — значит, протокол понят верно. После этого разбираем полученный код вручную.
Регистрация
python -m pydeltachat.tests.register
python -m pydeltachat.tests.register --name "My Bot" --domain nine.testrun.org
Скрипт создает новый chatmail-аккаунт с ключом PGP, совместимым с Delta Chat.
Создание аккаунта
По умолчанию используется релей nine.. Скрипт генерирует случайные credentials: 9-символьный username и 50-символьный пароль из [ через secrets. — криптографически стойкий ГПСЧ.
Chatmail-серверы реализуют instant onboarding: отдельной регистрации нет — аккаунт создается автоматически при первом IMAP-логине. Скрипт подключается к серверу по IMAP4 SSL, выполняет LOGIN — и аккаунт готов.
Генерация ключа PGP
Скрипт генерирует ключ OpenPGP v4, состоящий из двух частей.
Продолжение доступно только участникам
Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».
Присоединяйся к сообществу «Xakep.ru»!
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
