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