allow-empty-x-virtual-mta

<source>

Считать ли пустое значение заголовка X-Virtual-MTA допустимым
в конфигурации это строкаallow-empty-x-virtual-mta falseвнутри блока <source>
Пустой заголовок — ошибка или «выбирай сам»

Умолчание — false. Заголовок с пустым значением — x-virtual-mta: и ничего дальше — считается неверным выбором потока, а значит попадает под общее правило: письмо отвергается, если не настроена пара «запасной поток плюс снятый отказ».

Со значением yes пустой заголовок принимается, и письмо уходит потоком по умолчанию — тем, что назначен источнику директивой default-virtual-mta.

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

Что ставить. Решение зависит от того, чья подача:

Значение Когда Чем платите
no (умолчание) подача наша, заголовок ставим мы ничем: пустое значение — ошибка, и её видно
yes чужая платформа шлёт заголовок всегда пустое значение перестаёт быть заметным

Если включаете — стоит убедиться, что default-virtual-mta у этого источника задан осмысленно: именно он и получит такие письма.

Умолчание false и то, что пустой заголовок уводит письмо в поток по умолчанию, — из руководства. Разбор «чья подача» — наш.
Пример в конфигурации
# чужая платформа ставит заголовок всегда, иногда пустым
<source 10.0.0.0/24>
    process-x-virtual-mta yes
    allow-empty-x-virtual-mta yes    default-virtual-mta mta-hub-pool
</source>
Три строки работают вместе: первая разрешает заголовок, вторая принимает пустое значение, третья говорит, куда такое письмо уйдёт. Без третьей терпимость бессмысленна — принять письмо и не знать, каким потоком его отправить, нельзя.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

Включают терпимость вместо того, чтобы починить отправителя

наш опыт

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

Включают, не задав поток по умолчанию

§ 3.3.7.67

Чем чреватоПисьмо принимается и уходит потоком по умолчанию — которого у источника может не быть вовсе. Настройка сделана наполовину.
Как заметитьПисьма с пустым заголовком ведут себя непредсказуемо: часть уходит, часть нет, зависимости от отправителя не видно.
Как правильноЗадать default-virtual-mta тому же источнику. Терпимость и умолчание — это одна настройка из двух строк.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Справочные данные
Синтаксис
allow-empty-x-virtual-mta <boolean>
Значения
yes | no | true | false
Умолчание
false § 3.3.7.67
Применение
reload, перезапуск не нужен
Очередь
уже поставленное в очередь не затронет
Где писать
<source>
Сколько раз
один раз в блоке
Всё здесь — из руководства, с разделом.
Наследование
Директива живёт в <source> и сливается по правилу источников: более узкий блок перекрывает более широкий. Включать её стоит точечно, в блоке той подсети, откуда подаёт нетерпимая к пустоте платформа, — иначе спрятанной окажется и своя ошибка.
Как проверить на узле
Строка видна только в конфигурации, отдельного счётчика у неё нет:
grep -n -B5 allow-empty-x-virtual-mta /etc/pmta/config
Если строки нет, действует умолчание no. Косвенный признак, что она нужна, — отказы подачи у платформы, которая заголовок ставит всегда: в её логах это выглядит как отвергнутые письма без внятной причины.
В Хабе
Цена ошибки
обратимо: вредит, пока стоит
Сценарии
Подключить платформу отправки