smtp-command-timeout

<source>

Сколько ждать команду во входящем обмене SMTP
в конфигурации это строкаsmtp-command-timeout 10mвнутри блока <source>
Сколько держать соединение, которое молчит на командах

Умолчание — 10m. Строка задаёт, сколько MTA ждёт, пока подающая сторона пришлёт очередную команду.

Речь именно о фазе команд — приветствие, отправитель, получатели. За фазу передачи тела отвечает парная smtp-data-timeout.

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

Главная ловушка — держать оба предела одинаковыми. Умолчание у них общее, и его так и оставляют. Но задачи разные: десять минут на передачу большого письма по медленному каналу разумны, десять минут между MAIL FROM и RCPT TO — нет.

На открытом порту это и есть самый дешёвый способ занять приёмник: открыть соединение, поздороваться и замолчать на десять минут, заняв слот из потолка total-max-smtp-in.

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

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

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

Что ставить. Предел на команды может быть заметно строже, чем на тело:

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

Ориентир простой: команда — это короткая строка, и задержка в ней означает либо неполадку на подающей стороне, либо не подачу вовсе.

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

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

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

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

наш опыт

Чем чреватоДесять минут молчания между короткими командами не бывают законными, и слот держится впустую. На открытом порту это самый дешёвый способ занять приёмник.
Как заметитьСоединения висят подолгу, не дойдя до передачи письма.
Как правильноРазвести пределы: телу больше, командам меньше.

Ставят предел слишком строгим ради безопасности

наш опыт

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