Rules are like little if-then clauses[23] that exist inside rule sets, which test a given pattern against an address and change the address if the two match. The process of converting one form of an address into another is called rewriting. Most rewriting requires a sequence of many rules because an individual rule is relatively limited in what it can do.
There is only one change in rules in V8.13:
Balancing of special characters in rules is no longer checked when the configuration file is read (Section 18.1.1 [V8.13]).
Prior to V8.13, special characters in
rules were required to balance. If they
didn’t, sendmail
would issue a
warning and try to make them balance.
SCheck_Subject R ----> test <---- $#discard $: discard
When a rule such as the above was read by
sendmail
(while parsing its
configuration file), sendmail
would issue the
following warning:
/path/cffile
: linenum
: ----> test <----... Unbalanced '>'/path/cffile
: linenum
: ----> test <----... Unbalanced '<'
Thereafter, sendmail
would rewrite this rule
internally to become:
R <----> test ---- $#discard $: discard
Clearly, such behavior made it difficult to write rules for parsing header values and for matching unusual sorts of addresses. Beginning with V8.13 sendmail, rules are no longer automatically balanced. Instead, unbalanced expressions in rules are accepted as is, no matter what.
The characters that were special prior to V8.13 but no longer need to balance are shown in Table 18-1.
Note that if you have composed rules that anticipated and corrected this automatic balancing, you will need to rewrite those rules beginning with V8.13.
See the description of balancing (Section 25.1.1
[V8.13]), which
discusses this same change as it applies to the
$>+
header operator.
[23] Actually, they can either be if-then or while-do clauses, but we gloss over that complexity for the moment.
3.14.6.194