Еще один пример bounce loop или зацикливание отлупов


Данный пост представлен в ознакомительных целях и не может рассматриваться призывом к деструктивным действиям с последствиями или без таковых

Вводная

Организация рассылает своим подписчикам информационные сообщения (реклама, акции, новости и т.д.). Все подписчики валидировали свои емейлы в процессе регистрации кабинета пользователя. Это важный момент, для понимания дальнейшего. Все сообщения уходят через отдельный почтовый сервер. Стандартное количество сообщений в очереди, которые не ушли сразу — до 1000 штук, что считается нормой. В день обычно проходит 3-5 рассылочных сессий

Количество рассылок в течении рабочего дня

Проблема

Внезапно количество сообщений в очереди стало расти. Такое поведение считается аномальным

пример bounce loop

Внезапный лавинообразный рост количества сообщений в очереди

Разбор полетов

В результате выяснилось, что проблема связана с gmail’ом. Часть писем он принимал, а часть нет. Странное поведение. Однако, после анализа нескольких его отлупов ситуация прояснилась

Выполняем mailq и видим множество отлупов от MAILER-DAEMON. Берем для анализа несколько ID отлупов и просматриваем их командой

postcat -q F06E96150A

В результате получаем

Фрагмент заголовка одного из отлупов

Невооруженным глазом видно, что это спамерское сообщение — внутри указание на веб-сайт и rar-архив во вложении. Gmail такое не принимает

Теперь вопрос

А как оно попало к нам?

Ответ

  • спамер через бот высылает сообщения, среди которых были получатели gmail. В Return-Path указан валидный адрес нашего портала service@domain.tld
  • gmail блокирует доставку, потому что считает сообщение вирусным
  • смотрит в Return-Path и видит там service@domain.tld, после чего высылает отлуп на этот адрес
  • все входящие на service@domain.tld пересылаются десяти сотрудникам портала у которых почта на gmail. Срабатывает переадресация!!!
  • gmail снова не принимает уже десять копий одного и того же сообщения и возвращает письма отправителю
  • и так по кругу несколько раз

В результате очередь растет как по размеру занимаемого дискового пространства, так и по количеству. Классический bounce loop

Что делать?

Во-первых не стесняемся и прибиваем все сообщения от MAILER-DAEMON. Как это сделать можно прочесть в посте «Как работать с очередью postfix«. В результате удалено более 14200 сообщений

пример bounce loop

Очередь после очистки вернулась к своему нормальному состоянию

Во-вторых, service — локальный аккаунт на мейлере. Для переадресации входящих вместо штатного /etc/postfix/aliases используется  procmail. Следовательно в файле .procmailrc в домашней папке пользователя service добавляем вначало правило

:0
* ^FROM_DAEMON
/dev/null

После чего мусор подобного рода улетает в /dev/null без всякого сожаления. Очередь принимает обычный размер и валидные сообщения портала уходят быстро

Почему procmail?

Потому что штатная робота алиасов в postfix — прием сообщений для пересылки без обработки. Procmail работает правилами и может не только переслать сообщение, но и обработать его изменяя заголовки, вытаскивая вложение, вставляя другое вложение и т.д. Рекомендую освоить. Тулза давно не развивается, однако в репозиториях продолжает быть

5 1 голос
Ваша оценка поста?
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии