Как установить и настроить Mailtrain на VPS
Если рассылка растёт, а тариф SaaS-сервиса растёт вместе с базой подписчиков — рано или поздно считаешь, во сколько обходится каждое письмо, и понимаешь, что своя платформа окупится за пару месяцев. Mailtrain — open-source инструмент для email-рассылок с сегментацией, шаблонами и автоматизацией, который можно развернуть на своём VPS и платить только за сервер. Ниже — путь от чистой машины до рабочей рассылки: установка через Docker, три интерфейса Mailtrain, настройка отправки и доставляемости.
Содержание
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Что такое Mailtrain и когда он подходит
Mailtrain — это платформа управления email-рассылками: списки подписчиков, сегментация по произвольным полям и условиям, конструктор шаблонов писем, кампании (разовые, RSS-рассылки, триггерные), статистика открытий и переходов. По задачам это аналог Mailchimp или SendPulse, только self-hosted — без лимита на число подписчиков и без ежемесячной платы за объём базы.
Важно понимать границу: Mailtrain — не полноценный почтовый сервер. Он не принимает входящую почту и не даёт вам ящики вида info@домен. Для отправки он использует либо встроенный движок доставки, либо внешний SMTP-релей. Если вам нужен именно почтовый сервер с ящиками, IMAP и веб-почтой — это другая задача, для неё в блоге есть отдельные материалы про Postfix и Mailcow. Mailtrain же закрывает именно маркетинговые и информационные рассылки — то, что раньше делал SaaS.
Требования к серверу и подготовка
Для небольшой и средней базы подписчиков достаточно 2 vCPU и 4 ГБ RAM — под приложение, MySQL/MariaDB и Redis, из которых обычно собирается стек Mailtrain. Если база измеряется сотнями тысяч адресов или рассылки идут часто и объёмно, закладывайте больше памяти и следите за диском: логи отправки и очереди со временем накапливаются.
Вам понадобится:
- домен (или поддомен) с доступом к DNS — например,
mail.вашдомен.ruпод сам интерфейс Mailtrain; - VPS с установленными Docker и Docker Compose;
- открытый исходящий порт для отправки почты — либо 25, если провайдер его не блокирует, либо 587 для работы через внешний SMTP-релей (об этом ниже);
- чистый IP без истории спама, если планируете отправлять через встроенный движок Mailtrain напрямую.
Установить Docker на чистую систему можно одной командой:
curl -fsSL https://get.docker.com | sudo sh
sudo apt install -y docker-compose-plugin
Локацию сервера выбирайте по аудитории рассылки: RU — если подписчики преимущественно в России и данные должны храниться в стране, US или UK — для международной базы.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверУстановка Mailtrain через Docker Compose
Актуальный способ развернуть Mailtrain — официальный Docker-образ и docker-compose.yml из репозитория проекта (поддерживаемый форк mailtrain-org/mailtrain на GitHub — оригинальный проект какое-то время не обновлялся, сообщество подхватило разработку). Клонируйте репозиторий и подготовьте конфигурацию:
git clone https://github.com/Mailtrain-org/mailtrain.git
cd mailtrain
cp .env.example .env
В .env задайте как минимум:
WWW_HOST— адрес доверенного (админского) интерфейса, напримерmail.вашдомен.ru;SANDBOX_HOSTиPUBLIC_HOST— адреса второго и третьего интерфейсов (см. следующий раздел), обычно поддомены того же домена;- пароль для MySQL/MariaDB и параметры подключения к Redis, если compose-файл не поднимает их автоматически;
TZ— часовой пояс сервера.
Названия переменных и структура файла могут немного отличаться между версиями — сверяйтесь с README.md в клонированном репозитории, он всегда актуальнее любой статьи. После настройки .env поднимайте стек:
docker compose up -d
docker compose ps
Первый запуск создаёт базу данных и применяет миграции — это может занять минуту-другую. Проверяйте логи, если контейнер приложения долго не переходит в healthy:
docker compose logs -f mailtrain
Три интерфейса Mailtrain и первый вход
Особенность Mailtrain, которая на старте сбивает с толку, — у него не один веб-адрес, а три отдельных интерфейса, каждый на своём хосте или порте:
| Интерфейс | Назначение | Кто заходит |
|---|---|---|
| Trusted (доверенный) | Админка: списки, кампании, шаблоны, настройки | Только вы, администратор |
| Sandbox (песочница) | Формы подписки, предпросмотр писем от имени пользователя | Встраивается в публичные формы сайта |
| Public (публичный) | Просмотр письма в браузере, отписка | Получатели рассылки |
Такое разделение сделано намеренно: доверенный интерфейс с полным доступом к системе не должен быть доступен там же, где крутятся пользовательские формы и ссылки отписки из писем. Настройте для каждого интерфейса отдельный поддомен (или порт, если поддоменов не хватает) ещё на этапе .env, до первого запуска — менять базовые адреса задним числом сложнее.
Откройте WWW_HOST — адрес доверенного интерфейса — в браузере и войдите. Данные учётной записи администратора задаются при первой настройке (через .env или мастер первого запуска, в зависимости от версии) — обязательно смените пароль сразу после входа, если он был установлен по умолчанию. Дальше в разделе настроек проверьте, что все три адреса из .env подхватились корректно: неверно указанный PUBLIC_HOST приводит к тому, что ссылки отписки в письмах ведут в никуда, а это прямой путь в спам-жалобы.
SSL для интерфейсов
Все три адреса Mailtrain должны открываться по HTTPS — и админка с доступом к базе подписчиков, и публичная страница с личными данными получателей тем более. Проще всего вынести Mailtrain за реверс-прокси и получить сертификаты Let's Encrypt на прокси-сервере, не трогая контейнеры самого приложения. Подробный разбор настройки — в статье про nginx как реверс-прокси на VPS: та же схема подходит и здесь, просто вместо одного проксируемого адреса будет три — по одному на каждый интерфейс Mailtrain, с отдельным DNS A-записями на IP сервера.
Настройка отправки: встроенный движок или SMTP-релей
Здесь чаще всего теряют время новички. Mailtrain умеет отправлять письма напрямую — встроенным движком доставки, который сам резолвит MX получателя и стучится на его почтовый сервер. Это работает, но требует ровно того же, что и любой самостоятельный почтовый сервер: чистого IP без спам-истории, PTR-записи и открытого 25 порта — многие провайдеры блокируют его по умолчанию именно из-за спама.
Практичнее в большинстве случаев — настроить в Mailtrain отправку через внешний SMTP-релей: свой Postfix на соседнем сервере, коммерческий транзакционный сервис или относительно свежий IP с уже наработанной репутацией. В настройках отправки Mailtrain (раздел Send Configuration в админке) укажите:
SMTP host: smtp.вашрелей.ru
SMTP port: 587
Auth: логин и пароль релея
Encryption: STARTTLS
Плюс релея — он берёт на себя репутацию IP и знает, как договариваться с почтовыми провайдерами вроде Gmail и Mail.ru. Минус — дополнительная точка настройки и, если релей коммерческий, дополнительная статья расходов, которую вы изначально хотели убрать переходом на self-hosted. Для старта на новом домене я обычно рекомендую именно релей: пока репутация IP Mailtrain-сервера не наработана, прямая отправка через порт 25 почти гарантированно уходит в спам, а через уже прогретый релей — доходит с первого дня.
SPF, DKIM, DMARC и доставляемость
Какой бы способ отправки вы ни выбрали, домен, от имени которого уходят письма, обязан быть подтверждён записями SPF, DKIM и DMARC — иначе крупные почтовые провайдеры массово отправляют такие письма в спам или вовсе отклоняют, особенно с 2024 года, когда Gmail и Yahoo ужесточили требования к балковым рассылкам. Если отправляете через собственный Postfix-релей, DKIM-ключ генерируется на стороне Postfix и публикуется в DNS домена, от которого идёт рассылка; если через коммерческий релей — он сам выдаёт готовые значения записей для вашего DNS.
Полный разбор — в статье SPF, DKIM и DMARC на VPS: там и объяснение механики, и конкретные примеры записей. Здесь — минимальный чек-лист специально под рассылки:
- SPF в TXT домена включает адрес вашего релея или сервера отправки (
v=spf1 include:relay-домен -all); - DKIM-селектор релея прописан отдельной TXT-записью;
- DMARC задан хотя бы в мягком режиме (
p=none) для сбора отчётов на старте, позже — ужесточается доp=quarantine; - поле From в шаблонах Mailtrain использует именно тот домен, для которого настроены эти записи — не сторонний адрес.
После настройки отправьте тестовую кампанию на пару собственных ящиков в разных сервисах (Gmail, Яндекс, Mail.ru) и проверьте, что письмо попало во «Входящие», а не в спам, и что заголовки показывают прохождение SPF и DKIM.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверНужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.
Частые вопросы
Чем Mailtrain отличается от Mailcow?
Mailtrain — платформа для email-рассылок (списки, кампании, сегментация), а Mailcow — полноценный почтовый сервер с ящиками и приёмом входящей почты. Их часто используют вместе: Mailcow или Postfix как транспорт, Mailtrain как надстройка для маркетинговых рассылок.
Можно ли отправлять через порт 25 напрямую с VPS?
Технически да, если провайдер его не блокирует, но на новом IP без репутации письма будут массово улетать в спам. Для старта надёжнее relay через порт 587 с уже прогретым IP.
Зачем Mailtrain три отдельных адреса вместо одного?
Это разделение по ролям безопасности: доверенный интерфейс имеет полный доступ к базе подписчиков и не должен быть замешан с публичными формами и ссылками отписки, которые видят получатели писем.
Сколько подписчиков потянет VPS с 4 ГБ RAM?
Для баз в десятки-сотни тысяч адресов этого обычно достаточно, если отправка идёт через внешний релей, а не встроенным движком с прямой доставкой на MX. При активной аналитике по кликам и открытиям на больших объёмах стоит закладывать запас памяти и следить за нагрузкой на MySQL.
Нужен ли Mailtrain выделенный IP?
Не обязателен, если письма уходят через relay — репутацию несёт IP релея. Если же используете встроенный движок доставки напрямую, выделенный чистый IP крайне желателен.
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →