Только что установленный Ghost на своём сервере толком ничего не отправляет: приглашения сотрудникам, восстановление пароля и ссылки для входа подписчиков не доходят или падают в спам, пока не настроена почта. Ghost отправляет письма через Nodemailer, поэтому подключение к fmailer — несколько строк в файле конфигурации.
| Параметр | Значение |
|---|---|
| SMTP-хост | smtp.fmailer.ru |
| Порт | 587 |
| Шифрование | STARTTLS (соединение переводится в TLS до авторизации) |
| Логин | Логин токена вашего домена |
| Пароль | Пароль этого токена — показывается один раз, при создании |
Откройте config.production.json в каталоге установки Ghost и замените блок mail:
"mail": {
"transport": "SMTP",
"from": "'Блог' <noreply@mail.example.ru>",
"options": {
"host": "smtp.fmailer.ru",
"port": 587,
"secure": false,
"auth": {
"user": "<логин токена>",
"pass": "<пароль токена>"
}
}
}| Ключ | Значение |
|---|---|
transport | SMTP |
from | Адрес на подтверждённом домене, можно с именем отправителя |
options.host | smtp.fmailer.ru |
options.port | 587 |
options.secure | false — STARTTLS включится автоматически |
options.auth.user | Логин токена вашего домена |
options.auth.pass | Пароль этого токена |
Для порта 465 поставьте secure в true:
"options": {
"host": "smtp.fmailer.ru",
"port": 465,
"secure": true,
"auth": { "user": "<логин токена>", "pass": "<пароль токена>" }
}Конфигурацию Ghost читает только при запуске, поэтому перезапустите его:
cd /var/www/ghost # каталог установки Ghost
ghost restartЛюбой ключ конфигурации можно задать переменной окружения, соединяя вложенные ключи двойным подчёркиванием:
# 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. |
Нет. SMTP в Ghost используется только для служебных писем: приглашений сотрудникам, восстановления пароля, ссылок для регистрации и входа подписчиков. Рассылки идут через интеграцию массовой отправки, а в Ghost на своём сервере она поддерживает только Mailgun. Настройки, которая направила бы рассылку через SMTP, нет.
В блоке mail файла config.production.json в каталоге установки, а не в админке. Раздел рассылок в админке относится к Mailgun и на служебные письма не влияет. После правки файла выполните ghost restart.
Письмо для входа или регистрации подписчика не удалось передать SMTP-серверу. Проверьте блок mail: опечатки, пару порт и secure, логин и пароль токена. Точный ответ сервера покажет ghost log. И помните, что изменения конфигурации Ghost подхватывает только после перезапуска.
false для порта 587: соединение начинается открытым текстом и до передачи пароля поднимается через STARTTLS. true для порта 465, где шифрование включается с первого байта. Сочетания «true на 587» и «false на 465» заканчиваются ошибкой рукопожатия или таймаутом.
С адреса из mail.from. Если его нет, Ghost подставляет noreply на имени хоста сайта — часто это поддомен, который никто не подтверждал для отправки. Задайте mail.from явно на подтверждённом домене, чтобы DKIM, SPF и DMARC сходились.
Нет. В Ghost(Pro) почтой управляет сам сервис, а доступа к config.production.json нет. Эта инструкция — для Ghost на своём сервере, установленного через Ghost-CLI или запущенного в Docker.