Home | History | Annotate | Line # | Download | only in html
PCRE_README.html revision 1.1.1.1.36.1
      1           1.1    tron <!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN"
      2           1.1    tron         "http://www.w3.org/TR/html4/loose.dtd">
      3           1.1    tron 
      4           1.1    tron <html>
      5           1.1    tron 
      6           1.1    tron <head>
      7           1.1    tron 
      8           1.1    tron <title>Postfix PCRE Support</title>
      9           1.1    tron 
     10           1.1    tron <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
     11           1.1    tron 
     12           1.1    tron </head>
     13           1.1    tron 
     14           1.1    tron <body>
     15           1.1    tron 
     16           1.1    tron <h1><img src="postfix-logo.jpg" width="203" height="98" ALT="">Postfix PCRE Support</h1>
     17           1.1    tron 
     18           1.1    tron <hr>
     19           1.1    tron 
     20           1.1    tron <h2>PCRE (Perl Compatible Regular Expressions) map support</h2>
     21           1.1    tron 
     22           1.1    tron <p> The optional "pcre" map type allows you to specify regular
     23           1.1    tron expressions with the PERL style notation such as \s for space and
     24           1.1    tron \S for non-space. The main benefit, however, is that pcre lookups
     25           1.1    tron are often faster than regexp lookups. This is because the pcre
     26           1.1    tron implementation is often more efficient than the POSIX regular
     27           1.1    tron expression implementation that you find on many systems. </p>
     28           1.1    tron 
     29           1.1    tron <p> A description of how to use pcre tables, including examples,
     30           1.1    tron is given in the <a href="pcre_table.5.html">pcre_table(5)</a> manual page. Information about PCRE
     31           1.1    tron itself can be found at <a href="http://www.pcre.org/">http://www.pcre.org/</a>. </p>
     32           1.1    tron 
     33           1.1    tron <h2>Building Postfix with PCRE support</h2>
     34           1.1    tron 
     35           1.1    tron <p> These instructions assume that you build Postfix from source
     36           1.1    tron code as described in the <a href="INSTALL.html">INSTALL</a> document. Some modification may
     37           1.1    tron be required if you build Postfix from a vendor-specific source
     38           1.1    tron package.  </p>
     39           1.1    tron 
     40           1.1    tron <p> Note: to use pcre with Debian GNU/Linux's Postfix, all you
     41           1.1    tron need is to install the postfix-pcre package and you're done.  There
     42           1.1    tron is no need to recompile Postfix. </p>
     43           1.1    tron 
     44           1.1    tron <p> In some future, Postfix will have a plug-in interface for adding
     45           1.1    tron map types. Until then, you need to compile PCRE support into Postfix.
     46           1.1    tron </p>
     47           1.1    tron 
     48           1.1    tron <p> First of all, you need the PCRE library (Perl Compatible Regular
     49           1.1    tron Expressions), which can be obtained from: </p>
     50           1.1    tron 
     51           1.1    tron <blockquote> 
     52           1.1    tron <a href="ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/">ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/</a>.
     53           1.1    tron </blockquote>
     54           1.1    tron 
     55           1.1    tron <p> NOTE: pcre versions prior to 2.06 cannot be used. </p>
     56           1.1    tron 
     57           1.1    tron <p> In order to build Postfix with PCRE support you need to add
     58  1.1.1.1.36.1  bouyer -DHAS_PCRE and a -I option for the PCRE include file to CCARGS, and
     59  1.1.1.1.36.1  bouyer add the path to the PCRE library to <a href="PCRE_README.html">AUXLIBS_PCRE</a>, for example: </p>
     60           1.1    tron 
     61           1.1    tron <blockquote>
     62           1.1    tron <pre>
     63           1.1    tron make -f Makefile.init makefiles \
     64  1.1.1.1.36.1  bouyer     "CCARGS=-DHAS_PCRE `pcre-config --cflags`" \
     65  1.1.1.1.36.1  bouyer     "<a href="PCRE_README.html">AUXLIBS_PCRE</a>=`pcre-config --libs`"
     66           1.1    tron </pre>
     67           1.1    tron </blockquote>
     68           1.1    tron 
     69  1.1.1.1.36.1  bouyer <p> Postfix versions before 3.0 use AUXLIBS instead of <a href="PCRE_README.html">AUXLIBS_PCRE</a>.
     70  1.1.1.1.36.1  bouyer With Postfix 3.0 and later, the old AUXLIBS variable still supports
     71  1.1.1.1.36.1  bouyer building a statically-loaded PCRE database client, but only the new
     72  1.1.1.1.36.1  bouyer <a href="PCRE_README.html">AUXLIBS_PCRE</a> variable supports building a dynamically-loaded or 
     73  1.1.1.1.36.1  bouyer statically-loaded PCRE database client.  </p>
     74           1.1    tron 
     75           1.1    tron <blockquote>
     76  1.1.1.1.36.1  bouyer  
     77  1.1.1.1.36.1  bouyer <p> Failure to use the <a href="PCRE_README.html">AUXLIBS_PCRE</a> variable will defeat the purpose
     78  1.1.1.1.36.1  bouyer of dynamic database client loading. Every Postfix executable file
     79  1.1.1.1.36.1  bouyer will have PCRE library dependencies. And that was exactly
     80  1.1.1.1.36.1  bouyer what dynamic database client loading was meant to avoid. </p>
     81  1.1.1.1.36.1  bouyer  
     82           1.1    tron </blockquote>
     83           1.1    tron 
     84           1.1    tron <h2>Things to know</h2>
     85           1.1    tron 
     86           1.1    tron <ul>
     87           1.1    tron 
     88           1.1    tron <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,
     89           1.1    tron each pattern is applied to the entire input string. Depending on
     90           1.1    tron the application, that string is an entire client hostname, an entire
     91           1.1    tron client IP address, or an entire mail address. Thus, no parent domain
     92           1.1    tron or parent network search is done, "user@domain" mail addresses are
     93           1.1    tron not broken up into their user and domain constituent parts, and
     94           1.1    tron "user+foo" is not broken up into user and foo.  </p>
     95           1.1    tron 
     96           1.1    tron <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
     97           1.1    tron not allowed to do $number substitution in lookup results that can
     98           1.1    tron be security sensitive: currently, that restriction applies to the
     99           1.1    tron local <a href="aliases.5.html">aliases(5)</a> database or the <a href="virtual.8.html">virtual(8)</a> delivery agent tables.
    100           1.1    tron </p>
    101           1.1    tron 
    102           1.1    tron </ul>
    103           1.1    tron 
    104           1.1    tron </body>
    105           1.1    tron 
    106           1.1    tron </html>
    107