xref: /netbsd-src/external/ibm-public/postfix/dist/html/CDB_README.html (revision 059c16a85b0b39d60ad6d18f53c09510815afa2b)
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 CDB Howto</title>
9
10<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
11<link rel='stylesheet' type='text/css' href='postfix-doc.css'>
12
13</head>
14
15<body>
16
17<h1><img src="postfix-logo.jpg" width="203" height="98" ALT="">Postfix CDB Howto</h1>
18
19<hr>
20
21<h2>Introduction</h2>
22
23<p> CDB (Constant DataBase) is an indexed file format designed by
24Daniel Bernstein. CDB is optimized exclusively for read access
25and guarantees that each record will be read in at most two disk
26accesses. This is achieved by forgoing support for incremental
27updates: no single-record inserts or deletes are supported.  CDB
28databases can be modified only by rebuilding them completely from
29scratch, hence the "constant" qualifier in the name.  </p>
30
31<p> Postfix CDB databases are specified as "<a href="CDB_README.html">cdb</a>:<i>name</i>", where
32<i>name</i> specifies the CDB file name without the ".cdb" suffix
33(another suffix, ".tmp", is used temporarily while a CDB file is
34under construction).  CDB databases are maintained with the <a href="postmap.1.html">postmap(1)</a>
35or <a href="postalias.1.html">postalias(1)</a> command. The <a href="DATABASE_README.html">DATABASE_README</a> document has general
36information about Postfix databases.  </p>
37
38<p> CDB support is available with Postfix 2.2 and later releases.
39This document describes how to build Postfix with CDB support. </p>
40
41<h2>Building Postfix with CDB support</h2>
42
43<p> These instructions assume that you build Postfix from source
44code as described in the <a href="INSTALL.html">INSTALL</a> document. Some modification may
45be required if you build Postfix from a vendor-specific source
46package.  </p>
47
48<p> Postfix is compatible with two CDB implementations: </p>
49
50<ul>
51
52<li> <p> The original cdb library from Daniel Bernstein, available
53from <a href="http://cr.yp.to/cdb.html">http://cr.yp.to/cdb.html</a>, and </p>
54
55<li> <p> tinycdb (version 0.5 and later) from Michael Tokarev,
56available from <a href="http://www.corpit.ru/mjt/tinycdb.html">http://www.corpit.ru/mjt/tinycdb.html</a>. </p>
57
58</ul>
59
60<p>  Tinycdb is preferred, since it is a bit faster, has additional
61useful functionality and is much simpler to use. </p>
62
63<p>To build Postfix after you have installed tinycdb, use something
64like: </p>
65
66<blockquote>
67<pre>
68% make tidy
69% CDB=../../../tinycdb-0.5
70% make -f Makefile.init makefiles "CCARGS=-DHAS_CDB -I$CDB" \
71    "<a href="CDB_README.html">AUXLIBS_CDB</a>=$CDB/libcdb.a"
72% make
73</pre>
74</blockquote>
75
76<p> Alternatively, for the D.J.B. version of CDB:<p>
77
78<blockquote>
79<pre>
80% make tidy
81% CDB=../../../cdb-0.75
82% make -f Makefile.init makefiles "CCARGS=-DHAS_CDB -I$CDB" \
83    "<a href="CDB_README.html">AUXLIBS_CDB</a>=$CDB/cdb.a $CDB/alloc.a $CDB/buffer.a $CDB/unix.a $CDB/byte.a"
84% make
85</pre>
86</blockquote>
87
88<p> Postfix versions before 3.0 use AUXLIBS instead of <a href="CDB_README.html">AUXLIBS_CDB</a>.
89With Postfix 3.0 and later, the old AUXLIBS variable still supports
90building a statically-loaded CDB database client, but only the new
91<a href="CDB_README.html">AUXLIBS_CDB</a> variable supports building a dynamically-loaded or
92statically-loaded CDB database client.  </p>
93
94<blockquote>
95
96<p> Failure to use the <a href="CDB_README.html">AUXLIBS_CDB</a> variable will defeat the purpose
97of dynamic database client loading. Every Postfix executable file
98will have CDB database library dependencies. And that was exactly
99what dynamic database client loading was meant to avoid. </p>
100
101</blockquote>
102
103<p> After Postfix has been built with cdb support, you can use
104"cdb" tables wherever you can use read-only "hash", "btree" or
105"dbm" tables. However, the "<b>postmap -i</b>" (incremental record
106insertion) and "<b>postmap -d</b>" (incremental record deletion)
107command-line options are not available. For the same reason the
108"cdb" map type cannot be used to store the persistent address
109verification cache for the <a href="verify.8.html">verify(8)</a> service, or to store
110TLS session information for the <a href="tlsmgr.8.html">tlsmgr(8)</a> service. </p>
111