Разобраться, почему копится очередь к одному приёмнику

Troubleshooting Email Delivery Problems
Три круга, расширяющихся от простого к дорогому

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

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

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

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

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

Главная ловушка — оставить журналирование включённым. Третий круг включает запись каждого шага разговора с приёмником. Пока идёт разбор — бесценно; забытым — это файл, растущий быстрее спула, и ротация, съедающая историю за часы вместо дней. В момент, когда журнал понадобится в следующий раз, нужного дня в нём уже не будет.
Что делает Хаб. Не делает — ни одной из этих команд не вызывает, а в шаблонах конфигурации журналирование соединений, команд и данных выключено, и блоков приёмника с включённым журналированием нет.

То есть первый и второй круг у нас доступны только руками, зайдя на узел. Телеметрия показывает что происходит — очередь растёт, отказы такие-то, — но не почему: настоящих ответов приёмника в ней нет, есть их разобранная категория.

Это осознанная граница: журналирование на всех узлах парка стоило бы дорого. Но когда разбор нужен, ходить на узел приходится вручную.

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

Три круга и цена каждого:

Круг Что делает Цена
маршрут и достижимость одна команда, читает DNS и подключается ничего
попытка с записью одно письмо, сессия в журнале одна доставка
журналирование по приёмнику пишет каждый шаг разговора растёт быстро, убирать сразу

Начинать с первого и не прыгать через круги. Половина случаев объясняется уже на нём: имя не разрешается или хост не отвечает. Дальше идти незачем.

Третий круг ставить с намерением снять. Хорошая привычка — заводить его вместе с напоминанием, а не «до выяснения».

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

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

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

Оставляют журналирование включённым после разбора

§ 4.2.2

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

Начинают с трассировки, пропустив первый круг

§ 4.2.2

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

Ищут ответ приёмника в ответе команды

§ 4.2.2

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

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

6 связей

Как проверить на узле
Результат разбора читается в журнале, а не в ответе команды:
pmta resolve gmail.com --connect
pmta trace gmail.com --to-log && tail -n 100 /var/log/pmta/log
pmta show queues gmail.com
Вторая команда пишет сессию в журнал — сама она подробностей не печатает. Третья покажет, что с очередью к этому приёмнику: копится ли она по-прежнему после того, как причина найдена.
В Хабе
Цена ошибки
обратимо: вредит, пока стоит
Сценарии
Разобраться с доставляемостью · Настроить темп под провайдера · Разобрать зависшую очередь