The introduction lists two delivery methods: ordinary extended SMTP to the recipient’s server and handing the message to a local program.
The list is incomplete — and this is visible from the manual itself. The type line in the receiver block adds delivery to a file, delivery over HTTP and discarding; the “local program” from the introduction is pipe delivery, pipe. So the introduction gives an outline that the configuration chapter extends rather than replaces.
The practical point of the list is that SMTP is not the only one. A receiver configured for delivery to a file or for discarding behaves completely differently: no messages go to it at all, and in accounting they look different.
Discarding is worth knowing separately. It is a way to configure a receiver so that mail to it disappears silently — useful for tests and dangerous in production.
Other methods are not used here. The closest mechanism in meaning is discarding messages to role addresses (postmaster@, abuse@, dmarc@), but it is done by acceptance and an address list, not by changing the delivery method.
Discarding would come in handy on a test bench: a receiver to which messages go nowhere lets you test sending without sending anything. But on a production node such a line is a source of silent mail loss.
Five methods, of which the introduction names two:
| Method | Where described | When it occurs |
|---|---|---|
| SMTP to the receiver | introduction | default, ordinary delivery |
| to a local program, via pipe | introduction | processing with your own code |
| to a file | receiver block | archive, testing |
| over HTTP | receiver block | delivery to another service |
| discarding | receiver block | testing; dangerous in production |
The method is set per receiver, not globally. So a non-standard one can sit on a single domain and go unnoticed.
Mark discarding with a comment. A line that makes mail disappear must explain itself to whoever reads the configuration.
# a test receiver to which no mail goes at all <domain test.example.com> type discard # messages disappear silently — for the test bench only</domain>
what people get wrong and how it ends3 mistakes▶
§ 3.3.10
§ 3.3.10
§ 1.3
1 relation
Accept, route, deliverA message’s path inside the node ends with one of these methods. § 1.3
Queue depthThe depth breakdown follows the delivery methods: when messages are discarded, the queue does not grow at all. § 5.3Hand a message to a webhook instead of a receiverOne of the ways a queue hands over a message, along with regular sending, a file and a program. § 8.5Handing a message to a program on the same nodeOne of the ways a queue hands over a message, alongside ordinary sending, a file and a webhook. § 11.21What to do with an accepted messageA related mechanism: they work together. § 13.1
grep -n -B2 'type ' /etc/pmta/config | grep -A2 '<domain' pmta show settings test.example.com/mta-news-1 | grep '^type'