Global
The line adds a field with the queue domain to the protocol header. There is only one type so far — domain, and the engine fills in the value itself.
It requires the second protocol version — the first has no additional fields.
There are three levels, and this one is the most general: the most specific is include-tlv in the proxy block itself, then the same line on the sending address, then this one.
The queue domain is not always the recipient domain. It is the queue name: with MX rollup or queue renaming it is different.
🔎 The queue domain travels to the gate in the PROXY header, and the gate learns the receiver without looking into the SMTP conversation. It picks the proxy to go out through not by the domain but by the tag from the smtp-proxy-source-host line.
The value is chosen by what the proxy can do:
| Value | When |
|---|---|
| do not set it | the proxy decides by the pair of addresses |
| domain | the proxy spreads traffic by direction |
# without the second version the line adds nothing proxy-protocol 2 proxy-include-tlv domain
what people get wrong and how it ends1 mistake▶
our experience
2 relations
proxy-protocolGlobalRequires the second version: the first has no additional fields. § 3.3.1.49
smtp-proxy-source-hostGlobalAdds the queue domain to the PROXY header; requires the second version of the protocol. § 3.3.1.49queue-to<domain>Rollup is one of the two reasons why a queue’s domain does not match the recipient’s domain. § 3.3.1.49proxy-include-tlv<virtual-mta>The level above: if not set here, the setting is taken from there. § 3.3.1.49include-tlv<proxy>A level lower in precision: this line overrides it. § 3.3.22.4
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.◇Four value types the whole config is written inBoolean, domain pattern, regular expression and time interval — defined once in § 3.2 and then used by all directives.◇How the policy for a receiver is assembledSettings are assembled from the most general pattern to the most precise; the order of blocks in the file means nothing.