proxy-protocol

Global

Версия протокола PROXY для соединений через прокси
в конфигурации это строкаproxy-protocol 1внутри блока Global
То же имя ещё 1:Global<virtual-mta>— часть из них другие настройки, часть та же самая
Общий уровень трёхуровневой настройки

Строка задаёт версию заголовка протокола — 1 или 2. Умолчание — 1.

Уровней три, и этот самый общий. Самое точное — protocol-version в самом блоке прокси; не задано там — берётся такая же строка у адреса отправки; не задана и она — эта, с умолчанием 1.

Вторая версия нужна ради дополнительных полей — только с ней работает передача домена очереди (proxy-include-tlv).

Выбирает версию прокси, а не узел: ставить надо ту, которую он понимает.

Главная ловушка — задать на узле и удивиться, что часть адресов отправки ведёт себя иначе. Уровней три, и любой из двух нижних перекрывает этот молча.
Что делает Хаб. На уровне узла не пишет: proxy-protocol 2 стоит в каждом адресе отправки через прокси — в блоках proxy-<ярлык> файла /etc/pmta/proxy.txt. Вторая версия выбрана ради передачи домена очереди: по нему гейт узнаёт получателя, не заглядывая в разговор SMTP.
Рекомендуемые значения

Значение выбирают по возможностям прокси:

Значение Когда
1 (умолчание) прокси старый или домен очереди не нужен
2 нужна передача домена очереди
Обе версии, умолчание 1 и порядок перекрытия уровней — из руководства (§ 3.3.1.48, § 3.3.22.3).
Пример в конфигурации
# вторая версия и передача домена очереди — пара
proxy-protocol 2proxy-include-tlv domain
Строку в самом блоке прокси эти две не перекрывают — там она самая точная.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

Ставят вторую версию прокси, который знает первую

наш опыт

Чем чреватоПрокси не разберёт заголовок и закроет соединение. Узел увидит обычный отказ и уйдёт к следующему прокси или в повтор.
Как заметитьПервый прокси в списке никогда не работает.
Как правильноСверить версию с настройкой прокси.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Справочные данные
Синтаксис
proxy-protocol N
Значения
1 или 2
Умолчание
1 § 3.3.1.48
Применение
reload, перезапуск не нужен
Очередь
уже поставленное в очередь не затронет
Где писать
Global, <virtual-mta>
Сколько раз
один раз в блоке
Всё здесь — из руководства, с разделом.
Наследование
Строка пишется в корне файла, раздел Global, и достаётся всем адресам отправки, пока они не зададут своё. Самый точный уровень — одноимённая строка в самом блоке <proxy>.
Как проверить на узле
Со стороны узла версия не видна — смотреть надо на прокси:
tcpdump -A -i any -c 20 'port 5000'
Первая версия начинается текстом PROXY TCP4 …, вторая — двоичной подписью.
В Хабе
Цена ошибки
обратимо: вредит, пока стоит
Сценарии
Отправка через прокси