<source>set by the Hub
One line with a reference. The rule list is declared separately, with a <pattern-list> block, and here it is named — from that moment messages from this source are checked against its rules.
Order in the file. The manual requires declaring the list above the source (§ 3.3.7.42). Engine 6.0 also accepts a forward reference — verified on a node on Sep 15, 2026: the shared login’s source refers to a list declared below in the same file, and messages went through streams by its rules. The manual’s order is worth keeping: on another engine version a forward reference may not resolve. The second restriction is strict: a source has exactly one list — everything this source needs has to be expressed inside it.
What the rules do. They match the return address, the recipient or a header against regular expressions and assign a stream or a recipient priority. The first match wins, so a list is not a set of rules but an ordered queue. The rules see the return address as originally submitted: if the source also rewrites it with rewrite-list, the address before rewriting is matched.
What to set. The value is the name of a declared list, there is nothing to choose here. The choice comes earlier, when the lists are designed:
| Design | When | Drawback |
|---|---|---|
| one list per source | the usual case | everything in one place, the order has to be maintained by hand |
| a list calling another (call-to:) | the rules naturally fall into groups | two levels harder to read |
Remember the order in the file: lists above, sources below.
# the list is declared before the source that references it <pattern-list mta-hub-senders> mail-from /@shop\.example\.com$/ virtual-mta=shop-example-com </pattern-list> <source {pmta-auth}> pattern-list mta-hub-senders default-virtual-mta mta-hub-pool </source>
what people get wrong and how it ends2 mistakes▶
§ 3.3.7.42
§ 9.4.2
1 relation
Selecting a sending address by message contentThe line with which the submission block references the list: without it the rules do not apply. § 3.3.7.42header<pattern-list>The rule works only if the list is plugged into a source, and the list is declared in the file above it. § 3.3.7.42mail-from<pattern-list>The rule works only if the list is plugged into a source. § 3.3.7.42rcpt-to<pattern-list>The rule works only if the list is plugged into a source, and the list is declared in the file above it. § 3.3.7.42
grep -n "pattern-list" /etc/pmta/config /etc/pmta/virtualhost.txt pmtaacctfind --output csv[orig,vmta] /var/log/pmta/acct-*.csv | head -20
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.