uCheckeruChecker

Почтовая очередь: буфер недоставленных писем в MTA

Почтовая очередь (mail queue) - это внутренний буфер почтового сервера (MTA), в котором хранятся сообщения, ожидающие доставки. Когда MTA не может передать письмо сразу - сервер получателя недоступен, перегружен или временно отклоняет соединение - письмо помещается в очередь для повторной попытки.

Каждый MTA ведёт свою очередь. Postfix хранит её в каталоге/var/spool/postfix, Exim - в/var/spool/exim. У облачных сервисов (SendGrid, Amazon SES) очередь работает на стороне провайдера, и вы видите только статистику.

Как устроена очередь

Внутри очереди каждое сообщение существует как отдельный файл (или запись в БД) с метаданными: ID сообщения, адрес отправителя, получатель, время постановки в очередь, число попыток доставки, время следующей попытки.

В Postfix очередь разделена на несколько подкаталогов:

  • incoming - только что принятые сообщения.
  • active - письма, которые MTA пытается доставить прямо сейчас.
  • deferred - отложенные. Доставка не удалась, следующая попытка по расписанию.
  • bounce - письма-уведомления о недоставке, которые MTA генерирует и отправляет обратно.
  • corrupt - повреждённые сообщения, которые MTA не может обработать.

Алгоритм повторных попыток

Когда письмо попадает в deferred, MTA не пытается отправить его каждую секунду. Используется экспоненциальная задержка (backoff): первая повторная попытка через 5 минут, затем 10, 20, 40 минут и так далее. Конкретные интервалы зависят от настроек MTA.

В Postfix за это отвечают параметры minimal_backoff_time и maximal_backoff_time. По умолчанию: от 300 секунд до 4000 секунд. Параметр maximal_queue_lifetime определяет, сколько дней MTA будет пытаться доставить письмо. Стандартное значение - 5 дней. После этого отправителю уходит DSN (bounce-уведомление).

Почему очередь растёт

Растущая очередь - сигнал проблемы. Типичные причины:

  • Сервер получателя недоступен. DNS-проблемы, перегрузка, техработы. Все письма на этот домен копятся в deferred.
  • Грейлистинг. Сервер получателя отвечает кодом 450 на первое соединение с незнакомого IP. Письмо уходит в очередь и доставляется со второй попытки.
  • Rate limiting. Почтовый провайдер ограничивает число соединений или писем в час. Превышение лимита - письма в очередь.
  • IP в чёрном списке. Сервер получателя отклоняет соединение из-за DNSBL. Все письма с этого IP не доставляются.
  • Массовая рассылка на невалидные адреса. Если в базе много несуществующих адресов, серверы отвечают ошибками, и очередь заполняется bounce-уведомлениями.

Мониторинг и управление очередью

Администратору почтового сервера важно следить за размером очереди. Полезные команды для Postfix:

  • mailq или postqueue -p - просмотр текущей очереди.
  • postqueue -f - принудительный флуш: попытаться доставить все отложенные письма сейчас.
  • postsuper -d ALL - удалить все сообщения из очереди (крайняя мера).

Для Exim аналогичные задачи решаются через exim -bp и exim -qf.

Связь с валидацией email

Предварительная проверка email-адресов напрямую влияет на состояние почтовой очереди. Если вы отправляете рассылку на очищенную базу, где нет несуществующих адресов и спам-ловушек, количество отложенных и возвращённых писем минимально. Очередь остаётся маленькой, сервер работает стабильно, репутация IP не страдает.

Без валидации картина обратная: тысячи bounces, переполненная очередь, нагрузка на MTA, рост задержек для всех исходящих писем - включая транзакционные.

uChecker помогает предотвратить засорение почтовой очереди: проверяет адреса до отправки, отсекает несуществующие ящики и проблемные домены. Меньше bounces - чище очередь, стабильнее доставка.

очередьmail queuedeferredretryMTA
← Глоссарий