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

                                                                    1

    REGEXP_TABLE(5)                                   REGEXP_TABLE(5)

           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.

    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