181 lines
7.6 KiB
HTML
181 lines
7.6 KiB
HTML
<!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 - regexp_table(5) </title>
|
|
</head> <body> <pre>
|
|
REGEXP_TABLE(5) REGEXP_TABLE(5)
|
|
|
|
<b>NAME</b>
|
|
regexp_table - format of Postfix regular expression tables
|
|
|
|
<b>SYNOPSIS</b>
|
|
<b>postmap -q "</b><i>string</i><b>" <a href="regexp_table.5.html">regexp</a>:/etc/postfix/</b><i>filename</i>
|
|
|
|
<b>postmap -q - <a href="regexp_table.5.html">regexp</a>:/etc/postfix/</b><i>filename</i> <<i>inputfile</i>
|
|
|
|
<b>DESCRIPTION</b>
|
|
The Postfix mail system uses optional tables for address rewriting,
|
|
mail routing, or access control. These tables are usually in <b>dbm</b> or <b>db</b>
|
|
format.
|
|
|
|
Alternatively, lookup tables can be specified in POSIX regular expres-
|
|
sion form. In this case, each input is compared against a list of pat-
|
|
terns. When a match is found, the corresponding result is returned and
|
|
the search is terminated.
|
|
|
|
To find out what types of lookup tables your Postfix system supports
|
|
use the "<b>postconf -m</b>" command.
|
|
|
|
To test lookup tables, use the "<b>postmap -q</b>" command as described in the
|
|
SYNOPSIS above.
|
|
|
|
<b>COMPATIBILITY</b>
|
|
With Postfix version 2.2 and earlier specify "<b>postmap -fq</b>" to query a
|
|
table that contains case sensitive patterns. Patterns are case insensi-
|
|
tive by default.
|
|
|
|
<b>TABLE FORMAT</b>
|
|
The general form of a Postfix regular expression table is:
|
|
|
|
<b>/</b><i>pattern</i><b>/</b><i>flags result</i>
|
|
When <i>pattern</i> matches the input string, use the corresponding
|
|
<i>result</i> value.
|
|
|
|
<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 corre-
|
|
sponding <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 that same input string also matches <i>pat-</i>
|
|
<i>tern</i>. The <b>if</b>..<b>endif</b> can nest.
|
|
|
|
Note: do not prepend whitespace to patterns inside <b>if</b>..<b>endif</b>.
|
|
|
|
This feature is available in Postfix 2.1 and later.
|
|
|
|
<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 that same input string does <b>not</b> match <i>pat-</i>
|
|
<i>tern</i>. The <b>if</b>..<b>endif</b> can nest.
|
|
|
|
Note: do not prepend whitespace to patterns inside <b>if</b>..<b>endif</b>.
|
|
|
|
This feature is available in Postfix 2.1 and later.
|
|
|
|
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 logical line.
|
|
|
|
Each pattern is a POSIX regular expression enclosed by a pair of delim-
|
|
iters. The regular expression syntax is documented in <b>re_format</b>(7) with
|
|
4.4BSD, in <b>regex</b>(5) with Solaris, and in <b>regex</b>(7) with Linux. Other
|
|
systems may use other document names.
|
|
|
|
The expression delimiter can be any non-alphanumerical character,
|
|
except whitespace 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 controlled 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)
|
|
Toggle the multi-line mode 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 input string.
|
|
|
|
<b>x</b> (default: on)
|
|
Toggles the extended expression syntax flag. By default, support
|
|
for extended expression syntax is enabled.
|
|
|
|
<b>TABLE 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 client hostname, an entire client
|
|
IP address, or an entire mail address. Thus, no parent domain or par-
|
|
ent network search is done, and <i>user@domain</i> mail addresses are not bro-
|
|
ken 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>.
|
|
|
|
<b>TEXT SUBSTITUTION</b>
|
|
Substitution of substrings (text that matches patterns inside "()")
|
|
from the matched expression into the result string is requested with
|
|
$1, $2, etc.; specify $$ to produce a $ character as output. The
|
|
macros in the result string may need to be written as ${n} or $(n) if
|
|
they aren't followed by whitespace.
|
|
|
|
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>
|
|
# Disallow sender-specified routing. This is a must if you relay mail
|
|
# for other domains.
|
|
/[%!@].*[%!@]/ 550 Sender-specified routing rejected
|
|
|
|
# Postmaster is OK, that way they can talk to us about how to fix
|
|
# their problem.
|
|
/^postmaster@/ OK
|
|
|
|
# Protect your outgoing majordomo exploders
|
|
if !/^owner-/
|
|
/^(.*)-outgoing@(.*)$/ 550 Use ${1}@${2} instead
|
|
endif
|
|
|
|
<b>EXAMPLE HEADER FILTER MAP</b>
|
|
# These were once common in junk mail.
|
|
/^Subject: make money fast/ REJECT
|
|
/^To: friend@public\.com/ REJECT
|
|
|
|
<b>EXAMPLE BODY FILTER MAP</b>
|
|
# First skip over base 64 encoded text to save CPU cycles.
|
|
~^[[:alnum:]+/]{60,}$~ OK
|
|
|
|
# Put your own body patterns here.
|
|
|
|
<b>SEE ALSO</b>
|
|
<a href="postmap.1.html">postmap(1)</a>, Postfix lookup table manager
|
|
<a href="pcre_table.5.html">pcre_table(5)</a>, format of PCRE tables
|
|
<a href="cidr_table.5.html">cidr_table(5)</a>, format of CIDR tables
|
|
|
|
<b>README FILES</b>
|
|
<a href="DATABASE_README.html">DATABASE_README</a>, Postfix lookup table overview
|
|
|
|
<b>AUTHOR(S)</b>
|
|
The regexp table lookup code was originally written by:
|
|
LaMont Jones
|
|
lamont@hp.com
|
|
|
|
That code was based on the PCRE dictionary contributed 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
|
|
|
|
REGEXP_TABLE(5)
|
|
</pre> </body> </html>
|