181 lines
7.7 KiB
HTML
181 lines
7.7 KiB
HTML
<html> <head> </head> <body> <pre>
|
|
PCRE_TABLE(5) PCRE_TABLE(5)
|
|
|
|
<b>NAME</b>
|
|
pcre_table - format of Postfix PCRE tables
|
|
|
|
<b>SYNOPSIS</b>
|
|
<b>pcre:/etc/postfix/</b><i>filename</i>
|
|
|
|
<b>postmap</b> <b>-q</b> <b>"</b><i>string</i><b>"</b> <b>pcre:/etc/postfix/</b><i>filename</i>
|
|
|
|
<b>postmap</b> <b>-q</b> <b>-</b> <b>pcre:/etc/postfix/</b><i>filename</i> <<i>inputfile</i>
|
|
|
|
<b>DESCRIPTION</b>
|
|
The Postfix mail system uses optional tables for address
|
|
rewriting or mail routing. These tables are usually in <b>dbm</b>
|
|
or <b>db</b> 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 <b>postconf</b> <b>-m</b> command.
|
|
|
|
To test lookup tables, use the <b>postmap</b> command as
|
|
described in the SYNOPSIS above.
|
|
|
|
The general form of a PCRE table is:
|
|
|
|
<b>/</b><i>pattern</i><b>/</b><i>flags</i> <i>result</i>
|
|
When <i>pattern</i> matches a search string, use the cor-
|
|
responding <i>result</i> value.
|
|
|
|
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.
|
|
|
|
<b>if</b> <b>/</b><i>pattern</i><b>/</b><i>flags</i>
|
|
|
|
<b>endif</b> Examine the lines between <b>if</b>..<b>endif</b> only if <i>pattern</i>
|
|
matches. The <b>if</b>..<b>endif</b> can nest. Do not prepend
|
|
whitespace to patterns inside <b>if</b>..<b>endif</b>.
|
|
|
|
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, and newlines are
|
|
not treated as special characters. The behavior is con-
|
|
trolled by flags, which are toggled by appending one or
|
|
more of the following characters after the pattern:
|
|
|
|
<b>i</b> (default: on)
|
|
Toggles the case sensitivity flag. By default,
|
|
matching is case insensitive.
|
|
|
|
<b>m</b> (default: off)
|
|
Toggles the PCRE_MULTILINE flag. When this flag is
|
|
on, the <b>^</b> and <b>$</b> metacharacters match immediately
|
|
after and immediately before a newline character,
|
|
respectively, in addition to matching at the start
|
|
and end of the subject string.
|
|
|
|
<b>s</b> (default: on)
|
|
Toggles the PCRE_DOTALL flag. When this flag is on,
|
|
the <b>.</b> metacharacter matches the newline character.
|
|
With Postfix versions prior to 20020528, The flag
|
|
is off by default, which is inconvenient for multi-
|
|
line message header matching.
|
|
|
|
<b>x</b> (default: off)
|
|
Toggles the pcre extended flag. When this flag is
|
|
on, whitespace in the pattern (other than in a
|
|
character class) and characters between a <b>#</b> outside
|
|
a character class and the next newline character
|
|
are ignored. An escaping backslash can be used to
|
|
include a whitespace or <b>#</b> character as part of the
|
|
pattern.
|
|
|
|
<b>A</b> (default: off)
|
|
Toggles the PCRE_ANCHORED flag. When this flag is
|
|
on, the pattern is forced to be "anchored", that
|
|
is, it is constrained to match only at the start of
|
|
the string which is being searched (the "subject
|
|
string"). This effect can also be achieved by
|
|
appropriate constructs in the pattern itself.
|
|
|
|
<b>E</b> (default: off)
|
|
Toggles the PCRE_DOLLAR_ENDONLY flag. When this
|
|
flag is on, a <b>$</b> metacharacter in the pattern
|
|
matches only at the end of the subject string.
|
|
Without this flag, a dollar also matches immedi-
|
|
ately before the final character if it is a newline
|
|
character (but not before any other newline charac-
|
|
ters). This flag is ignored if PCRE_MULTILINE flag
|
|
is set.
|
|
|
|
<b>U</b> (default: off)
|
|
Toggles the ungreedy matching flag. When this flag
|
|
is on, the pattern matching engine inverts the
|
|
"greediness" of the quantifiers so that they are
|
|
not greedy by default, but become greedy if fol-
|
|
lowed by "?". This flag can also set by a (?U)
|
|
modifier within the pattern.
|
|
|
|
<b>X</b> (default: off)
|
|
Toggles the PCRE_EXTRA flag. When this flag is on,
|
|
any backslash in a pattern that is followed by a
|
|
letter that has no special meaning causes an error,
|
|
thus reserving these combinations for future expan-
|
|
sion.
|
|
|
|
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 <i>user@domain</i> mail addresses are not
|
|
broken up into their <i>user</i> and <i>domain</i> constituent parts,
|
|
nor is <i>user+foo</i> broken up into <i>user</i> and <i>foo</i>.
|
|
|
|
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.
|
|
|
|
<b>EXAMPLE</b> <b>SMTPD</b> <b>ACCESS</b> <b>MAP</b>
|
|
# 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.
|
|
|
|
<b>EXAMPLE</b> <b>HEADER</b> <b>FILTER</b> <b>MAP</b>
|
|
/^Subject: make money fast/ REJECT
|
|
/^To: friend@public\.com/ REJECT
|
|
|
|
<b>EXAMPLE</b> <b>BODY</b> <b>FILTER</b> <b>MAP</b>
|
|
# First skip over base 64 encoded text to save CPU cycles.
|
|
# Requires PCRE version 3.
|
|
~^[[:alnum:]+/]{60,}$~ OK
|
|
|
|
# Put your own body patterns here.
|
|
|
|
<b>SEE</b> <b>ALSO</b>
|
|
<a href="regexp_table.5.html">regexp_table(5)</a> format of POSIX regular expression tables
|
|
|
|
<b>AUTHOR(S)</b>
|
|
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
|
|
|
|
PCRE_TABLE(5)
|
|
</pre> </body> </html>
|