diff options
Diffstat (limited to 'html/pcre_table.5.html')
-rw-r--r-- | html/pcre_table.5.html | 249 |
1 files changed, 249 insertions, 0 deletions
diff --git a/html/pcre_table.5.html b/html/pcre_table.5.html new file mode 100644 index 0000000..f9eee35 --- /dev/null +++ b/html/pcre_table.5.html @@ -0,0 +1,249 @@ +<!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=utf-8"> +<title> Postfix manual - pcre_table(5) </title> +</head> <body> <pre> +PCRE_TABLE(5) PCRE_TABLE(5) + +<b>NAME</b> + pcre_table - format of Postfix PCRE tables + +<b>SYNOPSIS</b> + <b>postmap -q "</b><i>string</i><b>" <a href="pcre_table.5.html">pcre</a>:/etc/postfix/</b><i>filename</i> + + <b>postmap -q - <a href="pcre_table.5.html">pcre</a>:/etc/postfix/</b><i>filename</i> <<i>inputfile</i> + + <b>postmap -hmq - <a href="pcre_table.5.html">pcre</a>:/etc/postfix/</b><i>filename</i> <<i>inputfile</i> + + <b>postmap -bmq - <a href="pcre_table.5.html">pcre</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 Perl Compatible Regu- + lar Expression form. In this case, each input is compared against a + list of patterns. 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. Use "<b>postmap -hmq -</b> <<i>file</i>" for <a href="header_checks.5.html">header_checks(5)</a> pat- + terns, and "<b>postmap -bmq -</b> <<i>file</i>" for <a href="header_checks.5.html">body_checks(5)</a> (Postfix 2.6 and + later). + + This driver can be built with the pcre2 library (Postfix 3.7 and + later), or with the legacy pcre library (all Postfix versions). + +<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 PCRE 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> If the input string matches /<i>pattern</i>/, then match that input + string against the patterns between <b>if</b> and <b>endif</b>. 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> If the input string does not match /<i>pattern</i>/, then match that + input string against the patterns between <b>if</b> and <b>endif</b>. 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 perl-like regular expression. The expression delim- + iter can be any non-alphanumeric character, except whitespace or char- + acters that have special meaning (traditionally 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) + 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 ver- + sions prior to 2.0, the flag is off by default, which is incon- + venient for multi-line message header matching. + + <b>x</b> (default: off) + Toggles the pcre extended flag. When this flag is on, whitespace + characters in the pattern (other than in a character class) are + ignored. To include a whitespace character as part of the pat- + tern, escape it with backslash. + + Note: do not use <b>#</b><i>comment</i> after patterns. + + <b>A</b> (default: off) + Toggles the pcre ANCHORED flag. When this flag is on, the pat- + tern 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 sub- + ject 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 characters). This flag is + ignored if the pcre MULTILINE flag is set. + + <b>U</b> (default: off) + Toggles the pcre UNGREEDY flag. When this flag is on, the pat- + tern matching engine inverts the "greediness" of the quantifiers + so that they are not greedy by default, but become greedy if + followed 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 back- + slash in a pattern that is followed by a letter that has no spe- + cial meaning causes an error, thus reserving these combinations + for future expansion. + + This feature is not supported with PCRE2. + +<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 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. This feature does not support + pcre2 substring names. + + 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>INLINE SPECIFICATION</b> + The contents of a table may be specified in the table name (Postfix 3.7 + and later). The basic syntax is: + + <a href="postconf.5.html">main.cf</a>: + <i>parameter</i> <b>= .. <a href="pcre_table.5.html">pcre</a>:{ {</b> <i>rule-1</i> <b>}, {</b> <i>rule-2</i> <b>} .. } ..</b> + + <a href="master.5.html">master.cf</a>: + <b>.. -o {</b> <i>parameter</i> <b>= .. <a href="pcre_table.5.html">pcre</a>:{ {</b> <i>rule-1</i> <b>}, {</b> <i>rule-2</i> <b>} .. } .. } ..</b> + + Postfix ignores whitespace after '{' and before '}', and writes each + <i>rule</i> as one text line to an in-memory file: + + in-memory file: + rule-1 + rule-2 + .. + + Postfix parses the result as if it is a file in /etc/postfix. + + Note: if a rule contains <b>$</b>, specify <b>$$</b> to keep Postfix from trying to + do <i>$name</i> expansion as it evaluates a parameter value. + +<b>EXAMPLE SMTPD ACCESS 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 $1 + + # 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 HEADER FILTER MAP</b> + /^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. + # Requires PCRE version 3. + ~^[[: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="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 + +<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 + + Wietse Venema + Google, Inc. + 111 8th Avenue + New York, NY 10011, USA + + PCRE_TABLE(5) +</pre> </body> </html> |