1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
|
<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html> <head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<title> Postfix manual - lmdb_table(5) </title>
</head> <body> <pre>
LMDB_TABLE(5) LMDB_TABLE(5)
<b>NAME</b>
lmdb_table - Postfix LMDB adapter
<b>SYNOPSIS</b>
<b>postmap <a href="lmdb_table.5.html">lmdb</a>:/etc/postfix/</b><i>filename</i>
<b>postmap -i <a href="lmdb_table.5.html">lmdb</a>:/etc/postfix/</b><i>filename</i> <<i>inputfile</i>
<b>postmap -d "</b><i>key</i><b>" <a href="lmdb_table.5.html">lmdb</a>:/etc/postfix/</b><i>filename</i>
<b>postmap -d - <a href="lmdb_table.5.html">lmdb</a>:/etc/postfix/</b><i>filename</i> <<i>inputfile</i>
<b>postmap -q "</b><i>key</i><b>" <a href="lmdb_table.5.html">lmdb</a>:/etc/postfix/</b><i>filename</i>
<b>postmap -q - <a href="lmdb_table.5.html">lmdb</a>:/etc/postfix/</b><i>filename</i> <<i>inputfile</i>
<b>DESCRIPTION</b>
The Postfix LMDB adapter provides access to a persistent, mem-
ory-mapped, key-value store. The database size is limited only by the
size of the memory address space (typically 31 or 47 bits on 32-bit or
64-bit CPUs, respectively) and by the available file system space.
<b>REQUESTS</b>
The LMDB adapter supports all Postfix lookup table operations. This
makes LMDB suitable for Postfix address rewriting, routing, access
policies, caches, or any information that can be stored under a fixed
lookup key.
When a transaction fails due to a full database, Postfix resizes the
database and retries the transaction.
Postfix table lookups may generate partial search keys such as domain
names without one or more subdomains, network addresses without one or
more least-significant octets, or email addresses without the local-
part, address extension or domain portion. This behavior is also found
with, for example, <a href="DATABASE_README.html#types">btree</a>:, <a href="DATABASE_README.html#types">hash</a>:, or <a href="ldap_table.5.html">ldap</a>: tables.
Unlike other flat-file Postfix databases, changes to an LMDB database
do not trigger automatic daemon program restart, and do not require
"<b>postfix reload</b>".
<b>RELIABILITY</b>
LMDB's copy-on-write architecture provides safe updates, at the cost of
using more space than some other flat-file databases. Read operations
are memory-mapped for speed. Write operations are not memory-mapped to
avoid silent corruption due to stray pointer bugs.
Multiple processes can safely update an LMDB database without serializ-
ing requests through the <a href="proxymap.8.html">proxymap(8)</a> service. This makes LMDB suitable
as a shared cache for <a href="verify.8.html">verify(8)</a> or <a href="postscreen.8.html">postscreen(8)</a> services.
<b>SYNCHRONIZATION</b>
The Postfix LMDB adapter does not use LMDB's built-in locking scheme,
because that would require world-writable lockfiles and would violate
the Postfix security model. Instead, Postfix uses fcntl(2) locks with
whole-file granularity. Programs that use LMDB's built-in locking pro-
tocol will corrupt a Postfix LMDB database or will read garbage.
Every Postfix LMDB database read or write transaction must be protected
from start to end with a shared or exclusive fcntl(2) lock. A writer
may atomically downgrade an exclusive lock to a shared lock, but it
must hold an exclusive lock while opening another write transaction.
Note that fcntl(2) locks do not protect transactions within the same
process against each other. If a program cannot avoid making simulta-
neous database requests, then it must protect its transactions with
in-process locks, in addition to the per-process fcntl(2) locks.
<b>CONFIGURATION PARAMETERS</b>
Short-lived programs automatically pick up changes to <a href="postconf.5.html">main.cf</a>. With
long-running daemon programs, Use the command "<b>postfix reload</b>" after a
configuration change.
<b><a href="postconf.5.html#lmdb_map_size">lmdb_map_size</a> (default: 16777216)</b>
The initial LMDB database size limit in bytes.
<b>SEE ALSO</b>
<a href="postconf.1.html">postconf(1)</a>, Postfix supported lookup tables
<a href="postmap.1.html">postmap(1)</a>, Postfix lookup table maintenance
<a href="postconf.5.html">postconf(5)</a>, configuration parameters
<b>README FILES</b>
<a href="DATABASE_README.html">DATABASE_README</a>, Postfix lookup table overview
<a href="LMDB_README.html">LMDB_README</a>, Postfix OpenLDAP LMDB howto
<b>LICENSE</b>
The Secure Mailer license must be distributed with this software.
<b>HISTORY</b>
LMDB support was introduced with Postfix version 2.11.
<b>AUTHOR(S)</b>
Howard Chu
Symas Corporation
Wietse Venema
IBM T.J. Watson Research
P.O. Box 704
Yorktown Heights, NY 10598, USA
Wietse Venema
Google, Inc.
111 8th Avenue
New York, NY 10011, USA
LMDB_TABLE(5)
</pre> </body> </html>
|