8.3 Dump a sendmail Macro or Class
Beginning with V8.7, rule-testing commands allow you to print the
value of a defined sendmail macro and the
members of a class. With either command, you can use single-character
or multicharacter macro names. Both commands begin with a
$ character. An error is caused if nothing follows
that $:
Name required for macro/class
If an = character follows,
sendmail will display the requested class.
Otherwise, the value of the sendmail macro is
displayed:
$X display the value of the X macro
$=X list the members of the class X
8.3.1 Dump a Defined Macro with $
The
$ rule-testing command causes
sendmail to print the value of a defined
sendmail macro. The form for this command looks
like this:
$X show value of the single-character macro name X
${YYY} show value of the multicharacter macro name YYY
Only one sendmail macro can be listed per line.
If more than one is listed, all but the first is ignored:
$X $Y
ignored
One use for this command might be in solving the problem of duplicate
domains. For example, suppose you just installed a new configuration
file and discovered that your host was no longer known as
here.our.domain but instead wrongly had an extra
domain attached, like this:
here.our.domain.our.domain. To check the value
of $j ($j), which should
contain the canonical name of your host, you could run
sendmail in rule-testing mode:
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter <ruleset> <address>
> $j
$w.our.domain
>
This looks right because $w ($w) is supposed to contain our short hostname.
But just to check, you could also print the value of
$w:
> $w
here.our.domain
Aha! Somehow, $w got the full canonical name. A
quick scan of your .mc file (Section 4.2) turns up this error:
LOCAL_CONFIG
Dwhere.our.domain # $w is supposed to be full -- joachim
Apparently, your assistant, Joachim, mistakenly thought the new
sendmail was wrong. You can take care of the
configuration problem by deleting the offending line and creating a
new configuration file. To solve the problem with Joachim, consider
buying him a copy of this book.
8.3.2 Dump a Class Macro with $=
The
$= rule-testing command tells
sendmail to print all the members for a class.
The class name must immediately follow the = with
no intervening space, or the name is ignored. Both single-character
and multicharacter names can be used:
$= X the X is ignored
$=X list the members of the class X
$={YYY} list the members of the multicharacter class YYY
The list of members (if any) is printed one per line:
> $=w
here.our.domain
here
[123.45.67.89]
fax
fax.our.domain
>
To illustrate one use for this command, imagine that you just made
the local host the fax server for your site. Of course, you were
careful to modify the configuration file and add
fax and fax.our.domain to
the $=w class in it. But incoming mail to
fax.our.domain is still failing. You run
sendmail in rule-testing mode, as above, to
verify that the correct entries are in $=w:
here.our.domain
here
[123.45.67.89]
fax correct
fax.our.domain correct
Because they are correct, it could be that you made the mistake of
changing the configuration file and failing to restart the daemon
(Section 1.7.1.2). The following command line fixes the
problem (SIGHUP):
# kill -HUP `head -1 /etc/mail/sendmail.pid`
|