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.cf
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) Enter <ruleset> <address> >parse bob
parse 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
:
> .DXhome
Now, test those rules again:
> parse bob
parse input: bob
parse returns: $# local $@ home $: bob
This time the host part of the triple (the $@
part) has the
value home
as
intended.
The .D
command can also be used ...
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.