# REGEXP_TABLE(5)                                                REGEXP_TABLE(5)
# 
# NAME
#        regexp_table - format of Postfix regular expression tables
# 
# SYNOPSIS
#        regexp:/etc/postfix/filename
# 
#        postmap -q "string" regexp:/etc/postfix/filename
# 
#        postmap -q - regexp:/etc/postfix/filename <inputfile
# 
# DESCRIPTION
#        The  Postfix  mail system uses optional tables for address rewriting or
#        mail routing. These tables are usually in dbm or  db  format.  Alterna-
#        tively,  lookup  tables  can  be  specified in POSIX regular expression
#        form.
# 
#        To find out what types of lookup tables your  Postfix  system  supports
#        use the postconf -m command.
# 
#        To test lookup tables, use the postmap command as described in the SYN-
#        OPSIS above.
# 
#        The general form of a Postfix regular expression table is:
# 
#        /pattern/flags result
# 
#        !/pattern/flags result
#               When pattern matches (does not match) a search string,  use  the
#               corresponding result value.
# 
#        blank lines and comments
#               Empty  lines and whitespace-only lines are ignored, as are lines
#               whose first non-whitespace character is a `#'.
# 
#        multi-line text
#               A logical line starts with  non-whitespace  text.  A  line  that
#               starts with whitespace continues a logical line.
# 
#        if /pattern/flags
# 
#        if !/pattern/flags
# 
#        endif  Match  the  search  string  against  the patterns between if and
#               endif, if and only if the search string matches (does not match)
#               pattern. The if..endif can nest.
# 
#               Note: do not prepend whitespace to patterns inside if..endif.
# 
#        Each  pattern is a regular expression enclosed by a pair of delimiters.
#        The regular expression syntax is described in regex(7).  The expression
#        delimiter  can  be  any character, except whitespace or characters that
#        have special meaning (traditionally the forward  slash  is  used).  The
#        regular expression can contain whitespace.
# 
#        By default, matching is case-insensitive, although following the second
#        slash with an `i' flag will reverse this. Other flags are `x'  (disable
#        extended  expression syntax), and `m' (enable multi-line mode, that is,
#        treat newline characters as special).
# 
#        Each pattern is applied to the entire lookup key string.  Depending  on
#        the  application,  that  string is an entire client hostname, an entire
#        client IP address, or an entire mail address.  Thus, no  parent  domain
#        or  parent  network  search is done, and user@domain mail addresses are
#        not broken up into their user and  domain  constituent  parts,  nor  is
#        user+foo broken up into user and foo.
# 
#        Patterns  are  applied  in the order as specified in the table, until a
#        pattern is found that matches the search string.
# 
#        Substitution of substrings from the matched expression into the  result
#        string  is possible using $1, $2, etc.. The macros in the result string
#        may need to be written as ${n} or  $(n)  if  they  aren't  followed  by
#        whitespace.
# 
# EXAMPLE SMTPD ACCESS MAP
#        # Disallow sender-specified routing. This is a must if you relay mail
#        # for other domains.
#        /[%!@].*[%!@]/       550 Sender-specified routing rejected
# 
#        # Postmaster is OK, that way they can talk to us about how to fix
#        # their problem.
#        /^postmaster@/       OK
# 
#        # Protect your outgoing majordomo exploders
#        if !/^owner-/
#        /^(.*)-outgoing@(.*)$/   550 Use ${1}@${2} instead
#        endif
# 
# EXAMPLE HEADER FILTER MAP
#        # These were once common in junk mail.
#        /^Subject: make money fast/     REJECT
#        /^To: friend@public\.com/       REJECT
# 
# EXAMPLE BODY FILTER MAP
#        # First skip over base 64 encoded text to save CPU cycles.
#        ~^[[:alnum:]+/]{60,}$~          OK
# 
#        # Put your own body patterns here.
# 
# SEE ALSO
#        pcre_table(5) format of PCRE tables
# 
# AUTHOR(S)
#        The regexp table lookup code was originally written by:
#        LaMont Jones
#        lamont@hp.com
# 
#        That code was based on the PCRE dictionary contributed by:
#        Andrew McNamara
#        andrewm@connect.com.au
#        connect.com.au Pty. Ltd.
#        Level 3, 213 Miller St
#        North Sydney, NSW, Australia
# 
#        Adopted and adapted by:
#        Wietse Venema
#        IBM T.J. Watson Research
#        P.O. Box 704
#        Yorktown Heights, NY 10598, USA
# 
#                                                                REGEXP_TABLE(5)
