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 $: <@ .> 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. |