listmonk
Свой сервис рассылок: база подписчиков, письма и статистика на вашем сервере. Развернули listmonk 6.2, залили сто тысяч адресов и посчитали, какую часть счета за рассылку он убирает, а какую придется платить все равно.
Вердикт
- тем, у кого база выросла до десятков тысяч и сервис берет деньги за каждого подписчика
- авторам и медиа, которым нужна своя рассылка без доли платформы
- тем, кому нужны сегменты по своим полям: SQL-запрос вместо готовых фильтров
- разработчикам: кампании и сервисные письма через один API
- если база маленькая: экономия не окупит возню, цифры ниже
- если нужны письма «из коробки» - без внешнего почтового сервиса ничего не уйдет
- если нужны цепочки по поведению пользователя, а не рассылка по списку
- если движок рассылок встраивается в закрытый продукт: лицензия AGPL не даст
Что это и чью задачу решает
listmonk - программа для рассылок, которая ставится на ваш сервер. Списки подписчиков, редактор писем, кампании, статистика открытий и переходов, отдельный интерфейс для служебных писем.
Автор - Kailash Nadh, технический директор крупнейшего брокера Индии. Проект живет с 2019 года, 23 тысячи звезд на GitHub, минорная версия примерно раз в квартал. Платной редакции нет: продукт один и весь под AGPL-3.0.
Задача у всех одинаковая: есть список людей, которым надо регулярно писать. Раньше за это платили Unisender, DashaMail или Mailchimp - а потом посмотрели на счет.
Жанр важно очертить сразу. Это односторонняя рассылка: вы пишете подписчикам. Не почтовый сервер, не список обсуждений, не цепочки писем по поведению пользователя.
Из чего состоит счет за рассылку
Почтовый сервис продает две разные вещи одним счетом. listmonk забирает только одну из них - и это надо понимать до того, как переезжать.
Первая часть - инструмент: база подписчиков, редактор, сегменты, отчеты. Вторая - доставляемость: серверы отправки, репутация адресов, договоренности с почтовыми провайдерами.
За инструмент сервисы берут по размеру базы. За доставляемость - по числу писем. В общем счете это не разделено, поэтому кажется, что платишь за одно.
Убедиться, что разделение настоящее, проще всего на одном вендоре. У Unisender есть и полный кабинет, и отдельная услуга Unisender Go - только отправка, без редактора и отчетов. Цены разные по устройству: кабинет считает контакты, Go считает письма.
| Что покупаем | За что платим | Порог входа |
|---|---|---|
| DashaMail, кабинет | за подписчиков, писем сколько угодно | 1 750 руб/мес за 1 000 контактов |
| Unisender, кабинет | за размер базы | от 672 руб/мес на минимальной базе |
| SendPulse, кабинет | за подписчиков | от 8,80 евро/мес до 500 подписчиков |
| listmonk | ничего, открытая лицензия | 0 руб + сервер 500 руб/мес |
| Unisender Go, только отправка | за письма, размер базы не важен | 800 руб/мес за 6 000 писем |
Цены сняты с официальных страниц 27 сентября 2026 года. Важны не суммы, а устройство: listmonk снимает плату за подписчиков и не снимает плату за письма.
Когда переезд окупается, а когда нет
Считаем по одной схеме: наш сервер плюс отправка через российский транспорт против кабинета с оплатой за подписчиков.
| Сценарий | listmonk у нас | Кабинет с оплатой за базу |
|---|---|---|
| 1 000 подписчиков, 4 письма в месяц | 500 + 800 = 1 300 руб | 1 750 руб |
| 10 000 подписчиков, 4 письма в месяц | 500 + 2 750 = 3 250 руб | заметно дороже, цифра у сервиса в калькуляторе |
| 50 000 подписчиков, письмо в неделю | 500 + 7 700 = 8 200 руб | дороже в разы |
Почему правая колонка неполная. Российские сервисы не публикуют сетку целиком: цена для большой базы считается калькулятором на сайте. Свою половину мы посчитали точно, чужую выдумывать не стали.
Первая строка - главный вывод разбора, и он против переезда. На маленькой базе экономии нет. Разница меньше пятисот рублей не окупит настройку домена, прогрев адреса и обновления.
Выигрыш появляется там, где база растет быстрее, чем число писем. У сервиса каждый новый подписчик стоит денег даже молча. В listmonk он стоит 520 килобайт на диске - это мы измерили, цифра ниже.
Сегменты, которых у сервисов нет
У подписчика можно завести любые свои поля: тариф, город, сумма покупок, дата последнего заказа. Дальше сегмент задается не галочками из готового списка, а запросом.
На нашем стенде это выглядело так. Сто тысяч подписчиков, у каждого тариф, город и сумма трат. Запрос «тариф pro или enterprise и потрачено от 10 до 40 тысяч» дал сегмент в 30 114 человек.
Считался он 58 миллисекунд - без единого индекса по этим полям. Обычный поиск по части адреса укладывается в 33 миллисекунды.
Тому, кто с запросами не знаком, это не нужно - обычный поиск по имени и адресу на месте. Тому, кто знаком, это экономит выгрузки в таблицы и обратный импорт.
Сколько это ест на самом деле
Разработчик минимальных требований не публикует вовсе. Мы намеряли их сами - и не на пустой установке, а на базе в сто тысяч адресов.
| Что мерили | Результат |
|---|---|
| Память в простое, все три контейнера | 50,6 МиБ |
| Из них само приложение | 28,7 МиБ |
| Образ listmonk | 49,7 МБ |
| База на 100 003 подписчика | 61 МБ |
| Импорт 100 000 адресов из файла | 95 секунд |
| Ответ интерфейса по HTTPS | 13 мс |
| Занято на диске, все вместе | 3,1 ГБ из 48 |
Пересчет простой: тысяча подписчиков - 520 килобайт базы. Миллион адресов займет около 520 мегабайт, то есть процент от 50 ГБ диска в тарифе CPU2-RAM4-DISK50.
Отдельный диск такому продукту не нужен. Единственное, что может разрастись, - картинки в письмах, и для них у listmonk есть встроенная поддержка объектного хранилища S3.
Сравните с соседом по нише: Dittofeed решает похожую задачу и просит пять контейнеров и 845 МиБ памяти. Здесь - два контейнера и пятьдесят.
В маркетплейсе Fatmetal
Не хотите ставить руками?
Этот стек есть в маркетплейсе Fatmetal - можно не повторять установку из этого разбора вручную. Заказываете сервер, за пару минут получаете рабочий сервис на своем домене, валидный TLS и файл с доступами. Почтовый сервис подключается отдельно - о нем ниже.
Рекомендуемая конфигурация: CPU2-RAM4-DISK50
Развертывание на Fatmetal Cloud Server
Официальный способ - docker compose. От чистой машины до рабочего интерфейса ушло полторы минуты.
Берем файл разработчика и правим четыре вещи: фиксируем версии образов, убираем порт с внешнего адреса, меняем пароль базы и добавляем обратный прокси с сертификатом.
curl -LO https://github.com/knadh/listmonk/raw/master/docker-compose.yml
# в файле: image: listmonk/listmonk:v6.2.0, ports: "127.0.0.1:9000:9000"
docker compose pull && docker compose up -d
Логин и пароль администратора задаются переменными LISTMONK_ADMIN_USER и LISTMONK_ADMIN_PASSWORD при первом запуске. Мастера первого входа нет - интерфейс сразу спрашивает пароль.
| Установка Docker из репозитория | 54 с |
| Загрузка трех образов | 41 с |
| Запуск и создание таблиц | 31 с |
| Сертификат Let’s Encrypt | менее 10 с |
В файле разработчика пароль базы данных - слово listmonk. Его обязательно менять: это первое, что подберут, если порт окажется открыт наружу.
Главное, что придется настроить
listmonk не отправляет письма сам. Он отдает их почтовому серверу, и без этого сервера продукт не работает совсем.
Это не недостаток, а устройство: репутация отправителя - отдельная работа, и продукт ее не делает. Вписываете адрес почтового сервиса, логин, пароль, и с этого момента письма уходят.
Два подводных камня. Первый: у многих хостеров исходящие почтовые порты закрыты, и разблокировать их надо у хостера - разработчик предупреждает об этом прямо в документации. Второй: без настройки SPF, DKIM и DMARC на домене письма попадут в спам.
На стенде мы отправили настоящую кампанию через настоящий почтовый сервер и нашли письмо в ящике: 2,2 секунды от запуска до доставки. Шифрование включено, пароль открытым текстом не уходит.
В письме подставились данные подписчика - имя и его собственное поле «город». То есть персонализация работает на своих полях, а не только на имени.
Сколько писем в час и почему из коробки медленно
В настройках стоит ограничение десять писем в секунду. Это заводское значение, и оно означает 36 тысяч писем в час. Рассылка по базе на сто тысяч при нем займет три часа.
Человек, который этого не знает, решит, что продукт медленный. На самом деле это предохранитель: массовая отправка на полной скорости портит репутацию адреса.
Мы сняли ограничение и замерили потолок самой программы: сто тысяч писем за 99 секунд, ровно 1 100 писем в секунду. Память поднялась до 294 МиБ, упирается все в процессор.
Что эта цифра значит и чего не значит. Письма уходили в приемник на той же машине. Это потолок программы, а не скорость доставки: в бою ограничением станет ваш почтовый сервис и его тариф.
Где может сломаться
Кампания «завершена», а писем ушло ноль
Мы отключили почтовый сервер и запустили рассылку. Интерфейс не завис - но кампания получила статус «Завершена» при счетчике отправленных 0. Смотреть надо на счетчик, а не на статус.
Пароль администратора не подходит к API
Попытка обратиться к API с паролем от интерфейса дает отказ «неверные учетные данные». Для API нужен отдельный токен, он заводится в разделе пользователей.
Обновление меняет схему базы
Разработчик в каждом выпуске повторяет: сделайте резервную копию базы перед обновлением. Порядок - остановить, скачать новый образ, выполнить обновление схемы, запустить.
Адрес администратора смотрит в интернет
В файле разработчика порт открыт на всех адресах. Закрывайте его на локальный и выпускайте наружу только обратный прокси с сертификатом.
Что держать в голове дальше
Резервная копия - это дамп базы данных. В ней лежит все: подписчики, письма, статистика и сами настройки. Отдельно копируется только папка с картинками.
Выпуски выходят примерно раз в квартал, и почти в каждом за последний год есть исправления безопасности. Обновляться тут не вопрос вкуса.
Версия 6 принесла двухфакторный вход, вход через внешнего провайдера, роли с раздельными правами и восстановление пароля по почте. Для команды из нескольких человек этого достаточно.
Связь с другими стеками
- Обратный прокси - Caddy или Traefik: сертификат и единый вход, порт приложения закрыт.
- Почтовый сервис - любой, кто дает доступ по SMTP. Российские считают письма, а не подписчиков.
- Dittofeed - наш разбор соседа, если нужны цепочки писем по поведению, а не рассылка по списку.
- Ghost - разбор платформы публикаций, если рассылка нужна вместе с блогом и платной подпиской.
- Объектное хранилище S3 - под картинки в письмах, если их много и они тяжелые.
Когда это НЕ ваш выбор
База маленькая
При тысяче подписчиков разница с кабинетом - меньше пятисот рублей в месяц. За эти деньги вы получаете обязанность следить за доменом, репутацией адреса и обновлениями.
Нужны цепочки по поведению
«Зарегистрировался и не купил - через три дня письмо» - это другой класс продуктов. listmonk шлет по списку, а не по событию.
Нужен маркетинговый комбайн
Посадочных страниц, оценки лидов и конструктора воронок здесь нет и не планируется. Продукт сознательно узкий.
Движок встраивается в свой продукт
Лицензия AGPL требует открывать исходный код сервиса, построенного на ней. Для внутренней рассылки это не помеха, для чужого SaaS - стоп.
Частые вопросы
Можно ли обойтись без внешнего почтового сервиса?
Нет. listmonk формирует письма и отдает их серверу отправки, своего у него нет. Это первое, что надо решить до установки.
Хватит ли тарифа CPU2-RAM4-DISK50?
Да, с запасом. На базе в сто тысяч адресов все три контейнера занимали 50 МиБ в простое, а при рассылке на полной скорости - 294 МиБ из четырех гигабайт.
Сколько места займет база на сто тысяч подписчиков?
61 мегабайт. Миллион адресов - около 520 мегабайт, то есть процент от 50 ГБ диска в том же тарифе.
Интерфейс на русском?
Да, полностью. Русский входит в поставку вместе с тридцатью пятью другими языками, переключается одной настройкой.
Почему рассылка идет медленно?
Из коробки стоит ограничение в десять писем в секунду. Оно меняется в настройках производительности, но поднимать его стоит осознанно: скорость портит репутацию адреса.
Что делать с отписками?
Ничего: ссылка отписки добавляется в каждое письмо автоматически, отдельная страница уже готова и работает без входа в систему.
Можно ли слать служебные письма - коды, чеки, уведомления?
Да, для них есть отдельный интерфейс и свои шаблоны. Получатель при этом может не быть подписчиком.
Что бэкапить?
Дамп базы данных и папку с картинками. Настройки лежат в той же базе, отдельного файла конфигурации на диске нет.
Итог
listmonk 6.2 делает ровно то, что обещает, и делает это на удивление дешево по железу: сто тысяч подписчиков, 61 мегабайт базы и полсотни мегабайт памяти на тарифе CPU2-RAM4-DISK50 за 500 рублей. Своя база, свои поля, сегменты запросом и персонализация по любому полю - этого у сервисов с оплатой за подписчика нет.
Но половину счета он не убирает. Доставляемость придется покупать отдельно, и на маленькой базе весь переезд не окупится. Считайте свои две строчки - за подписчиков и за письма - прежде чем начинать.
Проверено на версии 6.2.0, сентябрь 2026. На новых версиях результаты могут отличаться.
Этот стек у нас запущен на тарифе CPU2-RAM4-DISK50. Нашли неточность в гайде - напишите, поправим.