precached-max-domains

<dns>

Сколько доменов максимум держать в предварительном кэше
в конфигурации это строкаprecached-max-domains 500внутри блока <dns>
Потолок, за которым список молча обрезается

Умолчание — 500. Строка задаёт, сколько доменов MTA возьмёт из файла предварительного кэша.

Руководство оговаривает: значение не может превышать число доменов, объявленных в файле. То есть потолок выше длины списка бессмыслен.

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

Работает строка только вместе со списком (precached-domains-file) и расписанием (precached-refresh-interval).

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

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

Вторая половина: потолок и интервал вместе задают постоянную нагрузку на резолвер. Она идёт всегда, а не только когда есть письма, — и растёт прямо пропорционально этому числу.

Что делает Хаб. Не пишет: предварительный кэш не задействован вовсе, блока <dns> в конфигурации нет.
Рекомендуемые значения

Что ставить. Число считают от нагрузки, а не от длины файла:

Значение Когда
500 (умолчание) список короткий и в потолок укладывается
по длине файла список сознательно ограничен важными приёмниками
больше только вместе с резолвером, который эту нагрузку выдержит

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

Умолчание 500, ограничение «не может превышать число доменов в файле» и предупреждение о частых запросах — из руководства, § 3.3.16.3. Расчёт постоянной нагрузки наш.
Пример в конфигурации
# потолок стоит держать равным длине файла, а не больше
<dns>
    precached-domains-file /etc/pmta/precached-domains.txt
    precached-max-domains 500    precached-refresh-interval 5m
</dns>
Пятьсот доменов с интервалом в пять минут — это порядка двух запросов DNS в секунду, идущих постоянно, вне зависимости от того, есть ли письма.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

Оставляют умолчание при длинном файле

§ 3.3.16.3

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

Ставят большой потолок без запаса у резолвера

§ 3.3.16.3

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