Rewrite Through a Rule Set: $>set
Rules are organized in sets that can be thought of as subroutines. Occasionally, a series of rules can be common to two or more rule sets. To make the configuration file more compact and somewhat clearer, such common series of rules can be made into separate subroutines.
The RHS $
>set
operator tells sendmail to
perform additional rewriting using a secondary set
of rules. The set
is the
rule set name or number of that secondary set. If
set
is the name or
number of a nonexistent rule set, the effect is the
same as if the subroutine rules were never called
(the workspace is unchanged).
If the set
is numeric and
is greater than the maximum number of allowable rule
sets, sendmail prints the
following error and skips that rule:
bad ruleset bad_number (maximum max)
If the set
is a name and
the rule set name is undeclared,
sendmail prints the following
error and skips that rule:
Unknown ruleset bad_name
Neither of these errors is caught when the configuration file is read. They are caught only when mail is sent because a rule set name can be a macro:
$> $&{SET}
The $&
prefix
prevents the macro named {SET}
from being expanded when the
configuration file is read. Therefore, the name or
number of the rule set cannot be known until mail is
sent.
The process of calling another set of rules proceeds in five stages:
- First
As usual, if the LHS matches the workspace, the RHS gets to rewrite the workspace.
- Second
The RHS ignores the
$
>set
part and rewrites the rest as usual. ...
Get sendmail, 4th Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.