disconnect-on-transient-error

<source>

Закрывать ли соединение вместо временного отказа
в конфигурации это строкаdisconnect-on-transient-error falseвнутри блока <source>
Уступка платформе, не понимающей 4xx

Умолчание — false. С true MTA закрывает соединение там, где иначе ответил бы временным отказом.

Назначение руководство называет прямо: это выручает, когда подающая программа не умеет обрабатывать ответы 4xx. Разорванное соединение такая программа обычно понимает и пробует ещё раз, а временный отказ может принять за окончательный или зациклиться на нём.

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

Главная ловушка — обрыв прячет причину. Ответ 4xx несёт текст: почему отказано и когда пробовать снова. Обрыв не несёт ничего. Подающая сторона видит «соединение закрыто» и не знает, узел ли перегружен, сеть ли моргнула, или её отвергли.

Разбор из-за этого становится дороже с обеих сторон: у вас в журнале обрыв, у неё — обрыв, и связать их можно только по времени.

Что делает Хаб. Не пишет — остаётся вендорское false. Библиотека отправки временные отказы понимает и обрабатывает, и обрыв вместо внятного ответа только запутал бы разбор.
Рекомендуемые значения

Что ставить. Уступка нужна редко и адресно:

Значение Когда
false (умолчание) подающая сторона понимает 4xx — обычный случай
true старая программа подачи, которая на 4xx ломается или зацикливается

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

Умолчание false и назначение «подающая программа не умеет обрабатывать 4xx» — из руководства, § 3.3.7.35. Разбор про потерю причины и совет о выдаче адресно — наши.
Пример в конфигурации
# уступка одному источнику, а не всему узлу
<source 10.0.0.5>
    disconnect-on-transient-error true</source>
Этот клиент вместо ответа 4xx получит обрыв соединения. Остальным узел по-прежнему отвечает внятным временным отказом.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

Включают на всём узле ради одного клиента

наш опыт

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

Принимают обрыв за ошибку узла

§ 3.3.7.35

Чем чреватоЕсли строка включена, обрыв — это и есть ответ узла, а не сбой. Разбирают его как сетевую проблему и не находят ничего, потому что проблема в настройке.
Как заметитьКлиент сообщает о разрывах, а в журналах узла ошибок нет.
Как правильноПроверить строку в блоке источника прежде, чем искать сетевую причину.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Справочные данные
Синтаксис
disconnect-on-transient-error <boolean>
Значения
yes | no | true | false
Умолчание
false § 3.3.7.35
Применение
reload, перезапуск не нужен
Очередь
уже поставленное в очередь не затронет
Где писать
<source>
Сколько раз
один раз в блоке
Всё здесь — из руководства, с разделом.
Наследование
Директива живёт в <source> и подчиняется слиянию источников: соединение попадает под все адресные блоки, которые его накрывают, и узкий перекрывает широкий. В блоке 0/0 уступка достанется всем — и разбор станет труднее для всех подающих сторон разом.
Как проверить на узле
Настройку видно в конфигурации; проявляется она только под нагрузкой:
grep -n 'disconnect-on-transient-error\|total-max-smtp-in\|smtp-await-slot' /etc/pmta/config
Три строки читаются вместе: временный отказ возникает у потолка входящих соединений, а эта строка решает, что вместо него увидит клиент. Ждать проявления без нагрузки бесполезно.
В Хабе
Цена ошибки
обратимо: вредит, пока стоит
Сценарии
Подключить платформу отправки