Обработка отказов (Bounce Handling) в MailerQ: механизм работы

Обработка отказов (Bounce Handling) в MailerQ

Обработка отказов в MailerQ:

MailerQ автоматически обрабатывает "отказы" (bounces) — письма, возвращенные почтовыми серверами из-за ошибок доставки (например, несуществующий ящик, переполненный inbox или блокировка антиспамом).

Процесс включает парсинг bounce-сообщений, классификацию ошибок и применение политик ретраев/отписок. Рассмотрим его детально.

1. Как MailerQ получает bounce-сообщения?

Когда удаленный сервер (например, Gmail или Yahoo) не может доставить письмо, он отправляет DSN (Delivery Status Notification) — техническое сообщение с кодом ошибки.

MailerQ обрабатывает такие письма через специальный SMTP-интерфейс (обычно на том же сервере), который:

  1. Принимает входящие письма от удаленных серверов.

  2. Определяет, что это bounce (а не обычное письмо), по:

    • Заголовкам (Auto-Submitted: auto-replied).

    • Специфичным кодам ошибок в теле (например, 5.1.1 User unknown).

    • Формату MDN (Message Disposition Notification) или DSN.


2. Парсинг и классификация ошибок

MailerQ анализирует bounce и присваивает ему одну из категорий:

A. Hard Bounces (Фатальные ошибки)

  • Причины:

    • 5.1.1 — почтовый ящик не существует.

    • 5.2.1 — аккаунт отключен.

    • 5.4.4 — домен не резолвится (DNS error).

  • Действия MailerQ:

    • Письмо не переотправляется.

    • Адрес автоматически заносится в suppression-list (если настроено).

    • Данные передаются в систему аналитики (например, ClickHouse).

B. Soft Bounces (Временные ошибки)

  • Причины:

    • 4.2.2 — переполненный ящик.

    • 4.4.7 — таймаут доставки (сервер получателя перегружен).

    • 4.7.1 — временный блок антиспамом.

  • Действия MailerQ:

    • Письмо ставится в очередь для ретраев (по умолчанию — 3 попытки с экспоненциальной задержкой).

    • Если после N попыток ошибка повторяется — адрес считается "мертвым".

C. Blocklist Bounces (Блокировки)

  • Примеры:

    • 5.7.1 — IP/домен в черном списке (Spamhaus, Barracuda).

    • 5.7.9 — политика сервера (например, только TLS).

  • Действия:

    • MailerQ может сменить IP-пул или отложить отправку.


3. Где хранятся данные об отказах?

MailerQ интегрируется с внешними системами для логирования:

  • RabbitMQ: Очередь bounces для обработки в реальном времени.

  • ClickHouse/MySQL: Хранение истории для отчетов.

  • Elasticsearch: Поиск по ошибкам.

Пример записи в лог:

Обработка отказов (Bounce Handling) в MailerQ: механизм работы

4. Настройка обработки отказов

Конфигурация задается в config.json:

MailerQ - Настройка обработки отказов

5. Интеграция с внешними системами

A. Вебхуки для мгновенных уведомлений

MailerQ может отправлять POST-запросы при обнаружении hard bounce:

MailerQ может отправлять POST-запросы при обнаружении hard bounce

B. RabbitMQ + CRM

  1. Bounce попадает в очередь bounces_queue.

  2. CRM (например, Salesforce) забирает сообщения и обновляет статус контакта.

C. ClickHouse для аналитики

Запросы для отчетов:

ClickHouse для аналитики

6. Важные нюансы

  • False Positives: Некоторые серверы (например, Exchange) могут ошибочно помечать письма как bounces. MailerQ использует алгоритмы проверки (анализ заголовков Return-Path).

  • Обратная связь (FBL): Для жалоб "спам" (не bounce!) MailerQ поддерживает Feedback Loop от ESP (Mailchimp, Yahoo).

  • Кастомные скрипты: Через Lua можно добавить свою логику (например, игнорировать временные ошибки для VIP-клиентов).


MailerQ предлагает гибкую систему обработки отказов с:

  • Автоматической классификацией ошибок.

  • Поддержкой ретраев и стоп-листов.

  • Интеграцией с аналитическими инструментами.

Для максимальной эффективности важно:

  1. Регулярно чистить базу адресов по данным hard bounces.

  2. Мониторить статистику (например, резкий рост soft bounces может указывать на проблемы с IP-репутацией).

MailerQ 5.14.4 в курсе НР 2025