max-msg-per-connection

<domain>Хаб задаёт сам

Сколько писем уходит в одном соединении до переподключения
в конфигурации это строкаmax-msg-per-connection 50внутри блока <domain>
Сколько писем уходит в одном соединении

После указанного числа писем узел закрывает соединение и открывает новое. Ноль означает «без ограничения»: соединение живёт, пока есть что слать или пока не сработает connection-idle-timeout.

Слишком мало — тоже плохо. Каждое переподключение это TCP-рукопожатие, TLS-рукопожатие и приветствие SMTP заново. Провайдер считает и соединения тоже, поэтому max-msg-per-connection 1 при большом объёме выглядит агрессивнее, чем сто писем в одном соединении.

Главная ловушка. Низкое значение здесь превращается в высокий темп открытия соединений и упирается в max-connect-rate. Две настройки в противоречии дают очередь, которая стоит без единого отказа: узел просто не может открыть следующее соединение.
Что делает Хаб. Пишет из пресета узла: «Аккуратный» — 20 писем на соединение, «Сбалансированный» — 50, «Агрессивный» — 100.

Адресам под прогревом строка не пишется вовсе: у них действует вендорское «без предела», а темп держат один поток и max-msg-rate.

Рекомендуемые значения
Режим На адрес (vMTA) В правиле провайдера Когда это ваш случай
Прогрев, холодный адрес 1 — Адрес младше 4–6 недель или после паузы
Аккуратно 20 — Строгие получатели, спорная репутация, первые недели после прогрева
Сбалансированно по умолчанию 50 — Обычный режим устоявшегося парка
Агрессивно 100 — Прогретые адреса, лояльные получатели, срочные объёмы
Умолчание PowerMTA 0 — Если директиву не писать вовсе

Умолчание выгоднее почти всегда. Руководство говорит прямо: обычно эффективнее отдать в соединение как можно больше писем. Ограничивать стоит там, где приёмник сам просит переподключаться, — а не «на всякий случай».

Считайте вместе с темпом подключений. Число писем на соединение и max-connect-rate — две стороны одного: чем меньше первое, тем чаще надо открывать новые. Двадцать писем на соединение при тысяче писем в час — это полсотни подключений в час, и они должны укладываться в разрешённый темп.

Ноль — не «выключено», а «без предела». Соединение живёт, пока есть что слать или пока не сработает connection-idle-timeout.

Наша рекомендация; вендорское умолчание — без ограничения.
Пример в конфигурации
# предел на письма и темп подключений подбираются вместе
<domain hotmail.com>
    max-msg-per-connection 50    max-connect-rate 30/m
    connection-idle-timeout 5m
</domain>
Пятьдесят писем на соединение при тысяче писем в час — это два десятка подключений в час, далеко под разрешёнными тридцатью в минуту.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

Ограничивают без нужды

§ 3.3.10.81

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

Меняют, не глядя на темп подключений

наш опыт

Чем чреватоУменьшили число писем на соединение — выросло число подключений. Если max-connect-rate остался прежним, очередь упрётся в него и станет отправлять медленнее, чем до правки.
Как заметитьСоединений стабильно столько, сколько разрешает темп подключений, а писем в очереди много.
Как правильноПравить обе настройки вместе и сверять произведение с фактическим объёмом.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Справочные данные
Синтаксис
max-msg-per-connection <integer>
Значения
целое число писем; 0 означает «без предела»
Умолчание
0 § 3.3.10.81
Применение
reload, перезапуск не нужен
Очередь
уже поставленное в очередь не затронет
Где писать
<domain>
Сколько раз
один раз в блоке
Всё здесь — из руководства, с разделом.
Наследование
Значение сливается по блокам <domain> от общего к частному: побеждает наиболее подходящий блок, а не последний по файлу. Подхватывается по pmta reload, перезапуск не нужен; уже открытые соединения доживают со старым значением.
Как проверить на узле
Прямого счётчика писем на соединение нет. Косвенно видно по соотношению соединений и отправленного за тот же период:
pmta show queues --maxitems=20
pmta show settings hotmail.com/vmta1 | grep -i max-msg-per-connection
Вторая команда печатает действующее значение после слияния блоков — это единственный надёжный способ узнать, какое из значений победило. Если соединений заметно больше расчётного, посмотрите, не стоит ли где-нибудь ниже по файлу более частный блок со своим числом.
В Хабе
Управляется
Конфигурации → Лимиты доставки
Значение
Хаб подбирает сам — темп, стадия прогрева, метрики
Цена ошибки
обратимо: вредит, пока стоит
Сценарии
Разобраться с доставляемостью · Настроить темп под провайдера