Previous Section Next Section

$~

Match any single token not in a specified class LHS operator

When trying to match tokens in the workspace to members of a class, it is possible to invert the logic of a match. The $~ operator instructs sendmail to consider any single token that is not in the class to be a match. For example, consider the following rule:

R $+ < @ $* . $~{PseudoDomains} >      $# relay $@ mailhub $: $1 <@ $2.$3>

Here, the workspace is expected to hold a focused address (such as gw@<faxhost.fax>). The $~{PseudoDomains} expression causes sendmail to look up the top-level domain (suffix) part of the address (the fax) in the class {PseudoDomains}. If that suffix is absent from that class, a match is made and the workspace is rewritten by the RHS to relay the mail to the mailhub machine.

If the suffix (fax) is found in the {PseudoDomains} class, the LHS does not match, and subsequent rules will handle the address, perhaps to forward the message to a special fax-handling host.

Class macros in general are described in Chapter 22, and the $~ operator in particular is described in full in Section 22.2.2. Note that the $~ operator can be used only on the LHS of rules, and can be referenced by an RHS $digit operator.

    Previous Section Next Section