1 1.1 tron <!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN" 2 1.1.1.5 christos "https://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.1.3 christos <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 11 1.1.1.4 christos <link rel='stylesheet' type='text/css' href='postfix-doc.css'> 12 1.1 tron 13 1.1 tron </head> 14 1.1 tron 15 1.1 tron <body> 16 1.1 tron 17 1.1 tron <h1><img src="postfix-logo.jpg" width="203" height="98" ALT="">Postfix PCRE Support</h1> 18 1.1 tron 19 1.1 tron <hr> 20 1.1 tron 21 1.1 tron <h2>PCRE (Perl Compatible Regular Expressions) map support</h2> 22 1.1 tron 23 1.1 tron <p> The optional "pcre" map type allows you to specify regular 24 1.1 tron expressions with the PERL style notation such as \s for space and 25 1.1 tron \S for non-space. The main benefit, however, is that pcre lookups 26 1.1 tron are often faster than regexp lookups. This is because the pcre 27 1.1 tron implementation is often more efficient than the POSIX regular 28 1.1 tron expression implementation that you find on many systems. </p> 29 1.1 tron 30 1.1 tron <p> A description of how to use pcre tables, including examples, 31 1.1 tron is given in the <a href="pcre_table.5.html">pcre_table(5)</a> manual page. Information about PCRE 32 1.1.1.5 christos itself can be found at <a href="https://www.pcre.org/">https://www.pcre.org/</a>. </p> 33 1.1 tron 34 1.1.1.3 christos <h2>Using Postfix packages with PCRE support</h2> 35 1.1 tron 36 1.1.1.3 christos <p> To use pcre with Debian GNU/Linux's Postfix, or with Fedora or 37 1.1.1.3 christos RHEL Postfix, all you 38 1.1 tron need is to install the postfix-pcre package and you're done. There 39 1.1 tron is no need to recompile Postfix. </p> 40 1.1 tron 41 1.1.1.3 christos <h2>Building Postfix from source with PCRE support</h2> 42 1.1 tron 43 1.1.1.3 christos <p> These instructions assume that you build Postfix from source 44 1.1.1.3 christos code as described in the <a href="INSTALL.html">INSTALL</a> document. </p> 45 1.1 tron 46 1.1.1.3 christos <p> To build Postfix from source with pcre support, you need a pcre 47 1.1.1.3 christos library. Install a vendor package, or download the source code from 48 1.1.1.3 christos locations in <a href="https://www.pcre.org/">https://www.pcre.org/</a> and build that yourself. 49 1.1.1.3 christos 50 1.1.1.3 christos <p> Postfix can build with the pcre2 library or the legacy pcre 51 1.1.1.3 christos library. It's probably easiest to let the Postfix build procedure 52 1.1.1.3 christos pick one. The following commands will first discover if the pcre2 53 1.1.1.3 christos library is installed, and if that is not available, will discover 54 1.1.1.3 christos if the legacy pcre library is installed. </p> 55 1.1.1.3 christos 56 1.1.1.3 christos <blockquote> 57 1.1.1.3 christos <pre> 58 1.1.1.3 christos $ make -f Makefile.init makefiles 59 1.1.1.3 christos $ make 60 1.1.1.3 christos </pre> 61 1.1 tron </blockquote> 62 1.1 tron 63 1.1.1.3 christos <p> To build Postfix explicitly with a pcre2 library (Postfix 3.7 64 1.1.1.3 christos and later): </p> 65 1.1.1.3 christos 66 1.1.1.3 christos <blockquote> 67 1.1.1.3 christos <pre> 68 1.1.1.3 christos $ make -f Makefile.init makefiles \ 69 1.1.1.3 christos "CCARGS=-DHAS_PCRE=2 `pcre2-config --cflags`" \ 70 1.1.1.3 christos "<a href="PCRE_README.html">AUXLIBS_PCRE</a>=`pcre2-config --libs8`" 71 1.1.1.3 christos $ make 72 1.1.1.3 christos </pre> 73 1.1.1.3 christos </blockquote> 74 1.1 tron 75 1.1.1.3 christos <p> To build Postfix explicitly with a legacy pcre library (all 76 1.1.1.3 christos Postfix versions): </p> 77 1.1 tron 78 1.1 tron <blockquote> 79 1.1 tron <pre> 80 1.1.1.3 christos $ make -f Makefile.init makefiles \ 81 1.1.1.3 christos "CCARGS=-DHAS_PCRE=1 `pcre-config --cflags`" \ 82 1.1.1.2 christos "<a href="PCRE_README.html">AUXLIBS_PCRE</a>=`pcre-config --libs`" 83 1.1.1.3 christos $ make 84 1.1 tron </pre> 85 1.1 tron </blockquote> 86 1.1 tron 87 1.1.1.2 christos <p> Postfix versions before 3.0 use AUXLIBS instead of <a href="PCRE_README.html">AUXLIBS_PCRE</a>. 88 1.1.1.2 christos With Postfix 3.0 and later, the old AUXLIBS variable still supports 89 1.1.1.2 christos building a statically-loaded PCRE database client, but only the new 90 1.1.1.2 christos <a href="PCRE_README.html">AUXLIBS_PCRE</a> variable supports building a dynamically-loaded or 91 1.1.1.2 christos statically-loaded PCRE database client. </p> 92 1.1 tron 93 1.1 tron <blockquote> 94 1.1.1.2 christos 95 1.1.1.2 christos <p> Failure to use the <a href="PCRE_README.html">AUXLIBS_PCRE</a> variable will defeat the purpose 96 1.1.1.2 christos of dynamic database client loading. Every Postfix executable file 97 1.1.1.2 christos will have PCRE library dependencies. And that was exactly 98 1.1.1.2 christos what dynamic database client loading was meant to avoid. </p> 99 1.1.1.2 christos 100 1.1 tron </blockquote> 101 1.1 tron 102 1.1 tron <h2>Things to know</h2> 103 1.1 tron 104 1.1 tron <ul> 105 1.1 tron 106 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, 107 1.1 tron each pattern is applied to the entire input string. Depending on 108 1.1 tron the application, that string is an entire client hostname, an entire 109 1.1 tron client IP address, or an entire mail address. Thus, no parent domain 110 1.1 tron or parent network search is done, "user@domain" mail addresses are 111 1.1 tron not broken up into their user and domain constituent parts, and 112 1.1 tron "user+foo" is not broken up into user and foo. </p> 113 1.1 tron 114 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 115 1.1 tron not allowed to do $number substitution in lookup results that can 116 1.1 tron be security sensitive: currently, that restriction applies to the 117 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. 118 1.1 tron </p> 119 1.1 tron 120 1.1 tron </ul> 121 1.1 tron 122 1.1 tron </body> 123 1.1 tron 124 1.1 tron </html> 125