#++ # NAME # regexp_table 5 # SUMMARY # format of Postfix regular expression tables # SYNOPSIS # \fBregexp:/etc/postfix/\fIfilename\fR # # \fBpostmap -q "\fIstring\fB" regexp:/etc/postfix/\fIfilename\fR # # \fBpostmap -q - regexp:/etc/postfix/\fIfilename\fR <\fIinputfile\fR # DESCRIPTION # The Postfix mail system uses optional tables for address # rewriting or mail routing. These tables are usually in # \fBdbm\fR or \fBdb\fR format. Alternatively, lookup tables # can be specified in POSIX regular expression form. # # To find out what types of lookup tables your Postfix system # supports use the \fBpostconf -m\fR command. # # To test lookup tables, use the \fBpostmap\fR command as # described in the SYNOPSIS above. # # The general form of a Postfix regular expression table is: # .IP "\fB/\fIpattern\fB/\fIflags result\fR" # .IP "\fB!/\fIpattern\fB/\fIflags result\fR" # When \fIpattern\fR matches (does not match) a search string, # use the corresponding \fIresult\fR value. # .IP "blank lines and comments" # Empty lines and whitespace-only lines are ignored, as # are lines whose first non-whitespace character is a `#'. # .IP "multi-line text" # A logical line starts with non-whitespace text. A line that # starts with whitespace continues a logical line. # .IP "\fBif /\fIpattern\fB/\fIflags\fR" # .IP "\fBif !/\fIpattern\fB/\fIflags\fR" # .IP "\fBendif\fR" # Examine the lines between \fBif\fR..\fBendif\fR only if # \fIpattern\fR matches (does not match). The \fBif\fR..\fBendif\fR # can nest. # Do not prepend whitespace to patterns inside \fBif\fR..\fBendif\fR. # .PP # Each pattern is a regular expression enclosed by a pair of delimiters. # The regular expression syntax is described in \fIre_format\fR(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 # \fIuser@domain\fR mail addresses are not broken up into their # \fIuser\fR and \fIdomain\fR constituent parts, nor is \fIuser+foo\fR # broken up into \fIuser\fR and \fIfoo\fR. # # 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 #--