ADR-003: Email через Resend → SMTP (Selectel)

Статус

Superseded 2026-04-22 — переход с Resend HTTP API на Spring Mail + SMTP (Selectel relay).

Контекст

Для восстановления пароля (BR 1.3) нужна отправка email со ссылкой для сброса. В будущем email понадобится для уведомлений, подтверждений и рассылок.

Изначально (2026-03-31) был выбран Resend (resend.com) как email-провайдер с HTTP REST API.

Решение (текущее, 2026-04-22)

Переход на SMTP через Selectel relay (smtp.mail.selcloud.ru, SSL на порту 1127). Реализация — стандартный spring-boot-starter-mail (JavaMailSender + MimeMessageHelper).

Интеграция

  • Auth Service использует JavaMailSender для отправки писем
  • Dev: локальный mailhog на localhost:1025
  • Prod: Selectel SMTP, sender noreply@nirbi.ru
  • Конфигурация через env: SMTP_HOST, SMTP_PORT, SMTP_USERNAME, SMTP_PASSWORD, MAIL_FROM
  • Spring properties: spring.mail.properties.mail.smtp.{auth=true, ssl.enable=true, starttls.enable=false}

Почему переход

  • Собственный корпоративный домен nirbi.ru (whitelist у почтовых операторов уже работает)
  • Selectel уже оплачен для других сервисов — не нужен отдельный billing для Resend
  • Универсальный протокол SMTP — проще менять провайдера в будущем (просто смена host/порта)

Последствия

Положительные

  • Нет внешнего SaaS-зависимости (Resend) — всё через нашу инфру
  • Бесплатно (в рамках текущего Selectel-пакета)
  • Sender — наш домен, лучше deliverability

Риски

  • SMTP медленнее чем HTTP API (но для password reset не критично)
  • Troubleshooting сложнее (нет UI дашборда как у Resend)

Ссылки

Ссылки