Listmonk с пересылкой электронной почты для безопасной доставки информационных бюллетеней

Это руководство содержит пошаговые инструкции для разработчиков по настройке Листмонк, мощного менеджера рассылок и списков рассылки с открытым исходным кодом, для использования Переслать электронное письмо в качестве SMTP-провайдера. Такое сочетание позволяет эффективно управлять кампаниями, обеспечивая безопасную, конфиденциальную и надёжную доставку электронной почты.

  • Listmonk: отвечает за управление подписчиками, организацию списков, создание кампаний и отслеживание эффективности.
  • Forward Email: выступает в роли защищённого SMTP-сервера, обеспечивая фактическую отправку писем с помощью встроенных функций безопасности, таких как шифрование SPF, DKIM, DMARC и TLS.

Благодаря интеграции этих двух решений вы сохраняете полный контроль над своими данными и инфраструктурой, используя при этом надежную систему доставки Forward Email.

  • Открытый исходный код: И Listmonk, и принципы Forward Email делают акцент на прозрачности и контроле. Вы размещаете Listmonk самостоятельно, владея своими данными.
  • Ориентация на конфиденциальность: Forward Email построен на принципе конфиденциальности, минимизируя хранение данных и уделяя особое внимание безопасной передаче.
  • Экономичность: Listmonk бесплатен, а Forward Email предлагает щедрые бесплатные тарифы и доступные платные тарифы, что делает его бюджетным решением.
  • Масштабируемость: Listmonk отличается высокой производительностью, а инфраструктура Forward Email разработана для надежной доставки в любом масштабе.
  • Удобство для разработчиков: Listmonk предлагает надежный API, а Forward Email обеспечивает простую интеграцию с SMTP и веб-перехватчиками.

Прежде чем начать, убедитесь, что у вас есть следующее:

  • Виртуальный частный сервер (VPS) под управлением новейшего дистрибутива Linux (рекомендуется Ubuntu 20.04+) с минимум 1 процессором и 1 ГБ оперативной памяти (рекомендуется 2 ГБ).
  • Нужен провайдер? Обратите внимание на рекомендуемый список VPS.
  • Доменное имя, которым вы управляете (требуется доступ к DNS).
  • Активная учётная запись с Переслать электронное письмо.
  • Доступ с правами root или sudo к вашему VPS.
  • Базовые навыки работы с командной строкой Linux.

Эти шаги помогут вам установить Listmonk с помощью Docker и Docker Compose на вашем VPS.

1. Обновите свой сервер

Убедитесь, что список пакетов вашей системы и установленные пакеты обновлены.

sudo apt update && sudo apt upgrade -y

2. Установка зависимостей

Установите Docker, Docker Compose и UFW (несложный брандмауэр).

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 критически важно для безопасности. Есть два основных варианта:

Если DNS вашего домена управляется Cloudflare, вы можете использовать их функцию прокси-сервера для простого HTTPS.

  1. Укажите DNS: Создайте запись A в Cloudflare для вашего поддомена Listmonk (например, listmonk.yourdomain.com), указывающую на IP-адрес вашего VPS. Убедитесь, что для Статуса прокси установлено значение Прокси-сервер (оранжевый цвет облака).
  2. Измените Docker Compose: отредактируйте загруженный вами файл docker-compose.yml:
   sed -i 's/9000:9000/80:9000/' docker-compose.yml

Это сделает Listmonk доступным внутри по порту 80, который Cloudflare затем сможет проксировать и защитить по протоколу HTTPS.

Вариант B: Использование обратного прокси-сервера (Nginx, Caddy и т. д.)

В качестве альтернативы вы можете настроить обратный прокси-сервер, такой как Nginx или Caddy, на своем VPS для обработки HTTPS-терминации и прокси-запросов к Listmonk (по умолчанию работающему на порту 9000).

  • Оставьте значение по умолчанию ports: - "127.0.0.1:9000:9000" в docker-compose.yml, чтобы Listmonk был доступен только локально.
  • Настройте выбранный обратный прокси-сервер для прослушивания портов 80 и 443, обработки получения SSL-сертификатов (например, через Let's Encrypt) и перенаправления трафика на http://127.0.0.1:9000.
  • Подробная настройка обратного прокси-сервера выходит за рамки данного руководства, но множество обучающих материалов доступно онлайн.

6. Запустите Listmonk

Вернитесь в каталог listmonk (если вы еще там не находитесь) и запустите контейнеры в отсоединенном режиме.

cd ~/listmonk # Or the directory where you saved docker-compose.yml
docker compose up -d

Docker загрузит необходимые образы и запустит приложение Listmonk и контейнеры базы данных. В первый раз это может занять минуту-другую.

Доступ к Listmonk: Теперь у вас должна быть возможность доступа к веб-интерфейсу Listmonk через настроенный вами домен (например, https://listmonk.yourdomain.com).

7. Настройте пересылку электронной почты SMTP в Listmonk

Затем настройте Listmonk для отправки писем с использованием вашей учетной записи Forward Email.

  1. Включите SMTP для пересылки писем: Убедитесь, что вы создали учётные данные SMTP в панели управления вашей учётной записью для пересылки писем. Если вы ещё этого не сделали, следуйте инструкциям Руководство по пересылке электронной почты для отправки электронной почты с использованием пользовательского домена через SMTP.
  2. Настройте Listmonk: Войдите в панель администратора Listmonk.
  • Перейдите в Настройки -> SMTP.

  • Listmonk имеет встроенную поддержку пересылки электронной почты. Выберите ForwardEmail из списка провайдеров или введите вручную следующие данные:

Параметр Ценить
Хозяин smtp.forwardemail.net
Порт 465
Протокол аутентификации LOGIN
Имя пользователя Ваше имя пользователя SMTP для пересылки электронной почты
Пароль Ваш пароль SMTP для пересылки электронной почты
TLS SSL/TLS
Из электронной почты Ваш желаемый адрес From (например, newsletter@yourdomain.com). Убедитесь, что этот домен настроен в настройках пересылки электронной почты.
  • Важно: Всегда используйте порт 465 с SSL/TLS для безопасных соединений при пересылке электронной почты. Не используйте STARTTLS (порт 587).

  • Нажмите Сохранить.

  1. Отправить тестовое письмо: Нажмите кнопку «Отправить тестовое письмо» на странице настроек SMTP. Введите адрес получателя, к которому у вас есть доступ, и нажмите Отправить. Убедитесь, что письмо дошло до получателя.

8. Настройте обработку отказов

Обработка отказов позволяет Listmonk автоматически обрабатывать письма, которые не удалось доставить (например, из-за недействительных адресов). Функция пересылки почты предоставляет веб-хук для уведомления Listmonk о недоставке.

Настройка пересылки электронной почты

  1. Войдите в свой аккаунт Панель управления пересылкой электронной почты.
  2. Перейдите в раздел Домены, выберите домен, который вы используете для отправки, и перейдите на страницу Настройки.
  3. Прокрутите страницу вниз до раздела URL-адрес веб-перехватчика возврата.
  4. Введите следующий URL-адрес, заменив <your_listmonk_domain> фактическим доменом или поддоменом, к которому доступен ваш экземпляр Listmonk:
   https://<your_listmonk_domain>/webhooks/service/forwardemail

Пример: https://listmonk.yourdomain.com/webhooks/service/forwardemail 5. Прокрутите страницу вниз до раздела Ключ проверки полезной нагрузки подписи веб-перехватчика. 6. Скопируйте сгенерированный ключ проверки. Он понадобится вам в Listmonk. 7. Сохраните изменения в настройках домена для пересылки электронной почты.

Настройка Listmonk

  1. В панели администратора Listmonk перейдите в раздел Настройки -> Возвраты.
  2. Включите Включить обработку возвратов.
  3. Включите Включить веб-перехваты возвратов.
  4. Прокрутите вниз до раздела Поставщики веб-перехватов.
  5. Включите Пересылка электронной почты.
  6. Вставьте Ключ проверки полезной нагрузки подписи веб-перехвата, скопированный из панели управления пересылкой электронной почты, в поле Ключ пересылки электронной почты.
  7. Нажмите Сохранить внизу страницы.
  8. Обработка возвратов настроена! Когда Forward Email обнаруживает возврат письма, отправленного Listmonk, он уведомляет ваш экземпляр Listmonk через веб-хук, и Listmonk соответствующим образом отмечает подписчика.
  9. Выполните следующие шаги в Тестирование, чтобы убедиться, что всё работает.

Вот краткий обзор основных функций Listmonk:

Создать список рассылки

  • Перейдите в раздел Списки на боковой панели.
  • Нажмите Новый список.
  • Заполните данные (Имя, Тип: Публичный/Частный, Описание, Теги) и нажмите Сохранить.

Добавить подписчиков

  • Перейдите в раздел Подписчики.
  • Вы можете добавить подписчиков:
  • Вручную: нажмите Новый подписчик.
  • Импорт: нажмите Импортировать подписчиков, чтобы загрузить CSV-файл.
  • API: используйте API Listmonk для программного добавления.
  • Назначьте подписчиков одному или нескольким спискам во время создания или импорта.
  • Рекомендация: используйте процедуру двойного согласия. Настройте это в разделе Настройки -> Согласие и подписки.

Создать и отправить кампанию

  • Перейдите в раздел Кампании -> Новая кампания.
  • Заполните информацию о кампании (Название, Тема, От кого, Список(и) для отправки).
  • Выберите тип контента (Rich Text/HTML, Обычный текст, Raw HTML).
  • Составьте текст письма. Вы можете использовать переменные шаблона, например, {{ .Subscriber.Email }} или {{ .Subscriber.FirstName }}.
  • Всегда сначала отправляйте тестовое письмо! Используйте опцию «Отправить тест», чтобы просмотреть письмо во входящих.
  • Если всё в порядке, нажмите Начать кампанию, чтобы отправить письмо немедленно или запланировать отправку на потом.

  • Доставка SMTP: Регулярно отправляйте тестовые письма через страницу настроек SMTP Listmonk и тестовые кампании, чтобы убедиться в корректной доставке писем.
  • Обработка отказов: Отправьте тестовую рассылку на заведомо недействительный адрес электронной почты (например, bounce-test@yourdomain.com, если у вас нет реального адреса, хотя результаты могут отличаться). Через некоторое время проверьте статистику кампании в Listmonk, чтобы убедиться, что отказ зарегистрирован.
  • Заголовки писем: Используйте такие инструменты, как Тестер почты, или проверьте заголовки писем вручную, чтобы убедиться, что SPF, DKIM и DMARC проходят проверку, что свидетельствует о правильной настройке пересылки.
  • Журналы пересылки писем: Проверьте журналы панели управления пересылкой писем, если подозреваете, что проблемы с доставкой связаны с SMTP-сервером.

  • Шаблоны: Listmonk использует шаблонизатор Go. Ознакомьтесь с его документацией для расширенной персонализации: {{ .Subscriber.Attribs.your_custom_field }}.
  • API: Listmonk предоставляет комплексный REST API для управления списками, подписчиками, кампаниями, шаблонами и другими функциями. Ссылку на документацию по API можно найти в нижнем колонтитуле вашего экземпляра Listmonk.
  • Настраиваемые поля: Определите настраиваемые поля подписчиков в разделе Настройки -> Поля подписчика для хранения дополнительных данных.
  • Веб-хуки: Помимо сообщений об отказах, Listmonk может отправлять веб-хуки для других событий (например, подписок), что обеспечивает интеграцию с другими системами.

Интегрируя возможности собственного хостинга Listmonk с безопасной и конфиденциальной доставкой Forward Email, вы создаёте надёжную и этичную платформу email-маркетинга. Вы сохраняете полное владение данными своей аудитории, одновременно пользуясь высокой доставляемостью и автоматизированными функциями безопасности.

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

Удачной отправки! 🚀