- 03.04.2025
- MailerQ
Обработка отказов в MailerQ:
MailerQ автоматически обрабатывает "отказы" (bounces) — письма, возвращенные почтовыми серверами из-за ошибок доставки (например, несуществующий ящик, переполненный inbox или блокировка антиспамом).
Процесс включает парсинг bounce-сообщений, классификацию ошибок и применение политик ретраев/отписок. Рассмотрим его детально.
1. Как MailerQ получает bounce-сообщения?
Когда удаленный сервер (например, Gmail или Yahoo) не может доставить письмо, он отправляет DSN (Delivery Status Notification) — техническое сообщение с кодом ошибки.
MailerQ обрабатывает такие письма через специальный SMTP-интерфейс (обычно на том же сервере), который:
Принимает входящие письма от удаленных серверов.
Определяет, что это 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: Поиск по ошибкам.
Пример записи в лог:

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

5. Интеграция с внешними системами
A. Вебхуки для мгновенных уведомлений
MailerQ может отправлять POST-запросы при обнаружении hard bounce:

B. RabbitMQ + CRM
Bounce попадает в очередь
bounces_queue
.CRM (например, Salesforce) забирает сообщения и обновляет статус контакта.
C. ClickHouse для аналитики
Запросы для отчетов:

6. Важные нюансы
False Positives: Некоторые серверы (например, Exchange) могут ошибочно помечать письма как bounces. MailerQ использует алгоритмы проверки (анализ заголовков
Return-Path
).Обратная связь (FBL): Для жалоб "спам" (не bounce!) MailerQ поддерживает Feedback Loop от ESP (Mailchimp, Yahoo).
Кастомные скрипты: Через Lua можно добавить свою логику (например, игнорировать временные ошибки для VIP-клиентов).
MailerQ предлагает гибкую систему обработки отказов с:
Автоматической классификацией ошибок.
Поддержкой ретраев и стоп-листов.
Интеграцией с аналитическими инструментами.
Для максимальной эффективности важно:
Регулярно чистить базу адресов по данным hard bounces.
Мониторить статистику (например, резкий рост soft bounces может указывать на проблемы с IP-репутацией).