# 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. Alternatively, lookup tables can  be  speci-
#        fied in POSIX regular expression form.
# 
#        To  find out what types of lookup tables your Postfix sys-
#        tem supports use the postconf -m command.
# 
#        To  test  lookup  tables,  use  the  postmap  command   as
#        described in the SYNOPSIS 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  logi-
#               cal 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
#        re_format(7).  The expression delimiter can be any charac-
#        ter, 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 follow-
#        ing  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)
