Directus отправляет письма восстановления пароля, приглашения пользователям и всё, что генерируют Flows, — и по умолчанию передаёт их sendmail, которого в контейнере обычно нет. Почта настраивается только переменными окружения, поэтому подключение к fmailer — несколько строк и перезапуск.
| Параметр | Значение |
|---|---|
| SMTP-хост | smtp.fmailer.ru |
| Порт | 587 |
| Шифрование | STARTTLS (соединение переводится в TLS до авторизации) |
| Логин | Логин токена вашего домена |
| Пароль | Пароль этого токена — показывается один раз, при создании |
EMAIL_TRANSPORT="smtp"
EMAIL_FROM="noreply@mail.example.ru"
EMAIL_SMTP_HOST="smtp.fmailer.ru"
EMAIL_SMTP_PORT=587
EMAIL_SMTP_SECURE=false
EMAIL_SMTP_USER="<логин токена>"
EMAIL_SMTP_PASSWORD="<пароль токена>"
# Из него строятся ссылки в письмах сброса пароля и приглашений
PUBLIC_URL="https://cms.example.ru"| Переменная | Значение |
|---|---|
EMAIL_TRANSPORT | smtp |
EMAIL_FROM | noreply@mail.example.ru — на подтверждённом домене |
EMAIL_SMTP_HOST | smtp.fmailer.ru |
EMAIL_SMTP_PORT | 587 |
EMAIL_SMTP_SECURE | false для 587, true для 465 |
EMAIL_SMTP_USER | Логин токена вашего домена |
EMAIL_SMTP_PASSWORD | Пароль этого токена |
EMAIL_SMTP_NAME | Необязательно — имя хоста, которое Directus называет в EHLO |
no-reply@example.com. Все письма Directus, включая письма из Flows, уходят с этого единственного адреса, поэтому он должен быть на подтверждённом домене — иначе DKIM и SPF не сойдутся. Те же переменные в блоке environment:
services:
directus:
image: directus/directus:11
environment:
PUBLIC_URL: "https://cms.example.ru"
EMAIL_TRANSPORT: "smtp"
EMAIL_FROM: "noreply@mail.example.ru"
EMAIL_SMTP_HOST: "smtp.fmailer.ru"
EMAIL_SMTP_PORT: "587"
EMAIL_SMTP_SECURE: "false"
EMAIL_SMTP_USER: "<логин токена>"
EMAIL_SMTP_PASSWORD: "<пароль токена>" Добавьте во Flow операцию Send Email. У неё есть поля To, Subject, CC, BCC, Reply To и тип тела: WYSIWYG, Markdown или шаблон Liquid из каталога EMAIL_TEMPLATES_PATH. Поля «От кого» нет — отправитель всегда EMAIL_FROM. Для формы обратной связи адрес посетителя ставьте в Reply To.
Перезапустите Directus и посмотрите лог: при включённом EMAIL_VERIFY_SETUP (это значение по умолчанию) он проверяет SMTP-подключение при запуске и предупреждает, если оно не удалось. Затем воспользуйтесь восстановлением пароля на странице входа, пригласите пользователя из User Directory или соберите Flow с ручным запуском и операцией Send Email.
| Симптом | Причина и решение |
|---|---|
| Ничего не отправляется, ошибок SMTP нет | EMAIL_TRANSPORT не равен smtp — Directus всё ещё использует sendmail. |
| Предупреждение о почтовом подключении при запуске | Неверные хост, порт, EMAIL_SMTP_SECURE или данные токена. |
| Таймаут подключения | Порт заблокирован. Используйте 8587 с EMAIL_SMTP_SECURE=false или 8465 с true. |
535 — ошибка авторизации | Неверный логин или пароль токена. |
| Ссылка сброса пароля или приглашения не работает | Не задан PUBLIC_URL с публичным адресом. |
| Письма в спаме или отклоняются | В EMAIL_FROM остался no-reply@example.com или другой неподтверждённый домен. |
Переменными окружения, а не в интерфейсе Data Studio. Задайте EMAIL_TRANSPORT=smtp, затем EMAIL_SMTP_HOST, EMAIL_SMTP_PORT, EMAIL_SMTP_USER, EMAIL_SMTP_PASSWORD и EMAIL_SMTP_SECURE, а для отправителя — EMAIL_FROM, и перезапустите Directus. Без EMAIL_TRANSPORT Directus отправляет через sendmail.
false для порта 587: соединение поднимается через STARTTLS до передачи пароля. true для порта 465, где шифрование включается с первого байта. EMAIL_SMTP_IGNORE_TLS не включайте: он пропускает STARTTLS и отправляет логин и пароль открытым текстом.
Это значение EMAIL_FROM по умолчанию. Укажите адрес на подтверждённом домене: письмо от example.com не проходит DKIM и SPF, его отклоняют или отправляют в спам.
Ссылки в письмах восстановления пароля и приглашений Directus строит из PUBLIC_URL. Укажите в нём адрес, по которому Directus доступен из интернета.
Нет. У операции есть поля To, Subject, CC, BCC, Reply To, тип тела (WYSIWYG, Markdown или Template) и само тело, а отправитель всегда берётся из EMAIL_FROM. Чтобы ответ ушёл автору заявки, укажите его адрес в Reply To, а не пытайтесь отправлять от его имени.
EMAIL_VERIFY_SETUP включён по умолчанию: при запуске Directus проверяет подключение и пишет предупреждение в лог, если оно не удалось. Посмотрите лог контейнера сразу после перезапуска.