#++ # NAME # pcre_table 5 # SUMMARY # format of Postfix PCRE tables # SYNOPSIS # pcre:/etc/postfix/filename # 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 Perl Compatible Regular Expression form. # # To find out what types of lookup tables your Postfix system # supports use the \fBpostconf -m\fR command. # # The general form of a PCRE table is: # .IP "blanks and comments" # Blank lines are ignored, as are lines beginning with `#'. # .IP "leading whitespace" # Lines that begin with whitespace continue the previous line. # .IP "\fIpattern result\fR" # When \fIpattern\fR matches a search string, use the corresponding # \fIresult\fR. A line that starts with white space continues the # preceding line. # .PP # Each pattern is a perl-like regular expression. 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 supported, but the only other useful one is `U', which makes # matching ungreedy (see PCRE documentation and source for more # info). # # 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 # \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 sub-strings from the matched expression is # possible using the conventional perl syntax ($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 # # Protect your outgoing majordomo exploders # /^(?!owner-)(.*)-outgoing@(my\.domain)$/ 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@connect\.com\.au$/ # \ 550 This user is a funny one. You really don't want to send mail to # \ them as it only makes their head spin. # 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 #--