ip-connection-limit

Global

Предел одновременных соединений к диапазону адресов приёмника
в конфигурации это строкаip-connection-limitвнутри блока Global
Тот же предел, но по адресам

Строка ограничивает число одновременных соединений к MX, адрес которого попадает в названный диапазон. Диапазон пишется в бесклассовой записи — 173.194/16 или отдельным адресом.

Руководство говорит: синтаксис похож на соседнюю mx-connection-limit, только вместо имён — адреса. Значит действуют и все её оговорки: предел считается на каждый адрес отправки отдельно и применяется к каждому подходящему MX, а не ко всем вместе.

Отдельно оговорено: директива разрешена только на уровне узла. Внутри блоков её писать нельзя.

Строку повторяют — по строке на правило.

Главная ловушка — приёмники меняют адреса чаще, чем имена. Имя MX у крупного приёмника живёт годами, а адреса за ним меняются: добавляются площадки, уходят из ротации старые. Правило по диапазону, верное сегодня, завтра может не совпасть ни с чем — и предел перестанет действовать молча.

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

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

Что делает Хаб. Не пишет: пределы соединений задаёт там, где их считает приёмник, — в правилах получателей и у адресов отправки.

Отслеживать смену адресов у приёмников Хаб тоже не умеет, так что правило по диапазону пришлось бы поддерживать вручную.

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

Что ставить. По адресам ограничивают в узком случае:

Значение Когда
не писать обычный случай: пределы задаются у получателей и адресов отправки
диапазон и число один и тот же адрес обслуживает MX с разными именами, и ограничить надо именно его
отдельный адрес точечная мера по конкретному узлу приёмника

Как и у соседней строки, считать надо с умножением на число адресов отправки.

Синтаксис, отбор по адресам, разрешение только на уровне узла и сходство с пределом по имени MX — из руководства, § 3.3.1.60.2. Оговорки про счёт на адрес отправки — оттуда же, § 3.3.1.60.1. Разбивка случаев наша.
Пример в конфигурации
# диапазон целиком и точечное правило по одному адресу
ip-connection-limit 173.194/16 50ip-connection-limit 104.47.2.33 1
Предел считается на каждый адрес отправки отдельно и применяется к каждому подходящему MX. Оба числа умножаются на количество ваших адресов отправки.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

Задают диапазон и не следят за его актуальностью

наш опыт

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

Пишут строку внутри блока

§ 3.3.1.60.2

Чем чреватоДиректива разрешена только на уровне узла. Внутри блока она не действует, и конфигурация может не примениться целиком.
Как заметитьСтрока стоит внутри блока получателя или потока отправки.
Как правильноПеренести в корень файла конфигурации.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Справочные данные
Синтаксис
ip-connection-limit CIDR N
Значения
диапазон в бесклассовой записи и целое число соединений; строку можно повторять
Применение
reload, перезапуск не нужен
Очередь
уже поставленное в очередь не затронет
Где писать
Global
Сколько раз
можно повторять
Всё здесь — из руководства, с разделом.
Наследование
Директива разрешена только на уровне узла — внутри блоков её писать нельзя, и руководство говорит это прямо. При этом предел считается на каждый адрес отправки отдельно: одна строка даёт столько пределов, сколько у узла адресов.
Как проверить на узле
Правила видно в конфигурации; совпадают ли они — проверяют разрешением имён:
grep -n 'ip-connection-limit' /etc/pmta/config
pmta resolve gmail.com
Вторая команда показывает, какие адреса у MX приёмника сейчас. Если они вышли за диапазон правила, предел не действует — и об этом никто не сообщит.
В Хабе
Цена ошибки
обратимо: вредит, пока стоит
Сценарии
Настроить темп под провайдера