connect-timeout

<domain>

Сколько ждать, пока установится исходящее соединение
в конфигурации это строкаconnect-timeout 2mвнутри блока <domain>
Первое ожидание в разговоре

Разговор с приёмником — это цепочка ожиданий, и это первое из них. Узел открывает соединение к серверу получателя и ждёт, пока оно установится. Не ответа, не приветствия — самого соединения.

Дальше по цепочке идут smtp-greeting-timeout (ждём приветствие 220), data-send-timeout (отдаём тело письма) и smtp-data-termination-timeout (ждём подтверждение приёма). У каждого своё умолчание, и вместе они складываются в предельное время одной попытки.

Вендорское умолчание — 2m. По нынешним меркам это очень долго: живой сервер отвечает за доли секунды, а недоступный не ответит никогда. Две минуты — время, которое поток тратит впустую на каждом мёртвом адресе.

Главная ловушка — умолчание держит поток. Соединение, которое не установится, занимает слот в max-smtp-out все две минуты. У приёмника с десятком записей MX, половина которых не отвечает, узел тратит на перебор минуты вместо секунд — а лимит соединений всё это время занят.
Что делает Хаб. Не пишет — остаётся вендорское 2m. Это кандидат на правку: у крупных почтовиков соединение либо устанавливается за миллисекунды, либо не установится вовсе, и полминуты здесь достаточно с запасом.
Рекомендуемые значения

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

Считайте вместе с потоком. Занятое ожиданием соединение занимает слот max-smtp-out. Длинный таймаут при небольшом потолке соединений превращается в остановку очереди.

Не путайте с недоступностью приёмника. Короткий таймаут не отбивает письмо — он лишь заканчивает попытку; следующая придёт по расписанию retry-after.

Полминуты как ориентир и правило считать вместе с потоком — наши. Из руководства здесь умолчание 2m и то, что таймаут отмеряет установление исходящего соединения.
Пример в конфигурации
# известный почтовик: соединение либо мгновенно, либо никогда
<domain gmail.com>
    connect-timeout 30s</domain>
Сокращение не теряет писем: неудавшаяся попытка просто заканчивается раньше, а следующая придёт по расписанию повторов.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

Оставляют умолчание при небольшом потолке соединений

наш опыт

Чем чреватоКаждая неудачная попытка держит слот две минуты. При потолке в десять соединений и половине неотвечающих записей MX очередь встаёт, хотя приёмник жив.
Как заметитьСоединения есть, доставок нет, темп заметно ниже заданного.
Как правильноСократить до полуминуты и сверить с max-smtp-out.

Сокращают до секунд ради скорости

наш опыт

Чем чреватоПриёмник за медленным каналом или с загруженным балансировщиком не успевает принять соединение. Попытки заканчиваются впустую, а выглядит это как недоступность приёмника.
Как заметитьРост неудачных попыток при живом приёмнике, отвечающем на соединение вручную.
Как правильноДержать порядок десятков секунд, а не единиц.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Справочные данные
Синтаксис
connect-timeout <time-interval>
Значения
интервал времени: число и буква — d сутки, h часы, m минуты, s секунды
Умолчание
2m § 3.3.10.74
Применение
reload, перезапуск не нужен
Очередь
уже поставленное в очередь не затронет
Где писать
<domain>
Сколько раз
один раз в блоке
Всё здесь — из руководства, с разделом.
Наследование
Значение сливается по блокам <domain> от общего к частному: побеждает наиболее подходящий блок, а не последний по файлу. Подхватывается по pmta reload; на уже открывающиеся соединения не влияет — новое значение действует со следующей попытки.
Как проверить на узле
Действующее значение печатает команда настроек очереди; сколько соединений сейчас в ожидании, видно по списку очередей:
pmta show settings gmail.com/vmta1 | grep -i connect-timeout
pmta show queues --connected=yes --no-rcpt-events
Очередь, у которой соединений много, а доставок нет, обычно ждёт именно здесь. Хаб таймауты разговора не задаёт и время установления соединения не собирает.
В Хабе
Цена ошибки
обратимо: вредит, пока стоит
Сценарии
Разобраться с доставляемостью · Настроить темп под провайдера