smtp-data-timeout

<source>

Сколько ждать данные в фазе передачи тела письма
в конфигурации это строкаsmtp-data-timeout 10mвнутри блока <source>
Сколько держать соединение, которое молчит на передаче тела

Умолчание — 10m. Строка задаёт, сколько MTA ждёт данных от подающей стороны в фазе передачи тела — после команды DATA или BDAT.

Руководство отдельно оговаривает: касается только входящих соединений. За ожидание при доставке отвечают настройки получателя.

Парная строка — smtp-command-timeout: та же задача, но для фазы команд, до передачи тела.

Главная ловушка — десять минут на соединение. Умолчание щедрое, и на узле, куда подают немногие доверенные платформы, оно не мешает. Но каждое молчащее соединение занимает слот из потолка total-max-smtp-in все десять минут — и при исчерпании потолка новые получают отказ.

То есть щедрый предел превращается в способ занять приёмник: достаточно открыть соединения, начать передачу и замолчать.

Что делает Хаб. Не пишет — остаётся вендорское 10m.

Потолок входящих при этом задан: total-max-smtp-in 1000 в обеих конфигурациях, базовой и рабочей. Соединения на приёмнике подачи, который слушает всю сеть, держатся до десяти минут молчания каждое.

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

Что ставить. Предел считают от того, кто подаёт:

Значение Когда
10m (умолчание) подача от известных платформ из узкого диапазона
2m–5m порт открыт сети: своя платформа столько не молчит, а чужая не займёт слот надолго

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

Умолчание 10m и оговорка «только входящие соединения» — из руководства, § 3.3.7.56. Разбор про занятие слотов и разбивка значений наши.
Пример в конфигурации
# порт открыт сети — молчащее соединение не должно держать слот десять минут
<source 0/0>
    smtp-data-timeout 3m    smtp-command-timeout 2m
</source>
Передача тела получает больше времени, чем обмен командами: тело идёт по каналу, а команды — короткие строки, и молчать на них дольше минуты неоткуда.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

Оставляют десять минут на открытом порту

наш опыт

Чем чреватоМолчащее соединение держит слот из общего потолка все десять минут. Достаточно открыть их столько, сколько разрешено, — и приёмник перестаёт принимать почту, не будучи ничем занят.
Как заметитьЧисло входящих соединений близко к потолку при небольшом объёме подачи.
Как правильноУжесточить предел в широком блоке источника, оставив щедрый в блоке своей подачи.

Ждут, что строка повлияет на доставку

§ 3.3.7.56

Чем чреватоОна касается только входящих соединений. Ожидание при отправке письма получателю задаётся его настройками, и эта строка на него не влияет.
Как заметитьСтрока правится ради зависших доставок, и ничего не меняется.
Как правильноСмотреть настройки получателя: за исходящую сторону отвечают они.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Справочные данные
Синтаксис
smtp-data-timeout <time-interval>
Значения
промежуток времени, например 5m или 90s
Умолчание
10m § 3.3.7.56
Применение
reload, перезапуск не нужен
Очередь
уже поставленное в очередь не затронет
Где писать
<source>
Сколько раз
один раз в блоке
Всё здесь — из руководства, с разделом.
Наследование
Директива живёт в <source> и подчиняется слиянию источников: соединение попадает под все адресные блоки, которые его накрывают, и узкий перекрывает широкий. Строгий предел в блоке 0/0 и щедрый в блоке своей подачи — обычная и правильная раскладка.
Как проверить на узле
Оба предела читаются вместе с потолком входящих соединений:
grep -n 'smtp-data-timeout\|smtp-command-timeout\|total-max-smtp-in' /etc/pmta/config /etc/pmta/virtualhost.txt
pmta show status | grep -i 'smtp-in\|inbound'
Отсутствие строк означает вендорские десять минут. Занятые соединения показывает вторая команда: если их число близко к потолку при малом объёме подачи, пределы стоит ужесточить.
В Хабе
Цена ошибки
обратимо: вредит, пока стоит
Сценарии
Подключить платформу отправки