The output that is produced by sendmail can become huge, especially when many addresses need testing. To simplify the process (and to help bulletproof your configuration file), consider using a shell script such as the following:
#!/bin/sh /usr/sbin/sendmail -bt < $1 |\ egrep "canonify.*input:|canonify.*returns|^>"
Here, the output is piped through egrep(1), which selects only the lines of interest. If this script were to be called testcf.sh, it could be invoked with the following command line:
% testcf.sh address.list
Here, the address.list is a file consisting of pairs of rule set names and addresses such as the following:
canonify,parse nobody@ourhost
canonify,parse nobody@ourhost.domain
canonify,parse nobody@distant.domain
... and so on
The output that is produced shows the input to the canonify rule set 3 and the result of each pass through that rule set:
> canonify input: nobody @ ourhost canonify returns: nobody < @ ourhost . domain . > > canonify input: nobody @ ourhost . domain canonify returns: nobody < @ ourhost . domain . > > canonify input: nobody @ distant . domain canonify returns: nobody < @ distant . domain . >
Note that the address.list file should contain every conceivable kind of address. The output from the shell script should be saved. At a later time, after the configuration file is changed, diff(1) can be used to see if the saved output differs from the new output (to see whether anything unexpected changed as a result of your modifications).
Also note that directly calling the canonify and parse rule sets 0 produces less useful information than does the /parse rule-testing command (Section 8.5.5). If you use that command, a diff(1) against prior output can provide more interesting and complete information.
![]() | ![]() |
|