2004-04-27 08:12:43 +04:00
|
|
|
<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN"
|
|
|
|
"http://www.w3.org/TR/html4/loose.dtd">
|
|
|
|
<html> <head>
|
|
|
|
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
|
|
|
|
<title> Postfix manual - pcre_table(5) </title>
|
|
|
|
</head> <body> <pre>
|
2001-03-13 20:45:02 +03:00
|
|
|
PCRE_TABLE(5) PCRE_TABLE(5)
|
|
|
|
|
|
|
|
<b>NAME</b>
|
|
|
|
pcre_table - format of Postfix PCRE tables
|
|
|
|
|
|
|
|
<b>SYNOPSIS</b>
|
2004-04-27 08:12:43 +04:00
|
|
|
<b>postmap -fq "</b><i>string</i><b>" <a href="pcre_table.5.html">pcre</a>:/etc/postfix/</b><i>filename</i>
|
2002-12-24 22:39:42 +03:00
|
|
|
|
2004-04-27 08:12:43 +04:00
|
|
|
<b>postmap -fq - <a href="pcre_table.5.html">pcre</a>:/etc/postfix/</b><i>filename</i> <<i>inputfile</i>
|
2001-03-13 20:45:02 +03:00
|
|
|
|
|
|
|
<b>DESCRIPTION</b>
|
|
|
|
The Postfix mail system uses optional tables for address
|
|
|
|
rewriting or mail routing. These tables are usually in <b>dbm</b>
|
2004-04-27 08:12:43 +04:00
|
|
|
or <b>db</b> format.
|
|
|
|
|
|
|
|
Alternatively, lookup tables can be specified in Perl Com-
|
|
|
|
patible Regular Expression form. In this case, each input
|
|
|
|
is compared against a list of patterns, and when a match
|
|
|
|
is found the corresponding result is returned.
|
2001-03-13 20:45:02 +03:00
|
|
|
|
|
|
|
To find out what types of lookup tables your Postfix sys-
|
2004-04-27 08:12:43 +04:00
|
|
|
tem supports use the <b>postconf -m</b> command.
|
2001-03-13 20:45:02 +03:00
|
|
|
|
2004-04-27 08:12:43 +04:00
|
|
|
To test lookup tables, use the <b>postmap -fq</b> command as
|
2002-12-24 22:39:42 +03:00
|
|
|
described in the SYNOPSIS above.
|
|
|
|
|
2004-04-27 08:12:43 +04:00
|
|
|
<b>TABLE FORMAT</b>
|
2001-03-13 20:45:02 +03:00
|
|
|
The general form of a PCRE table is:
|
|
|
|
|
2004-04-27 08:12:43 +04:00
|
|
|
<b>/</b><i>pattern</i><b>/</b><i>flags result</i>
|
|
|
|
When <i>pattern</i> matches the input string, use the cor-
|
2002-12-24 22:39:42 +03:00
|
|
|
responding <i>result</i> value.
|
2002-02-03 02:10:24 +03:00
|
|
|
|
2004-04-27 08:12:43 +04:00
|
|
|
<b>!/</b><i>pattern</i><b>/</b><i>flags result</i>
|
|
|
|
When <i>pattern</i> does <b>not</b> match the input string, use
|
|
|
|
the corresponding <i>result</i> value.
|
|
|
|
|
|
|
|
<b>if /</b><i>pattern</i><b>/</b><i>flags</i>
|
|
|
|
|
|
|
|
<b>endif</b> Match the input string against the patterns between
|
|
|
|
<b>if</b> and <b>endif</b>, if and only if the input string also
|
|
|
|
matches <i>pattern</i>. The <b>if</b>..<b>endif</b> can nest.
|
|
|
|
|
|
|
|
Note: do not prepend whitespace to patterns inside
|
|
|
|
<b>if</b>..<b>endif</b>.
|
|
|
|
|
|
|
|
<b>if !/</b><i>pattern</i><b>/</b><i>flags</i>
|
|
|
|
|
|
|
|
<b>endif</b> Match the input string against the patterns between
|
|
|
|
<b>if</b> and <b>endif</b>, if and only if the input string does
|
|
|
|
<b>not</b> match <i>pattern</i>. The <b>if</b>..<b>endif</b> can nest.
|
|
|
|
|
2002-02-03 02:10:24 +03:00
|
|
|
blank lines and comments
|
2002-12-24 22:39:42 +03:00
|
|
|
Empty lines and whitespace-only lines are ignored,
|
|
|
|
as are lines whose first non-whitespace character
|
2002-02-03 02:10:24 +03:00
|
|
|
is a `#'.
|
|
|
|
|
|
|
|
multi-line text
|
2002-12-24 22:39:42 +03:00
|
|
|
A logical line starts with non-whitespace text. A
|
|
|
|
line that starts with whitespace continues a logi-
|
2002-02-03 02:10:24 +03:00
|
|
|
cal line.
|
2001-03-13 20:45:02 +03:00
|
|
|
|
|
|
|
Each pattern is a perl-like regular expression. The
|
2004-04-27 08:12:43 +04:00
|
|
|
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
|
2001-03-13 20:45:02 +03:00
|
|
|
can contain whitespace.
|
|
|
|
|
2002-12-24 22:39:42 +03:00
|
|
|
By default, matching is case-insensitive, and newlines are
|
2004-04-27 08:12:43 +04:00
|
|
|
not treated as special characters. The behavior is con-
|
|
|
|
trolled by flags, which are toggled by appending one or
|
2002-12-24 22:39:42 +03:00
|
|
|
more of the following characters after the pattern:
|
|
|
|
|
|
|
|
<b>i</b> (default: on)
|
2004-04-27 08:12:43 +04:00
|
|
|
Toggles the case sensitivity flag. By default,
|
2002-12-24 22:39:42 +03:00
|
|
|
matching is case insensitive.
|
|
|
|
|
|
|
|
<b>m</b> (default: off)
|
2004-04-27 08:12:43 +04:00
|
|
|
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
|
2002-12-24 22:39:42 +03:00
|
|
|
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.
|
2004-04-27 08:12:43 +04:00
|
|
|
With Postfix versions prior to 20020528, The flag
|
2002-12-24 22:39:42 +03:00
|
|
|
is off by default, which is inconvenient for multi-
|
|
|
|
line message header matching.
|
|
|
|
|
|
|
|
<b>x</b> (default: off)
|
2004-04-27 08:12:43 +04:00
|
|
|
Toggles the pcre extended flag. When this flag is
|
|
|
|
on, whitespace in the pattern (other than in a
|
2002-12-24 22:39:42 +03:00
|
|
|
character class) and characters between a <b>#</b> outside
|
2004-04-27 08:12:43 +04:00
|
|
|
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
|
2002-12-24 22:39:42 +03:00
|
|
|
pattern.
|
|
|
|
|
|
|
|
<b>A</b> (default: off)
|
2004-04-27 08:12:43 +04:00
|
|
|
Toggles the PCRE_ANCHORED flag. When this flag is
|
|
|
|
on, the pattern is forced to be "anchored", that
|
2002-12-24 22:39:42 +03:00
|
|
|
is, it is constrained to match only at the start of
|
2004-04-27 08:12:43 +04:00
|
|
|
the string which is being searched (the "subject
|
|
|
|
string"). This effect can also be achieved by
|
2002-12-24 22:39:42 +03:00
|
|
|
appropriate constructs in the pattern itself.
|
|
|
|
|
|
|
|
<b>E</b> (default: off)
|
2004-04-27 08:12:43 +04:00
|
|
|
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-
|
2002-12-24 22:39:42 +03:00
|
|
|
ately before the final character if it is a newline
|
|
|
|
character (but not before any other newline charac-
|
2004-04-27 08:12:43 +04:00
|
|
|
ters). This flag is ignored if PCRE_MULTILINE flag
|
2002-12-24 22:39:42 +03:00
|
|
|
is set.
|
|
|
|
|
|
|
|
<b>U</b> (default: off)
|
|
|
|
Toggles the ungreedy matching flag. When this flag
|
2004-04-27 08:12:43 +04:00
|
|
|
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)
|
2002-12-24 22:39:42 +03:00
|
|
|
modifier within the pattern.
|
|
|
|
|
|
|
|
<b>X</b> (default: off)
|
|
|
|
Toggles the PCRE_EXTRA flag. When this flag is on,
|
2004-04-27 08:12:43 +04:00
|
|
|
any backslash in a pattern that is followed by a
|
2002-12-24 22:39:42 +03:00
|
|
|
letter that has no special meaning causes an error,
|
|
|
|
thus reserving these combinations for future expan-
|
|
|
|
sion.
|
2001-03-13 20:45:02 +03:00
|
|
|
|
2004-04-27 08:12:43 +04:00
|
|
|
<b>SEARCH ORDER</b>
|
|
|
|
Patterns are applied in the order as specified in the
|
|
|
|
table, until a pattern is found that matches the input
|
|
|
|
string.
|
|
|
|
|
|
|
|
Each pattern is applied to the entire input string.
|
|
|
|
Depending on the application, that string is an entire
|
2001-05-08 08:55:29 +04:00
|
|
|
client hostname, an entire client IP address, or an entire
|
2004-04-27 08:12:43 +04:00
|
|
|
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,
|
2001-05-08 08:55:29 +04:00
|
|
|
nor is <i>user+foo</i> broken up into <i>user</i> and <i>foo</i>.
|
2001-03-13 20:45:02 +03:00
|
|
|
|
2004-04-27 08:12:43 +04:00
|
|
|
<b>TEXT SUBSTITUTION</b>
|
|
|
|
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
|
2001-05-08 08:55:29 +04:00
|
|
|
aren't followed by whitespace.
|
2001-03-13 20:45:02 +03:00
|
|
|
|
2004-04-27 08:12:43 +04:00
|
|
|
Note: since negated patterns (those preceded by <b>!</b>) return
|
|
|
|
a result when the expression does not match, substitutions
|
|
|
|
are not available for negated patterns.
|
|
|
|
|
|
|
|
<b>EXAMPLE SMTPD ACCESS MAP</b>
|
2001-03-13 20:45:02 +03:00
|
|
|
# Protect your outgoing majordomo exploders
|
2004-03-27 19:09:35 +03:00
|
|
|
/^(?!owner-)(.*)-outgoing@(.*)/ 550 Use ${1}@${2} instead
|
2001-03-13 20:45:02 +03:00
|
|
|
|
|
|
|
# Bounce friend@whatever, except when whatever is our domain (you would
|
|
|
|
# be better just bouncing all friend@ mail - this is just an example).
|
2004-04-27 08:12:43 +04:00
|
|
|
/^(friend@(?!my\.domain$).*)$/ 550 Stick this in your pipe $1
|
2001-03-13 20:45:02 +03:00
|
|
|
|
|
|
|
# A multi-line entry. The text is sent as one line.
|
|
|
|
#
|
2002-02-03 02:10:24 +03:00
|
|
|
/^noddy@my\.domain$/
|
2001-03-13 20:45:02 +03:00
|
|
|
550 This user is a funny one. You really don't want to send mail to
|
|
|
|
them as it only makes their head spin.
|
|
|
|
|
2004-04-27 08:12:43 +04:00
|
|
|
<b>EXAMPLE HEADER FILTER MAP</b>
|
2002-02-03 02:10:24 +03:00
|
|
|
/^Subject: make money fast/ REJECT
|
|
|
|
/^To: friend@public\.com/ REJECT
|
|
|
|
|
2004-04-27 08:12:43 +04:00
|
|
|
<b>EXAMPLE BODY FILTER MAP</b>
|
2002-12-24 22:39:42 +03:00
|
|
|
# First skip over base 64 encoded text to save CPU cycles.
|
|
|
|
# Requires PCRE version 3.
|
|
|
|
~^[[:alnum:]+/]{60,}$~ OK
|
|
|
|
|
|
|
|
# Put your own body patterns here.
|
|
|
|
|
2004-04-27 08:12:43 +04:00
|
|
|
<b>SEE ALSO</b>
|
|
|
|
<a href="postmap.1.html">postmap(1)</a>, Postfix lookup table manager
|
|
|
|
<a href="postconf.5.html">postconf(5)</a>, configuration parameters
|
|
|
|
<a href="regexp_table.5.html">regexp_table(5)</a>, format of POSIX regular expression tables
|
|
|
|
|
|
|
|
<b>README FILES</b>
|
|
|
|
<a href="DATABASE_README.html">DATABASE_README</a>, Postfix lookup table overview
|
2001-03-13 20:45:02 +03:00
|
|
|
|
|
|
|
<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
|
|
|
|
|
2002-12-24 22:39:42 +03:00
|
|
|
PCRE_TABLE(5)
|
2001-03-13 20:45:02 +03:00
|
|
|
</pre> </body> </html>
|