Mautic — система автоматизации маркетинга, поэтому отправляет он в основном массовые письма: рассылки по сегментам, шаги кампаний, новостные письма. С пятой версии Mautic работает через Symfony Mailer, и SMTP-релей настраивается строкой DSN на одном экране. Ниже — подключение к fmailer и три вещи, без которых массовая рассылка не работает даже при исправном соединении: отписка, отказы и темп.
| Параметр | Значение |
|---|---|
| SMTP-хост | smtp.fmailer.ru |
| Порт | 587 |
| Шифрование | STARTTLS (соединение переводится в TLS до авторизации) |
| Логин | Логин токена вашего домена |
| Пароль | Пароль этого токена — показывается один раз, при создании |
Откройте Settings (шестерёнка справа вверху) → Configuration → Email Settings. Интерфейс Mautic по умолчанию английский, поэтому названия полей приведены как есть. В блоке Mail Send Settings:
| Поле | Значение |
|---|---|
| Name to send mail as | Название компании или команды |
| E-mail address to send mail from | news@mail.example.ru — на подтверждённом домене |
| Reply to address | Ящик, который кто-то читает, если отправитель — не такой |
| Custom return path (bounce) address | Оставьте пустым — см. раздел про отказы |
| Поле | Значение |
|---|---|
| Scheme | smtp |
| Host | smtp.fmailer.ru |
| Port | 587 |
| User | Логин токена вашего домена |
| Password | Пароль этого токена |
| Path, Options | Оставьте пустыми |
Нажмите Save, затем Send test email — письмо придёт на адрес вашего пользователя Mautic. Форма сама кодирует логин для URL; если правите файл вручную, замените @ на %40:
<?php
// config/local.php — @ в логине записывается как %40
$parameters = array(
// ...
'mailer_from_name' => 'Магазин',
'mailer_from_email' => 'news@mail.example.ru',
'mailer_dsn' => 'smtp://token-login%40mail.example.ru:token-password@smtp.fmailer.ru:587',
); В маркетинговые письма Mautic сам добавляет List-Unsubscribe и заголовок отписки в одно нажатие List-Unsubscribe-Post. Если мы относим письмо к массовым, релей ставит на их место нашу пару заголовков, и отписка записывается в список отписавшихся домена, а не в Mautic. Следующие письма на этот адрес мы не доставляем, но в Mautic контакт остаётся подписанным, пока вы его не обновите, — ориентируйтесь на вебхукunsubscribed. Ссылка {unsubscribe_text} в теле письма по-прежнему ведёт в Mautic.
Если в разделе Monitored Inbox Settings настроен ящик для отказов, Mautic ставит в конверт письма адрес возвратов с меткой (…+bounce_…@), а mautic:email:fetch читает вернувшиеся отказы.
550 from must be equal to … на каждом письме. И оставьте пустым return path домена в панели: он заменяет конверт, который выбрал Mautic, и метка, по которой Mautic сопоставляет отказы, теряется. Отказ, который наши серверы получили при доставке, письмом не возвращается: он виден в журнале домена и приходит вебхуком bounced. Жёсткие отказы мы за вас не блокируем, поэтому помечайте такие контакты в Mautic как Do Not Contact — иначе следующая рассылка снова уйдёт на несуществующие адреса, и доля отказов вырастет.
Рассылки по сегментам отправляет cron, и скорость задаётся там же. За час должно уходить меньше часового лимита тарифа — сверх него релей отвечает 550 hourly limit exceeded. Прогрев нового домена ничего не отклоняет, а доставляет лишнее позже. Оба ограничения описаны на странице лимитов отправки.
# Рассылки по сегментам — не больше 500 контактов за запуск
*/15 * * * * php /var/www/mautic/bin/console mautic:broadcasts:send --limit=500
# Чтение ящика с отказами и запросами на отписку
*/10 * * * * php /var/www/mautic/bin/console mautic:email:fetch| Симптом | Причина и решение |
|---|---|
Connection could not be established | Исходящий порт заблокирован — укажите Port 8587 или 8465 для шифрования с первого байта. |
Failed to authenticate on SMTP server | Неверный логин или пароль токена либо незакодированный @ в mailer_dsn, отредактированном вручную. |
550 from must be equal to … | Адрес отправителя или отслеживаемого ящика не на подтверждённом домене. |
550 hourly limit exceeded | Уменьшите --limit или запускайте cron реже. |
| Тестовое письмо уходит, рассылка — нет | Не запущен cron mautic:broadcasts:send либо включена очередь, а воркера messenger:consume email нет. |
| Письма в спаме | Адрес отправителя не на подтверждённом домене или база не очищена от отказов. |
Settings (шестерёнка справа вверху) → Configuration → Email Settings. Начиная с Mautic 5 подключение задаётся как Email DSN — поля Scheme, Host, Port, User, Password и Options, из которых Mautic собирает строку smtp://user:pass@host:port.
Нет, шифрование определяется портом. Со схемой smtp порт 587 поднимает TLS через STARTTLS, а порт 465 шифруется с первого байта. Используйте 587, если хостинг его не блокирует.
DSN проверяется только после сохранения — Mautic так и пишет: сохраните изменения, чтобы проверить DSN. Сначала сохраните настройки, потом отправляйте тест.
Да, в маркетинговые письма: List-Unsubscribe и List-Unsubscribe-Post Mautic ставит сам, в транзакционные — нет. Письма, которые мы относим к массовым, получают вместо них нашу пару заголовков, и отписка через неё записывается у нас — подробности ниже.
Через отслеживаемый ящик. Mautic ставит свой адрес возвратов в конверт письма, сервер получателя присылает отказ туда, а mautic:email:fetch читает его и помечает контакт как Do Not Contact. Отказы, которые наши серверы получили при доставке, письмом не возвращаются — они в журнале домена и в вебхуке bounced.
Задайте темп mautic:broadcasts:send параметром --limit и частотой запуска в cron так, чтобы за час уходило меньше часового лимита. Сверх него релей отвечает 550 hourly limit exceeded, и письмо не отправляется, а не ждёт своей очереди.