Как запустить локальный SMTP-сервер с помощью MailHog
MailHog решает множество проблем, связанных с тестированием email-рассылок.
Допустим, вы разрабатываете сайт на WordPress в локальной среде. Протестировать форму обратной связи или любую другую отправку почты в этом случае может быть настоящей головной болью.
Как правило, задача по отправке писем ложится на SMTP-сервер приложения. Но в локальной среде он почти никогда не работает «из коробки» — по целому ряду причин.
Прежде всего, нужно настроить операционную систему, веб-сервер и само приложение для поддержки отправки почты. Затем — убедиться, что письма действительно доходят до адресата, что может отнять кучу времени (и забить вашу почту тестовыми сообщениями).
Кроме того, для тестов приходится использовать реальные email-адреса, что может негативно сказаться на их репутации.
MailHog решает все эти задачи. Он разворачивает мокап SMTP-сервер, который можно подключить к приложению и использовать для отправки и приёма писем. Все письма сохраняются в удобном веб-интерфейсе, имитирующем настоящий почтовый ящик.
И, наконец, MailHog предоставляет API для получения писем, что удобно использовать в автотестах. Как именно — зависит от ваших задач.
Основные возможности:
- Принимает письма через SMTP (порт 1025)
 - Веб-интерфейс для чтения писем (
http://localhost:8025) - REST API для управления письмами
 - Поддержка запуска в Docker
 - Быстрая интеграция с любым backend-языком
 
Установка MailHog
Вариант 1: через Go
Если у вас установлен Go:
go install github.com/mailhog/MailHog@latestПосле этого бинарный файл окажется в $GOPATH/bin, поэтому желательно добавить этот путь в переменную окружения PATH. Запустить можно командой:
MailHogВариант 2: через Docker
Это самый универсальный и удобный способ:
docker run -d -p 1025:1025 -p 8025:8025 mailhog/mailhog- SMTP-сервер будет слушать порт 
1025 - Веб-интерфейс доступен на 
http://localhost:8025 
Настройка приложения
Чтобы приложение отправляло письма через MailHog, укажите SMTP-параметры:
SMTP_HOST=localhost
SMTP_PORT=1025Например, в Node.js с использованием nodemailer:
const nodemailer = require('nodemailer');
 
const transporter = nodemailer.createTransport({
  host: 'localhost',
  port: 1025,
  secure: false,
});
 
await transporter.sendMail({
  from: 'test@example.com',
  to: 'user@example.com',
  subject: 'Привет!',
  text: 'Это тестовое письмо через MailHog.',
});В Laravel:
MAIL_MAILER=smtp
MAIL_HOST=127.0.0.1
MAIL_PORT=1025
MAIL_ENCRYPTION=nullИли Django:
# settings.py
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'localhost'
EMAIL_PORT = 1025
EMAIL_USE_TLS = FalseВеб-интерфейс MailHog
Откройте http://localhost:8025, чтобы посмотреть письма:
- Просмотр HTML и plain-текста
 - Просмотр заголовков и технической информации
 - Возможность удалить все письма или отдельные
 - Поддержка поиска по адресу/теме
 
MailHog API
MailHog предоставляет HTTP API, доступное по адресу http://localhost:8025/api/v2/messages. Вы можете:
- Получить список писем
 - Удалить все письма
 - Получить raw-содержимое письма по ID
 
Пример запроса:
curl http://localhost:8025/api/v2/messagesИспользование в автотестах
MailHog можно интегрировать в end-to-end тесты, чтобы проверять факт отправки писем. Например, при регистрации пользователя можно запросить последнее письмо и убедиться, что пришло письмо с нужной темой или токеном подтверждения.
Использование в CI/CD
В CI/CD пайплайнах (например, GitHub Actions или GitLab CI) MailHog удобно использовать в Docker-контейнере, добавляя его как отдельный сервис.
Пример для GitHub Actions:
services:
  mailhog:
    image: mailhog/mailhog
    ports:
      - 1025:1025
      - 8025:8025Альтернативы MailHog
Если вам нужны более продвинутые функции, можно рассмотреть:
- Mailpit — форк MailHog с поддержкой вложений и улучшенным UI
 - MailCatcher — аналог на Ruby
 - Papercut SMTP — для Windows
 
Но MailHog остаётся самым простым и универсальным вариантом.
Поддерживает ли MailHog SMTP-аутентификацию или TLS?
Нет, MailHog не поддерживает SMTP AUTH и шифрование TLS/SSL. Он предназначен только для локальной разработки и тестирования, где безопасность не является критическим фактором.
Заключение
MailHog — простой и мощный инструмент для локального тестирования email-рассылок. Он легко интегрируется в любое приложение, экономит время и предотвращает случайные отправки писем в прод. Настоятельно рекомендуем добавить его в арсенал при разработке backend-приложений.
Настроить мониторинг за 30 секунд
Надежные оповещения о даунтаймах. Без ложных срабатываний