Настройка уведомлений
DataHUB отправляет уведомления пользователям личного кабинета по двум каналам — email (обязательно) и SMS (опционально). Уведомления используются для подтверждения регистрации, сброса пароля, смены email, двухфакторной аутентификации (2FA), системных событий.
Эта статья описывает конфигурацию обоих каналов и шаблонов сообщений. Конфигурация выполняется на стороне Сервера DataHUB через .env блока backend и шаблоны в /etc/datahub/backend/templates/.
Что отправляется по email
Стандартные сценарии, в которых платформа отправляет письма:
| Сценарий | Шаблон | Когда срабатывает |
|---|---|---|
| Подтверждение регистрации | registration-confirmation.html |
Пользователь зарегистрировался — отправляется OTP-код для подтверждения email |
| Сброс пароля | reset-password.html |
Пользователь запросил сброс пароля — отправляется код для подтверждения |
| Подтверждение смены email | change-email-confirmation.html |
Пользователь меняет email в профиле — на новый адрес отправляется код подтверждения |
Без рабочей email-инфраструктуры пользователи не смогут зарегистрироваться, сбросить пароль или сменить email.
Что отправляется по SMS
SMS-канал опционален (NOTIFICATION_SMS_ENABLED=false по умолчанию). При включении используются шаблоны:
| Сценарий | Шаблон | Когда срабатывает |
|---|---|---|
| Подтверждение телефона | phone-confirmation.txt |
Пользователь добавляет телефон в профиль — на номер отправляется OTP |
| 2FA при входе | two-factor-confirmation.txt |
При включённом 2FA — каждый раз при входе отправляется одноразовый код |
Без SMS платформа полностью работоспособна — телефон в профиле указать можно, но включить 2FA нельзя (нет канала для отправки одноразового кода). Остальной функционал не затрагивается.
Конфигурация Email
Параметры в .env блока backend:
NOTIFICATION_EMAIL_HOST=smtp.<your-domain>
NOTIFICATION_EMAIL_PORT=465
NOTIFICATION_EMAIL_USERNAME=noreply@<your-domain>
NOTIFICATION_EMAIL_PASSWORD={{NOTIFICATION_EMAIL_PASSWORD}}
NOTIFICATION_EMAIL_SSL_ENABLE=true
NOTIFICATION_EMAIL_STARTTLS_ENABLE=false
NOTIFICATION_EMAIL_STARTTLS_REQUIRED=false
NOTIFICATION_EMAIL_FROM=noreply@<your-domain>
# NOTIFICATION_EMAIL_CONNECTION_TIMEOUT=10000
NOTIFICATION_EMAIL_SUBJECT_REGISTRATION_CONFIRMATION="Подтверждение регистрации"
NOTIFICATION_EMAIL_SUBJECT_RESET_PASSWORD="Сброс пароля"
NOTIFICATION_EMAIL_SUBJECT_CHANGE_EMAIL="Подтверждение смены email"
| Переменная | Назначение |
|---|---|
NOTIFICATION_EMAIL_HOST |
Адрес SMTP-сервера. Может быть внутренним корпоративным или внешним сервисом (Mailgun, Yandex 360, и т.п.) |
NOTIFICATION_EMAIL_PORT |
Порт SMTP. По умолчанию 465 (SMTPS). Для STARTTLS обычно 587. |
NOTIFICATION_EMAIL_USERNAME/PASSWORD |
Учётные данные для аутентификации на SMTP-сервере |
NOTIFICATION_EMAIL_SSL_ENABLE |
true — использовать TLS-соединение сразу (для порта 465); false — использовать STARTTLS |
NOTIFICATION_EMAIL_STARTTLS_ENABLE |
true — апгрейдить соединение через STARTTLS (для порта 587). Должно быть false, если SSL_ENABLE=true |
NOTIFICATION_EMAIL_STARTTLS_REQUIRED |
true — провалить отправку, если STARTTLS не доступен |
NOTIFICATION_EMAIL_FROM |
Адрес отправителя, который видит получатель. Часто = NOTIFICATION_EMAIL_USERNAME, но не обязательно |
NOTIFICATION_EMAIL_CONNECTION_TIMEOUT |
Таймаут установки соединения и чтения ответа, мс. По умолчанию 10000 (10 сек) |
NOTIFICATION_EMAIL_SUBJECT_* |
Темы писем для каждого сценария |
Типовые конфигурации провайдеров
Yandex 360 (yandex.ru / corporate domain):
NOTIFICATION_EMAIL_HOST=smtp.yandex.ru
NOTIFICATION_EMAIL_PORT=465
NOTIFICATION_EMAIL_SSL_ENABLE=true
NOTIFICATION_EMAIL_STARTTLS_ENABLE=false
NOTIFICATION_EMAIL_USERNAME=noreply@<your-domain>
NOTIFICATION_EMAIL_PASSWORD=<app-password>
Для Yandex обязательно использовать пароль приложения, а не основной пароль аккаунта.
Корпоративный SMTP с STARTTLS:
NOTIFICATION_EMAIL_HOST=mail.corp.<your-domain>
NOTIFICATION_EMAIL_PORT=587
NOTIFICATION_EMAIL_SSL_ENABLE=false
NOTIFICATION_EMAIL_STARTTLS_ENABLE=true
NOTIFICATION_EMAIL_STARTTLS_REQUIRED=true
NOTIFICATION_EMAIL_USERNAME=noreply@<your-domain>
NOTIFICATION_EMAIL_PASSWORD=<smtp-password>
Mailgun API через SMTP:
NOTIFICATION_EMAIL_HOST=smtp.mailgun.org
NOTIFICATION_EMAIL_PORT=465
NOTIFICATION_EMAIL_SSL_ENABLE=true
NOTIFICATION_EMAIL_USERNAME=postmaster@mg.<your-domain>
NOTIFICATION_EMAIL_PASSWORD=<mailgun-smtp-password>
NOTIFICATION_EMAIL_FROM=noreply@<your-domain>
Применение изменений
После правки .env — перезапустить backend:
Проверка отправки
Сразу после рестарта — выполнить регистрацию тестового пользователя через UI или сбросить пароль существующему. Проверить:
- письмо доставлено на указанный адрес;
- адрес отправителя соответствует
NOTIFICATION_EMAIL_FROM; - тема письма — на русском, не «крякозябры»;
- ссылки в письме указывают на корректный
DATAHUB_PUBLIC_URL.
Если письмо не пришло — смотреть docker logs backend | grep -i mail на предмет ошибок SMTP-аутентификации, TLS, DNS.
Шаблоны Email
Шаблоны лежат в /etc/datahub/backend/templates/notifications/email/ и монтируются в контейнер как read-only том:
/etc/datahub/backend/templates/notifications/email/
├── registration-confirmation.html
├── reset-password.html
└── change-email-confirmation.html
Шаблоны — обычный HTML со вставками-переменными в формате {{variable}} (Thymeleaf-стиль). Доступные переменные зависят от сценария — типично: код подтверждения, имя пользователя, ссылка на личный кабинет, время истечения кода.
Адаптация шаблонов
Дефолтные шаблоны можно править прямо на хосте — backend перечитывает их при рендеринге каждого письма (рестарт контейнера не нужен).
При правке держать структуру и имена переменных без изменений — иначе письма перестанут рендериться.
Перед заменой — сохранить резервную копию:
sudo cp /etc/datahub/backend/templates/notifications/email/registration-confirmation.html \
/etc/datahub/backend/templates/notifications/email/registration-confirmation.html.orig
Брендирование
Если нужно добавить логотип, корпоративные цвета, кастомное оформление — править шаблоны полностью. Изображения — либо встраивать в HTML как base64 (надёжнее, но раздувает размер письма), либо ссылаться на внешний URL (требует, чтобы изображения были доступны получателям).
Конфигурация SMS
На текущий момент платформа поддерживает только одного SMS-провайдера — SMSC.ru. Запрос отправляется по контракту HTTP API SMSC.ru — фиксированный набор query-параметров (login, psw, phones, mes, sender, fmt=3, charset=utf-8). Подключить другого провайдера без изменений в коде нельзя.
По умолчанию SMS выключены. Для включения:
NOTIFICATION_SMS_ENABLED=true
NOTIFICATION_SMS_API_URL=https://smsc.ru/sys/send.php
NOTIFICATION_SMS_API_LOGIN=<smsc-login>
NOTIFICATION_SMS_API_PASSWORD=<smsc-password>
NOTIFICATION_SMS_SENDER=DataHUB
| Переменная | Назначение |
|---|---|
NOTIFICATION_SMS_ENABLED |
Глобальный switch SMS-канала |
NOTIFICATION_SMS_API_URL |
Endpoint SMSC.ru для отправки SMS (см. документацию провайдера) |
NOTIFICATION_SMS_API_LOGIN/PASSWORD |
Логин и пароль (или API-ключ) учётной записи SMSC.ru |
NOTIFICATION_SMS_SENDER |
Имя/номер отправителя, которое видит получатель. Требует предварительного согласования и регистрации в личном кабинете SMSC.ru |
После правки — перезапустить backend.
Шаблоны SMS
/etc/datahub/backend/templates/notifications/sms/
├── phone-confirmation.txt
└── two-factor-confirmation.txt
SMS-шаблоны — plain text, без HTML. Ограничение длины — стандартные 160 символов на латинице или 70 символов на кириллице. Сообщения с большей длиной отправляются как несколько SMS подряд, что повышает стоимость.
Тестирование SMS
После включения — попросить пользователя добавить телефон в профиль (для теста). Если SMS не дошло — проверить:
- баланс счёта у SMS-провайдера;
- одобрено ли имя отправителя
NOTIFICATION_SMS_SENDERу провайдера; - логи backend (
docker logs backend | grep -i sms).
Rate-limiting на отправку OTP
Чтобы избежать злоупотребления отправкой OTP (например, спам на чужой email/телефон через формы), backend применяет rate-limiting на этом этапе. Подробности — в Настройка безопасности / Rate-limiting / OTP.
Кратко: 3 OTP за 3 минуты на пользователя, после превышения — пауза 60 секунд.
Что не входит в email/SMS-уведомления
Backend не отправляет уведомления о бизнес-событиях обмена (сообщение получено, маршрут отработал, и т.п.). Уведомления — только про администрирование платформы (регистрация, пароли, 2FA).
Бизнес-нотификации в платформе сделаны иначе:
- Журнал обмена в UI — администратор и оператор видят все события через личный кабинет.
- Webhook'и (если реализовано) — статусы доставки сообщений можно конфигурировать с отправкой на внешний URL клиентской системы.
- Системы мониторинга — алерты на технические проблемы (диск, очереди, healthcheck) настраиваются вне DataHUB. См. Мониторинг и логи.
Что дальше
- Сервер DataHUB — где задаются параметры
.envблока backend. - Настройка безопасности / Rate-limiting — детали ограничения на отправку OTP.
- Production-настройка — проверка работы уведомлений в составе общего чек-листа.
- Мониторинг и логи — для технических алертов о состоянии платформы.