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)
Ссылки
- Auth Service
- Бизнес-спека: Авторизация
- Commit:
erp-auth-service f4590e6(локальный)