Документация / Keycloak

Настройка почты в Keycloak через SMTP

Keycloak отправляет письма для подтверждения адреса, восстановления пароля и действий, которые администратор назначает пользователю. Пока у realm не настроен SMTP-сервер, ни одно из них не доставляется. Ставить ничего не нужно: у каждого realm в консоли администратора есть своя вкладка Email. Ниже — подключение к fmailer.

ℹ
Логин и пароль можно получить на странице токенов домена.

Параметры подключения

ПараметрЗначение
SMTP-хостsmtp.fmailer.ru
Порт587
ШифрованиеSTARTTLS (соединение переводится в TLS до авторизации)
ЛогинЛогин токена вашего домена
ПарольПароль этого токена — показывается один раз, при создании
ℹ
Каждый режим доступен и на высоком порту: 8465 (SSL/TLS), 8587 (STARTTLS) и 8025 (без шифрования). Многие хостинги и облака блокируют исходящие 25, 465 и 587 — если соединение обрывается по таймауту, используйте соответствующий высокий порт.

Настройка realm

Выберите realm, в котором входят ваши пользователи, и откройте Realm settings → Email (в русском переводе консоли — «Настройки realm → E-mail»). Названия полей даны по английскому интерфейсу:

ПолеЗначение
Fromnoreply@mail.example.ru — на подтверждённом домене
From display nameНазвание вашего сервиса
Reply toНеобязательно, например support@mail.example.ru
Hostsmtp.fmailer.ru
Port587
EncryptionEnable StartTLS включён, Enable SSL выключен
AuthenticationВключено
UsernameЛогин токена вашего домена
Authentication Typepassword (есть в последних версиях)
PasswordПароль этого токена
⚠
Enable StartTLS — для порта 587, Enable SSL — для порта 465. Оба сразу или SSL на порту 587 приводят к ошибке TLS-рукопожатия.

Включите сценарии с письмами

Сам по себе SMTP ничего не отправляет. Откройте Realm settings → Login и включите сценарии, которые им пользуются:

  • Forgot password — ссылка «Forgot Password?» на странице входа;
  • Verify email — подтверждение адреса при регистрации.

Настройка из командной строки

Эти значения хранятся в поле smtpServer настроек realm, поэтому их можно задать через kcadm.sh — удобно для нескольких окружений и автоматизации:

bash
# Один раз войдите в 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 адрес не на подтверждённом домене.

Частые вопросы

Где в Keycloak настраивается SMTP?

В консоли администратора выберите realm и откройте Realm settings → Email (в русском переводе — «Настройки realm» → «E-mail»). Почта настраивается для каждого realm отдельно: настройки realm master не действуют на тот realm, в котором входят ваши пользователи.

Что включать в Keycloak — SSL или StartTLS?

Для порта 587 включите Enable StartTLS и оставьте Enable SSL выключенным. Для порта 465 — наоборот. SSL на порту 587 — самая частая причина, по которой проверка соединения падает с ошибкой рукопожатия.

Почему кнопка Test connection неактивна?

Тестовое письмо уходит администратору, под которым вы вошли, поэтому у этой учётной записи должен быть адрес e-mail. Keycloak пишет об этом над кнопкой. Добавьте адрес своему администратору в realm master и повторите.

Почему Keycloak не присылает письмо подтверждения или сброса пароля?

Настройка SMTP сама эти сценарии не включает. Откройте Realm settings → Login и включите Verify email и Forgot password. Без них Keycloak такие письма не формирует, как бы ни была настроена вкладка Email.

Можно ли не хранить пароль SMTP в базе Keycloak?

Да. Поле Password принимает ссылку на хранилище секретов вида ${vault.smtp_password}, если в Keycloak подключён vault-провайдер. Тогда секрет читается из хранилища при отправке и в настройках realm не хранится.

Почему письма из Keycloak попадают в спам?

Проверьте поле From на вкладке Email: там должен стоять адрес на подтверждённом домене, иначе DKIM и SPF с ним не выровнены. Если пользователи должны иметь возможность ответить, укажите адрес поддержки в Reply to.

Что дальше