    REGEXP_TABLE(5)                                   REGEXP_TABLE(5)

    NAME
           regexp_table - format of Postfix regular expression tables

    SYNOPSIS
           regexp:/etc/postfix/filename

    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.

           The general form of a Postfix regular expression table is:

           blanks and comments
                  Blank  lines  are  ignored,  as are lines beginning
                  with `#'.

           leading whitespace
                  Lines that begin with whitespace continue the  pre-
                  vious line.

           pattern result
                  When  pattern matches a search string, use the cor-
                  responding result. A line that  starts  with  white
                  space continues the preceding line.

           pattern1!pattern2 result
                  Matches pattern1 but not pattern2.

           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).

           Each  pattern is applied to the entire string being looked
           up.  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

                                                                    1

    REGEXP_TABLE(5)                                   REGEXP_TABLE(5)

           table, until a pattern is found that  matches  the  search
           string.

           Substitution of sub-strings from the matched expression is
           possible using $1, $2, etc.. The macros in the replacement
           string  may  need  to  be  written as ${n} or $(n) if they
           aren't followed by whitespace.

    EXAMPLES
           # 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
           /^(.*)-outgoing@(.*)$/!/^owner-.*/      550 Use ${1}@${2} instead

    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

                                                                    2