<source>set by the Hub
The default is false. With true the engine adds Message-Id to messages that do not have one; an existing one is not rewritten — there is a separate line for that, replace-message-id-header.
The identifier is mandatory under the message standard, and receivers — Gmail above all — treat its absence as a sign of a sloppy mailing.
Uniqueness is ensured not by this line but by host-id. The manual describes its purpose exactly so: a server identifier that keeps two engine installations from producing the same Message-Id. Its default is 0, which means on a fleet of nodes without an explicit number, identifiers can collide.
The collision is not an engine error and does not show itself in any way until something is searched for by identifier.
The Hub sets the node number by the same construction: host-id gets the node’s number in the Hub, and it is unique. Two fleet servers will not produce the same identifier.
For warm-up itself the line does not fire: the sending library sets its own Message-Id, and the Hub stores it next to the send record. The line insures third-party submission platforms.
What to set. The answer is almost always the same:
| Value | When |
|---|---|
| true | always, if submission does not come only from you — together with an explicit host-id |
| false (default) | the submitting platform is known to set the identifier itself |
Even in the second case the line does no harm: it does not touch an existing header. It is cheaper to set it than to figure out what each platform does.
# the node number is the other half of the solution; without it identifiers can collide host-id 7 <source 0/0> add-message-id-header true</source>
what people get wrong and how it ends2 mistakes▶
§ 3.3.1.33
§ 3.3.7.4
2 relations
grep -n 'add-message-id-header\|^host-id' /etc/pmta/config /etc/pmta/virtualhost.txt
3 articles
◇How a message gets into the engineSix described submission methods: extended SMTP, four language bindings and a directory the node watches on disk.◇Who is allowed to submit mail and for whom to accept itOut of the box, the node accepts submission only from the machine itself; two different questions — “who can send through us” and “for whose addresses we accept mail” — are answered by different directives.◇Headers the sender uses to control deliverySix control headers let the submitting side choose a stream, tag a message with a job, set signing options and the key, the envelope identifier and the schedule; each is allowed separately and per source.