Listmonk с Forward Email для безопасной доставки рассылок
Обзор
Это руководство предоставляет разработчикам пошаговые инструкции по настройке Listmonk, мощного open-source менеджера рассылок и списков рассылки, для использования Forward Email в качестве SMTP-провайдера. Такое сочетание позволяет эффективно управлять кампаниями, обеспечивая при этом безопасную, приватную и надежную доставку писем.
- Listmonk: Управляет подписчиками, организацией списков, созданием кампаний и отслеживанием эффективности.
- Forward Email: Выступает в роли безопасного SMTP-сервера, обрабатывая фактическую отправку писем с встроенными функциями безопасности, такими как SPF, DKIM, DMARC и шифрование TLS.
Интегрируя эти два решения, вы сохраняете полный контроль над своими данными и инфраструктурой, используя при этом надежную систему доставки Forward Email.
Почему Listmonk и Forward Email
- Open Source: И Listmonk, и принципы работы Forward Email ориентированы на прозрачность и контроль. Вы самостоятельно хостите Listmonk и владеете своими данными.
- Ориентированность на конфиденциальность: Forward Email создан с акцентом на приватность, минимизируя хранение данных и обеспечивая безопасную передачу.
- Экономичность: Listmonk бесплатен, а Forward Email предлагает щедрые бесплатные тарифы и доступные платные планы, что делает это решение бюджетным.
- Масштабируемость: Listmonk обладает высокой производительностью, а инфраструктура Forward Email рассчитана на надежную доставку в больших объемах.
- Удобство для разработчиков: Listmonk предоставляет мощный API, а Forward Email — простую интеграцию SMTP и вебхуки.
Требования
Перед началом убедитесь, что у вас есть:
- Виртуальный приватный сервер (VPS) с современной Linux-системой (рекомендуется Ubuntu 20.04+), минимум 1 CPU и 1 ГБ ОЗУ (рекомендуется 2 ГБ).
- Нужен провайдер? Ознакомьтесь с рекомендуемым списком VPS.
- Доменное имя, которым вы управляете (требуется доступ к DNS).
- Активный аккаунт на Forward Email.
- Root-доступ или права
sudoна вашем VPS. - Базовые навыки работы с командной строкой Linux.
Установка
Эти шаги помогут вам установить Listmonk с помощью Docker и Docker Compose на вашем VPS.
1. Обновите сервер
Убедитесь, что список пакетов и установленные пакеты системы обновлены.
sudo apt update && sudo apt upgrade -y
2. Установите зависимости
Установите Docker, Docker Compose и UFW (Uncomplicated Firewall).
sudo apt install -y docker.io docker-compose ufw
3. Скачайте конфигурацию Listmonk
Создайте каталог для Listmonk и скачайте официальный файл docker-compose.yml.
mkdir listmonk && cd listmonk
curl -Lo docker-compose.yml https://raw.githubusercontent.com/knadh/listmonk/master/docker-compose.yml
Этот файл определяет контейнер приложения Listmonk и необходимый контейнер базы данных PostgreSQL.
4. Настройка брандмауэра (UFW)
Разрешите необходимый трафик (SSH, HTTP, HTTPS) через брандмауэр. Если ваш SSH работает на нестандартном порту, настройте соответствующим образом.
sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https
sudo ufw enable
Подтвердите включение брандмауэра при появлении запроса.
5. Настройка доступа по HTTPS
Запуск Listmonk через HTTPS важен для безопасности. У вас есть два основных варианта:
Вариант A: Использование прокси Cloudflare (рекомендуется для простоты)
Если DNS вашего домена управляется Cloudflare, вы можете использовать их прокси для простого HTTPS.
- Настройте DNS: Создайте запись
Aв Cloudflare для вашего поддомена Listmonk (например,listmonk.yourdomain.com), указывающую на IP-адрес вашего VPS. Убедитесь, что Proxy status установлен в Proxied (оранжевое облако). - Измените Docker Compose: Отредактируйте файл
docker-compose.yml, который вы скачали:Это сделает Listmonk доступным внутренне на порту 80, который Cloudflare сможет проксировать и защищать через HTTPS.sed -i 's/9000:9000/80:9000/' docker-compose.yml
Вариант B: Использование обратного прокси (Nginx, Caddy и др.)
В качестве альтернативы вы можете настроить обратный прокси, например Nginx или Caddy, на вашем VPS для обработки HTTPS и проксирования запросов к Listmonk (по умолчанию работающему на порту 9000).
- Оставьте в
docker-compose.ymlзначение по умолчаниюports: - "127.0.0.1:9000:9000", чтобы Listmonk был доступен только локально. - Настройте выбранный обратный прокси на прослушивание портов 80 и 443, получение SSL-сертификата (например, через Let's Encrypt) и пересылку трафика на
http://127.0.0.1:9000. - Подробная настройка обратного прокси выходит за рамки этого руководства, но в интернете доступно множество инструкций.
6. Запуск Listmonk
Вернитесь в каталог listmonk (если вы ещё там не находитесь) и запустите контейнеры в фоновом режиме.
cd ~/listmonk # Или в каталог, где вы сохранили docker-compose.yml
docker compose up -d
Docker загрузит необходимые образы и запустит контейнеры приложения Listmonk и базы данных. Первый запуск может занять минуту или две.
✅ Доступ к Listmonk: Теперь вы должны иметь возможность получить доступ к веб-интерфейсу Listmonk через настроенный домен (например, https://listmonk.yourdomain.com).
7. Настройка SMTP Forward Email в Listmonk
Далее настройте Listmonk для отправки писем через ваш аккаунт Forward Email.
- Включите SMTP в Forward Email: Убедитесь, что вы создали SMTP-учётные данные в панели управления Forward Email. Если ещё не сделали этого, следуйте руководству Forward Email по отправке почты с пользовательским доменом через SMTP.
- Настройте Listmonk: Войдите в панель администратора Listmonk.
-
Перейдите в Настройки -> SMTP.
-
Listmonk имеет встроенную поддержку Forward Email. Выберите ForwardEmail из списка провайдеров или введите следующие данные вручную:
Параметр Значение Хост smtp.forwardemail.netПорт 465Протокол аутентификации LOGINИмя пользователя Ваш SMTP логин Forward Email Пароль Ваш SMTP пароль Forward Email TLS SSL/TLSОт кого (From) Желаемый адрес отправителя (например, newsletter@yourdomain.com). Убедитесь, что этот домен настроен в Forward Email.
-
-
Важно: всегда используйте порт
465сSSL/TLSдля безопасных соединений с Forward Email (рекомендуется). Порт587с STARTTLS также поддерживается, но предпочтительнее SSL/TLS.- Нажмите Сохранить.
- Отправить тестовое письмо: используйте кнопку "Отправить тестовое письмо" на странице настроек SMTP. Введите адрес получателя, к которому у вас есть доступ, и нажмите Отправить. Убедитесь, что письмо пришло во входящие получателя.
8. Настройка обработки отказов
Обработка отказов позволяет Listmonk автоматически обрабатывать письма, которые не удалось доставить (например, из-за неверных адресов). Forward Email предоставляет webhook для уведомления Listmonk об отказах.
Настройка Forward Email
- Войдите в свою панель управления Forward Email.
- Перейдите в раздел Domains, выберите домен, который вы используете для отправки, и откройте страницу его Settings.
- Прокрутите вниз до раздела Bounce Webhook URL.
- Введите следующий URL, заменив
<your_listmonk_domain>на фактический домен или поддомен, где доступен ваш экземпляр Listmonk:
Пример:https://<your_listmonk_domain>/webhooks/service/forwardemailhttps://listmonk.yourdomain.com/webhooks/service/forwardemail - Прокрутите ниже до раздела Webhook Signature Payload Verification Key.
- Скопируйте сгенерированный ключ проверки. Он понадобится вам в Listmonk.
- Сохраните изменения в настройках домена Forward Email.
Настройка Listmonk
- В панели администратора Listmonk перейдите в Settings -> Bounces.
- Включите Enable bounce processing.
- Включите Enable bounce webhooks.
- Прокрутите вниз до раздела Webhook Providers.
- Включите Forward Email.
- Вставьте Webhook Signature Payload Verification Key, который вы скопировали из панели Forward Email, в поле Forward Email Key.
- Нажмите Сохранить внизу страницы.
- Обработка отказов теперь настроена! Когда Forward Email обнаружит отказ для письма, отправленного Listmonk, он уведомит ваш экземпляр Listmonk через webhook, и Listmonk отметит подписчика соответствующим образом.
- Выполните шаги ниже в разделе Тестирование, чтобы убедиться, что всё работает.
Тестирование
Вот краткий обзор основных функций Listmonk:
Создание списка рассылки
- Перейдите в Lists в боковом меню.
- Нажмите New List.
- Заполните данные (Название, Тип: Public/Private, Описание, Теги) и Сохраните.
Добавление подписчиков
- Перейдите в раздел Subscribers.
- Вы можете добавить подписчиков:
- Вручную: нажмите New Subscriber.
- Импортом: нажмите Import Subscribers для загрузки CSV-файла.
- Через API: используйте API Listmonk для программного добавления.
- Назначайте подписчиков в один или несколько списков при создании или импорте.
- Рекомендуется: используйте процесс двойного подтверждения (double opt-in). Настройте это в разделе Settings -> Opt-in & Subscriptions.
Создание и отправка кампании
- Перейдите в Campaigns -> New Campaign.
- Заполните данные кампании (Название, Тема, От кого Email, Список(ы) для отправки).
- Выберите тип контента (Rich Text/HTML, Plain Text, Raw HTML).
- Составьте содержимое письма. Можно использовать переменные шаблона, например
{{ .Subscriber.Email }}или{{ .Subscriber.FirstName }}. - Всегда сначала отправляйте тестовое письмо! Используйте опцию "Send Test" для предварительного просмотра письма во входящих.
- Когда будете готовы, нажмите Start Campaign для немедленной отправки или запланируйте отправку.
Проверка
- Доставка SMTP: регулярно отправляйте тестовые письма через страницу настроек SMTP Listmonk и тестовые кампании, чтобы убедиться, что письма доставляются корректно.
- Обработка отказов: отправьте тестовую кампанию на известный недействительный адрес (например,
bounce-test@yourdomain.com, если у вас нет реального, хотя результаты могут отличаться). Проверьте статистику кампании в Listmonk через некоторое время, чтобы увидеть, зарегистрирован ли отказ. - Заголовки писем: используйте инструменты, такие как Mail-Tester, или вручную проверьте заголовки писем, чтобы убедиться, что SPF, DKIM и DMARC проходят проверку, что свидетельствует о правильной настройке через Forward Email.
- Логи Forward Email: проверьте логи в панели Forward Email, если подозреваете проблемы с доставкой, исходящие от SMTP-сервера.
Заметки для разработчиков
- Шаблоны: Listmonk использует шаблонизатор Go. Изучите его документацию для расширенной персонализации:
{{ .Subscriber.Attribs.your_custom_field }}. - API: Listmonk предоставляет полноценный REST API для управления списками, подписчиками, кампаниями, шаблонами и прочим. Ссылку на документацию API можно найти в подвале вашего экземпляра Listmonk.
- Пользовательские поля: Определяйте пользовательские поля подписчиков в разделе Настройки -> Поля подписчиков для хранения дополнительной информации.
- Вебхуки: Помимо bounce-событий, Listmonk может отправлять вебхуки для других событий (например, подписок), что позволяет интегрироваться с другими системами.
Заключение
Интегрируя самостоятельное решение Listmonk с безопасной и уважающей приватность доставкой Forward Email, вы создаёте надёжную и этичную платформу для email-маркетинга. Вы сохраняете полный контроль над данными своей аудитории, одновременно получая преимущества высокой доставляемости и автоматизированных функций безопасности.
Эта конфигурация предоставляет масштабируемую, экономичную и удобную для разработчиков альтернативу проприетарным почтовым сервисам, идеально соответствуя духу открытого программного обеспечения и защите приватности пользователей.
Удачной рассылки! 🚀