Почтовая очередь: буфер недоставленных писем в 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 - чище очередь, стабильнее доставка.
