Зачем нужен SMTP
Email-уведомления используются в Cabinet для:- Верификации email при регистрации
- Сброса пароля
- Уведомлений о платежах, подписках, автопродлении
- Реферальных бонусов и партнёрских заявок
- Заявок на вывод средств
v3.65.0 на почту доходит гораздо больше: пользователи без Telegram (зарегистрированные в кабинете по email) получают письмами весь жизненный цикл подписки — winback-письма, уведомления от вебхуков Remnawave (WEBHOOK_*), результат автопродления и промопредложения. Раньше эти сценарии существовали только в Telegram, и email-пользователи их просто не видели.
Транзакционные и маркетинговые письма
Разделение важно: от маркетинговых писем можно отписаться, от транзакционных — нет.Тумблеры
news_enabled и promo_offers_enabled из настроек пользователя в кабинете действуют и на email тоже (v4.1.0). Раньше они фильтровали только Telegram-рассылку, и выключенные новости всё равно приходили на почту.Отписка от маркетинговых писем
One-click unsubscribe по RFC 8058 (v4.1.0): заголовок List-Unsubscribe и ссылка в футере письма.
- ссылка содержит HMAC-токен
<user_id>.<category>.<подпись>на секрете кабинета; - адрес входит в подпись, но не в саму ссылку — не утекает в
Refererи логи прокси, а смена почты обесценивает старые ссылки; - срока жизни у ссылки нет: письмо могут открыть через год;
- эндпоинт
/cabinet/public/unsubscribeдоступен без авторизации, отписка применяется только поPOST.
EMAIL_UNSUBSCRIBE_BASE_URL указывайте явно, если API кабинета проксируется не через /api.
Reply-To
Варианты настройки
Проверка доступности почтовых портов
Многие хостеры блокируют исходящие почтовые порты. Проверьте до начала настройки.Проверка порта 25 (SMTP)
Проверка порта 587 (Submission/STARTTLS)
Проверка порта 465 (SMTPS/SSL)
Интерпретация результатов
Проверка наличия обратной DNS-записи (PTR)
Вариант 1: Внешний SMTP (рекомендуется)
Yandex 360
- Подключите домен к Yandex 360 для бизнеса
- Создайте почтовый ящик (например,
noreply@yourdomain.com) - Сгенерируйте пароль приложения: Yandex ID → Безопасность → Пароли приложений
Лимит Yandex 360: 500 писем в сутки на бесплатном тарифе.
Gmail
- Включите двухфакторную аутентификацию в Google-аккаунте
- Создайте пароль приложения: myaccount.google.com/apppasswords
Лимит Gmail: 500 писем в сутки для обычного аккаунта, 2000 для Google Workspace.
Mailgun / Brevo / Resend
Для массовых рассылок используйте транзакционные email-сервисы:Вариант 2: Свой Postfix
Требования
- Чистый IP-адрес (не в спам-листах)
- PTR-запись, совпадающая с доменом
- Открытый порт 25 (исходящий)
- Выделенный домен для почты
Шаг 1: Установка Postfix
mail.yourdomain.com).
Шаг 2: Настройка Postfix
Шаг 3: DNS-записи
Добавьте в DNS вашего домена:MX-запись
A-запись для почтового сервера
SPF-запись
SPF указывает, какие серверы имеют право отправлять почту от имени домена.-all означает строгий режим: письма с других IP будут отклоняться.
Проверка SPF
Шаг 4: DKIM (подпись писем)
DKIM подписывает каждое письмо криптографическим ключом, подтверждая что оно отправлено вашим сервером.Проверка DKIM
Шаг 5: DMARC
DMARC объединяет SPF и DKIM, указывая получателям что делать с неподтверждёнными письмами.
Рекомендация: начните с
p=none для мониторинга, затем переключите на p=quarantine.
Проверка DMARC
Шаг 6: Настройка .env бота
При использовании локального Postfix аутентификация не нужна (
SMTP_USER и SMTP_PASSWORD оставьте пустыми). TLS отключён, т.к. подключение локальное.Postfix в Docker
Если бот запущен в Docker, у него нет доступа к localhost хоста. Варианты: Вариант A: host network Добавьте вdocker-compose.yml для сервиса бота:
.env:
docker-compose.postfix.yml
.env:
Тестирование
Отправка тестового письма через командную строку
Отправка через SMTP напрямую
Проверка логов Postfix
Проверка через бота
После настройки SMTP перезапустите бота и проверьте:- Откройте Cabinet
- Зарегистрируйтесь по email
- Проверьте что письмо верификации пришло
Проверка доставляемости
Онлайн-сервисы
Отправьте тестовое письмо и проверьте оценку:- mail-tester.com — оценка от 0 до 10, проверяет SPF/DKIM/DMARC, контент, блеклисты
- mxtoolbox.com — проверка DNS-записей, блеклистов, SMTP-сервера
Проверка IP в спам-листах
1.2.3.4 → 4.3.2.1.
Проверка DNS-записей
Чеклист
Перед запуском в продакшн убедитесь:- Порты 25/587 открыты (исходящие)
- PTR-запись настроена и совпадает с
myhostname - MX-запись указывает на почтовый сервер
- SPF-запись добавлена (
v=spf1 ip4:... -all) - DKIM настроен и DNS-запись добавлена
- DMARC-запись добавлена (начните с
p=none) - IP сервера нет в спам-листах
- Тестовое письмо доставляется в inbox (не в спам)
-
CABINET_ENABLED=trueв.envбота -
SMTP_*переменные заполнены в.envбота - Письмо верификации из Cabinet приходит
