Перейти к содержанию

Настройка уведомлений

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:

cd /etc/datahub/backend
sudo docker compose up -d --force-recreate

Проверка отправки

Сразу после рестарта — выполнить регистрацию тестового пользователя через 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 vim /etc/datahub/backend/templates/notifications/email/registration-confirmation.html

При правке держать структуру и имена переменных без изменений — иначе письма перестанут рендериться.

Перед заменой — сохранить резервную копию:

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. См. Мониторинг и логи.

Что дальше