# # PCRE_TABLE(5) PCRE_TABLE(5) # # NAME # pcre_table - 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 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. # # The general form of a PCRE table is: # # pattern result # When pattern matches a search string, use the cor- # responding result. # # 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. # # 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, although follow- # ing 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 documenta- # tion and source for more info). # # 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 # # 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 # # 1 #