Keycloak отправляет письма для подтверждения адреса, восстановления пароля и действий, которые администратор назначает пользователю. Пока у realm не настроен SMTP-сервер, ни одно из них не доставляется. Ставить ничего не нужно: у каждого realm в консоли администратора есть своя вкладка Email. Ниже — подключение к fmailer.
| Параметр | Значение |
|---|---|
| SMTP-хост | smtp.fmailer.ru |
| Порт | 587 |
| Шифрование | STARTTLS (соединение переводится в TLS до авторизации) |
| Логин | Логин токена вашего домена |
| Пароль | Пароль этого токена — показывается один раз, при создании |
Выберите realm, в котором входят ваши пользователи, и откройте Realm settings → Email (в русском переводе консоли — «Настройки realm → E-mail»). Названия полей даны по английскому интерфейсу:
| Поле | Значение |
|---|---|
| From | noreply@mail.example.ru — на подтверждённом домене |
| From display name | Название вашего сервиса |
| Reply to | Необязательно, например support@mail.example.ru |
| Host | smtp.fmailer.ru |
| Port | 587 |
| Encryption | Enable StartTLS включён, Enable SSL выключен |
| Authentication | Включено |
| Username | Логин токена вашего домена |
| Authentication Type | password (есть в последних версиях) |
| Password | Пароль этого токена |
587, Enable SSL — для порта 465. Оба сразу или SSL на порту 587 приводят к ошибке TLS-рукопожатия. Сам по себе SMTP ничего не отправляет. Откройте Realm settings → Login и включите сценарии, которые им пользуются:
Эти значения хранятся в поле smtpServer настроек realm, поэтому их можно задать через kcadm.sh — удобно для нескольких окружений и автоматизации:
# Один раз войдите в CLI администратора
kcadm.sh config credentials --server https://sso.example.ru \
--realm master --user admin
# Задайте SMTP-сервер realm — все значения строковые
kcadm.sh update realms/myrealm \
-s 'smtpServer.host="smtp.fmailer.ru"' \
-s 'smtpServer.port="587"' \
-s 'smtpServer.starttls="true"' \
-s 'smtpServer.ssl="false"' \
-s 'smtpServer.auth="true"' \
-s 'smtpServer.user="<логин токена>"' \
-s 'smtpServer.password="<пароль токена>"' \
-s 'smtpServer.from="noreply@mail.example.ru"' \
-s 'smtpServer.fromDisplayName="Компания"'Нажмите Test connection внизу вкладки Email. Keycloak отправит письмо на адрес администратора, под которым вы вошли, — поэтому сначала укажите этот адрес в его учётной записи. При ошибке Keycloak покажет ответ сервера во всплывающем сообщении.
| Симптом | Причина и решение |
|---|---|
| Кнопка Test connection неактивна | У вашего администратора не указан адрес e-mail. |
Couldn't connect to host, таймаут | Хостинг блокирует порт — используйте 8587 со StartTLS или 8465 с SSL. |
| Ошибка SSL-рукопожатия | На порту 587 включён Enable SSL. Используйте StartTLS. |
535 Authentication failed | Неверный логин или пароль токена либо выключен Authentication. |
| Тест проходит, письма сброса пароля нет | Не включён Forgot password на вкладке Login или настроен другой realm. |
| Письма в спаме | В From адрес не на подтверждённом домене. |
В консоли администратора выберите realm и откройте Realm settings → Email (в русском переводе — «Настройки realm» → «E-mail»). Почта настраивается для каждого realm отдельно: настройки realm master не действуют на тот realm, в котором входят ваши пользователи.
Для порта 587 включите Enable StartTLS и оставьте Enable SSL выключенным. Для порта 465 — наоборот. SSL на порту 587 — самая частая причина, по которой проверка соединения падает с ошибкой рукопожатия.
Тестовое письмо уходит администратору, под которым вы вошли, поэтому у этой учётной записи должен быть адрес e-mail. Keycloak пишет об этом над кнопкой. Добавьте адрес своему администратору в realm master и повторите.
Настройка SMTP сама эти сценарии не включает. Откройте Realm settings → Login и включите Verify email и Forgot password. Без них Keycloak такие письма не формирует, как бы ни была настроена вкладка Email.
Да. Поле Password принимает ссылку на хранилище секретов вида ${vault.smtp_password}, если в Keycloak подключён vault-провайдер. Тогда секрет читается из хранилища при отправке и в настройках realm не хранится.
Проверьте поле From на вкладке Email: там должен стоять адрес на подтверждённом домене, иначе DKIM и SPF с ним не выровнены. Если пользователи должны иметь возможность ответить, укажите адрес поддержки в Reply to.