NetBSD/gnu/dist/postfix/html/pcre_table.5.html

213 lines
9.1 KiB
HTML
Raw Normal View History

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> &lt;<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.
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.
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
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-
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.
#
/^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>
/^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>