max-rcpt-per-message

<domain>

Второе имя директивы max-rcpt-per-transaction
в конфигурации это строкаmax-rcpt-per-message 1000внутри блока <domain>
То же имя ещё 1:<domain><source>— часть из них другие настройки, часть та же самая
Одно поле, два имени — и третий смысл в другом блоке

Псевдоним. Руководство отводит имени отдельный раздел и говорит прямо: это то же самое, что max-rcpt-per-transaction. Одно поле, два способа его назвать, одинаковое умолчание 1000.

Знать про псевдоним нужно для чтения чужих конфигураций. Настройка, выставленная одним именем, в файле может встретиться под другим — и выглядеть двумя разными пределами, которых на деле нет. Само поле описано на странице основного имени: там же разобрано, чем платят за мелкую нарезку.

Печатает MTA именно это имя. Команда настроек очереди выводит строку max-rcpt-per-message — какое бы из двух имён ни стояло в конфигурации.

И то же имя занято в блоке подачи. Там <source> несёт настройку с этим названием, и она совсем про другое: сколько получателей узел согласен принять, умолчание 0. Получается имя с тремя ролями — два псевдонима на отправке и полный тёзка на приёме.

Главная ловушка. Три вхождения одного имени легко перепутать местами. Строка, скопированная из блока подачи в блок приёмника, разбирается без ошибки и молча меняет смысл: вместо потолка приёма получается нарезка передачи. Ноль, который в блоке подачи означал «без предела», здесь руководством не описан вовсе — и что с ним сделает MTA, из руководства узнать нельзя.
Что делает Хаб. Не пишет — ни это имя, ни основное. Остаётся вендорская тысяча, и для нашей отправки она не работает: письма уходят по одному получателю.
Рекомендуемые значения

Выбирать одно имя на всю конфигурацию. Какое — безразлично, важна единственность: два имени одного поля в разных файлах читаются как две настройки. Мы держимся основного, max-rcpt-per-transaction: оно называет механизм, а не результат.

Значения — те же, что у основного имени. Прикидка «размер тела на число кусков» и совет понижать только по требованию приёмника разобраны там же.

Совет держаться одного имени — наш. Из руководства здесь то, что имена равнозначны, и умолчание 1000.
Пример в конфигурации
# руководство даёт своё имя свой пример — предел тот же самый
<domain yahoo.com>
    max-rcpt-per-message 10</domain>
Десять адресов на передачу — очень мелкая нарезка: список в тысячу человек уедет сотней передач, и тело письма приёмник получит сто раз.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

Считают два имени двумя пределами

§ 3.3.10.83

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

Копируют строку из блока подачи

§ 3.3.7.39

Чем чреватоИмя одинаковое, блок другой — и смысл меняется на противоположный: вместо потолка приёма получается нарезка исходящей передачи. Ошибка не даёт ни отказа при разборе, ни предупреждения.
Как заметитьПриём по-прежнему берёт письма с любым числом адресов, зато отправка к этому приёмнику вдруг стала резаться на куски.
Как правильноДержать в голове, из какого блока строка. Потолок приёма задаётся только в <source>, нарезка — только здесь.

Переносят сюда ноль, ожидая «без предела»

§ 3.3.10.83

Чем чреватоВ блоке подачи ноль означает отсутствие предела, и это записано в руководстве. Здесь руководство говорит только о положительном целом: как MTA обойдётся с нулём, неизвестно, и полагаться на догадку в блоке приёмника нечем.
Как заметитьПоведение отправки к приёмнику отличается от ожидаемого, а в руководстве нет описания, с которым его можно сверить.
Как правильноНе переносить ноль между блоками. Если предел не нужен, строку не писать вовсе — вендорская тысяча и есть «по умолчанию».
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Справочные данные
Синтаксис
max-rcpt-per-message <integer>
Значения
положительное целое число
Умолчание
1000 § 3.3.10.83
Применение
reload, перезапуск не нужен
Очередь
уже поставленное в очередь не затронет
Где писать
<domain>
Сколько раз
один раз в блоке
Всё здесь — из руководства, с разделом.
Наследование
Наследование общее с основным именем: слияние по совпадающим блокам <domain> от общего к частному, побеждает самое точное совпадение. Оба имени пишут в одно поле, поэтому «перекрыть» одно другим внутри одного блока нельзя — останется то, что разобрано последним.
Как проверить на узле
Проверять надо не имя в файле, а действующее значение поля:
pmta show settings yahoo.com/mta-news-1
grep -rn 'max-rcpt-per-message\|max-rcpt-per-transaction' /etc/pmta/
Первая печатает действующее значение — всегда под именем max-rcpt-per-message. Вторая покажет, не разошлись ли по файлам оба имени: если нашлись оба, в конфигурации стоит навести порядок.
В Хабе
Цена ошибки
обратимо: вредит, пока стоит
Сценарии
Разобраться с доставляемостью · Настроить темп под провайдера