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

Отправка почты в Ghost через SMTP

Только что установленный Ghost на своём сервере толком ничего не отправляет: приглашения сотрудникам, восстановление пароля и ссылки для входа подписчиков не доходят или падают в спам, пока не настроена почта. Ghost отправляет письма через Nodemailer, поэтому подключение к fmailer — несколько строк в файле конфигурации.

⚠
Через SMTP Ghost отправляет письма конкретным людям. Рассылки подписчикам идут через интеграцию массовой отправки, а она в Ghost на своём сервере поддерживает только Mailgun. Отправить рассылку через SMTP штатными средствами нельзя.
ℹ
Логин и пароль можно получить на странице токенов домена.

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

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

Настройка config.production.json

Откройте config.production.json в каталоге установки Ghost и замените блок mail:

config.production.jsonjson
"mail": {
  "transport": "SMTP",
  "from": "'Блог' <noreply@mail.example.ru>",
  "options": {
    "host": "smtp.fmailer.ru",
    "port": 587,
    "secure": false,
    "auth": {
      "user": "<логин токена>",
      "pass": "<пароль токена>"
    }
  }
}
КлючЗначение
transportSMTP
fromАдрес на подтверждённом домене, можно с именем отправителя
options.hostsmtp.fmailer.ru
options.port587
options.securefalse — STARTTLS включится автоматически
options.auth.userЛогин токена вашего домена
options.auth.passПароль этого токена

Для порта 465 поставьте secure в true:

json
"options": {
  "host": "smtp.fmailer.ru",
  "port": 465,
  "secure": true,
  "auth": { "user": "<логин токена>", "pass": "<пароль токена>" }
}

Конфигурацию Ghost читает только при запуске, поэтому перезапустите его:

bash
cd /var/www/ghost   # каталог установки Ghost
ghost restart

Ghost в Docker

Любой ключ конфигурации можно задать переменной окружения, соединяя вложенные ключи двойным подчёркиванием:

docker-compose.yml
# docker-compose.yml — вложенные ключи конфигурации через двойное подчёркивание
services:
  ghost:
    image: ghost:6
    environment:
      url: https://blog.example.ru
      mail__transport: SMTP
      mail__from: "'Блог' <noreply@mail.example.ru>"
      mail__options__host: smtp.fmailer.ru
      mail__options__port: 587
      mail__options__auth__user: "<логин токена>"
      mail__options__auth__pass: "<пароль токена>"

Проверка

Кнопки тестовой отправки в Ghost нет. Пригласите сотрудника в Settings → Staff или зарегистрируйтесь на сайте как подписчик через Portal. Если письмо не пришло, ответ SMTP-сервера покажет ghost log.

Разбор ошибок

СимптомПричина и решение
Failed to send magic link email SMTP-сервер отказал или недоступен. Точный ответ — в ghost log.
Изменения не действуют Ghost не перезапущен или правился config.development.json.
Таймаут подключения Порт заблокирован. Используйте 8587 с secure: false или 8465 с secure: true.
Ошибка TLS-рукопожатияsecure не соответствует порту: false для 587, true для 465.
535 — ошибка авторизацииНеверный логин или пароль токена.
Письма уходят с noreply@ поддомена Не задан mail.from. Укажите адрес на подтверждённом домене.
Рассылка не отправляетсяТак и должно быть: рассылкам нужен Mailgun, а не SMTP.

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

Можно ли отправлять рассылку Ghost через SMTP?

Нет. SMTP в Ghost используется только для служебных писем: приглашений сотрудникам, восстановления пароля, ссылок для регистрации и входа подписчиков. Рассылки идут через интеграцию массовой отправки, а в Ghost на своём сервере она поддерживает только Mailgun. Настройки, которая направила бы рассылку через SMTP, нет.

Где в Ghost настройки почты?

В блоке mail файла config.production.json в каталоге установки, а не в админке. Раздел рассылок в админке относится к Mailgun и на служебные письма не влияет. После правки файла выполните ghost restart.

Что значит «Failed to send magic link email»?

Письмо для входа или регистрации подписчика не удалось передать SMTP-серверу. Проверьте блок mail: опечатки, пару порт и secure, логин и пароль токена. Точный ответ сервера покажет ghost log. И помните, что изменения конфигурации Ghost подхватывает только после перезапуска.

Что ставить в secure — true или false?

false для порта 587: соединение начинается открытым текстом и до передачи пароля поднимается через STARTTLS. true для порта 465, где шифрование включается с первого байта. Сочетания «true на 587» и «false на 465» заканчиваются ошибкой рукопожатия или таймаутом.

С какого адреса Ghost отправляет письма?

С адреса из mail.from. Если его нет, Ghost подставляет noreply на имени хоста сайта — часто это поддомен, который никто не подтверждал для отправки. Задайте mail.from явно на подтверждённом домене, чтобы DKIM, SPF и DMARC сходились.

Можно ли настроить SMTP в Ghost(Pro)?

Нет. В Ghost(Pro) почтой управляет сам сервис, а доступа к config.production.json нет. Эта инструкция — для Ghost на своём сервере, установленного через Ghost-CLI или запущенного в Docker.

Что дальше