Rule Sets and m4

When building a configuration file using the m4 technique (see "The m4 Preprocessor"), sendmail reserves certain rule-set numbers for its own use. Using the m4 technique, you can add rules to those rule sets, but you cannot replace those rule sets with your own. A few m4 keywords are available to make adding rules easier. They affect rule sets 0 through 3 directly and other rule sets indirectly (see Table 19.5 in "Rules and rule sets").

The configuration file created with the m4 technique uses quite a few rule sets beyond the base group of 0 through 5. Table 29.1 shows all the rule sets used by the bare bones m4 technique. They are listed numerically, which also just happens to group them by function. The table also includes the name of the file containing the rules for each rule set.

Rule Sets Used by the m4 Technique
Set File Description
S0 /proto.m4 Select a delivery agent
S1 /cfhead.m4 Process all sender addresses
S2 /cfhead.m4 Process all recipient addresses
S3 /proto.m4 Preprocess all addresses
S4 /proto.m4 Postprocess all addresses
S5 /proto.m4 Post alias select a delivery agent
S10 mailer/local.m4 Handle S= for local delivery agent
S11 mailer/smtp.m4 Handle S= for smtp delivery agents
S12 mailer/uucp.m4 Handle S= for uucp delivery agents
S15 mailer/mail11.m4 Handle S= for mail11 delivery agent
S20 mailer/local.m4 Handle envelope R= for local delivery agent
S21 mailer/smtp.m4 Handle envelope R= for smtp delivery agents
S22 mailer/uucp.m4 Handle envelope R= for uucp delivery agents
S25 mailer/mail11.m4 Handle envelope R= for mail11 delivery agent
S30 mailer/local.m4 Handle <@> and masquerading for local delivery agent
S31 mailer/smtp.m4 Handle ALL_MASQUERADE envelope R= for smtp
S40 mailer/local.m4 Handle header R= for local delivery agent
S42 mailer/uucp.m4 Handle header R= for uucp delivery agents
S50 mailer/local.m4 Rules to add local domain (if ALWAYS_ADD_DOMAIN)
S51 mailer/smtp.m4 Convert pseudo-domains to real domains
S52 mailer/uucp.m4 Handle envelope S= for uucp-dom delivery agent
S61 mailer/smtp.m4 Handle ALL_MASQUERADE envelope R= for relay agent
S71 mailer/smtp.m4 Handle envelope header R= for relay agent
S72 mailer/uucp.m4 Handle envelope S= for uucp-uudom delivery agent
S90 /proto.m4 Try domain part of mailertable entry
S93 /proto.m4 Convert header names to masqueraded form
S94 /proto.m4 Convert envelope names to masqueraded form
S95 /proto.m4 Canonify mailer:[user@]host syntax to triple
S96 /proto.m4 Handle common rule set 3 needs
S98 /proto.m4 Handle local part of rule set 0