# PCRE_TABLE(5)                                       PCRE_TABLE(5)
# 
# NAME
#        pcre_table - format of Postfix PCRE tables
# 
# SYNOPSIS
#        pcre:/etc/postfix/filename
# 
#        postmap -q "string" pcre:/etc/postfix/filename
# 
#        postmap -q - pcre:/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 Perl Compatible 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 PCRE table is:
# 
#        /pattern/flags result
#               When pattern matches a search string, use the  cor-
#               responding 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
# 
#        endif  Match   the  search  string  against  the  patterns
#               between if and endif, if and  only  if  the  search
#               string matches pattern. The if..endif can nest.
# 
#               Note:  do not prepend whitespace to patterns inside
#               if..endif.
# 
#        Each  pattern  is  a  perl-like  regular  expression.  The
#        expression  delimiter can be any character, except whites-
#        pace or characters that have special  meaning  (tradition-
#        ally  the  forward slash is used).  The regular expression
#        can contain whitespace.
# 
#        By default, matching is case-insensitive, and newlines are
#        not  treated  as  special characters. The behavior is con-
#        trolled by flags, which are toggled by  appending  one  or
#        more of the following characters after the pattern:
# 
#        i (default: on)
#               Toggles  the  case  sensitivity  flag.  By default,
#               matching is case insensitive.
# 
#        m (default: off)
#               Toggles the PCRE_MULTILINE flag. When this flag  is
#               on,  the  ^  and $ metacharacters match immediately
#               after and immediately before a  newline  character,
#               respectively,  in addition to matching at the start
#               and end of the subject string.
# 
#        s (default: on)
#               Toggles the PCRE_DOTALL flag. When this flag is on,
#               the .  metacharacter matches the newline character.
#               With Postfix versions prior to 20020528,  The  flag
#               is off by default, which is inconvenient for multi-
#               line message header matching.
# 
#        x (default: off)
#               Toggles the pcre extended flag. When this  flag  is
#               on,  whitespace  in  the  pattern  (other than in a
#               character class) and characters between a # outside
#               a  character  class  and the next newline character
#               are ignored. An escaping backslash can be  used  to
#               include  a whitespace or # character as part of the
#               pattern.
# 
#        A (default: off)
#               Toggles the PCRE_ANCHORED flag.  When this flag  is
#               on,  the  pattern  is forced to be "anchored", that
#               is, it is constrained to match only at the start of
#               the  string  which  is being searched (the "subject
#               string"). This  effect  can  also  be  achieved  by
#               appropriate constructs in the pattern itself.
# 
#        E (default: off)
#               Toggles  the  PCRE_DOLLAR_ENDONLY  flag.  When this
#               flag is  on,  a  $  metacharacter  in  the  pattern
#               matches  only  at  the  end  of the subject string.
#               Without this flag, a dollar  also  matches  immedi-
#               ately before the final character if it is a newline
#               character (but not before any other newline charac-
#               ters).  This flag is ignored if PCRE_MULTILINE flag
#               is set.
# 
#        U (default: off)
#               Toggles the ungreedy matching flag.  When this flag
#               is  on,  the  pattern  matching  engine inverts the
#               "greediness" of the quantifiers so  that  they  are
#               not  greedy  by  default, but become greedy if fol-
#               lowed by "?".  This flag can also  set  by  a  (?U)
#               modifier within the pattern.
# 
#        X (default: off)
#               Toggles the PCRE_EXTRA flag.  When this flag is on,
#               any backslash in a pattern that is  followed  by  a
#               letter that has no special meaning causes an error,
#               thus reserving these combinations for future expan-
#               sion.
# 
#        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 the  conventional
#        perl  syntax  ($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
#        # Protect your outgoing majordomo exploders
#        /^(?!owner-)(.*)-outgoing@(.*)/ 550 Use ${1}@${2} instead
# 
#        # Bounce friend@whatever, except when whatever is our domain (you would
#        # be better just bouncing all friend@ mail - this is just an example).
#        /^friend@(?!my\.domain)/        550 Stick this in your pipe $0
# 
#        # A multi-line entry. The text is sent as one line.
#        #
#        /^noddy@my\.domain$/
#         550 This user is a funny one. You really don't want to send mail to
#         them as it only makes their head spin.
# 
# EXAMPLE HEADER FILTER MAP
#        /^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.
#        # Requires PCRE version 3.
#        ~^[[:alnum:]+/]{60,}$~          OK
# 
#        # Put your own body patterns here.
# 
# SEE ALSO
#        regexp_table(5) format of POSIX regular expression tables
# 
# AUTHOR(S)
#        The PCRE table lookup code was originally written 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
# 
#                                                     PCRE_TABLE(5)
