2
0
mirror of https://github.com/vdukhovni/postfix synced 2025-08-22 09:57:34 +00:00

postfix-2.11-20130318

This commit is contained in:
Wietse Venema 2013-03-18 00:00:00 -05:00 committed by Viktor Dukhovni
parent c5d32fd76b
commit 8db6af2ac4
6 changed files with 77 additions and 60 deletions

View File

@ -18284,3 +18284,7 @@ Apologies for any names omitted.
When a program opens an LMDB file larger than lmdb_map_size/3, When a program opens an LMDB file larger than lmdb_map_size/3,
it logs a warning and uses a larger size limit instead. it logs a warning and uses a larger size limit instead.
Files: util/dict_lmdb.c, proto/LMDB_README.html. Files: util/dict_lmdb.c, proto/LMDB_README.html.
20130318
Portability: botched #ifdef. File: util/dict_lmdb.c.

View File

@ -75,7 +75,7 @@ MEMCACHE_TABLE(5) MEMCACHE_TABLE(5)
Postfix instance that will be responsible for cache Postfix instance that will be responsible for cache
cleanup. cleanup.
NOTE 2: When different tables share the same mem- NOTE 2: When multiple tables share the same mem-
cache database, each table should use the <b>key_for-</b> cache database, each table should use the <b>key_for-</b>
<b>mat</b> feature (see below) to prepend its own unique <b>mat</b> feature (see below) to prepend its own unique
string to the lookup key. Otherwise, automatic string to the lookup key. Otherwise, automatic
@ -112,18 +112,19 @@ MEMCACHE_TABLE(5) MEMCACHE_TABLE(5)
<b>MEMCACHE KEY PARAMETERS</b> <b>MEMCACHE KEY PARAMETERS</b>
<b>key_format (default: %s)</b> <b>key_format (default: %s)</b>
Format of the lookup and update keys in memcache Format of the lookup and update keys that the Post-
requests. By default, these are the same as the fix memcache client sends to the memcache server.
lookup and update keys that are given to the Post- By default, these are the same as the lookup and
fix memcache client. update keys that the memcache client receives from
Postfix applications.
NOTE 1: The <b>key_format</b> feature is not used for NOTE 1: The <b>key_format</b> feature is not used for
<b>backup</b> database requests. <b>backup</b> database requests.
NOTE 2: When different tables share the same mem- NOTE 2: When multiple tables share the same mem-
cache database, each table should prepend its own cache database, each table should prepend its own
unique string to the lookup key. Otherwise, auto- unique string to the lookup key. Otherwise, auto-
matic <a href="postscreen.8.html"><b>postscreen</b>(8)</a> or <a href="verify.8.html"><b>verify</b>(8)</a> cache cleanup may matic <a href="postscreen.8.html"><b>postscreen</b>(8)</a> or <a href="verify.8.html"><b>verify</b>(8)</a> cache cleanup may
not work. not work.
Examples: Examples:
@ -137,48 +138,48 @@ MEMCACHE_TABLE(5) MEMCACHE_TABLE(5)
<b>%%</b> This is replaced by a literal '%' character. <b>%%</b> This is replaced by a literal '%' character.
<b>%s</b> This is replaced by the memcache client <b>%s</b> This is replaced by the memcache client
input key. input key.
<b>%u</b> When the input key is an address of the form <b>%u</b> When the input key is an address of the form
user@domain, <b>%u</b> is replaced by the SQL user@domain, <b>%u</b> is replaced by the SQL
quoted local part of the address. Other- quoted local part of the address. Other-
wise, <b>%u</b> is replaced by the entire search wise, <b>%u</b> is replaced by the entire search
string. If the localpart is empty, a lookup string. If the localpart is empty, a lookup
is silently suppressed and returns no is silently suppressed and returns no
results (an update is skipped with a warn- results (an update is skipped with a warn-
ing). ing).
<b>%d</b> When the input key is an address of the form <b>%d</b> When the input key is an address of the form
user@domain, <b>%d</b> is replaced by the domain user@domain, <b>%d</b> is replaced by the domain
part of the address. Otherwise, a lookup is part of the address. Otherwise, a lookup is
silently suppressed and returns no results silently suppressed and returns no results
(an update is skipped with a warning). (an update is skipped with a warning).
<b>%[SUD]</b> The upper-case equivalents of the above <b>%[SUD]</b> The upper-case equivalents of the above
expansions behave in the <b>key_format</b> parame- expansions behave in the <b>key_format</b> parame-
ter identically to their lower-case counter- ter identically to their lower-case counter-
parts. parts.
<b>%[1-9]</b> The patterns %1, %2, ... %9 are replaced by <b>%[1-9]</b> The patterns %1, %2, ... %9 are replaced by
the corresponding most significant component the corresponding most significant component
of the input key's domain. If the input key of the input key's domain. If the input key
is <i>user@mail.example.com</i>, then %1 is <b>com</b>, %2 is <i>user@mail.example.com</i>, then %1 is <b>com</b>, %2
is <b>example</b> and %3 is <b>mail</b>. If the input key is <b>example</b> and %3 is <b>mail</b>. If the input key
is unqualified or does not have enough is unqualified or does not have enough
domain components to satisfy all the speci- domain components to satisfy all the speci-
fied patterns, a lookup is silently sup- fied patterns, a lookup is silently sup-
pressed and returns no results (an update is pressed and returns no results (an update is
skipped with a warning). skipped with a warning).
<b>domain (default: no domain list)</b> <b>domain (default: no domain list)</b>
This feature can significantly reduce database This feature can significantly reduce database
server load. Specify a list of domain names, paths server load. Specify a list of domain names, paths
to files, or "<a href="DATABASE_README.html">type:table</a>" databases. When speci- to files, or "<a href="DATABASE_README.html">type:table</a>" databases. When speci-
fied, only fully qualified search keys with a *non- fied, only fully qualified search keys with a *non-
empty* localpart and a matching domain are eligible empty* localpart and a matching domain are eligible
for lookup or update: bare 'user' lookups, bare for lookup or update: bare 'user' lookups, bare
domain lookups and "@domain" lookups are silently domain lookups and "@domain" lookups are silently
skipped (updates are skipped with a warning). skipped (updates are skipped with a warning).
Example: Example:
@ -192,33 +193,33 @@ MEMCACHE_TABLE(5) MEMCACHE_TABLE(5)
The maximal memcache reply line length in bytes. The maximal memcache reply line length in bytes.
<b>max_try (default: 2)</b> <b>max_try (default: 2)</b>
The number of times to try a memcache command The number of times to try a memcache command
before giving up. The memcache client does not before giving up. The memcache client does not
retry a command when the memcache server accepts no retry a command when the memcache server accepts no
connection. connection.
<b>retry_pause (default: 1)</b> <b>retry_pause (default: 1)</b>
The time in seconds before retrying a failed mem- The time in seconds before retrying a failed mem-
cache command. cache command.
<b>timeout (default: 2)</b> <b>timeout (default: 2)</b>
The time limit for sending a memcache command and The time limit for sending a memcache command and
for receiving a memcache reply. for receiving a memcache reply.
<b>BUGS</b> <b>BUGS</b>
The Postfix memcache client cannot be used for security- The Postfix memcache client cannot be used for security-
sensitive tables such as <b><a href="postconf.5.html#alias_maps">alias_maps</a></b> (these may contain sensitive tables such as <b><a href="postconf.5.html#alias_maps">alias_maps</a></b> (these may contain
"<i>|command</i> and "<i>/file/name</i>" destinations), or <b><a href="postconf.5.html#virtual_uid_maps">vir</a>-</b> "<i>|command</i> and "<i>/file/name</i>" destinations), or <b><a href="postconf.5.html#virtual_uid_maps">vir</a>-</b>
<b><a href="postconf.5.html#virtual_uid_maps">tual_uid_maps</a></b>, <b><a href="postconf.5.html#virtual_gid_maps">virtual_gid_maps</a></b> and <b><a href="postconf.5.html#virtual_mailbox_maps">virtual_mailbox_maps</a></b> <b><a href="postconf.5.html#virtual_uid_maps">tual_uid_maps</a></b>, <b><a href="postconf.5.html#virtual_gid_maps">virtual_gid_maps</a></b> and <b><a href="postconf.5.html#virtual_mailbox_maps">virtual_mailbox_maps</a></b>
(these specify UNIX process privileges or "<i>/file/name</i>" (these specify UNIX process privileges or "<i>/file/name</i>"
destinations). In a typical deployment a memcache data- destinations). In a typical deployment a memcache data-
base is writable by any process that can talk to the mem- base is writable by any process that can talk to the mem-
cache server; in contrast, security-sensitive tables must cache server; in contrast, security-sensitive tables must
never be writable by the unprivileged Postfix user. never be writable by the unprivileged Postfix user.
The Postfix memcache client requires additional configura- The Postfix memcache client requires additional configura-
tion when used as <a href="postscreen.8.html"><b>postscreen</b>(8)</a> or <a href="verify.8.html"><b>verify</b>(8)</a> cache. For tion when used as <a href="postscreen.8.html"><b>postscreen</b>(8)</a> or <a href="verify.8.html"><b>verify</b>(8)</a> cache. For
details see the <b>backup</b> and <b>ttl</b> parameter discussions in details see the <b>backup</b> and <b>ttl</b> parameter discussions in
the MEMCACHE MAIN PARAMETERS section above. the MEMCACHE MAIN PARAMETERS section above.
<b>SEE ALSO</b> <b>SEE ALSO</b>
@ -230,11 +231,11 @@ MEMCACHE_TABLE(5) MEMCACHE_TABLE(5)
<a href="MEMCACHE_README.html">MEMCACHE_README</a>, Postfix memcache client guide <a href="MEMCACHE_README.html">MEMCACHE_README</a>, Postfix memcache client guide
<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>HISTORY</b> <b>HISTORY</b>
Memcache support was introduced with Postfix version 2.9. Memcache support was introduced with Postfix version 2.9.
<b>AUTHOR(S)</b> <b>AUTHOR(S)</b>
Wietse Venema Wietse Venema

View File

@ -79,7 +79,7 @@ NOTE 1: When sharing a persistent \fBpostscreen\fR(8) or
*_cache_cleanup_interval = 0) except with one Postfix *_cache_cleanup_interval = 0) except with one Postfix
instance that will be responsible for cache cleanup. instance that will be responsible for cache cleanup.
NOTE 2: When different tables share the same memcache NOTE 2: When multiple tables share the same memcache
database, each table should use the \fBkey_format\fR feature database, each table should use the \fBkey_format\fR feature
(see below) to prepend its own unique string to the lookup (see below) to prepend its own unique string to the lookup
key. Otherwise, automatic \fBpostscreen\fR(8) or \fBverify\fR(8) key. Otherwise, automatic \fBpostscreen\fR(8) or \fBverify\fR(8)
@ -113,14 +113,16 @@ time. Smaller values are relative to the time of the update.
.ad .ad
.fi .fi
.IP "\fBkey_format (default: %s)\fB" .IP "\fBkey_format (default: %s)\fB"
Format of the lookup and update keys in memcache requests. Format of the lookup and update keys that the Postfix
memcache client sends to the memcache server.
By default, these are the same as the lookup and update By default, these are the same as the lookup and update
keys that are given to the Postfix memcache client. keys that the memcache client receives from Postfix
applications.
NOTE 1: The \fBkey_format\fR feature is not used for \fBbackup\fR NOTE 1: The \fBkey_format\fR feature is not used for \fBbackup\fR
database requests. database requests.
NOTE 2: When different tables share the same memcache NOTE 2: When multiple tables share the same memcache
database, each table should prepend its own unique string database, each table should prepend its own unique string
to the lookup key. Otherwise, automatic \fBpostscreen\fR(8) to the lookup key. Otherwise, automatic \fBpostscreen\fR(8)
or \fBverify\fR(8) cache cleanup may not work. or \fBverify\fR(8) cache cleanup may not work.

View File

@ -71,7 +71,7 @@
# *_cache_cleanup_interval = 0) except with one Postfix # *_cache_cleanup_interval = 0) except with one Postfix
# instance that will be responsible for cache cleanup. # instance that will be responsible for cache cleanup.
# #
# NOTE 2: When different tables share the same memcache # NOTE 2: When multiple tables share the same memcache
# database, each table should use the \fBkey_format\fR feature # database, each table should use the \fBkey_format\fR feature
# (see below) to prepend its own unique string to the lookup # (see below) to prepend its own unique string to the lookup
# key. Otherwise, automatic \fBpostscreen\fR(8) or \fBverify\fR(8) # key. Otherwise, automatic \fBpostscreen\fR(8) or \fBverify\fR(8)
@ -103,14 +103,16 @@
# .ad # .ad
# .fi # .fi
# .IP "\fBkey_format (default: %s)\fB" # .IP "\fBkey_format (default: %s)\fB"
# Format of the lookup and update keys in memcache requests. # Format of the lookup and update keys that the Postfix
# memcache client sends to the memcache server.
# By default, these are the same as the lookup and update # By default, these are the same as the lookup and update
# keys that are given to the Postfix memcache client. # keys that the memcache client receives from Postfix
# applications.
# #
# NOTE 1: The \fBkey_format\fR feature is not used for \fBbackup\fR # NOTE 1: The \fBkey_format\fR feature is not used for \fBbackup\fR
# database requests. # database requests.
# #
# NOTE 2: When different tables share the same memcache # NOTE 2: When multiple tables share the same memcache
# database, each table should prepend its own unique string # database, each table should prepend its own unique string
# to the lookup key. Otherwise, automatic \fBpostscreen\fR(8) # to the lookup key. Otherwise, automatic \fBpostscreen\fR(8)
# or \fBverify\fR(8) cache cleanup may not work. # or \fBverify\fR(8) cache cleanup may not work.

View File

@ -20,7 +20,7 @@
* Patches change both the patchlevel and the release date. Snapshots have no * Patches change both the patchlevel and the release date. Snapshots have no
* patchlevel; they change the release date only. * patchlevel; they change the release date only.
*/ */
#define MAIL_RELEASE_DATE "20130317" #define MAIL_RELEASE_DATE "20130318"
#define MAIL_VERSION_NUMBER "2.11" #define MAIL_VERSION_NUMBER "2.11"
#ifdef SNAPSHOT #ifdef SNAPSHOT

View File

@ -471,21 +471,29 @@ DICT *dict_lmdb_open(const char *path, int open_flags, int dict_flags)
msg_fatal("env_create %s: %s", mdb_path, mdb_strerror(status)); msg_fatal("env_create %s: %s", mdb_path, mdb_strerror(status));
/* /*
* For continued availability, try to ensure that the LMDB size limit is * Try to ensure that the LMDB size limit is at least 3x the current LMDB
* at least 3x the current LMDB file size. This should be sufficient for * file size. This should be sufficient to ensure that short-lived
* short-lived Postfix daemon processes. * Postfix daemon processes can recover from a "table full" error.
*
* Note: readers must increase their LMDB size limit, too, otherwise they
* won't be able to continue reading a table after grows.
*/ */
#ifdef SIZE_T_MAX #ifndef SIZE_T_MAX
#define SIZE_T_MAX __MAXINT__(size_t) #define SIZE_T_MAX __MAXINT__(size_t)
#endif #endif
#define LMDB_SIZE_FUDGE_FACTOR 3
if (stat(mdb_path, &st) == 0 && st.st_size >= dict_lmdb_map_size / 2) { if (stat(mdb_path, &st) == 0
msg_warn("%s: file size %lu >= (%s map size limit %ld)/3 -- " && st.st_size >= dict_lmdb_map_size / LMDB_SIZE_FUDGE_FACTOR) {
msg_warn("%s: file size %lu >= (%s map size limit %ld)/%d -- "
"using a larger map size limit", "using a larger map size limit",
mdb_path, (unsigned long) st.st_size, mdb_path, (unsigned long) st.st_size,
DICT_TYPE_LMDB, (long) dict_lmdb_map_size); DICT_TYPE_LMDB, (long) dict_lmdb_map_size,
dict_lmdb_map_size = 3 * st.st_size; LMDB_SIZE_FUDGE_FACTOR);
if (dict_lmdb_map_size / 3 != st.st_size) /* Defense against naive optimizers. */
if (st.st_size < SIZE_T_MAX / LMDB_SIZE_FUDGE_FACTOR)
dict_lmdb_map_size = st.st_size * LMDB_SIZE_FUDGE_FACTOR;
else
dict_lmdb_map_size = SIZE_T_MAX; dict_lmdb_map_size = SIZE_T_MAX;
} }
if ((status = mdb_env_set_mapsize(env, dict_lmdb_map_size))) if ((status = mdb_env_set_mapsize(env, dict_lmdb_map_size)))