source-group

<source>

К какой группе источников относится этот источник
в конфигурации это строкаsource-groupвнутри блока <source>
Строка, без которой группа пуста

Строка приписывает блок источника к названной группе. Сама она ничего не ограничивает — она связывает: настройки, которым нужна группа, объявляются в блоке <source-group>, а участники называются здесь.

Ради чего нужна группировка: некоторые пределы имеют смысл не для одного источника, а для нескольких сразу — когда одна и та же подающая сторона приходит с нескольких адресов. Таких настроек в блоке группы две: max-smtp-in и reserved-smtp-in.

Одна группа собирается из скольких угодно источников; каждый называет её своей строкой.

Главная ловушка — молчание при опечатке. Имя группы нигде не сверяется: источник, приписанный к необъявленной группе, просто не попадает ни в какую. Ошибки при этом не будет, а предел, который вы задавали на троих, будет действовать на двоих.

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

Что делает Хаб. Не пишет: групп источников в его конфигурации нет вовсе. Подача идёт под логинами, и предел на входящие соединения задан один на узел — total-max-smtp-in.

Группы пригодились бы там, где одна подающая сторона приходит с нескольких адресов и ей нужно гарантировать слоты. У нас подающая сторона одна — сам Хаб.

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

Что ставить. Значение — имя группы; вопрос в том, по чему группировать:

Значение Когда
не писать (умолчание) подающая сторона одна или пределы на входящие не разводятся
имя по отправителю у одного отправителя несколько адресов подачи, и ограничивать надо его целиком
имя по назначению группа «свои» с гарантированными слотами и группа «прочие» без них

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

Назначение и синтаксис — из руководства, § 3.3.7.55. Разбивка «по чему группировать» наша.
Пример в конфигурации
# два адреса одной подающей стороны — одна группа
<source-group localSources>
    max-smtp-in 10
    reserved-smtp-in 5
</source-group>

<source 192.168.0.30>
    smtp-service yes
    source-group localSources</source>
Второй адрес той же стороны называет ту же группу своей строкой. Предел в десять соединений действует на обоих вместе, а не на каждого.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

Называют группу, которой нет

§ 3.3.7.55

Чем чреватоИсточник не попадает ни в какую группу, и предел, рассчитанный на нескольких участников, действует на меньшее число. Ошибки не возникает.
Как заметитьПредел группы срабатывает раньше или позже, чем ожидалось по числу участников.
Как правильноСверить имена: у каждого названного имени должен быть объявленный блок группы.

Приписывают к группе широкий блок

наш опыт

Чем чреватоПо правилу слияния имя достаётся всем подсетям, которые сами не назвали своей группы. Группа «свои» неожиданно вбирает в себя весь интернет, и гарантированные слоты перестают быть гарантией.
Как заметитьСтрока группы стоит в блоке 0/0.
Как правильноНазывать группу только в тех блоках, которые в неё действительно входят.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Справочные данные
Синтаксис
source-group <name>
Значения
имя группы
Применение
reload, перезапуск не нужен
Очередь
уже поставленное в очередь не затронет
Где писать
<source>
Сколько раз
один раз в блоке
Всё здесь — из руководства, с разделом.
Наследование
Директива живёт в <source> и подчиняется слиянию источников: соединение попадает под все адресные блоки, которые его накрывают, и узкий перекрывает широкий. Имя группы, названное в блоке 0/0, достанется каждой подсети, которая не назвала своей, — и соберёт в одну группу почти весь узел.
Как проверить на узле
Состав группы собирается глазами: MTA его не показывает:
grep -n 'source-group' /etc/pmta/config /etc/pmta/virtualhost.txt
Каждому названному имени должен соответствовать объявленный блок группы. Имя без блока не даёт ничего и об этом не сообщает.
В Хабе
Цена ошибки
обратимо: вредит, пока стоит
Сценарии
Подключить платформу отправки