Global
The line names a file; its contents — headers in the usual mail format — are inserted into every message that goes out through a sending address. The insertion place is specified: right after the Received the node itself adds.
Inheritance here is not like that of other directives. The manual says directly: a line set at the node level goes to all sending addresses, and if a sending address already has its own, both are applied. This is the only directive of the block where values add up rather than override each other.
Headers are not the place for internal information. Everything written here will be seen by the recipient: node names, internal identifiers, system names.
The value is a file path. What to consider when filling it:
| What goes in | Worth it | Why |
|---|---|---|
| List-Unsubscribe | no, better set by the sender | the unsubscribe address depends on the recipient, while the file is one for all |
| a link to a policy or a contact | yes | it is the same for all messages |
| internal identifiers | no | the recipient will see them |
| something the platform already sets | no | you will get duplicates: values add up |
Checking for duplicates is mandatory: additive inheritance is the main source of repeated headers.
# a headers file shared by the node include-headers-from /etc/pmta/common-headers.txt # this sending address has its own — BOTH files will apply <virtual-mta shop-example-com> include-headers-from /etc/pmta/shop-headers.txt </virtual-mta>
what people get wrong and how it ends2 mistakes▶
§ 3.3.1.55.3
our experience
1 relation
include-headers-from<virtual-mta>The manual gives the definition at the node level; here is only what writing it inside a sending address changes. § 3.3.1.55.3include-headers-from<virtual-mta-pool>The manual gives the definition at the node level; here there is only what writing it at the pool level changes. § 3.3.1.55.3
grep -rn 'include-headers-from' /etc/pmta/
3 articles
◇A license for a fleet, not for a serverThe license is not bound to a server: it is installed on as many machines as the instance limit allows, and the nodes send volume statistics to the vendor every hour.◇How the node selects a source and combines its settingsA connection falls under all source blocks whose addresses cover it, and they act merged — the narrow one overrides the wide one; named blocks are attached only by direct reference.◇Address lists — named and unnamedA list of addresses, domains, patterns or hashes; a named one is attached by directives such as suppression, an unnamed one lives inside an inbound mail processor.