Rule Set 0
Rule set 0 checks for errors and selects delivery agents. First it disposes of the null address:
R<@> $#local $: <@>
Recall from "Handle null address" that the null address needs to be disposed of locally.
Next a whole series of error conditions need to be detected before they can lead to harm:
R$* : $* ; <@> $#error $@ 5.1.3 $: "list:; syntax illegal for recipient addresses" R<@ $+> $#error $@ 5.1.1 $: "user address required" R$* <$* : $* > $* $#error $@ 5.1.1 $: "colon illegal in host name part" R$* < @ . > $* $#error $@ 5.1.2 $: "invalid host name"
First, addresses are checked to see whether they are of the List:;
form (see "A rule to handle List:;") and, if so, are considered errors. Then the focused address is screened for missing user parts, colons in the host name, and unresolvable hostnames. Any such addresses are rejected as errors.
The rest of rule set 0 selects delivery agents. It can be simple or complex depending on your specific needs. In its simplest form, it detects local addresses and network mail:
R$+ < @ $=w . > $#local $: $1 regular local name R$* < @ $* > $* $#smtp $@ $2 $: $1 < @ $2 > $3 user@host.domain
Rule set 0 can also do mailertable lookups (see ) and forward to a hub:
R< $+ > $* $: < $(mailertable $1 $) > $2 lookup R$* < @ $* > $* $: $>95 < $S > $1 < @ $2 > $3 glue on smarthost name
Note that these rules would not be grouped right next to each other. We presented them like this just to give you the flavor of a rule set 0, without the details. Leap ahead to "Rule Set 0" if you hunger for more.