Получатели, отложенные после временного отказа

Await Retry bucket
Письма в очереди есть, а отправлять их нельзя

Устройство очереди, о котором глава про конфигурацию не говорит вовсе. Временный отказ на уровне получателя — руководство приводит в пример переполненный ящик — не оставляет получателя в очереди ждать следующей попытки. Он переезжает в отдельную область ожидания и держится там до срока, заданного по приёмнику.

Отсюда важное различение: число получателей в очереди и её готовность отправлять — разные величины. Почта может быть на месте и при этом намеренно не подлежать отправке. Очередь выглядит наполненной и не движется — и это не затык, а работа механизма.

Срок ожидания задаётся по приёмнику — своей директивой, а не общим расписанием повторов.

Две команды умеют выпустить отложенных раньше. У обеих есть ключ, отменяющий удержание: у той, что назначает доставку, и у той, что ведёт трассировку. Это способ проверить гипотезу, не дожидаясь срока.

Главная ловушка — принять наполненную неподвижную очередь за затык. Получатели, отложенные после временного отказа, считаются в общем числе, но отправлять их нельзя до срока. Разбор уходит в поиск сетевых проблем и лимитов, тогда как узел делает ровно то, что должен: ждёт. Отличить одно от другого можно только зная про эту область — по числу получателей она неотличима.
Что делает Хаб. Срок удержания не задаёт — остаётся вендорское значение. И в телеметрии эту область не различает: число получателей в очереди приходит общим, без деления на готовых к отправке и отложенных.

⚠️ Отсюда следствие для наших графиков: рост очереди при мягких отказах у нас выглядит так же, как рост очереди при затыке. Отличить их можно только по доле мягких отказов рядом — и то косвенно.

Команд, выпускающих отложенных раньше срока, Хаб не вызывает тоже: это ручной инструмент проверки.

Рекомендуемые значения

Что стоит различать, глядя на очередь:

Что видно Что это может быть
получателей много, отправки нет отложены после мягкого отказа — или затык
получателей много, отправка идёт обычная работа под нагрузкой
получателей мало, отправки нет придержана лимитом либо остановлена

Первый случай и требует знания об этой области. Проверять его надо не сетью и не лимитами, а долей мягких отказов к этому приёмнику: если она высокая, узел просто ждёт срока.

Срок стоит трогать только с причиной. Ускорение повторов к приёмнику, который сказал «позже», — верный способ получить от него уже не мягкий отказ.

Таблица различения и совет про срок наши. Из руководства здесь само существование отдельной области ожидания, пример с переполненным ящиком, интервал по приёмнику и два ключа, выпускающих отложенных раньше.
Пример в конфигурации
# выпустить отложенных раньше срока — ключ есть у двух команд
pmta schedule --retry-recipients gmail.compmta trace --retry-recipients --to-log gmail.com
Выделенная строка отменяет удержание и делает отложенных получателей доступными немедленно. Это способ проверить гипотезу «дело в приёмнике, а не в нас», не дожидаясь срока.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

Типичные ошибки и проблемы

что делают не так и чем это кончается3 ошибки▶

Принимают ожидание за затык

§ 6.3.11

Чем чреватоОтложенные получатели считаются в общем числе, но отправлять их нельзя до срока. Разбор уходит в сеть и лимиты, а узел делает ровно то, что должен.
Как заметитьОчередь полна, отправки нет, при этом соединения открываются нормально и ошибок транспорта нет.
Как правильноПосмотреть недавние события очереди: череда мягких отказов и означает ожидание. Проверить гипотезу можно, выпустив отложенных ключом.

Сокращают срок удержания, чтобы «расшевелить» очередь

§ 6.3.11

Чем чреватоПриёмник ответил «позже» — и повтор раньше срока он встретит хуже, чем первый раз. Ускорение повторов к тому, кто просил подождать, обычно превращает мягкий отказ в жёсткий.
Как заметитьПосле сокращения срока доля отказов к приёмнику выросла.
Как правильноТрогать срок только с причиной. Для разовой проверки есть ключ, отменяющий удержание, — он не меняет настройку.

Считают число получателей мерой готовности отправлять

§ 6.3.11

Чем чреватоЭто разные величины: почта может быть на месте и намеренно не подлежать отправке. Показатель, построенный на числе получателей, будет одинаковым и при затыке, и при нормальном ожидании.
Как заметитьГрафик глубины очереди растёт, а причину по нему определить не удаётся.
Как правильноСмотреть глубину очереди вместе с долей мягких отказов — порознь ни то ни другое не отвечает.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Наследование
Область ожидания не настраивается — она есть всегда. Наследуется срок удержания: он задаётся директивой в блоке приёмника и сливается по обычному правилу — от общего образца к точному и по уровням узла, пула и адреса отправки.
⇄

Связанные записи

5 связей

Как проверить на узле
Отличить ожидание от затыка помогают два взгляда на одну очередь:
pmta show queues gmail.com
pmta show settings gmail.com/mta-news-1
Первая покажет число получателей и недавние события: череда мягких отказов в них и означает, что очередь ждёт, а не стоит. Вторая — срок удержания, действующий для этой очереди.
В Хабе
Цена ошибки
обратимо: вредит, пока стоит
Сценарии
Настроить темп под провайдера · Разобрать зависшую очередь