2
0
mirror of https://github.com/vdukhovni/postfix synced 2025-08-28 12:48:01 +00:00

postfix-2.11-20130319

This commit is contained in:
Wietse Venema 2013-03-18 22:12:26 -04:00 committed by Viktor Dukhovni
parent 8db6af2ac4
commit 2bb602fd21
12 changed files with 177 additions and 80 deletions

View File

@ -18288,3 +18288,13 @@ Apologies for any names omitted.
20130318 20130318
Portability: botched #ifdef. File: util/dict_lmdb.c. Portability: botched #ifdef. File: util/dict_lmdb.c.
20130319
Postfix support for LMDB databases is withdrawn due to the
existence of a hard limit (an "out of storage" failure mode
that cannot be resolved by increasing the database size).
Postfix may support LMDB again when without exceptions all
"out of storage" failure modes are resolved by increasing
the database size.

View File

@ -210,12 +210,11 @@ To find out what database types your Postfix system supports, use the "ppooss
iinntteerrnnaall iinntteerrnnaall
A non-shared, in-memory hash table. Its content are lost when a process A non-shared, in-memory hash table. Its content are lost when a process
terminates. terminates.
llmmddbb llmmddbb (unsupported)
The OpenLDAP LMDB database (a memory-mapped, persistent file). Database The OpenLDAP LMDB database (a memory-mapped, persistent file). Database
files are created with the postmap(1) or postalias(1) command. The files are created with the postmap(1) or postalias(1) command. The
database name as used in "lmdb:table" is the database file name without database name as used in "lmdb:table" is the database file name without
the ".lmdb" suffix. This database type has unexpected limitations and the ".lmdb" suffix.
is therefore not part of the stable Postfix release.
llddaapp (read-only) llddaapp (read-only)
Perform lookups using the LDAP protocol. Configuration details are Perform lookups using the LDAP protocol. Configuration details are
given in the ldap_table(5). given in the ldap_table(5).

View File

@ -4,6 +4,14 @@ PPoossttffiixx OOppeennLLDDAAPP LLMMDDBB HHoowwttoo
IInnttrroodduuccttiioonn IInnttrroodduuccttiioonn
Note:
Postfix support for LMDB databases is withdrawn due to the existence of a
hard limit (an "out of storage" failure mode that cannot be resolved by
increasing the database size).
Postfix may support LMDB again when without exception all "out of storage"
failure modes are resolved by increasing the database size.
Postfix uses databases of various kinds to store and look up information. Postfix uses databases of various kinds to store and look up information.
Postfix databases are specified as "type:name". OpenLDAP LMDB implements the Postfix databases are specified as "type:name". OpenLDAP LMDB implements the
Postfix database type "lmdb". The name of a Postfix OpenLDAP LMDB database is Postfix database type "lmdb". The name of a Postfix OpenLDAP LMDB database is
@ -70,6 +78,20 @@ that don't exist with other Postfix databases.
UUnneexxppeecctteedd ppoossttmmaapp((11))//ppoossttaalliiaass((11)) ""ddaattaabbaassee ffuullll"" eerrrroorrss.. UUnneexxppeecctteedd ppoossttmmaapp((11))//ppoossttaalliiaass((11)) ""ddaattaabbaassee ffuullll"" eerrrroorrss..
Problem:
The "postmap lmdb:filename" command fails with an MDB_TXN_FULL error. This
problem does not exist with other Postfix databases.
Background:
The LMDB implementation has a hard limit on the total transaction size.
This limit is independent of the LMDB database size. Therefore, the problem
cannot be resolved by increasing the lmdb_map_size value.
This symptom is indicative of a flawed design. All LMDB data structures
should share the same storage pool so that they can scale with the database
size, and so that all "out of storage" errors are resolved by increasing
the database size.
Problem: Problem:
The "postmap lmdb:filename" command fails with an MDB_MAP_FULL error. This The "postmap lmdb:filename" command fails with an MDB_MAP_FULL error. This
problem does not exist with other Postfix databases. problem does not exist with other Postfix databases.

View File

@ -14,6 +14,16 @@ specifies the release date of a stable release or snapshot release.
If you upgrade from Postfix 2.9 or earlier, read RELEASE_NOTES-2.10 If you upgrade from Postfix 2.9 or earlier, read RELEASE_NOTES-2.10
before proceeding. before proceeding.
Major changes with snapshot 20130319
====================================
Postfix support for LMDB databases is withdrawn due to the existence
of a hard limit (an "out of storage" failure mode that cannot be
resolved by increasing the database size).
Postfix may support LMDB again when without exception all "out of
storage" failure modes are resolved by increasing the database size.
Major changes with snapshot 20130315 Major changes with snapshot 20130315
==================================== ====================================

View File

@ -311,14 +311,12 @@ name as used in "hash:table" is the database file name without the
<dd> A non-shared, in-memory hash table. Its content are lost when <dd> A non-shared, in-memory hash table. Its content are lost when
a process terminates. </dd> a process terminates. </dd>
<dt> <b>lmdb</b> </dt> <dt> <b>lmdb</b> (unsupported) </dt>
<dd> The OpenLDAP LMDB database (a memory-mapped, persistent file). <dd> The OpenLDAP LMDB database (a memory-mapped, persistent file).
Database files are created with the <a href="postmap.1.html">postmap(1)</a> or <a href="postalias.1.html">postalias(1)</a> Database files are created with the <a href="postmap.1.html">postmap(1)</a> or <a href="postalias.1.html">postalias(1)</a>
command. The database name as used in "<a href="LMDB_README.html">lmdb</a>:table" is the database command. The database name as used in "<a href="LMDB_README.html">lmdb</a>:table" is the database
file name without the ".lmdb" suffix. This database type has file name without the ".lmdb" suffix.
unexpected limitations and is therefore not part of the stable
Postfix release.
<dt> <b>ldap</b> (read-only) </dt> <dt> <b>ldap</b> (read-only) </dt>

View File

@ -19,6 +19,13 @@
<h2>Introduction</h2> <h2>Introduction</h2>
<dl> <dt> Note: </dt> <dd> <p> Postfix support for LMDB databases
is withdrawn due to the existence of a hard limit (an "out of
storage" failure mode that cannot be resolved by increasing the
database size). </p> <p> Postfix may support LMDB again when without
exception all "out of storage" failure modes are resolved by
increasing the database size. </p> </dd> </dl>
<p> Postfix uses databases of various kinds to store and look up <p> Postfix uses databases of various kinds to store and look up
information. Postfix databases are specified as "type:name". information. Postfix databases are specified as "type:name".
OpenLDAP LMDB implements the Postfix database type "lmdb". OpenLDAP LMDB implements the Postfix database type "lmdb".
@ -120,6 +127,24 @@ errors. </strong></p>
<dl> <dl>
<dt> Problem: </dt> <dd> <p> The "postmap <a href="LMDB_README.html">lmdb</a>:filename" command
fails with an MDB_TXN_FULL error. This problem does not exist with
other Postfix databases. </p> </dd>
<dt> Background: </dt>
<dd>
<p> The LMDB implementation has a hard limit on the total transaction
size. This limit is independent of the LMDB database size. Therefore,
the problem cannot be resolved by increasing the <a href="postconf.5.html#lmdb_map_size">lmdb_map_size</a>
value. </p>
<p> This symptom is indicative of a flawed design. All LMDB data
structures should share the same storage pool so that they can scale
with the database size, and so that all "out of storage" errors are
resolved by increasing the database size. </p> </dd>
<dt> Problem: </dt> <dd> <p> The "postmap <a href="LMDB_README.html">lmdb</a>:filename" command <dt> Problem: </dt> <dd> <p> The "postmap <a href="LMDB_README.html">lmdb</a>:filename" command
fails with an MDB_MAP_FULL error. This problem does not exist with fails with an MDB_MAP_FULL error. This problem does not exist with
other Postfix databases. </p> </dd> other Postfix databases. </p> </dd>

View File

@ -195,8 +195,12 @@ POSTCONF(1) POSTCONF(1)
A non-shared, in-memory hash table. Its con- A non-shared, in-memory hash table. Its con-
tent are lost when a process terminates. tent are lost when a process terminates.
<b>lmdb</b> (unsupported)
The OpenLDAP LMDB database (a memory-mapped,
persistent file).
<b>ldap</b> (read-only) <b>ldap</b> (read-only)
Perform lookups using the LDAP protocol. Perform lookups using the LDAP protocol.
This is described in <a href="ldap_table.5.html"><b>ldap_table</b>(5)</a>. This is described in <a href="ldap_table.5.html"><b>ldap_table</b>(5)</a>.
<b>memcache</b> <b>memcache</b>
@ -204,156 +208,156 @@ POSTCONF(1) POSTCONF(1)
This is described in <a href="memcache_table.5.html"><b>memcache_table</b>(5)</a>. This is described in <a href="memcache_table.5.html"><b>memcache_table</b>(5)</a>.
<b>mysql</b> (read-only) <b>mysql</b> (read-only)
Perform lookups using the MYSQL protocol. Perform lookups using the MYSQL protocol.
This is described in <a href="mysql_table.5.html"><b>mysql_table</b>(5)</a>. This is described in <a href="mysql_table.5.html"><b>mysql_table</b>(5)</a>.
<b>pcre</b> (read-only) <b>pcre</b> (read-only)
A lookup table based on Perl Compatible Reg- A lookup table based on Perl Compatible Reg-
ular Expressions. The file format is ular Expressions. The file format is
described in <a href="pcre_table.5.html"><b>pcre_table</b>(5)</a>. described in <a href="pcre_table.5.html"><b>pcre_table</b>(5)</a>.
<b>pgsql</b> (read-only) <b>pgsql</b> (read-only)
Perform lookups using the PostgreSQL proto- Perform lookups using the PostgreSQL proto-
col. This is described in <a href="pgsql_table.5.html"><b>pgsql_table</b>(5)</a>. col. This is described in <a href="pgsql_table.5.html"><b>pgsql_table</b>(5)</a>.
<b>proxy</b> A lookup table that is implemented via the <b>proxy</b> A lookup table that is implemented via the
Postfix <a href="proxymap.8.html"><b>proxymap</b>(8)</a> service. The table name Postfix <a href="proxymap.8.html"><b>proxymap</b>(8)</a> service. The table name
syntax is <i>type</i><b>:</b><i>name</i>. syntax is <i>type</i><b>:</b><i>name</i>.
<b>regexp</b> (read-only) <b>regexp</b> (read-only)
A lookup table based on regular expressions. A lookup table based on regular expressions.
The file format is described in <a href="regexp_table.5.html"><b>regexp_ta-</b></a> The file format is described in <a href="regexp_table.5.html"><b>regexp_ta-</b></a>
<a href="regexp_table.5.html"><b>ble</b>(5)</a>. <a href="regexp_table.5.html"><b>ble</b>(5)</a>.
<b>sdbm</b> An indexed file type based on hashing. This <b>sdbm</b> An indexed file type based on hashing. This
is available on systems with support for is available on systems with support for
SDBM databases. SDBM databases.
<b>socketmap</b> (read-only) <b>socketmap</b> (read-only)
Query a Sendmail-style socketmap server. The Query a Sendmail-style socketmap server. The
name of the table specifies name of the table specifies
<b>inet</b>:<i>host</i>:<i>port</i>:<i>socketmap-name</i> for a TCP- <b>inet</b>:<i>host</i>:<i>port</i>:<i>socketmap-name</i> for a TCP-
based server, or <b>unix</b>:<i>pathname</i>:<i>socketmap-</i> based server, or <b>unix</b>:<i>pathname</i>:<i>socketmap-</i>
<i>name</i> for a UNIX-domain server. In both <i>name</i> for a UNIX-domain server. In both
cases, <i>socketmap-name</i> is the name of the cases, <i>socketmap-name</i> is the name of the
socketmap. socketmap.
<b>sqlite</b> (read-only) <b>sqlite</b> (read-only)
Perform lookups from SQLite database files. Perform lookups from SQLite database files.
This is described in <a href="sqlite_table.5.html"><b>sqlite_table</b>(5)</a>. This is described in <a href="sqlite_table.5.html"><b>sqlite_table</b>(5)</a>.
<b>static</b> (read-only) <b>static</b> (read-only)
A table that always returns its name as A table that always returns its name as
lookup result. For example, <b><a href="DATABASE_README.html#types">static</a>:foobar</b> lookup result. For example, <b><a href="DATABASE_README.html#types">static</a>:foobar</b>
always returns the string <b>foobar</b> as lookup always returns the string <b>foobar</b> as lookup
result. result.
<b>tcp</b> (read-only) <b>tcp</b> (read-only)
Perform lookups using a simple request-reply Perform lookups using a simple request-reply
protocol that is described in <a href="tcp_table.5.html"><b>tcp_table</b>(5)</a>. protocol that is described in <a href="tcp_table.5.html"><b>tcp_table</b>(5)</a>.
<b>texthash</b> (read-only) <b>texthash</b> (read-only)
Produces similar results as hash: files, Produces similar results as hash: files,
except that you don't need to run the except that you don't need to run the
<a href="postmap.1.html"><b>postmap</b>(1)</a> command before you can use the <a href="postmap.1.html"><b>postmap</b>(1)</a> command before you can use the
file, and that it does not detect changes file, and that it does not detect changes
after the file is read. after the file is read.
<b>unix</b> (read-only) <b>unix</b> (read-only)
A limited way to query the UNIX authentica- A limited way to query the UNIX authentica-
tion database. The following tables are tion database. The following tables are
implemented: implemented:
<b>unix:passwd.byname</b> <b>unix:passwd.byname</b>
The table is the UNIX password data- The table is the UNIX password data-
base. The key is a login name. The base. The key is a login name. The
result is a password file entry in result is a password file entry in
<b>passwd</b>(5) format. <b>passwd</b>(5) format.
<b>unix:group.byname</b> <b>unix:group.byname</b>
The table is the UNIX group database. The table is the UNIX group database.
The key is a group name. The result The key is a group name. The result
is a group file entry in <b>group</b>(5) is a group file entry in <b>group</b>(5)
format. format.
Other table types may exist depending on how Post- Other table types may exist depending on how Post-
fix was built. fix was built.
<b>-M</b> Show <a href="master.5.html"><b>master.cf</b></a> file contents instead of <a href="postconf.5.html"><b>main.cf</b></a> <b>-M</b> Show <a href="master.5.html"><b>master.cf</b></a> file contents instead of <a href="postconf.5.html"><b>main.cf</b></a>
file contents. Specify <b>-Mf</b> to fold long lines for file contents. Specify <b>-Mf</b> to fold long lines for
human readability. human readability.
If <i>service ...</i> is specified, only the matching ser- If <i>service ...</i> is specified, only the matching ser-
vices will be output. For example, "<b>postconf -Mf</b> vices will be output. For example, "<b>postconf -Mf</b>
<b>inet</b>" will output all services that listen on the <b>inet</b>" will output all services that listen on the
network. network.
Specify zero or more arguments, each with a <i>ser-</i> Specify zero or more arguments, each with a <i>ser-</i>
<i>vice-type</i> name (<b>inet</b>, <b>unix</b>, <b>fifo</b>, or <b>pass</b>) or with <i>vice-type</i> name (<b>inet</b>, <b>unix</b>, <b>fifo</b>, or <b>pass</b>) or with
a <i>service-name.service-type</i> pair, where <i>service-</i> a <i>service-name.service-type</i> pair, where <i>service-</i>
<i>name</i> is the first field of a <a href="master.5.html">master.cf</a> entry. <i>name</i> is the first field of a <a href="master.5.html">master.cf</a> entry.
This feature is available with Postfix 2.9 and This feature is available with Postfix 2.9 and
later. later.
<b>-n</b> Show only configuration parameters that have <b>-n</b> Show only configuration parameters that have
explicit <i>name=value</i> settings in <a href="postconf.5.html"><b>main.cf</b></a>. Specify explicit <i>name=value</i> settings in <a href="postconf.5.html"><b>main.cf</b></a>. Specify
<b>-nf</b> to fold long lines for human readability (Post- <b>-nf</b> to fold long lines for human readability (Post-
fix 2.9 and later). fix 2.9 and later).
<b>-o</b> <i>name=value</i> <b>-o</b> <i>name=value</i>
Override <a href="postconf.5.html"><b>main.cf</b></a> parameter settings. Override <a href="postconf.5.html"><b>main.cf</b></a> parameter settings.
This feature is available with Postfix 2.10 and This feature is available with Postfix 2.10 and
later. later.
<b>-t</b> [<i>template</i><b>_</b><i>file</i>] <b>-t</b> [<i>template</i><b>_</b><i>file</i>]
Display the templates for text that appears at the Display the templates for text that appears at the
beginning of delivery status notification (DSN) beginning of delivery status notification (DSN)
messages, without expanding $<b>name</b> expressions. messages, without expanding $<b>name</b> expressions.
To override the built-in templates, specify a tem- To override the built-in templates, specify a tem-
plate file name at the end of the <a href="postconf.1.html"><b>postconf</b>(1)</a> com- plate file name at the end of the <a href="postconf.1.html"><b>postconf</b>(1)</a> com-
mand line, or specify a file name in <a href="postconf.5.html"><b>main.cf</b></a> with mand line, or specify a file name in <a href="postconf.5.html"><b>main.cf</b></a> with
the <b><a href="postconf.5.html#bounce_template_file">bounce_template_file</a></b> parameter. the <b><a href="postconf.5.html#bounce_template_file">bounce_template_file</a></b> parameter.
To force selection of the built-in templates, spec- To force selection of the built-in templates, spec-
ify an empty template file name on the <a href="postconf.1.html"><b>postconf</b>(1)</a> ify an empty template file name on the <a href="postconf.1.html"><b>postconf</b>(1)</a>
command line (in shell language: ""). command line (in shell language: "").
This feature is available with Postfix 2.3 and This feature is available with Postfix 2.3 and
later. later.
<b>-v</b> Enable verbose logging for debugging purposes. Mul- <b>-v</b> Enable verbose logging for debugging purposes. Mul-
tiple <b>-v</b> options make the software increasingly tiple <b>-v</b> options make the software increasingly
verbose. verbose.
<b>-x</b> Expand <i>$name</i> in <a href="postconf.5.html"><b>main.cf</b></a> or <a href="master.5.html"><b>master.cf</b></a> parameter val- <b>-x</b> Expand <i>$name</i> in <a href="postconf.5.html"><b>main.cf</b></a> or <a href="master.5.html"><b>master.cf</b></a> parameter val-
ues. The expansion is recursive. ues. The expansion is recursive.
This feature is available with Postfix 2.10 and This feature is available with Postfix 2.10 and
later. later.
<b>-X</b> Edit the <a href="postconf.5.html"><b>main.cf</b></a> configuration file, and remove the <b>-X</b> Edit the <a href="postconf.5.html"><b>main.cf</b></a> configuration file, and remove the
parameters named on the <a href="postconf.1.html"><b>postconf</b>(1)</a> command line. parameters named on the <a href="postconf.1.html"><b>postconf</b>(1)</a> command line.
The file is copied to a temporary file then renamed The file is copied to a temporary file then renamed
into place. Specify a list of parameter names, not into place. Specify a list of parameter names, not
"<i>name=value</i>" pairs. There is no <a href="postconf.1.html"><b>postconf</b>(1)</a> com- "<i>name=value</i>" pairs. There is no <a href="postconf.1.html"><b>postconf</b>(1)</a> com-
mand to perform the reverse operation. mand to perform the reverse operation.
This feature is available with Postfix 2.10 and This feature is available with Postfix 2.10 and
later. later.
<b>-#</b> Edit the <a href="postconf.5.html"><b>main.cf</b></a> configuration file, and comment <b>-#</b> Edit the <a href="postconf.5.html"><b>main.cf</b></a> configuration file, and comment
out the parameters named on the <a href="postconf.1.html"><b>postconf</b>(1)</a> command out the parameters named on the <a href="postconf.1.html"><b>postconf</b>(1)</a> command
line, so that those parameters revert to their line, so that those parameters revert to their
default values. The file is copied to a temporary default values. The file is copied to a temporary
file then renamed into place. Specify a list of file then renamed into place. Specify a list of
parameter names, not "<i>name=value</i>" pairs. There is parameter names, not "<i>name=value</i>" pairs. There is
no <a href="postconf.1.html"><b>postconf</b>(1)</a> command to perform the reverse oper- no <a href="postconf.1.html"><b>postconf</b>(1)</a> command to perform the reverse oper-
ation. ation.
This feature is available with Postfix 2.6 and This feature is available with Postfix 2.6 and
later. later.
<b>DIAGNOSTICS</b> <b>DIAGNOSTICS</b>
@ -364,18 +368,18 @@ POSTCONF(1) POSTCONF(1)
Directory with Postfix configuration files. Directory with Postfix configuration files.
<b>CONFIGURATION PARAMETERS</b> <b>CONFIGURATION PARAMETERS</b>
The following <a href="postconf.5.html"><b>main.cf</b></a> parameters are especially relevant The following <a href="postconf.5.html"><b>main.cf</b></a> parameters are especially relevant
to this program. to this program.
The text below provides only a parameter summary. See The text below provides only a parameter summary. See
<a href="postconf.5.html"><b>postconf</b>(5)</a> for more details including examples. <a href="postconf.5.html"><b>postconf</b>(5)</a> for more details including examples.
<b><a href="postconf.5.html#config_directory">config_directory</a> (see 'postconf -d' output)</b> <b><a href="postconf.5.html#config_directory">config_directory</a> (see 'postconf -d' output)</b>
The default location of the Postfix <a href="postconf.5.html">main.cf</a> and The default location of the Postfix <a href="postconf.5.html">main.cf</a> and
<a href="master.5.html">master.cf</a> configuration files. <a href="master.5.html">master.cf</a> configuration files.
<b><a href="postconf.5.html#bounce_template_file">bounce_template_file</a> (empty)</b> <b><a href="postconf.5.html#bounce_template_file">bounce_template_file</a> (empty)</b>
Pathname of a configuration file with bounce mes- Pathname of a configuration file with bounce mes-
sage templates. sage templates.
<b>FILES</b> <b>FILES</b>
@ -391,7 +395,7 @@ POSTCONF(1) POSTCONF(1)
<a href="DATABASE_README.html">DATABASE_README</a>, Postfix lookup table overview <a href="DATABASE_README.html">DATABASE_README</a>, Postfix lookup table overview
<b>LICENSE</b> <b>LICENSE</b>
The Secure Mailer license must be distributed with this The Secure Mailer license must be distributed with this
software. software.
<b>AUTHOR(S)</b> <b>AUTHOR(S)</b>

View File

@ -183,6 +183,9 @@ databases.
.IP \fBinternal\fR .IP \fBinternal\fR
A non-shared, in-memory hash table. Its content are lost A non-shared, in-memory hash table. Its content are lost
when a process terminates. when a process terminates.
.IP "\fBlmdb\fR (unsupported)"
The OpenLDAP LMDB database (a memory-mapped, persistent
file).
.IP "\fBldap\fR (read-only)" .IP "\fBldap\fR (read-only)"
Perform lookups using the LDAP protocol. This is described Perform lookups using the LDAP protocol. This is described
in \fBldap_table\fR(5). in \fBldap_table\fR(5).

View File

@ -311,14 +311,12 @@ name as used in "hash:table" is the database file name without the
<dd> A non-shared, in-memory hash table. Its content are lost when <dd> A non-shared, in-memory hash table. Its content are lost when
a process terminates. </dd> a process terminates. </dd>
<dt> <b>lmdb</b> </dt> <dt> <b>lmdb</b> (unsupported) </dt>
<dd> The OpenLDAP LMDB database (a memory-mapped, persistent file). <dd> The OpenLDAP LMDB database (a memory-mapped, persistent file).
Database files are created with the postmap(1) or postalias(1) Database files are created with the postmap(1) or postalias(1)
command. The database name as used in "lmdb:table" is the database command. The database name as used in "lmdb:table" is the database
file name without the ".lmdb" suffix. This database type has file name without the ".lmdb" suffix.
unexpected limitations and is therefore not part of the stable
Postfix release.
<dt> <b>ldap</b> (read-only) </dt> <dt> <b>ldap</b> (read-only) </dt>

View File

@ -19,6 +19,13 @@
<h2>Introduction</h2> <h2>Introduction</h2>
<dl> <dt> Note: </dt> <dd> <p> Postfix support for LMDB databases
is withdrawn due to the existence of a hard limit (an "out of
storage" failure mode that cannot be resolved by increasing the
database size). </p> <p> Postfix may support LMDB again when without
exception all "out of storage" failure modes are resolved by
increasing the database size. </p> </dd> </dl>
<p> Postfix uses databases of various kinds to store and look up <p> Postfix uses databases of various kinds to store and look up
information. Postfix databases are specified as "type:name". information. Postfix databases are specified as "type:name".
OpenLDAP LMDB implements the Postfix database type "lmdb". OpenLDAP LMDB implements the Postfix database type "lmdb".
@ -120,6 +127,24 @@ errors. </strong></p>
<dl> <dl>
<dt> Problem: </dt> <dd> <p> The "postmap lmdb:filename" command
fails with an MDB_TXN_FULL error. This problem does not exist with
other Postfix databases. </p> </dd>
<dt> Background: </dt>
<dd>
<p> The LMDB implementation has a hard limit on the total transaction
size. This limit is independent of the LMDB database size. Therefore,
the problem cannot be resolved by increasing the lmdb_map_size
value. </p>
<p> This symptom is indicative of a flawed design. All LMDB data
structures should share the same storage pool so that they can scale
with the database size, and so that all "out of storage" errors are
resolved by increasing the database size. </p> </dd>
<dt> Problem: </dt> <dd> <p> The "postmap lmdb:filename" command <dt> Problem: </dt> <dd> <p> The "postmap lmdb:filename" command
fails with an MDB_MAP_FULL error. This problem does not exist with fails with an MDB_MAP_FULL error. This problem does not exist with
other Postfix databases. </p> </dd> other Postfix databases. </p> </dd>

View File

@ -177,6 +177,9 @@
/* .IP \fBinternal\fR /* .IP \fBinternal\fR
/* A non-shared, in-memory hash table. Its content are lost /* A non-shared, in-memory hash table. Its content are lost
/* when a process terminates. /* when a process terminates.
/* .IP "\fBlmdb\fR (unsupported)"
/* The OpenLDAP LMDB database (a memory-mapped, persistent
/* file).
/* .IP "\fBldap\fR (read-only)" /* .IP "\fBldap\fR (read-only)"
/* Perform lookups using the LDAP protocol. This is described /* Perform lookups using the LDAP protocol. This is described
/* in \fBldap_table\fR(5). /* in \fBldap_table\fR(5).

View File

@ -22,11 +22,11 @@
/* size the table can grow to, so it must be set large enough /* size the table can grow to, so it must be set large enough
/* to accomodate the largest tables in use. /* to accomodate the largest tables in use.
/* /*
/* As a safety measure, when Postfix opens an LMDB database it /* As a safety measure, when Postfix opens an LMDB database
/* will set the memory size limit to at least 3x the /* it will set the memory map size to at least 3x the ".lmdb"
/* ".lmdb" file size, so that there is room for the file to /* file size, so that there is room for the file to grow. This
/* grow. This ensures continued availability of Postfix daemon /* ensures that a process can recover from a "table full" error
/* processes. /* with a simple terminate-and-restart.
/* DIAGNOSTICS /* DIAGNOSTICS
/* Fatal errors: cannot open file, file write error, out of memory. /* Fatal errors: cannot open file, file write error, out of memory.
/* SEE ALSO /* SEE ALSO
@ -472,11 +472,11 @@ DICT *dict_lmdb_open(const char *path, int open_flags, int dict_flags)
/* /*
* Try to ensure that the LMDB size limit is at least 3x the current LMDB * Try to ensure that the LMDB size limit is at least 3x the current LMDB
* file size. This should be sufficient to ensure that short-lived * file size. This ensures that Postfix daemon processes can recover from
* Postfix daemon processes can recover from a "table full" error. * a "table full" error with a simple terminate-and-restart.
* *
* Note: readers must increase their LMDB size limit, too, otherwise they * Note: read-only applications must increase their LMDB size limit, too,
* won't be able to continue reading a table after grows. * otherwise they won't be able to read a table after it grows.
*/ */
#ifndef SIZE_T_MAX #ifndef SIZE_T_MAX
#define SIZE_T_MAX __MAXINT__(size_t) #define SIZE_T_MAX __MAXINT__(size_t)