<proxy>
The line sets the protocol header version — 1 or 2.
The default here is not a value but a chain. If it is not set here, the engine looks at proxy-protocol on the sending address that uses this proxy; if it is not set there either, it takes the node-level proxy-protocol, where the default is 1. Three levels, and the most specific one wins.
The difference between the versions is practical. The first is a text line that everyone understands. The second is binary and can carry additional fields, which means that include-tlv and passing the queue domain work only with it.
The proxy chooses, not the node: set the version your proxy server understands.
The version is dictated by the proxy, not the node:
| Value | When |
|---|---|
| 1 (chain default) | the proxy is old or the queue domain is not needed |
| 2 | include-tlv is needed — passing the queue domain |
It is worth setting here only when the proxy servers differ and their versions do not match.
# the version is set on the proxy itself: a neighboring one may use a different one <proxy mta-proxy> server proxy.internal:9999 client 16.80.77.101 client2.hostname.com protocol-version 2 include-tlv domain </proxy>
what people get wrong and how it ends1 mistake▶
our experience
2 relations
proxy-protocolGlobalA level lower in precision: this line overrides it. § 3.3.22.3
tcpdump -A -i any -c 20 'port 5000'
3 articles
◇Cloud restrictionsClouds restrict outbound mail on port 25 until you ask them to lift the limit, and mailbox providers treat their address ranges with suspicion.◇The sending address — what it is made ofA named set of everything that is a property of the address: which IP the message leaves from, how the node introduces itself, what it signs with and how fast it sends.◇A named proxy and three levels of its settingsThe block carries the proxy address, the external sending address, the protocol version, the field type and the number of attempts; the first two lines are required.