Define a Macro with .D
The .D rule-testing
command is used to define a
sendmail macro. One use for
this command might be to modify a rule that depends
on the $&
prefix (Use Value As Is with $& on page 793). For example, consider this small
configuration file that contains a rule in parse rule set 0 that is
intended to deliver a local user’s address via the
local delivery
agent:
V10 Sparse=0 R$+ $#local $@ $&X $: $1
If $X has a value,
this rule returns that value as the host (the
$@) part of a
parse rule set
0 triple (The parse Rule Set 0 on
page 696). If $X
lacks a value, the host part is empty. This
technique is useful because the $@ part with the
local delivery
agent is used to implement plussed users (Plussed Detail Addressing on page
476).
This scheme can be tested in rule-testing mode by
first specifying a local user with $X undefined:
%/usr/sbin/sendmail -bt -Ctest.cfADDRESS TEST MODE (ruleset 3 NOT automatically invoked) Enter <ruleset> <address> >parse bobparse input: bob parse returns: $# local $@ $: bob
This form of rule testing and the output produced are
described in detail in Process-Specified Addresses on page
314. Here, it is important only to note that the
host part of the triple (the $@ part) is
empty.
Now, use the .D
command to give $X the value home:
> .DXhomeNow, test those rules again:
> parse bob
parse input: bob
parse returns: $# local $@ home $: bobThis time the host part of the triple (the $@ part) has the
value home as
intended.
The .D command can also be used ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access