8.4 Show an Item
Beginning with V8.7 sendmail, two rule-testing
commands became available: the =S command displays
all the rules in a given rule set, and the =M
command displays all the delivery agents. Both display their items
after the configuration has been read. Thus, in the case of rules,
all the macros will have already been expanded.
Both commands are triggered by the leading =
character. If nothing follows the =, this usage
message is printed:
Usage: =Sruleset or =M
If any character other than S or
M follows the = character, the
following error is printed:
Unknown "=" command =bad character here
8.4.1 Show Rules in a Rule Set with =S
The
=S rule-testing command causes
sendmail to show all the rules of a rule set.
The form of this command looks like this:
=Sruleset
Optional whitespace can separate the ruleset
from the S. The ruleset can
be a number or a symbolic name (Section 19.1.2):
=S0 a number
=SMyrule a name
Note that, although sendmail macros can be used
in defining rule sets (Section 19.1.4), they cannot be
used with the =S command:
> =S$X
invalid ruleset name: "$X"
Undefined ruleset $X
>
One use for the =S command is to determine why a
rule set is not behaving as expected. Consider a rule set named
LocalizeSender that is intended to rewrite all
sending addresses so that the local host's name
makes the message appear as though it came from the mail hub machine.
Suppose that, when testing, you send an address through that rule but
it comes out unchanged:
> LocalizeSender bob@localhost
LocalizeSender input: bob @ localhost
LocalizeSender returns: bob @ localhost
>
Puzzled, you look at the actual rule with the =S
rule-testing command:
> =SLocalizeSender
R$* < @ $=w > $* $@ $1 < @ mailhub . our . domain > $3
>
Aha! The rule set named LocalizeSender
expects the host part of the address to be surrounded by angle
brackets! Knowing this, you run the address through the rule again,
this time using angle brackets, and it succeeds:
> LocalizeSender bob<@localhost >
LocalizeSender input: bob < @ localhost >
LocalizeSender returns: bob < @ mailhub . our . domain >
>
8.4.2 Show Delivery Agents with =M
The =M rule-testing
command causes sendmail to print its list of
delivery agents. This command takes no argument. Note that in the
following example the lines are wrapped to fit on the page:
> =M
mailer 0 (prog): P=/bin/sh S=EnvFromL/HdrFromL R=EnvToL/HdrToL M=0 U=0:0 F=9DFMeloq
su L=0 E=\n T=X-Unix/X-Unix/X-Unix r=100 A=sh -c $u
mailer 1 (*file*): P=[FILE] S=parse/parse R=parse/parse M=0 U=0:0 F=9DEFMPloqsu L=0
E=\n T=X-Unix/X-Unix/X-Unix r=100 A=FILE $u
mailer 2 (*include*): P=/dev/null S=parse/parse R=parse/parse M=0 U=0:0 F=su L=0 E=
\n T=<undefined>/<undefined>/<undefined> r=100 A=INCLUDE $u
mailer 3 (local): P=/usr/lib/mail.local S=EnvFromSMTP/HdrFromL R=EnvToL/HdrToL M=0
U=0:0 F=/59:@ADFMPSXflmnqswz| L=0 E=\r\n T=DNS/RFC822/SMTP r=100 A=mail.local -l
mailer 4 (smtp): P=[IPC] S=EnvFromSMTP/HdrFromSMTP R=EnvToSMTP/HdrFromSMTP M=0 U=0:
0 F=DFMXmu L=990 E=\r\n T=DNS/RFC822/SMTP r=100 A=TCP $h
mailer 5 (esmtp): P=[IPC] S=EnvFromSMTP/HdrFromSMTP R=EnvToSMTP/HdrFromSMTP M=0 U=0
:0 F=DFMXamu L=990 E=\r\n T=DNS/RFC822/SMTP r=100 A=TCP $h
mailer 6 (smtp8): P=[IPC] S=EnvFromSMTP/HdrFromSMTP R=EnvToSMTP/HdrFromSMTP M=0 U=0
:0 F=8DFMXmu L=990 E=\r\n T=DNS/RFC822/SMTP r=100 A=TCP $h
mailer 7 (dsmtp): P=[IPC] S=EnvFromSMTP/HdrFromSMTP R=EnvToSMTP/HdrFromSMTP M=0 U=0
:0 F=%DFMXamu L=990 E=\r\n T=DNS/RFC822/SMTP r=100 A=TCP $h
mailer 8 (relay): P=[IPC] S=EnvFromSMTP/HdrFromSMTP R=MasqSMTP/MasqRelay M=0 U=0:0
F=8DFMXamu L=2040 E=\r\n T=DNS/RFC822/SMTP r=100 A=TCP $h
This output is the same as that produced with the
-d0.15 debugging switch (-d0.15). The individual items in each line are
explained in Chapter 20.
|