Уход из облака

В последние 10−15 лет мы наблюдаем, как все сервисы постепенно уходят в «облако». При этом для интернет-корпораций самое главное — персональные данные людей, это основа для таргетинга рекламы и обучения ИИ.

Пользователи Facebook* или Tiktok не полностью контролируют контент, который им подаётся для потребления. И даже не контролируют собственные действия, поскольку их реакции моделируются и предсказываются алгоритмами соцсетей. Диктатура интернет-корпораций — в том числе результат того, что пользователи добровольно перешли на использование облачных сервисов.

Обратный перенос данных на самохостинг — долгий процесс, и он не избавит полностью от цифровой слежки. Но это движение в правильном направлении. Для корпоративных пользователей это практически единственный вариант, чтобы контролировать свой документооборот.

Самохостинг даёт полный контроль над данными, а также свободу изменять и настраивать сервисы по своему усмотрению.

Почтовая служба — один из первых кандидатов для самохостинга.

Выбор почтового сервера под Debian

Есть много опенсорсных разработок, которые подходят для установки на VPS. Среди них универсальные решения вроде b1gMail, который работает на любом дистрибутиве и может интегрироваться с Postfix. Или emailwiz — баш-скрипт для полной автоматизации установки серверов Postfix/Dovecot/SpamAssassin/OpenDKIM на Debian. Есть и готовые контейнеры с конфигами, как docker-mailserver, там уже всё настроено.

Есть и специализированные решения, такие как AnonAddy — сервер для создания одноразовых почтовых адресов, с которых почта перенаправляется на основной адрес. Почтовые алиасы для конкретных сайтов генерируются в браузере при помощи расширения:

Некоторые решения больше подходят для корпоративных клиентов. Это старые, проверенные системы, с открытым исходным кодом и большим сообществом разработчиков, где есть шанс получить техническую помощь.

В качестве почтового сервера можно поставить Postal — это современный, безопасный и удобный почтовый сервис с акцентом на конфиденциальность, гибкость и интеграцию с другими инструментами. Наверное, для корпоративной системы это один из лучших вариантов, хотя функционал бесплатной версии немного ограничен (но наличие платной версии для коммерческих компаний является скорее достоинством, чем недостатком). Исходный код опубликован на Github.

Postal
Postal

Основные функции

  • Поддержка нескольких организаций со своими серверами и пользователями.

  • Графики и статистика по объёму почты.

  • Почтовый архив.

  • Веб-хуки, которые выдают информацию в реальном времени. Полные логи этих веб-хуков хранятся семь дней.

  • Встроенная проверка и мониторинг DNS для правильной настройки доменов, с которых мы отправляем почту.

  • Отдельная конфигурация для каждого сервера: сколько времени хранить данные в СУБД, максимальный размер базы.

  • Подробные логи (можно хранить вечно) покажут любые проблемы с доставкой.

  • Продвинутый поиск по серверу.

Исходящая почта:

  • Отправка по SMTP или HTTP API.

  • Несколько учётных данных на одном сервере.

  • Поддержка DKIM для подписи исходящих сообщений.

  • Есть режим разработчика, когда сообщения якобы отправляются, но не уходят получателям (сообщение можно просмотреть в интерфейсе).

  • Чёрный список адресов и доменов для блокировки.

  • Внедрение следящих маркеров, которые сообщают нам об открытии письма или переходу по ссылке.

  • Лимиты отправки для каждого сервера.

  • Управление несколькими пулами IP-адресов. Можно настроить, чтобы разные IP использовались для разных отправителей или получателей.

  • Теги для почты. Например, можете помечать тегами финансовые квитанции или письма для сброса пароля.

Входящая почта:

  • Пересылка входящей почты на эндпоинты HTTP, другие SMTP-серверы, другие адреса электронной почты.

  • Проверка спама с помощью SpamAssassin и ClamAV с широкими возможностями для настройки с различными методами обработки.

Подготовка к установке

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

  • Минимум 4 ГБ ОЗУ

  • 2 ядра CPU

  • Минимум 25 ГБ на диске

Выбираем VPS, соответствующий этим условиям:

Мы устанавливаем Postal в контейнере Docker, так что почтовая система не имеет особого значения, но Debian — очень стабильная и надёжная ОС, поэтому подходит наилучшим образом.

Для почтового сервера важно сразу проверить, что выданный провайдером IP-адрес не находится в блоклистах. Есть смысл предварительно проверить и самого хостера (в случае с RUVDS проблем нет). Некоторые хостеры блокируют исходящий 25-й порт по умолчанию. Это тоже нужно проверить.

Итак, оплачиваем VPS, на него устанавливается Debian 13:

В это время пока можно проверить чистоту выделенного нам IP-адреса 185.68.21.197.

Затем подключаемся к серверу по SSH, выполняем гигиенические процедуры (обновление пакетов и пр.) и устанавливаем зависимости:

apt install git curl jq
  • Git и вспомогательный репозиторий:

git clone https://github.com/postalserver/install /opt/postal/install
sudo ln -s /opt/postal/install/bin/postal /usr/bin/postal
  • MariaDB (10.6 или выше), поскольку Postal не поддерживает MySQL.

СУБД можно запустить в контейнере:

docker run -d \
   --name postal-mariadb \
   -p 127.0.0.1:3306:3306 \
   --restart always \
   -e MARIADB_DATABASE=postal \
   -e MARIADB_ROOT_PASSWORD=postal \
   mariadb

Разумеется, важно установить надёжный пароль вместо postal в коде. По умолчанию указан порт 3306.

Установка

Теперь приступаем к установке самого почтового сервера. Процесс установки описан в документации и в репозитории.

В склонированном репозитории есть инструмент для автоматической генерации некоторых начальных конфигурационных файлов.

Запускаем его, указав наш хост (в примере ниже указан 185.68.21.197). Это тот домен, который мы указываем в браузере, если обращаемся к веб-интерфейсу Postal.

Этот домен предварительно должен быть настроен у провайдера DNS (например, у Cloudflare), прежде чем продолжить установку почтового сервера.

Автоматическая генерация начального конфига:

postal bootstrap 185.68.21.197

В директории /opt/postal/config появится три файла:

  • postal.yml, основной конфиг Postal;

  • signing.key, секретный ключ, который используется для подписи некоторых артефактов в Postal;

  • Caddyfile, конфигурация веб-сервера Caddy.

После этого нужно открыть файл /opt/postal/config/postal.yml и добавить в него соответствующие значения: пароли БД и др.

nano /opt/postal/config/postal.yml

Затем следует инициализировать базу данных, добавив все необходимые таблицы. Выполняем следующие команды, чтобы создать схему, а затем первого администратора:

postal initialize
postal make-user

Теперь можно запускать Postal:

postal start

Запускаются три контейнера:

По команде postal status отображается статус:

Как видим, все три воркера успешно работают.

Для обработки веб-трафика требуется настроить веб-прокси. Теоретически, подойдёт любой (nginx, Apache, HAProxy), но в официальной документации рекомендуется Caddy. Это маленький сервер, который требует минимальной настройки и очень прост в установке.

docker run -d \
   --name postal-caddy \
   --restart always \
   --network host \
   -v /opt/postal/config/Caddyfile:/etc/caddy/Caddyfile \
   -v /opt/postal/caddy-data:/data \
   caddy

Затем можно открыть веб-интерфейс Postal и войти под тем пользователем, которого мы создали на предыдущем шаге.

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

Сервер готов к приёму и отправке сообщений. При желании можно составить письмо и отправить его прямо из веб-интерфейса:

Дальнейшая конфигурация Postal возможна через вышеупомянутый файл /opt/postal/config/postal.yml, а также через переменные окружения.

Установка Postal:

Можно найти почтовый сервер, который заработает на самом слабом железе. В статье про самые дешёвые серверы мы задавались вопросом: как можно использовать VPS за 100 рублей и вообще запустится ли какой-то софт на минималистичной конфигурации с 512 мегабайтами ОЗУ? Как выяснилось, такой VPS очень полезен в хозяйстве: на нём можно запустить веб-сайт, файлохранилище, фотоархив, телеграм-ботов, Matrix-сервер для коммуникации с коллегами (голос, видео, чат), почтовый сервер и многое другое.

Например, самый дешёвый сервер в линейке «Старт» стоит 139 руб. в месяц (97 руб. при оплате за год). На выбор есть операционные системы Ubuntu, CentOS и Debian. Конфигурация: CPU 2,2 ГГц, RAM 0,5 ГБ, HDD 10 ГБ:

Некоторые почтовые серверы вполне встанут на VPS за 100 рублей и даже на смартфон, если там запускается Linux.

Проблемы независимых провайдеров

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

И постоянно отслеживать доступность самого сервера, работу канала и т. д.

Пиринговая почта

В качестве бонуса хочется упомянуть новую, необычную разработку — пиринговый почтовый сервер Tyr, который под Android работает поверх сети Yggdrasil.

В сети Yggdrasil устройство получает бесплатный адрес IPv6 и сквозное шифрование на каждом пиринговом соединении. Формат почтового адреса:

<64-шестнадцатеричных-символа>@yggmail

Как указано в документации, программа использует известные децентрализованные мессенджеры DeltaChat/ArcaneChat для безопасного обмена сообщениями. Приложение устанавливает на смартфон локальные почтовые сервера SMTP и IMAP (127.0.0.1:1025 и 127.0.0.1:1143). Почтовый сервер Yggmail (написанный на Go) встроен в приложение как библиотека и работает как фоновый процесс.

В отличие от традиционных почтовых клиентов, Tyr не нуждается в централизованных почтовых серверах, дополнительных уровнях шифрования, проброске портов или STUN/TURN-серверах (Yggdrasil пробивает NAT).

Наверное, почтовые адреса в таком формате запомнить трудно, но сама идея интересная.

* Facebook принадлежит компании Meta, признанной экстремистской и запрещённой в России.

© 2025 ООО «МТ ФИНАНС»

Комментарии (1)


  1. 776166
    11.12.2025 10:04

    Я поспорил с собой, будет ли эта статья про то, как запустить одну команду в докере, как зеркало современного подхода к пониманию и знаниям в IT. И, к сожалению, не проиграл.