Requesting a report is a property of the recipient, not the message. One submission can ask for different things for different addresses: watch your own, stay silent about others.
There are four values, and three of them combine: a report on success, on failure, on delay — in any combination. The fourth stands apart: report nothing.
The default matches what people usually want: report failures, stay silent otherwise.
The request travels with the recipient and is carried out at the moment of delivery: the submitting side decides, the node executes.
The other half is quieter: the delay request. It arrives not once but on a schedule, for as long as the delay lasts — and how often is decided by the recipient setting notify-of-delay-every, not by the submitting side.
It makes no difference anyway: suppress-local-dsn true applies in the submission sources, that is, the node does not generate local reports at all. The Hub compiles outcomes from accounting records arriving via webhook — which is both more precise and cheaper than messages.
# the default is a report on failure only; the request is set by the submitting side RCPT TO:<user@example.com> NOTIFY=FAILURE,DELAY
what people get wrong and how it ends2 mistakes▶
§ 7.4.18
§ 3.3.10.17
0 relations
grep -n 'suppress-local-dsn\|notify-of-delay-every' /etc/pmta/config /etc/pmta/virtualhost.txt grep -i 'NOTIFY=' /var/log/pmta/pmta.log | tail -10
3 articles
◇Two inbound report processors and what to do with themBounces by message and complaints are parsed by two identically structured blocks; each has its own address list and its own pair of decisions about the message’s fate.◇A return address with the recipient written into itThe bounce arrives at a unique address, and there is no need to parse its content.◇What to return in a bounce reportWhat to enclose in a bounce report: the whole message or only its headers.