edns-udp-length

Global

Размер полезной нагрузки EDNS при запросах маршрутизации
в конфигурации это строкаedns-udp-length EDNS disabledвнутри блока Global
Обрезанный ответ хуже отсутствующего

Умолчание — расширение выключено. Тогда действует старый предел: ответ по UDP длиннее 512 байт обрезается.

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

Строка включает расширение и задаёт наибольший размер. Значение от 512 до 2048 байт; за пределами диапазона MTA молча подгоняет его к границе.

И честное предупреждение вендора о размене: большой пакет реже обрезается, но чаще блокируется брандмауэром и чаще фрагментируется. Значение подбирают под свою сеть, а не берут наибольшее.

Оговорка отдельно: на команду pmta resolve строка не влияет — там своя опция командной строки.

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

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

Что делает Хаб. Не пишет — расширение выключено, действует старый предел в 512 байт.

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

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

Что ставить. Значение подбирают под сеть, а не по максимуму:

Значение Когда
не писать доменов немного, ответы короткие — старого предела хватает
1232 распространённый компромисс: помещается в обычный кадр без фрагментации
2048 сеть своя целиком, брандмауэры настроены, фрагментация не мешает

Проверять надо не командой разрешения — она эту строку не использует, — а поведением доставки к тем приёмникам, чьи ответы длинны.

Умолчание «расширение выключено», диапазон и молчаливая подгонка, размен «реже обрезается — чаще блокируется» и оговорка про команду разрешения — из руководства, § 3.3.1.46. Значение 1232 как компромисс — наше.
Пример в конфигурации
# компромисс: помещается в обычный кадр и не фрагментируется
name-server 10.1.2.3
edns-udp-length 1232
Наибольшее значение не лучшее: большой пакет реже обрезается, но чаще блокируется брандмауэром и чаще фрагментируется — так пишет само руководство.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

Ставят наибольшее значение

§ 3.3.1.46

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

Проверяют настройку командой разрешения имён

§ 3.3.1.46

Чем чреватоКоманда эту строку не использует — у неё своя опция. Успешная проверка ничего не говорит о том, что происходит при доставке.
Как заметитьПроверка проходит, а доставка к крупным приёмникам по-прежнему подводит.
Как правильноПередавать команде размер её собственной опцией, а вывод сверять с поведением доставки.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Справочные данные
Синтаксис
edns-udp-length N
Значения
целое от 512 до 2048; вне диапазона молча подгоняется
Умолчание
EDNS disabled § 3.3.1.46
Применение
reload, перезапуск не нужен
Очередь
уже поставленное в очередь не затронет
Где писать
Global
Сколько раз
один раз в блоке
Всё здесь — из руководства, с разделом.
Наследование
Директива пишется в корне файла конфигурации и действует на весь узел: размер один для всех запросов маршрутизации. Задать разный для разных резолверов или получателей нельзя.
Как проверить на узле
Строку видно в конфигурации, но проверять ею разрешение имён нельзя:
grep -n 'edns-udp-length\|name-server' /etc/pmta/config
pmta resolve --edns gmail.com
У команды разрешения свой ключ –edns с постоянным размером 2048: строку конфигурации она не использует, и её успех ничего не говорит о доставке. Настоящая проверка — доставка к приёмнику с длинным списком MX.
В Хабе
Цена ошибки
обратимо: вредит, пока стоит
Сценарии
Разобраться с доставляемостью