Держать выбранные домены разрешёнными постоянно

pre-cached domains
Разрешение имени уходит из пути доставки

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

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

Задач, которые механизм решает, руководство называет две: нагрузка на резолвер при загрузке многих доменов разом и домены с коротким сроком жизни записей.

Настроек три и все в блоке <dns>: файл со списком (precached-domains-file), интервал обновления (precached-refresh-interval) и потолок числа доменов (precached-max-domains).

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

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

Вторая половина тише: из файла берутся только первые записи до потолка. Список длиннее обрезается молча, и домены, которые вы считали закэшированными, разрешаются обычным порядком.

Что делает Хаб. Не задействует: блока <dns> в конфигурации нет, файла со списком тоже.

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

Пример в конфигурации
# три строки: список, потолок и расписание обновления
<dns>
    precached-domains-file /etc/pmta/precached-domains.txt    precached-max-domains 500
    precached-refresh-interval 5m
</dns>
В файле по домену на строку. Из него берутся только первые записи до потолка — остальные обрезаются молча.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

Кэшируют приёмника, который меняет маршруты

§ 11.12

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

Кладут в файл больше доменов, чем разрешено потолком

§ 11.12

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

Ставят большой список с коротким интервалом

§ 11.12

Чем чреватоКаждое обновление — это запросы по всем доменам списка. Механизм, задуманный чтобы снять нагрузку с резолвера, начинает её создавать.
Как заметитьРезолвер отвечает медленнее после включения кэша.
Как правильноСчитать нагрузку: число доменов, делённое на интервал, — это запросов в секунду, и они постоянны.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Как проверить на узле
Настройку видно в конфигурации, состав кэша — командой узла:
grep -n -A4 '^<dns>' /etc/pmta/config
pmta show precache
wc -l /etc/pmta/precached-domains.txt
Число строк в файле стоит сравнить с потолком: превышение означает молча обрезанный список. Команда показывает, что реально лежит в кэше.
В Хабе
Цена ошибки
обратимо: вредит, пока стоит
Сценарии
Настроить темп под провайдера · Разобрать зависшую очередь