<source>
The default is true, that is, reject at submission. The sender gets a refusal right away, the message does not reach the node, and this is honest behavior: the stream name is wrong, and the engine does not try to guess.
The second role of this line is more important than the first. The node-level invalid-virtual-mta-fallback directive can send such messages through a fallback stream instead of refusing them. But it does not work while the default stays here: the refusal fires first. Two lines in two different scopes describe one behavior, and both have to be configured.
What to set. The directive makes sense only paired with invalid-virtual-mta-fallback, and there are two meaningful combinations:
| Here | Fallback stream | What happens |
|---|---|---|
| true (default) | not set | refusal at submission — the sender learns right away |
| false | set | the message leaves through the fallback stream |
| false | not set | the behavior is not described — do not configure it this way |
| true | set | the fallback stream has no effect, the refusal remains |
The first suits your own submission: the refusal is visible and gets fixed. The second suits someone else’s, where the refusal gets lost in other people’s logs and the message must not be lost.
# both lines are needed together: without this one the fallback stream has no effect invalid-virtual-mta-fallback mta-hub-pool <source 10.0.0.0/24> process-x-virtual-mta yes reject-invalid-virtual-mta false</source>
what people get wrong and how it ends3 mistakes▶
§ 3.3.1.55.2
§ 3.3.1.55.2
our experience
2 relations
grep -n "invalid-virtual-mta" /etc/pmta/config
3 articles
◇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.◇Selecting a sending address by message contentRegular expressions are matched against a header, the return address or the recipient and select a sending address or assign a priority; lists can call each other.◇How a message gets into the engineSix described submission methods: extended SMTP, four language bindings and a directory the node watches on disk.