autoupdate
[postfix-master.git] / postfix-master / PCRE_README.html
blob6e619c616d5d46f522a2fdb7e3405364f6438e12
1 <!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN"
2 "http://www.w3.org/TR/html4/loose.dtd">
4 <html>
6 <head>
8 <title>Postfix PCRE Support</title>
10 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
12 </head>
14 <body>
16 <h1><img src="postfix-logo.jpg" width="203" height="98" ALT="">Postfix PCRE Support</h1>
18 <hr>
20 <h2>PCRE (Perl Compatible Regular Expressions) map support</h2>
22 <p> The optional "pcre" map type allows you to specify regular
23 expressions with the PERL style notation such as \s for space and
24 \S for non-space. The main benefit, however, is that pcre lookups
25 are often faster than regexp lookups. This is because the pcre
26 implementation is often more efficient than the POSIX regular
27 expression implementation that you find on many systems. </p>
29 <p> A description of how to use pcre tables, including examples,
30 is given in the <a href="pcre_table.5.html">pcre_table(5)</a> manual page. Information about PCRE
31 itself can be found at <a href="http://www.pcre.org/">http://www.pcre.org/</a>. </p>
33 <h2>Building Postfix with PCRE support</h2>
35 <p> These instructions assume that you build Postfix from source
36 code as described in the <a href="INSTALL.html">INSTALL</a> document. Some modification may
37 be required if you build Postfix from a vendor-specific source
38 package. </p>
40 <p> Note: to use pcre with Debian GNU/Linux's Postfix, all you
41 need is to install the postfix-pcre package and you're done. There
42 is no need to recompile Postfix. </p>
44 <p> In some future, Postfix will have a plug-in interface for adding
45 map types. Until then, you need to compile PCRE support into Postfix.
46 </p>
48 <p> First of all, you need the PCRE library (Perl Compatible Regular
49 Expressions), which can be obtained from: </p>
51 <blockquote>
52 <a href="ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/">ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/</a>.
53 </blockquote>
55 <p> NOTE: pcre versions prior to 2.06 cannot be used. </p>
57 <p> In order to build Postfix with PCRE support you need to add
58 -DHAS_PCRE and a -I for the PCRE include file to CCARGS, and add
59 the path to the PCRE library to AUXLIBS, for example: </p>
61 <blockquote>
62 <pre>
63 make -f Makefile.init makefiles \
64 "CCARGS=-DHAS_PCRE -I/usr/local/include" \
65 "AUXLIBS=-L/usr/local/lib -lpcre"
66 </pre>
67 </blockquote>
69 <p> Solaris needs run-time path information too: </p>
71 <blockquote>
72 <pre>
73 make -f Makefile.init makefiles \
74 "CCARGS=-DHAS_PCRE -I/usr/local/include" \
75 "AUXLIBS=-L/usr/local/lib -R/usr/local/lib -lpcre"
76 </pre>
77 </blockquote>
79 <h2>Things to know</h2>
81 <ul>
83 <li> <p> When Postfix searches a <a href="pcre_table.5.html">pcre</a>: or <a href="regexp_table.5.html">regexp</a>: lookup table,
84 each pattern is applied to the entire input string. Depending on
85 the application, that string is an entire client hostname, an entire
86 client IP address, or an entire mail address. Thus, no parent domain
87 or parent network search is done, "user@domain" mail addresses are
88 not broken up into their user and domain constituent parts, and
89 "user+foo" is not broken up into user and foo. </p>
91 <li> <p> Regular expression tables such as <a href="pcre_table.5.html">pcre</a>: or <a href="regexp_table.5.html">regexp</a>: are
92 not allowed to do $number substitution in lookup results that can
93 be security sensitive: currently, that restriction applies to the
94 local <a href="aliases.5.html">aliases(5)</a> database or the <a href="virtual.8.html">virtual(8)</a> delivery agent tables.
95 </p>
97 </ul>
99 </body>
101 </html>