$~
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 on page 854, and the $˜
operator in particular is described
in full in Matching Any Token Not in a Class: $~ on page 864. Note that the $˜
operator can be used
only on the LHS of rules, and can be referenced by
an RHS $
digit
operator.
Get sendmail, 4th Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.