Skip to main content

Зачем нужен SMTP

Email-уведомления используются в Cabinet для:
  • Верификации email при регистрации
  • Сброса пароля
  • Уведомлений о платежах, подписках, автопродлении
  • Реферальных бонусов и партнёрских заявок
  • Заявок на вывод средств
Email работает только при CABINET_ENABLED=true. Без Cabinet настройка SMTP не требуется.

Варианты настройки

Проверка доступности почтовых портов

Многие хостеры блокируют исходящие почтовые порты. Проверьте до начала настройки.

Проверка порта 25 (SMTP)

Проверка порта 587 (Submission/STARTTLS)

Проверка порта 465 (SMTPS/SSL)

Интерпретация результатов

Если порт 25 заблокирован — свой Postfix не сможет доставлять почту напрямую. Используйте relay через внешний SMTP (порт 587) или обратитесь к хостеру для разблокировки.

Проверка наличия обратной DNS-записи (PTR)

Если PTR-запись пустая или не совпадает с вашим доменом — многие почтовые серверы будут отклонять письма. Настройте PTR через панель хостера.

Вариант 1: Внешний SMTP (рекомендуется)

Yandex 360

  1. Подключите домен к Yandex 360 для бизнеса
  2. Создайте почтовый ящик (например, noreply@yourdomain.com)
  3. Сгенерируйте пароль приложения: Yandex ID → Безопасность → Пароли приложений
Лимит Yandex 360: 500 писем в сутки на бесплатном тарифе.

Gmail

  1. Включите двухфакторную аутентификацию в Google-аккаунте
  2. Создайте пароль приложения: myaccount.google.com/apppasswords
Лимит Gmail: 500 писем в сутки для обычного аккаунта, 2000 для Google Workspace.

Mailgun / Brevo / Resend

Для массовых рассылок используйте транзакционные email-сервисы:

Вариант 2: Свой Postfix

Требования

  • Чистый IP-адрес (не в спам-листах)
  • PTR-запись, совпадающая с доменом
  • Открытый порт 25 (исходящий)
  • Выделенный домен для почты

Шаг 1: Установка Postfix

При установке выберите Internet Site и укажите ваш домен (например, mail.yourdomain.com).

Шаг 2: Настройка Postfix

Основные параметры:
Перезапустите:

Шаг 3: DNS-записи

Добавьте в DNS вашего домена:

MX-запись

A-запись для почтового сервера

SPF-запись

SPF указывает, какие серверы имеют право отправлять почту от имени домена.
-all означает строгий режим: письма с других IP будут отклоняться.

Проверка SPF

Шаг 4: DKIM (подпись писем)

DKIM подписывает каждое письмо криптографическим ключом, подтверждая что оно отправлено вашим сервером.
Создайте директории и ключи:
Настройте OpenDKIM:
Подключите OpenDKIM к Postfix:
Добавьте в конец:
Перезапустите сервисы:
Добавьте DKIM DNS-запись. Посмотрите публичный ключ:
Скопируйте содержимое и добавьте TXT-запись:

Проверка 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:
Вариант B: Postfix в контейнере
docker-compose.postfix.yml
В .env:

Тестирование

Отправка тестового письма через командную строку

Отправка через SMTP напрямую

Проверка логов Postfix

Проверка через бота

После настройки SMTP перезапустите бота и проверьте:
  1. Откройте Cabinet
  2. Зарегистрируйтесь по email
  3. Проверьте что письмо верификации пришло
Если письмо не пришло — проверьте логи бота и логи Postfix.

Проверка доставляемости

Онлайн-сервисы

Отправьте тестовое письмо и проверьте оценку:
  • mail-tester.com — оценка от 0 до 10, проверяет SPF/DKIM/DMARC, контент, блеклисты
  • mxtoolbox.com — проверка DNS-записей, блеклистов, SMTP-сервера

Проверка IP в спам-листах

Чтобы получить reversed IP: 1.2.3.44.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 приходит