retry-after-dns-error

<domain>Хаб задаёт сам

Через какой интервал повторять, если очередь встала из-за ошибки DNS
в конфигурации это строкаretry-after-dns-error 1mвнутри блока <domain>
Отдельный шаг для случая, когда виноват не приёмник

Очередь попадает в режим повторов не только потому, что приёмник отказал. Она попадает туда и когда до приёмника не удалось дотянуться на уровне имён: сервер DNS не ответил, запись отдана с временной ошибкой, резолвер упёрся в таймаут. Для этого случая действует не retry-after, а эта строка.

Разделение имеет смысл ровно по одной причине: приёмник этой попытки не видел. Соединения не было, письма он не получал, репутации отправителя ничего не грозит. Поэтому здесь можно спешить — вендорское умолчание 1m заметно короче обычного шага, и руководство прямо советует держать её меньше.

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

Главная ловушка. Ошибка DNS бывает не только временной. Если у домена вообще нет записей — опечатка в адресе, домен разделегирован — резолвер будет отвечать одинаково хоть каждые полминуты, и очередь промолчит весь срок bounce-after. При 30s и сроке в трое суток это 8640 бесполезных запросов к резолверу за одно письмо.
Что делает Хаб. В шаблоне политик приёмников — 30s у четырнадцати крупных почтовиков: у них DNS не отваливается насовсем, и если ответа нет, это почти наверняка минутный сбой на нашей стороне. В общем <domain *> — 5m: у произвольного домена ошибка DNS бывает постоянной, а пять минут всё ещё в шесть раз короче обычного шага 30m. До 15.09.2026 в общем блоке стояло 30s.
Рекомендуемые значения

Короче обычного шага — это правило, а не вкус. Смысл отдельной строки в том, что приёмник ни при чём. Сделать её равной retry-after значит отказаться от разделения вовсе.

Полминуты хватает. Временный сбой резолвера длится секунды или минуты; если он длится дольше, дело не в паузе.

Для <domain> со звёздочкой держите её длиннее. В неизвестных доменах опечатки и мёртвые зоны встречаются, а полминуты на такой домен — это тысячи запросов впустую.

Разные значения для известных почтовиков и для звёздочки — наше правило. Из руководства здесь умолчание 1m, совет держать её меньше обычного шага и то, что она действует и в щадящем режиме.
Пример в конфигурации
# известный почтовик: сбой DNS почти наверняка минутный
<domain gmail.com>
    retry-after 30m
    retry-after-dns-error 30s</domain>

# всё остальное: домена может не быть вовсе
<domain *>
    retry-after-dns-error 5m</domain>
Разница в порядок здесь намеренная: у известного почтовика домен точно существует, у произвольного получателя — не обязательно.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

Ставят её равной обычному шагу

§ 3.3.10.50

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

Ставят полминуты в блоке со звёздочкой

наш опыт

Чем чреватоВ произвольных доменах ошибка DNS часто постоянная: опечатка в адресе, разделегированный домен. Полминуты превращаются в тысячи запросов к резолверу за одно письмо, и упереться можно в его лимиты.
Как заметитьРезолвер отвечает временными ошибками уже на собственные запросы узла.
Как правильноВ блоке со звёздочкой держать минуты, короткое значение — только для доменов, в существовании которых нет сомнений.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Справочные данные
Синтаксис
retry-after-dns-error <time-interval>
Значения
один интервал времени — число и буква d, h, m или s; список здесь не принимается, в отличие от расписания очереди
Умолчание
1m § 3.3.10.50
Применение
reload, перезапуск не нужен
Очередь
уже поставленное в очередь не затронет
Где писать
<domain>
Сколько раз
один раз в блоке
Всё здесь — из руководства, с разделом.
Наследование
Значение сливается по блокам <domain> от общего к частному: побеждает наиболее подходящий блок, а не последний по файлу. Двойника с приставкой backoff- у строки нет: тот же интервал действует и когда очередь в щадящем режиме. Подхватывается по pmta reload.
Как проверить на узле
Значение печатает команда настроек очереди; сами ошибки разрешения имён видны в журнале, если включено их протоколирование:
pmta show settings gmail.com/vmta1 | grep -i retry-after-dns-error
grep -i 'dns\|resolv' /var/log/pmta/pmta.log | tail -20
Хаб ошибки DNS по узлам пока не собирает: очередь, вставшая на разрешении имён, выглядит в телеметрии так же, как вставшая на отказе приёмника.
В Хабе
Значение
Хаб подбирает сам — темп, стадия прогрева, метрики
Цена ошибки
обратимо: вредит, пока стоит
Сценарии
Разобраться с доставляемостью · Настроить темп под провайдера