Workaround: increased the 5s connection timeout to 30s.
Viktor Dukhovni. File: posttls-finger/posttls-finger.c.
+
+20131121
+
+ Documentation: new socketmap_table(5) and lmdb_table(5)
+ manpages. Files: mantools/postlink, conf/postfix-files,
+ html/Makefile.in, man/Makefile.in, proto/DATABASE_README.html,
+ postconf/postconf.c, proto/socketmap_table, proto/lmdb_table.
(CIDR) patterns. The table format is described in cidr_table(5).
d\bdb\bbm\bm
An indexed file type based on hashing. This is available only on
- systems with support for DBM databases. Database files are created with
- the postmap(1) or postalias(1) command. The lookup table name as used
- in "dbm:table" is the database file name without the ".dir" or ".pag"
- suffix.
+ systems with support for DBM databases. Public database files are
+ created with the postmap(1) or postalias(1) command, and private
+ databases are maintained by Postfix daemons. The lookup table name as
+ used in "dbm:table" is the database file name without the ".dir" or
+ ".pag" suffix.
e\ben\bnv\bvi\bir\bro\bon\bn
The UNIX process environment array. The lookup key is the variable
name. The lookup table name in "environ:table" is ignored.
for logging only. This table exists to simplify Postfix error tests.
h\bha\bas\bsh\bh
An indexed file type based on hashing. This is available only on
- systems with support for Berkeley DB databases. Database files are
- created with the postmap(1) or postalias(1) command. The database name
- as used in "hash:table" is the database file name without the ".db"
- suffix.
+ systems with support for Berkeley DB databases. Public database files
+ are created with the postmap(1) or postalias(1) command, and private
+ databases are maintained by Postfix daemons. The database name as used
+ in "hash:table" is the database file name without the ".db" suffix.
i\bin\bnt\bte\ber\brn\bna\bal\bl
A non-shared, in-memory hash table. Its content are lost when a process
terminates.
- l\blm\bmd\bdb\bb (unsupported)
- The OpenLDAP LMDB database (a memory-mapped, persistent file). Database
- 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
- the ".lmdb" suffix.
+ l\blm\bmd\bdb\bb
+ OpenLDAP LMDB database (a memory-mapped. This is available only on
+ systems with support for LMDB databases. Public database files are
+ created with the postmap(1) or postalias(1) command, and private
+ databases are maintained by Postfix daemons. The database name as used
+ in "lmdb:table" is the database file name without the ".lmdb" suffix.
+ See lmdb_table(5) for details.
l\bld\bda\bap\bp (read-only)
- Perform lookups using the LDAP protocol. Configuration details are
- given in the ldap_table(5).
+ LDAP database client. Configuration details are given in the ldap_table
+ (5).
m\bme\bem\bmc\bca\bac\bch\bhe\be
- Perform memcache database lookups or updates. Configuration details are
- given in memcache_table(5).
+ Memcache database client. Configuration details are given in
+ memcache_table(5).
m\bmy\bys\bsq\bql\bl (read-only)
- Perform MySQL database lookups. Configuration details are given in
- mysql_table(5).
+ MySQL database client. Configuration details are given in mysql_table
+ (5).
n\bne\bet\bti\bin\bnf\bfo\bo (read-only)
- Perform Netinfo database lookups.
+ Netinfo database client.
n\bni\bis\bs (read-only)
- Perform NIS database lookups.
+ NIS database client.
n\bni\bis\bsp\bpl\blu\bus\bs (read-only)
- Perform NIS+ database lookups. Configuration details are given in
- nisplus_table(5).
+ NIS+ database client. Configuration details are given in nisplus_table
+ (5).
p\bpc\bcr\bre\be (read-only)
A lookup table based on Perl Compatible Regular Expressions. The file
format is described in pcre_table(5). The lookup table name as used in
"pcre:table" is the name of the regular expression file.
p\bpg\bgs\bsq\bql\bl (read-only)
- Perform PostgreSQL database lookups. Configuration details are given in
+ PostgreSQL database client. Configuration details are given in
pgsql_table(5).
p\bpr\bro\box\bxy\by
- Access information via the Postfix proxymap(8) service. The lookup
- table name syntax is "proxy:type:table".
+ Postfix proxymap(8) client for shared access to Postfix databases. The
+ lookup table name syntax is "proxy:type:table".
r\bre\beg\bge\bex\bxp\bp (read-only)
A lookup table based on regular expressions. The file format is
described in regexp_table(5). The lookup table name as used in "regexp:
table" is the name of the regular expression file.
s\bsd\bdb\bbm\bm
An indexed file type based on hashing. This is available only on
- systems with support for SDBM databases. Database files are created
- with the postmap(1) or postalias(1) command. The lookup table name as
+ systems with support for SDBM databases. Public database files are
+ created with the postmap(1) or postalias(1) command, and private
+ databases are maintained by Postfix daemons. The lookup table name as
used in "sdbm:table" is the database file name without the ".dir" or
".pag" suffix.
s\bso\boc\bck\bke\bet\btm\bma\bap\bp (read-only)
- Query a Sendmail-style socketmap server. The name of the table
- specifies i\bin\bne\bet\bt:host:port:socketmap-name for a TCP-based server, or
- u\bun\bni\bix\bx:pathname:socketmap-name for a UNIX-domain server. In both cases
- socketmap-name is the name of the socketmap.
+ Sendmail-style socketmap client. The name of the table is either i\bin\bne\bet\bt:
+ host:port:name for a TCP/IP server, or u\bun\bni\bix\bx:pathname:name for a UNIX-
+ domain server. See socketmap_table(5) for details.
s\bsq\bql\bli\bit\bte\be (read-only)
- Perform SQLite database lookups. Configuration details are given in
- sqlite_table(5).
+ SQLite database. Configuration details are given in sqlite_table(5).
s\bst\bta\bat\bti\bic\bc (read-only)
- Always returns its lookup table name as lookup result. For example, the
- lookup table "static:foobar" always returns the string "foobar" as
+ A table that always returns its name as the lookup result. For example,
+ the lookup table "static:foobar" always returns the string "foobar" as
lookup result.
t\btc\bcp\bp
- Access information through a TCP/IP server. The protocol is described
- in tcp_table(5). The lookup table name is "tcp:host:port" where "host"
- specifies a symbolic hostname or a numeric IP address, and "port"
- specifies a symbolic service name or a numeric port number.
+ TCP/IP client. The protocol is described in tcp_table(5). The lookup
+ table name is "tcp:host:port" where "host" specifies a symbolic
+ hostname or a numeric IP address, and "port" specifies a symbolic
+ service name or a numeric port number.
t\bte\bex\bxt\bth\bha\bas\bsh\bh (read-only)
- This produces similar results as hash: files, except that you don't
- have to run the postmap(1) command before you can use the file, and
- that texthash: does not detect changes after the file is read. The
+ A table that produces similar results as hash: files, except that you
+ don't have to run the postmap(1) command before you can use the file,
+ and that texthash: does not detect changes after the file is read. The
lookup table name is "texthash:filename", where the file name is taken
literally; no suffix is appended.
u\bun\bni\bix\bx (read-only)
- A limited way to query the UNIX authentication database. The following
+ A limited view of the UNIX authentication database. The following
tables are implemented:
u\bun\bni\bix\bx:\b:p\bpa\bas\bss\bsw\bwd\bd.\b.b\bby\byn\bna\bam\bme\be
The table is the UNIX password database. The key is a login name.
$manpage_directory/man5/generic.5:f:root:-:644
$manpage_directory/man5/header_checks.5:f:root:-:644
$manpage_directory/man5/ldap_table.5:f:root:-:644
+$manpage_directory/man5/lmdb_table.5:f:root:-:644
$manpage_directory/man5/master.5:f:root:-:644
$manpage_directory/man5/memcache_table.5:f:root:-:644
$manpage_directory/man5/mysql_table.5:f:root:-:644
+$manpage_directory/man5/socketmap_table.5:f:root:-:644
$manpage_directory/man5/sqlite_table.5:f:root:-:644
$manpage_directory/man5/nisplus_table.5:f:root:-:644
$manpage_directory/man5/pcre_table.5:f:root:-:644
<dt> <b>dbm</b> </dt>
<dd> An indexed file type based on hashing. This is available only
-on systems with support for DBM databases. 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 lookup
-table name as used in "dbm:table" is the database file name without
-the ".dir" or ".pag" suffix. </dd>
+on systems with support for DBM databases. Public database files
+are created with the <a href="postmap.1.html">postmap(1)</a> or <a href="postalias.1.html">postalias(1)</a> command, and private
+databases are maintained by Postfix daemons. The lookup table name
+as used in "dbm:table" is the database file name without the ".dir"
+or ".pag" suffix. </dd>
<dt> <b>environ</b> </dt>
<dt> <b>hash</b> </dt>
<dd> An indexed file type based on hashing. This is available only
-on systems with support for Berkeley DB databases. 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
+on systems with support for Berkeley DB databases. Public database
+files are created with the <a href="postmap.1.html">postmap(1)</a> or <a href="postalias.1.html">postalias(1)</a> command, and
+private databases are maintained by Postfix daemons. The database
name as used in "hash:table" is the database file name without the
-".db" suffix. </dd>
+".db" suffix. </dd>
<dt> <b>internal</b> </dt>
<dd> A non-shared, in-memory hash table. Its content are lost when
a process terminates. </dd>
-<dt> <b>lmdb</b> (unsupported) </dt>
+<dt> <b>lmdb</b> </dt>
-<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>
-command. The database name as used in "<a href="LMDB_README.html">lmdb</a>:table" is the database
-file name without the ".lmdb" suffix.
+<dd> OpenLDAP LMDB database (a memory-mapped. This is available
+only on systems with support for LMDB databases. Public database
+files are created with the <a href="postmap.1.html">postmap(1)</a> or <a href="postalias.1.html">postalias(1)</a> command, and
+private databases are maintained by Postfix daemons. The database
+name as used in "<a href="lmdb_table.5.html">lmdb</a>:table" is the database file name without the
+".lmdb" suffix. See <a href="lmdb_table.5.html">lmdb_table(5)</a> for details. </dd>
<dt> <b>ldap</b> (read-only) </dt>
-<dd> Perform lookups using the LDAP protocol. Configuration details
-are given in the <a href="ldap_table.5.html">ldap_table(5)</a>. </dd>
+<dd> LDAP database client. Configuration details are given in the
+<a href="ldap_table.5.html">ldap_table(5)</a>. </dd>
<dt> <b>memcache</b> </dt>
-<dd> Perform memcache database lookups or updates. Configuration
-details are given in <a href="memcache_table.5.html">memcache_table(5)</a>. </dd>
+<dd> Memcache database client. Configuration details are given in
+<a href="memcache_table.5.html">memcache_table(5)</a>. </dd>
<dt> <b>mysql</b> (read-only) </dt>
-<dd> Perform MySQL database lookups. Configuration details are given
-in <a href="mysql_table.5.html">mysql_table(5)</a>. </dd>
+<dd> MySQL database client. Configuration details are given in
+<a href="mysql_table.5.html">mysql_table(5)</a>. </dd>
<dt> <b>netinfo</b> (read-only) </dt>
-<dd> Perform Netinfo database lookups. </dd>
+<dd> Netinfo database client. </dd>
<dt> <b>nis</b> (read-only) </dt>
-<dd> Perform NIS database lookups. </dd>
+<dd> NIS database client. </dd>
<dt> <b>nisplus</b> (read-only) </dt>
-<dd> Perform NIS+ database lookups. Configuration details are given
-in <a href="nisplus_table.5.html">nisplus_table(5)</a>. </dd>
+<dd> NIS+ database client. Configuration details are given in
+<a href="nisplus_table.5.html">nisplus_table(5)</a>. </dd>
<dt> <b>pcre</b> (read-only) </dt>
<dt> <b>pgsql</b> (read-only) </dt>
-<dd> Perform PostgreSQL database lookups. Configuration details
-are given in <a href="pgsql_table.5.html">pgsql_table(5)</a>. </dd>
+<dd> PostgreSQL database client. Configuration details are given
+in <a href="pgsql_table.5.html">pgsql_table(5)</a>. </dd>
<dt> <b>proxy</b> </dt>
-<dd> Access information via the Postfix <a href="proxymap.8.html">proxymap(8)</a> service. The
-lookup table name syntax is "<a href="proxymap.8.html">proxy</a>:<a href="DATABASE_README.html">type:table</a>". </dd>
+<dd> Postfix <a href="proxymap.8.html">proxymap(8)</a> client for shared access to Postfix
+databases. The lookup table name syntax is "<a href="proxymap.8.html">proxy</a>:<a href="DATABASE_README.html">type:table</a>".
+</dd>
<dt> <b>regexp</b> (read-only) </dt>
<dt> <b>sdbm</b> </dt>
<dd> An indexed file type based on hashing. This is available only
-on systems with support for SDBM databases. 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 lookup
-table name as used in "sdbm:table" is the database file name without
-the ".dir" or ".pag" suffix. </dd>
+on systems with support for SDBM databases. Public database files
+are created with the <a href="postmap.1.html">postmap(1)</a> or <a href="postalias.1.html">postalias(1)</a> command, and private
+databases are maintained by Postfix daemons. The lookup table name
+as used in "sdbm:table" is the database file name without the ".dir"
+or ".pag" suffix. </dd>
<dt> <b>socketmap</b> (read-only) </dt>
-<dd> Query a Sendmail-style socketmap server. The name of the table
-specifies <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-name</i> for a UNIX-domain
-server. In both cases <i>socketmap-name</i> is the name of the
-socketmap. </dd>
+<dd> Sendmail-style socketmap client. The name of the table is
+either <b>inet</b>:<i>host</i>:<i>port</i>:<i>name</i> for a TCP/IP
+server, or <b>unix</b>:<i>pathname</i>:<i>name</i> for a UNIX-domain
+server. See <a href="socketmap_table.5.html">socketmap_table(5)</a> for details. </dd>
<dt> <b>sqlite</b> (read-only) </dt>
-<dd> Perform SQLite database lookups. Configuration details are given
-in <a href="sqlite_table.5.html">sqlite_table(5)</a>. </dd>
+<dd> SQLite database. Configuration details are given in <a href="sqlite_table.5.html">sqlite_table(5)</a>.
+</dd>
<dt> <b>static</b> (read-only) </dt>
-<dd> Always returns its lookup table name as lookup result. For
-example, the lookup table "<a href="DATABASE_README.html#types">static</a>:foobar" always returns the string
-"foobar" as lookup result. </dd>
+<dd> A table that always returns its name as the lookup result.
+For example, the lookup table "<a href="DATABASE_README.html#types">static</a>:foobar" always returns the
+string "foobar" as lookup result. </dd>
<dt> <b>tcp</b> </dt>
-<dd> Access information through a TCP/IP server. The protocol is
-described in <a href="tcp_table.5.html">tcp_table(5)</a>. The lookup table name is "<a href="tcp_table.5.html">tcp</a>:host:port"
-where "host" specifies a symbolic hostname or a numeric IP address,
-and "port" specifies a symbolic service name or a numeric port
-number.
-</dd>
+<dd> TCP/IP client. The protocol is described in <a href="tcp_table.5.html">tcp_table(5)</a>. The
+lookup table name is "<a href="tcp_table.5.html">tcp</a>:host:port" where "host" specifies a
+symbolic hostname or a numeric IP address, and "port" specifies a
+symbolic service name or a numeric port number. </dd>
<dt> <b>texthash</b> (read-only) </dt>
-<dd> This produces similar results as hash: files, except that you
-don't have to run the <a href="postmap.1.html">postmap(1)</a> command before you can use the
-file, and that <a href="DATABASE_README.html#types">texthash</a>: does not detect changes after the file is
-read. The lookup table name is "<a href="DATABASE_README.html#types">texthash</a>:filename", where the file
-name is taken literally; no suffix is appended. </dd>
+<dd> A table that produces similar results as hash: files, except
+that you don't have to run the <a href="postmap.1.html">postmap(1)</a> command before you can
+use the file, and that <a href="DATABASE_README.html#types">texthash</a>: does not detect changes after the
+file is read. The lookup table name is "<a href="DATABASE_README.html#types">texthash</a>:filename", where
+the file name is taken literally; no suffix is appended. </dd>
<dt> <b>unix</b> (read-only) </dt>
-<dd> A limited way to query the UNIX authentication database. The
-following tables are implemented:
+<dd> A limited view of the UNIX authentication database. The following
+tables are implemented:
<dl>
<dl>
-<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_table.5.html">lmdb</a>:filename" command
fails with an MDB_TXN_FULL error. This problem does not exist with
other Postfix databases. </p> </dd>
<!--
-<p> Problem: </dt> <dd> <p> The "postmap <a href="LMDB_README.html">lmdb</a>:filename" command
+<p> Problem: </dt> <dd> <p> The "postmap <a href="lmdb_table.5.html">lmdb</a>:filename" command
fails with an MDB_MAP_FULL error. This problem does not exist with
other Postfix databases. </p> </dd>
<p> LMDB databases have a hard size limit (configured with the
<a href="postconf.5.html#lmdb_map_size">lmdb_map_size</a> configuration parameter). </p>
-<p> When executing "postmap <a href="LMDB_README.html">lmdb</a>:filename", the Postfix LMDB database
+<p> When executing "postmap <a href="lmdb_table.5.html">lmdb</a>:filename", the Postfix LMDB database
client stores the new data in a transaction which takes up space
in addition to the existing data, and commits the transaction when
it closes the database. Only then can the space for old data be
it discovers that the LMDB file is larger than <a href="postconf.5.html#lmdb_map_size">lmdb_map_size</a>/3,
logs a warning, and uses a larger LMDB map size limit instead: </p>
-<p> <tt> warning: <i>filename</i>.<a href="LMDB_README.html">lmdb</a>: file size 15024128 ≥
-(lmdb map size limit 16777216)/3<br> warning: <i>filename</i>.<a href="LMDB_README.html">lmdb</a>:
+<p> <tt> warning: <i>filename</i>.<a href="lmdb_table.5.html">lmdb</a>: file size 15024128 ≥
+(lmdb map size limit 16777216)/3<br> warning: <i>filename</i>.<a href="lmdb_table.5.html">lmdb</a>:
using map size limit 45072384</tt> </p>
<p> By repeating the two steps above you can automate recovery and
avoid the need for human intervention. Just repeat "postmap
-<a href="LMDB_README.html">lmdb</a>:filename" (up to some limit). After each failure it will use
+<a href="lmdb_table.5.html">lmdb</a>:filename" (up to some limit). After each failure it will use
a 3x larger size limit, and eventually the "database full" error
should disappear. This fails only when the disk is full or when
the LMDB map size limit would exceed the memory address space size
file larger than <a href="postconf.5.html#lmdb_map_size">lmdb_map_size</a>/3, it logs a warning and uses a
larger size limit instead: </p>
-<p> <tt> warning: <i>filename</i>.<a href="LMDB_README.html">lmdb</a>: file size 15024128 ≥
-(lmdb map size limit 16777216)/3 <br>warning: <i>filename</i>.<a href="LMDB_README.html">lmdb</a>:
+<p> <tt> warning: <i>filename</i>.<a href="lmdb_table.5.html">lmdb</a>: file size 15024128 ≥
+(lmdb map size limit 16777216)/3 <br>warning: <i>filename</i>.<a href="lmdb_table.5.html">lmdb</a>:
using map size limit 45072384</tt> </p>
<p> This can be used to automate recovery and avoid the need for
CONFIG = access.5.html aliases.5.html canonical.5.html relocated.5.html \
transport.5.html virtual.5.html pcre_table.5.html regexp_table.5.html \
cidr_table.5.html tcp_table.5.html header_checks.5.html \
- ldap_table.5.html mysql_table.5.html pgsql_table.5.html \
- memcache_table.5.html \
+ ldap_table.5.html lmdb_table.5.html mysql_table.5.html \
+ pgsql_table.5.html memcache_table.5.html \
master.5.html nisplus_table.5.html generic.5.html bounce.5.html \
- postfix-wrapper.5.html sqlite_table.5.html
+ postfix-wrapper.5.html sqlite_table.5.html socketmap_table.5.html
OTHER = postfix-manuals.html
AWK = awk '{ print; if (NR == 2) print ".pl 9999\n.ll 65" }'
MAN2HTML = man2html -t "Postfix manual - `IFS=.; set \`echo $@\`; echo \"$$1($$2)\"`"
PATH=../mantools:$$PATH; \
srctoman - $? | $(AWK) | $(NROFF) -man | uniq | $(MAN2HTML) | postlink >$@
+lmdb_table.5.html: ../proto/lmdb_table
+ PATH=../mantools:$$PATH; \
+ srctoman - $? | $(AWK) | $(NROFF) -man | uniq | $(MAN2HTML) | postlink >$@
+
master.5.html: ../proto/master
PATH=../mantools:$$PATH; \
srctoman - $? | $(AWK) | $(NROFF) -man | uniq | $(MAN2HTML) | postlink >$@
PATH=../mantools:$$PATH; \
srctoman - $? | $(AWK) | $(NROFF) -man | uniq | $(MAN2HTML) | postlink >$@
+socketmap_table.5.html: ../proto/socketmap_table
+ PATH=../mantools:$$PATH; \
+ srctoman - $? | $(AWK) | $(NROFF) -man | uniq | $(MAN2HTML) | postlink >$@
+
sqlite_table.5.html: ../proto/sqlite_table
PATH=../mantools:$$PATH; \
srctoman - $? | $(AWK) | $(NROFF) -man | uniq | $(MAN2HTML) | postlink >$@
--- /dev/null
+<!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,
+ memory-mapped, key-value store. The database size is lim-
+ ited only by the size of the memory address space and file
+ system.
+
+<b>REQUESTS</b>
+ The LMDB adapter supports all Postfix lookup table opera-
+ tions. This makes LMDB suitable for Postfix address
+ rewriting, routing, access policies, caches, or any infor-
+ mation 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 access, address mapping and routing tables will
+ generate queries with partial keys such as parent domains
+ or networks, and keys without the address extension or
+ domain portion of an email address.
+
+ Unlike other flat-file based Postfix databases, changes to
+ an LMDB database do not require automatic daemon program
+ restart.
+
+<b>RELIABILITY</b>
+ LMDB's copy-on-write architecture achieves reliable
+ 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 curruption due stray pointer bugs.
+
+ The Postfix LMDB adapter implements locking with fcntl(2)
+ locks at whole-file granularity. LMDB's native locking
+ scheme would require world-writable lockfiles and would
+ therefore violate the Postfix security model. Unlike some
+ other Postfix flat-file databases, LMDB databases can
+ safely be updated without serializing requests through the
+ <a href="proxymap.8.html">proxymap(8)</a> service.
+
+<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 com-
+ mand "<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 OpenLDAP 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 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
+
+ LMDB_TABLE(5)
+</pre> </body> </html>
on the lookup table type as described in the <a href="DATABASE_README.html">DATA</a>-
<a href="DATABASE_README.html">BASE_README</a> document.
- <b>btree</b> A sorted, balanced tree structure. This is
- available on systems with support for Berke-
- ley DB databases.
+ <b>btree</b> A sorted, balanced tree structure. Avail-
+ able on systems with support for Berkeley DB
+ databases.
<b>cdb</b> A read-optimized structure with no support
- for incremental updates. This is available
- on systems with support for CDB databases.
+ for incremental updates. Available on sys-
+ tems with support for CDB databases.
<b>cidr</b> A table that associates values with Class-
less Inter-Domain Routing (CIDR) patterns.
This is described in <a href="cidr_table.5.html"><b>cidr_table</b>(5)</a>.
- <b>dbm</b> An indexed file type based on hashing. This
- is available on systems with support for DBM
+ <b>dbm</b> An indexed file type based on hashing.
+ Available on systems with support for DBM
databases.
<b>environ</b>
This table exists to simplify Postfix error
tests.
- <b>hash</b> An indexed file type based on hashing. This
- is available on systems with support for
- Berkeley DB databases.
+ <b>hash</b> An indexed file type based on hashing.
+ Available on systems with support for Berke-
+ ley DB databases.
<b>internal</b>
A non-shared, in-memory hash table. Its con-
tent are lost when a process terminates.
- <b>lmdb</b> (unsupported)
- The OpenLDAP LMDB database (a memory-mapped,
- persistent file).
+ <b>lmdb</b> OpenLDAP LMDB database (a memory-mapped,
+ persistent file). Available on systems with
+ support for LMDB databases. This is
+ described in <a href="lmdb_table.5.html"><b>lmdb_table</b>(5)</a>.
<b>ldap</b> (read-only)
- Perform lookups using the LDAP protocol.
- This is described in <a href="ldap_table.5.html"><b>ldap_table</b>(5)</a>.
+ LDAP database client. This is described in
+ <a href="ldap_table.5.html"><b>ldap_table</b>(5)</a>.
<b>memcache</b>
- Perform lookups using the memcache protocol.
- This is described in <a href="memcache_table.5.html"><b>memcache_table</b>(5)</a>.
+ Memcache database client. This is described
+ in <a href="memcache_table.5.html"><b>memcache_table</b>(5)</a>.
<b>mysql</b> (read-only)
- Perform lookups using the MYSQL protocol.
- This is described in <a href="mysql_table.5.html"><b>mysql_table</b>(5)</a>.
+ MySQL database client. Available on systems
+ with support for MySQL databases. This is
+ described in <a href="mysql_table.5.html"><b>mysql_table</b>(5)</a>.
<b>pcre</b> (read-only)
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>.
<b>pgsql</b> (read-only)
- Perform lookups using the PostgreSQL proto-
- col. This is described in <a href="pgsql_table.5.html"><b>pgsql_table</b>(5)</a>.
+ PostgreSQL database client. 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
- 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>.
+ <b>proxy</b> Postfix <a href="proxymap.8.html"><b>proxymap</b>(8)</a> client for shared access
+ to Postfix databases. The table name syntax
+ is <i>type</i><b>:</b><i>name</i>.
<b>regexp</b> (read-only)
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>.
- <b>sdbm</b> An indexed file type based on hashing. This
- is available on systems with support for
- SDBM databases.
+ <b>sdbm</b> An indexed file type based on hashing.
+ Available on systems with support for SDBM
+ databases.
<b>socketmap</b> (read-only)
- Query a Sendmail-style socketmap server. The
- name of the table specifies
- <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>
- <i>name</i> for a UNIX-domain server. In both
- cases, <i>socketmap-name</i> is the name of the
- socketmap.
+ Sendmail-style socketmap client. The table
+ name is <b>inet</b>:<i>host</i>:<i>port</i>:<i>name</i> for a TCP/IP
+ server, or <b>unix</b>:<i>pathname</i>:<i>name</i> for a UNIX-
+ domain server. This is described in <a href="socketmap_table.5.html"><b>sock-</b></a>
+ <a href="socketmap_table.5.html"><b>etmap_table</b>(5)</a>.
<b>sqlite</b> (read-only)
- Perform lookups from SQLite database files.
- This is described in <a href="sqlite_table.5.html"><b>sqlite_table</b>(5)</a>.
+ SQLite database. This is described in
+ <a href="sqlite_table.5.html"><b>sqlite_table</b>(5)</a>.
<b>static</b> (read-only)
- A table that always returns its name as
- lookup result. For example, <b><a href="DATABASE_README.html#types">static</a>:foobar</b>
- always returns the string <b>foobar</b> as lookup
+ A table that always returns its name as
+ lookup result. For example, <b><a href="DATABASE_README.html#types">static</a>:foobar</b>
+ always returns the string <b>foobar</b> as lookup
result.
<b>tcp</b> (read-only)
- Perform lookups using a simple request-reply
- protocol that is described in <a href="tcp_table.5.html"><b>tcp_table</b>(5)</a>.
+ TCP/IP client. The protocol is described in
+ <a href="tcp_table.5.html"><b>tcp_table</b>(5)</a>.
<b>texthash</b> (read-only)
Produces similar results as hash: files,
after the file is read.
<b>unix</b> (read-only)
- A limited way to query the UNIX authentica-
- tion database. The following tables are
- implemented:
+ A limited view of the UNIX authentication
+ database. The following tables are imple-
+ mented:
<b>unix:passwd.byname</b>
The table is the UNIX password data-
This is enabled by default.
</p>
-<p> Note: with Postfix version 2.2, message header address rewriting
+<p> Note: as of Postfix version 2.2, message header address rewriting
happens only when one of the following conditions is true: </p>
<ul>
<li> <a href="ldap_table.5.html">ldap_table(5)</a>, Postfix LDAP client
+<li> <a href="lmdb_table.5.html">lmdb_table(5)</a>, Postfix LMDB database driver
+
<li> <a href="memcache_table.5.html">memcache_table(5)</a>, Postfix memcache client
<li> <a href="mysql_table.5.html">mysql_table(5)</a>, Postfix MYSQL client
<li> <a href="regexp_table.5.html">regexp_table(5)</a>, Associate POSIX regexp pattern with value
+<li> <a href="socketmap_table.5.html">socketmap_table(5)</a>, Postfix socketmap client
+
<li> <a href="sqlite_table.5.html">sqlite_table(5)</a>, Postfix SQLite database driver
<li> <a href="tcp_table.5.html">tcp_table(5)</a>, Postfix client-server table lookup
Table lookup mechanisms:
<a href="cidr_table.5.html">cidr_table(5)</a>, Associate CIDR pattern with value
<a href="ldap_table.5.html">ldap_table(5)</a>, Postfix LDAP client
+ <a href="lmdb_table.5.html">lmdb_table(5)</a>, Postfix LMDB database driver
<a href="memcache_table.5.html">memcache_table(5)</a>, Postfix memcache client
<a href="mysql_table.5.html">mysql_table(5)</a>, Postfix MYSQL client
<a href="nisplus_table.5.html">nisplus_table(5)</a>, Postfix NIS+ client
<a href="pcre_table.5.html">pcre_table(5)</a>, Associate PCRE pattern with value
<a href="pgsql_table.5.html">pgsql_table(5)</a>, Postfix PostgreSQL client
<a href="regexp_table.5.html">regexp_table(5)</a>, Associate POSIX regexp pattern with value
+ <a href="socketmap_table.5.html">socketmap_table(5)</a>, Postfix socketmap client
<a href="sqlite_table.5.html">sqlite_table(5)</a>, Postfix SQLite database driver
<a href="tcp_table.5.html">tcp_table(5)</a>, Postfix client-server table lookup
--- /dev/null
+<!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 - socketmap_table(5) </title>
+</head> <body> <pre>
+SOCKETMAP_TABLE(5) SOCKETMAP_TABLE(5)
+
+<b>NAME</b>
+ socketmap_table - Postfix socketmap table lookup client
+
+<b>SYNOPSIS</b>
+ <b>postmap -q "</b><i>string</i><b>" <a href="socketmap_table.html">socketmap</a>:inet:</b><i>host</i><b>:</b><i>port</i><b>:</b><i>name</i>
+ <b>postmap -q "</b><i>string</i><b>" <a href="socketmap_table.html">socketmap</a>:unix:</b><i>pathname</i><b>:</b><i>name</i>
+
+ <b>postmap -q - <a href="socketmap_table.html">socketmap</a>:inet:</b><i>host</i><b>:</b><i>port</i><b>:</b><i>name</i> <<i>inputfile</i>
+ <b>postmap -q - <a href="socketmap_table.html">socketmap</a>:unix:</b><i>pathname</i><b>:</b><i>name</i> <<i>inputfile</i>
+
+<b>DESCRIPTION</b>
+ The Postfix mail system uses optional tables for address
+ rewriting. mail routing or policy lookup.
+
+ The Postfix socketmap client expects TCP endpoint names of
+ the form <b>inet:</b><i>host</i><b>:</b><i>port</i><b>:</b><i>name</i>, or UNIX-domain endponts of
+ the form <b>unix:</b><i>pathname</i><b>:</b><i>name</i>. In both cases, <i>name</i> speci-
+ fies the name field in a socketmap client request (see
+ "REQUEST FORMAT" below).
+
+<b>PROTOCOL</b>
+ Socketmaps use a simple protocol: the client sends one
+ request, and the server sends one reply. Each request and
+ reply are sent as one netstring object.
+
+<b>REQUEST FORMAT</b>
+ The socketmap protocol supports only the lookup request.
+ Postfix access, address mapping and routing tables will
+ not generate requests with partial keys such as parent
+ domains or networks, or keys without the address extension
+ or domain portion of an email address.
+
+ <i>name</i> <<b>space</b>> <i>key</i>
+ Search the named socketmap for the specified key.
+
+<b>REPLY FORMAT</b>
+ The Postfix socketmap client requires that replies are not
+ longer than 100000 characters (not including the netstring
+ encapsulation). Replies must have the following form:
+
+ <b>OK</b> <<b>space</b>> <i>data</i>
+ The requested data was found.
+
+ <b>NOTFOUND</b> <<b>space</b>>
+ The requested data was not found.
+
+ <b>TEMP</b> <<b>space</b>> <i>reason</i>
+
+ <b>TIMEOUT</b> <<b>space</b>> <i>reason</i>
+
+ <b>PERM</b> <<b>space</b>> <i>reason</i>
+ The request failed. The reason, if non-empty, is
+ descriptive text.
+
+<b>SECURITY</b>
+ This map cannot be used for security-sensitive information,
+ because neither the connection nor the server are authenticated.
+
+<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 manager
+ <a href="regexp_table.5.html">regexp_table(5)</a>, format of regular expression tables
+ <a href="pcre_table.5.html">pcre_table(5)</a>, format of PCRE tables
+ <a href="cidr_table.5.html">cidr_table(5)</a>, format of CIDR tables
+
+<b>README FILES</b>
+ <a href="DATABASE_README.html">DATABASE_README</a>, Postfix lookup table overview
+
+<b>BUGS</b>
+ The protocol limits are not yet configurable.
+
+<b>LICENSE</b>
+ The Secure Mailer license must be distributed with this
+ software.
+
+<b>AUTHOR(S)</b>
+ Wietse Venema
+ IBM T.J. Watson Research
+ P.O. Box 704
+ Yorktown Heights, NY 10598, USA
+
+ SOCKETMAP_TABLE(5)
+</pre> </body> </html>
CONFIG = man5/access.5 man5/aliases.5 man5/canonical.5 man5/relocated.5 \
man5/transport.5 man5/virtual.5 man5/pcre_table.5 man5/regexp_table.5 \
man5/cidr_table.5 man5/tcp_table.5 man5/header_checks.5 \
- man5/body_checks.5 man5/ldap_table.5 man5/memcache_table.5 \
- man5/mysql_table.5 \
+ man5/body_checks.5 man5/ldap_table.5 man5/lmdb_table.5 \
+ man5/memcache_table.5 man5/mysql_table.5 \
man5/pgsql_table.5 man5/master.5 man5/nisplus_table.5 \
man5/generic.5 man5/bounce.5 man5/postfix-wrapper.5 \
- man5/sqlite_table.5
+ man5/sqlite_table.5 man5/socketmap_table.5
TOOLS = man1/smtp-sink.1 man1/smtp-source.1 man1/qmqp-sink.1 \
man1/qmqp-source.1 man1/qshape.1 man1/posttls-finger.1
man5/ldap_table.5: ../proto/ldap_table
../mantools/srctoman - $? >$@
+man5/lmdb_table.5: ../proto/lmdb_table
+ ../mantools/srctoman - $? >$@
+
man5/master.5: ../proto/master
../mantools/srctoman - $? >$@
man5/mysql_table.5: ../proto/mysql_table
../mantools/srctoman - $? >$@
+man5/socketmap_table.5: ../proto/socketmap_table
+ ../mantools/srctoman - $? >$@
+
man5/sqlite_table.5: ../proto/sqlite_table
../mantools/srctoman - $? >$@
DATABASE_README document.
.RS
.IP \fBbtree\fR
-A sorted, balanced tree structure.
-This is available on systems with support for Berkeley DB
-databases.
+A sorted, balanced tree structure. Available on systems
+with support for Berkeley DB databases.
.IP \fBcdb\fR
-A read-optimized structure with no support for incremental updates.
-This is available on systems with support for CDB databases.
+A read-optimized structure with no support for incremental
+updates. Available on systems with support for CDB databases.
.IP \fBcidr\fR
-A table that associates values with Classless Inter-Domain Routing
-(CIDR) patterns. This is described in \fBcidr_table\fR(5).
+A table that associates values with Classless Inter-Domain
+Routing (CIDR) patterns. This is described in \fBcidr_table\fR(5).
.IP \fBdbm\fR
-An indexed file type based on hashing.
-This is available on systems with support for DBM databases.
+An indexed file type based on hashing. Available on systems
+with support for DBM databases.
.IP \fBenviron\fR
-The UNIX process environment array. The lookup key is the variable
-name. Originally implemented for testing, someone may find this
-useful someday.
+The UNIX process environment array. The lookup key is the
+variable name. Originally implemented for testing, someone
+may find this useful someday.
.IP \fBfail\fR
A table that reliably fails all requests. The lookup table
name is used for logging. This table exists to simplify
Postfix error tests.
.IP \fBhash\fR
-An indexed file type based on hashing.
-This is available on systems with support for Berkeley DB
-databases.
+An indexed file type based on hashing. Available on systems
+with support for Berkeley DB databases.
.IP \fBinternal\fR
A non-shared, in-memory hash table. Its content are lost
when a process terminates.
-.IP "\fBlmdb\fR (unsupported)"
-The OpenLDAP LMDB database (a memory-mapped, persistent
-file).
+.IP "\fBlmdb\fR"
+OpenLDAP LMDB database (a memory-mapped, persistent file).
+Available on systems with support for LMDB databases. This
+is described in \fBlmdb_table\fR(5).
.IP "\fBldap\fR (read-only)"
-Perform lookups using the LDAP protocol. This is described
-in \fBldap_table\fR(5).
+LDAP database client. This is described in \fBldap_table\fR(5).
.IP "\fBmemcache\fR"
-Perform lookups using the memcache protocol. This is described
-in \fBmemcache_table\fR(5).
+Memcache database client. This is described in
+\fBmemcache_table\fR(5).
.IP "\fBmysql\fR (read-only)"
-Perform lookups using the MYSQL protocol. This is described
-in \fBmysql_table\fR(5).
+MySQL database client. Available on systems with support
+for MySQL databases. This is described in \fBmysql_table\fR(5).
.IP "\fBpcre\fR (read-only)"
-A lookup table based on Perl Compatible Regular Expressions. The
-file format is described in \fBpcre_table\fR(5).
+A lookup table based on Perl Compatible Regular Expressions.
+The file format is described in \fBpcre_table\fR(5).
.IP "\fBpgsql\fR (read-only)"
-Perform lookups using the PostgreSQL protocol. This is described
-in \fBpgsql_table\fR(5).
+PostgreSQL database client. This is described in
+\fBpgsql_table\fR(5).
.IP "\fBproxy\fR"
-A lookup table that is implemented via the Postfix
-\fBproxymap\fR(8) service. The table name syntax is
-\fItype\fB:\fIname\fR.
+Postfix \fBproxymap\fR(8) client for shared access to Postfix
+databases. The table name syntax is \fItype\fB:\fIname\fR.
.IP "\fBregexp\fR (read-only)"
-A lookup table based on regular expressions. The file format is
-described in \fBregexp_table\fR(5).
+A lookup table based on regular expressions. The file format
+is described in \fBregexp_table\fR(5).
.IP \fBsdbm\fR
-An indexed file type based on hashing.
-This is available on systems with support for SDBM databases.
+An indexed file type based on hashing. Available on systems
+with support for SDBM databases.
.IP "\fBsocketmap\fR (read-only)"
-Query a Sendmail-style socketmap server. The name of the
-table specifies
-\fBinet\fR:\fIhost\fR:\fIport\fR:\fIsocketmap-name\fR for
-a TCP-based server, or
-\fBunix\fR:\fIpathname\fR:\fIsocketmap-name\fR for a
-UNIX-domain server. In both cases, \fIsocketmap-name\fR is
-the name of the socketmap.
+Sendmail-style socketmap client. The table name is
+\fBinet\fR:\fIhost\fR:\fIport\fR:\fIname\fR for a TCP/IP
+server, or \fBunix\fR:\fIpathname\fR:\fIname\fR for a
+UNIX-domain server. This is described in \fBsocketmap_table\fR(5).
.IP "\fBsqlite\fR (read-only)"
-Perform lookups from SQLite database files. This is described
-in \fBsqlite_table\fR(5).
+SQLite database. This is described in \fBsqlite_table\fR(5).
.IP "\fBstatic\fR (read-only)"
A table that always returns its name as lookup result. For example,
\fBstatic:foobar\fR always returns the string \fBfoobar\fR as lookup
result.
.IP "\fBtcp\fR (read-only)"
-Perform lookups using a simple request-reply protocol that is
-described in \fBtcp_table\fR(5).
+TCP/IP client. The protocol is described in \fBtcp_table\fR(5).
.IP "\fBtexthash\fR (read-only)"
Produces similar results as hash: files, except that you don't
need to run the \fBpostmap\fR(1) command before you can use the file,
and that it does not detect changes after the file is read.
.IP "\fBunix\fR (read-only)"
-A limited way to query the UNIX authentication database. The
+A limited view of the UNIX authentication database. The
following tables are implemented:
.RS
. IP \fBunix:passwd.byname\fR
Table lookup mechanisms:
cidr_table(5), Associate CIDR pattern with value
ldap_table(5), Postfix LDAP client
+lmdb_table(5), Postfix LMDB database driver
memcache_table(5), Postfix memcache client
mysql_table(5), Postfix MYSQL client
nisplus_table(5), Postfix NIS+ client
pcre_table(5), Associate PCRE pattern with value
pgsql_table(5), Postfix PostgreSQL client
regexp_table(5), Associate POSIX regexp pattern with value
+socketmap_table(5), Postfix socketmap client
sqlite_table(5), Postfix SQLite database driver
tcp_table(5), Postfix client-server table lookup
--- /dev/null
+.TH LMDB_TABLE 5
+.ad
+.fi
+.SH NAME
+lmdb_table
+\-
+Postfix LMDB adapter
+.SH "SYNOPSIS"
+.na
+.nf
+\fBpostmap lmdb:/etc/postfix/\fIfilename\fR
+.br
+\fBpostmap -i lmdb:/etc/postfix/\fIfilename\fB <\fIinputfile\fR
+
+\fBpostmap -d "\fIkey\fB" lmdb:/etc/postfix/\fIfilename\fR
+.br
+\fBpostmap -d - lmdb:/etc/postfix/\fIfilename\fB <\fIinputfile\fR
+
+\fBpostmap -q "\fIkey\fB" lmdb:/etc/postfix/\fIfilename\fR
+.br
+\fBpostmap -q - lmdb:/etc/postfix/\fIfilename\fB <\fIinputfile\fR
+.SH DESCRIPTION
+.ad
+.fi
+The Postfix LMDB adapter provides access to a persistent,
+memory-mapped, key-value store. The database size is limited
+only by the size of the memory address space and file system.
+.SH "REQUESTS"
+.na
+.nf
+.ad
+.fi
+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 access, address mapping and routing tables will
+generate queries with partial keys such as parent domains
+or networks, and keys without the address extension or
+domain portion of an email address.
+
+Unlike other flat-file based Postfix databases, changes to
+an LMDB database do not require automatic daemon program
+restart.
+.SH "RELIABILITY"
+.na
+.nf
+.ad
+.fi
+LMDB's copy-on-write architecture achieves reliable 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
+curruption due stray pointer bugs.
+
+The Postfix LMDB adapter implements locking with fcntl(2)
+locks at whole-file granularity. LMDB's native locking
+scheme would require world-writable lockfiles and would
+therefore violate the Postfix security model. Unlike some
+other Postfix flat-file databases, LMDB databases can safely
+be updated without serializing requests through the proxymap(8)
+service.
+.SH "CONFIGURATION PARAMETERS"
+.na
+.nf
+.ad
+.fi
+Short-lived programs automatically pick up changes to
+main.cf. With long-running daemon programs, Use the command
+"\fBpostfix reload\fR" after a configuration change.
+.IP "\fBlmdb_map_size (default: 16777216)\fR"
+The initial OpenLDAP LMDB database size limit in bytes.
+.SH "SEE ALSO"
+.na
+.nf
+postconf(1), Postfix supported lookup tables
+postmap(1), Postfix lookup table maintenance
+postconf(5), configuration parameters
+.SH "README FILES"
+.na
+.nf
+.ad
+.fi
+Use "\fBpostconf readme_directory\fR" or
+"\fBpostconf html_directory\fR" to locate this information.
+.na
+.nf
+DATABASE_README, Postfix lookup table overview
+LMDB_README, Postfix LMDB howto
+.SH "LICENSE"
+.na
+.nf
+.ad
+.fi
+The Secure Mailer license must be distributed with this software.
+.SH "HISTORY"
+.na
+.nf
+LMDB support was introduced with Postfix version 2.11.
+.SH "AUTHOR(S)"
+.na
+.nf
+Howard Chu
+Symas Corporation
+
+Wietse Venema
+IBM T.J. Watson Research
+P.O. Box 704
+Yorktown Heights, NY 10598, USA
Enable the rewriting of the form "user%domain" to "user@domain".
This is enabled by default.
.PP
-Note: with Postfix version 2.2, message header address rewriting
+Note: as of Postfix version 2.2, message header address rewriting
happens only when one of the following conditions is true:
.IP \(bu
The message is received with the Postfix \fBsendmail\fR(1) command,
--- /dev/null
+.TH SOCKETMAP_TABLE 5
+.ad
+.fi
+.SH NAME
+socketmap_table
+\-
+Postfix socketmap table lookup client
+.SH "SYNOPSIS"
+.na
+.nf
+\fBpostmap -q "\fIstring\fB" socketmap:inet:\fIhost\fB:\fIport\fB:\fIname\fR
+.br
+\fBpostmap -q "\fIstring\fB" socketmap:unix:\fIpathname\fB:\fIname\fR
+
+\fBpostmap -q - socketmap:inet:\fIhost\fB:\fIport\fB:\fIname\fB <\fIinputfile\fR
+.br
+\fBpostmap -q - socketmap:unix:\fIpathname\fB:\fIname\fB <\fIinputfile\fR
+.SH DESCRIPTION
+.ad
+.fi
+The Postfix mail system uses optional tables for address
+rewriting. mail routing or policy lookup.
+
+The Postfix socketmap client expects TCP endpoint names of
+the form \fBinet:\fIhost\fB:\fIport\fB:\fIname\fR, or
+UNIX-domain endponts of the form \fBunix:\fIpathname\fB:\fIname\fR.
+In both cases, \fIname\fR specifies the name field in a
+socketmap client request (see "REQUEST FORMAT" below).
+.SH "PROTOCOL"
+.na
+.nf
+.ad
+.fi
+Socketmaps use a simple protocol: the client sends one
+request, and the server sends one reply. Each request and
+reply are sent as one netstring object.
+.SH "REQUEST FORMAT"
+.na
+.nf
+.ad
+.fi
+The socketmap protocol supports only the lookup request.
+Postfix access, address mapping and routing tables will not
+generate requests with partial keys such as parent domains
+or networks, or keys without the address extension or domain
+portion of an email address.
+.IP "\fB\fIname\fB <space> \fIkey\fR"
+Search the named socketmap for the specified key.
+.SH "REPLY FORMAT"
+.na
+.nf
+.ad
+.fi
+The Postfix socketmap client requires that replies are not
+longer than 100000 characters (not including the netstring
+encapsulation). Replies must have the following form:
+.IP "\fBOK <space> \fIdata\fR"
+The requested data was found.
+.IP "\fBNOTFOUND <space>"
+The requested data was not found.
+.IP "\fBTEMP <space> \fIreason\fR"
+.IP "\fBTIMEOUT <space> \fIreason\fR"
+.IP "\fBPERM <space> \fIreason\fR"
+The request failed. The reason, if non-empty, is descriptive
+text.
+.SH "SECURITY"
+.na
+.nf
+This map cannot be used for security-sensitive information,
+because neither the connection nor the server are authenticated.
+.SH "SEE ALSO"
+.na
+.nf
+postconf(1), Postfix supported lookup tables
+postmap(1), Postfix lookup table manager
+regexp_table(5), format of regular expression tables
+pcre_table(5), format of PCRE tables
+cidr_table(5), format of CIDR tables
+.SH "README FILES"
+.na
+.nf
+.ad
+.fi
+Use "\fBpostconf readme_directory\fR" or
+"\fBpostconf html_directory\fR" to locate this information.
+.na
+.nf
+DATABASE_README, Postfix lookup table overview
+.SH BUGS
+.ad
+.fi
+The protocol limits are not yet configurable.
+.SH "LICENSE"
+.na
+.nf
+.ad
+.fi
+The Secure Mailer license must be distributed with this software.
+.SH "AUTHOR(S)"
+.na
+.nf
+Wietse Venema
+IBM T.J. Watson Research
+P.O. Box 704
+Yorktown Heights, NY 10598, USA
s/[<bB>]*canonical[<\/bB>]*\(5\)/<a href="canonical.5.html">$&<\/a>/g;
s/[<bB>]*gener[-<\/bB>]*\n* *[<bB>]*ic[<\/bB>]*\(5\)/<a href="generic.5.html">$&<\/a>/g;
s/[<bB>]*ldap[<\/bBiI>]*_[<\/iIbB>]*ta[-<\/bB>]*\n*[ <bB>]*ble[<\/bB>]*\(5\)/<a href="ldap_table.5.html">$&<\/a>/g;
+ s/[<bB>]*lmdb[<\/bBiI>]*_[<\/iIbB>]*ta[-<\/bB>]*\n*[ <bB>]*ble[<\/bB>]*\(5\)/<a href="lmdb_table.5.html">$&<\/a>/g;
s/[<bB>]*mas[-<\/bB>]*\n* *[<bB>]*ter[<\/bB>]*\(5\)/<a href="master.5.html">$&<\/a>/g;
- s/[<bB>]*memcache[<\/bBiI>]*_[<\/iIbB>]*ta[-<\/bB>]*\n*[ <bB>]*ble[<\/bB>]*\(5\)/<a href="memcache_table.5.html">$&<\/a>/g;
+ s/[<bB>]*mem[-<\/bB>]*\n* *[<bB>]*cache[<\/bBiI>]*_[<\/iIbB>]*ta[-<\/bB>]*\n*[ <bB>]*ble[<\/bB>]*\(5\)/<a href="memcache_table.5.html">$&<\/a>/g;
s/[<bB>]*mysql[<\/bBiI>]*_[<\/iIbB>]*ta[-<\/bB>]*\n*[ <bB>]*ble[<\/bB>]*\(5\)/<a href="mysql_table.5.html">$&<\/a>/g;
s/[<bB>]*nisplus[<\/bBiI>]*_[<\/iIbB>]*ta[-<\/bB>]*\n*[ <bB>]*ble[<\/bB>]*\(5\)/<a href="nisplus_table.5.html">$&<\/a>/g;
s/[<bB>]*pcre[<\/bBiI>]*_[<\/iIbB>]*ta[-<\/bB>]*\n*[ <bB>]*ble[<\/bB>]*\(5\)/<a href="pcre_table.5.html">$&<\/a>/g;
s/[<bB>]*reg[-<\/bB>]*\n*[ <bB>]*exp[<\/bBiI>]*_[<\/iIbB>]*ta[-<\/bB>]*\n*[ <bB>]*ble[<\/bB>]*\(5\)/<a href="regexp_table.5.html">$&<\/a>/g;
s/[<bB>]*relocated[<\/bB>]*\(5\)/<a href="relocated.5.html">$&<\/a>/g;
s/[<bB>]*scache[<\/bB>]*\(8\)/<a href="scache.8.html">$&<\/a>/g;
+ s/[<bB>]*sock[-<\/bB>]*\n*[ <bB>]*etmap[<\/bBiI>]*_[<\/iIbB>]*ta[-<\/bB>]*\n*[ <bB>]*ble[<\/bB>]*\(5\)/<a href="socketmap_table.5.html">$&<\/a>/g;
s/[<bB>]*sqlite[<\/bBiI>]*_[<\/iIbB>]*ta[-<\/bB>]*\n*[ <bB>]*ble[<\/bB>]*\(5\)/<a href="sqlite_table.5.html">$&<\/a>/g;
s/[<bB>]*trans[-<\/bB>]*\n*[ <bB>]*port[<\/bB>]*\(5\)/<a href="transport.5.html">$&<\/a>/g;
s/[<bB>]*ver[-<\/bB>]*\n*[ <bB>]*ify[<\/bB>]*\(8\)/<a href="verify.8.html">$&<\/a>/g;
s/\b(mysql):/<a href="mysql_table.5.html">$1<\/a>:/g;
s/\b(nisplus):/<a href="nisplus_table.5.html">$1<\/a>:/g;
s/\b(ldap):/<a href="ldap_table.5.html">$1<\/a>:/g;
- s/\b(lmdb):/<a href="LMDB_README.html">$1<\/a>:/g;
+ s/\b(lmdb):/<a href="lmdb_table.5.html">$1<\/a>:/g;
s/\b(regexp):/<a href="regexp_table.5.html">$1<\/a>:/g;
+ s/\b(socketmap):/<a href="socketmap_table.html">$1<\/a>:/g;
s/\b(sqlite):/<a href="sqlite_table.5.html">$1<\/a>:/g;
s/\b(static):/<a href="DATABASE_README.html#types">$1<\/a>:/g;
s/\b(tcp):/<a href="tcp_table.5.html">$1<\/a>:/g;
<dt> <b>dbm</b> </dt>
<dd> An indexed file type based on hashing. This is available only
-on systems with support for DBM databases. Database files are
-created with the postmap(1) or postalias(1) command. The lookup
-table name as used in "dbm:table" is the database file name without
-the ".dir" or ".pag" suffix. </dd>
+on systems with support for DBM databases. Public database files
+are created with the postmap(1) or postalias(1) command, and private
+databases are maintained by Postfix daemons. The lookup table name
+as used in "dbm:table" is the database file name without the ".dir"
+or ".pag" suffix. </dd>
<dt> <b>environ</b> </dt>
<dt> <b>hash</b> </dt>
<dd> An indexed file type based on hashing. This is available only
-on systems with support for Berkeley DB databases. Database files are
-created with the postmap(1) or postalias(1) command. The database
+on systems with support for Berkeley DB databases. Public database
+files are created with the postmap(1) or postalias(1) command, and
+private databases are maintained by Postfix daemons. The database
name as used in "hash:table" is the database file name without the
-".db" suffix. </dd>
+".db" suffix. </dd>
<dt> <b>internal</b> </dt>
<dd> A non-shared, in-memory hash table. Its content are lost when
a process terminates. </dd>
-<dt> <b>lmdb</b> (unsupported) </dt>
+<dt> <b>lmdb</b> </dt>
-<dd> The OpenLDAP LMDB database (a memory-mapped, persistent file).
-Database 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 the ".lmdb" suffix.
+<dd> OpenLDAP LMDB database (a memory-mapped. This is available
+only on systems with support for LMDB databases. Public database
+files are created with the postmap(1) or postalias(1) command, and
+private databases are maintained by Postfix daemons. The database
+name as used in "lmdb:table" is the database file name without the
+".lmdb" suffix. See lmdb_table(5) for details. </dd>
<dt> <b>ldap</b> (read-only) </dt>
-<dd> Perform lookups using the LDAP protocol. Configuration details
-are given in the ldap_table(5). </dd>
+<dd> LDAP database client. Configuration details are given in the
+ldap_table(5). </dd>
<dt> <b>memcache</b> </dt>
-<dd> Perform memcache database lookups or updates. Configuration
-details are given in memcache_table(5). </dd>
+<dd> Memcache database client. Configuration details are given in
+memcache_table(5). </dd>
<dt> <b>mysql</b> (read-only) </dt>
-<dd> Perform MySQL database lookups. Configuration details are given
-in mysql_table(5). </dd>
+<dd> MySQL database client. Configuration details are given in
+mysql_table(5). </dd>
<dt> <b>netinfo</b> (read-only) </dt>
-<dd> Perform Netinfo database lookups. </dd>
+<dd> Netinfo database client. </dd>
<dt> <b>nis</b> (read-only) </dt>
-<dd> Perform NIS database lookups. </dd>
+<dd> NIS database client. </dd>
<dt> <b>nisplus</b> (read-only) </dt>
-<dd> Perform NIS+ database lookups. Configuration details are given
-in nisplus_table(5). </dd>
+<dd> NIS+ database client. Configuration details are given in
+nisplus_table(5). </dd>
<dt> <b>pcre</b> (read-only) </dt>
<dt> <b>pgsql</b> (read-only) </dt>
-<dd> Perform PostgreSQL database lookups. Configuration details
-are given in pgsql_table(5). </dd>
+<dd> PostgreSQL database client. Configuration details are given
+in pgsql_table(5). </dd>
<dt> <b>proxy</b> </dt>
-<dd> Access information via the Postfix proxymap(8) service. The
-lookup table name syntax is "proxy:type:table". </dd>
+<dd> Postfix proxymap(8) client for shared access to Postfix
+databases. The lookup table name syntax is "proxy:type:table".
+</dd>
<dt> <b>regexp</b> (read-only) </dt>
<dt> <b>sdbm</b> </dt>
<dd> An indexed file type based on hashing. This is available only
-on systems with support for SDBM databases. Database files are
-created with the postmap(1) or postalias(1) command. The lookup
-table name as used in "sdbm:table" is the database file name without
-the ".dir" or ".pag" suffix. </dd>
+on systems with support for SDBM databases. Public database files
+are created with the postmap(1) or postalias(1) command, and private
+databases are maintained by Postfix daemons. The lookup table name
+as used in "sdbm:table" is the database file name without the ".dir"
+or ".pag" suffix. </dd>
<dt> <b>socketmap</b> (read-only) </dt>
-<dd> Query a Sendmail-style socketmap server. The name of the table
-specifies <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-name</i> for a UNIX-domain
-server. In both cases <i>socketmap-name</i> is the name of the
-socketmap. </dd>
+<dd> Sendmail-style socketmap client. The name of the table is
+either <b>inet</b>:<i>host</i>:<i>port</i>:<i>name</i> for a TCP/IP
+server, or <b>unix</b>:<i>pathname</i>:<i>name</i> for a UNIX-domain
+server. See socketmap_table(5) for details. </dd>
<dt> <b>sqlite</b> (read-only) </dt>
-<dd> Perform SQLite database lookups. Configuration details are given
-in sqlite_table(5). </dd>
+<dd> SQLite database. Configuration details are given in sqlite_table(5).
+</dd>
<dt> <b>static</b> (read-only) </dt>
-<dd> Always returns its lookup table name as lookup result. For
-example, the lookup table "static:foobar" always returns the string
-"foobar" as lookup result. </dd>
+<dd> A table that always returns its name as the lookup result.
+For example, the lookup table "static:foobar" always returns the
+string "foobar" as lookup result. </dd>
<dt> <b>tcp</b> </dt>
-<dd> Access information through a TCP/IP server. The protocol is
-described in tcp_table(5). The lookup table name is "tcp:host:port"
-where "host" specifies a symbolic hostname or a numeric IP address,
-and "port" specifies a symbolic service name or a numeric port
-number.
-</dd>
+<dd> TCP/IP client. The protocol is described in tcp_table(5). The
+lookup table name is "tcp:host:port" where "host" specifies a
+symbolic hostname or a numeric IP address, and "port" specifies a
+symbolic service name or a numeric port number. </dd>
<dt> <b>texthash</b> (read-only) </dt>
-<dd> This produces similar results as hash: files, except that you
-don't have to run the postmap(1) command before you can use the
-file, and that texthash: does not detect changes after the file is
-read. The lookup table name is "texthash:filename", where the file
-name is taken literally; no suffix is appended. </dd>
+<dd> A table that produces similar results as hash: files, except
+that you don't have to run the postmap(1) command before you can
+use the file, and that texthash: does not detect changes after the
+file is read. The lookup table name is "texthash:filename", where
+the file name is taken literally; no suffix is appended. </dd>
<dt> <b>unix</b> (read-only) </dt>
-<dd> A limited way to query the UNIX authentication database. The
-following tables are implemented:
+<dd> A limited view of the UNIX authentication database. The following
+tables are implemented:
<dl>
--- /dev/null
+#++
+# NAME
+# lmdb_table 5
+# SUMMARY
+# Postfix LMDB adapter
+# SYNOPSIS
+# \fBpostmap lmdb:/etc/postfix/\fIfilename\fR
+# .br
+# \fBpostmap -i lmdb:/etc/postfix/\fIfilename\fB <\fIinputfile\fR
+#
+# \fBpostmap -d "\fIkey\fB" lmdb:/etc/postfix/\fIfilename\fR
+# .br
+# \fBpostmap -d - lmdb:/etc/postfix/\fIfilename\fB <\fIinputfile\fR
+#
+# \fBpostmap -q "\fIkey\fB" lmdb:/etc/postfix/\fIfilename\fR
+# .br
+# \fBpostmap -q - lmdb:/etc/postfix/\fIfilename\fB <\fIinputfile\fR
+# DESCRIPTION
+# The Postfix LMDB adapter provides access to a persistent,
+# memory-mapped, key-value store. The database size is limited
+# only by the size of the memory address space and file system.
+# REQUESTS
+# .ad
+# .fi
+# 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 access, address mapping and routing tables will
+# generate queries with partial keys such as parent domains
+# or networks, and keys without the address extension or
+# domain portion of an email address.
+#
+# Unlike other flat-file based Postfix databases, changes to
+# an LMDB database do not require automatic daemon program
+# restart.
+# RELIABILITY
+# .ad
+# .fi
+# LMDB's copy-on-write architecture achieves reliable 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
+# curruption due stray pointer bugs.
+#
+# The Postfix LMDB adapter implements locking with fcntl(2)
+# locks at whole-file granularity. LMDB's native locking
+# scheme would require world-writable lockfiles and would
+# therefore violate the Postfix security model. Unlike some
+# other Postfix flat-file databases, LMDB databases can safely
+# be updated without serializing requests through the proxymap(8)
+# service.
+# CONFIGURATION PARAMETERS
+# .ad
+# .fi
+# Short-lived programs automatically pick up changes to
+# main.cf. With long-running daemon programs, Use the command
+# "\fBpostfix reload\fR" after a configuration change.
+# .IP "\fBlmdb_map_size (default: 16777216)\fR"
+# The initial OpenLDAP LMDB database size limit in bytes.
+# SEE ALSO
+# postconf(1), Postfix supported lookup tables
+# postmap(1), Postfix lookup table maintenance
+# postconf(5), configuration parameters
+# README FILES
+# .ad
+# .fi
+# Use "\fBpostconf readme_directory\fR" or
+# "\fBpostconf html_directory\fR" to locate this information.
+# .na
+# .nf
+# DATABASE_README, Postfix lookup table overview
+# LMDB_README, Postfix LMDB howto
+# LICENSE
+# .ad
+# .fi
+# The Secure Mailer license must be distributed with this software.
+# HISTORY
+# LMDB support was introduced with Postfix version 2.11.
+# AUTHOR(S)
+# Howard Chu
+# Symas Corporation
+#
+# Wietse Venema
+# IBM T.J. Watson Research
+# P.O. Box 704
+# Yorktown Heights, NY 10598, USA
+#--
This is enabled by default.
</p>
-<p> Note: with Postfix version 2.2, message header address rewriting
+<p> Note: as of Postfix version 2.2, message header address rewriting
happens only when one of the following conditions is true: </p>
<ul>
--- /dev/null
+#++
+# NAME
+# socketmap_table 5
+# SUMMARY
+# Postfix socketmap table lookup client
+# SYNOPSIS
+# \fBpostmap -q "\fIstring\fB" socketmap:inet:\fIhost\fB:\fIport\fB:\fIname\fR
+# .br
+# \fBpostmap -q "\fIstring\fB" socketmap:unix:\fIpathname\fB:\fIname\fR
+#
+# \fBpostmap -q - socketmap:inet:\fIhost\fB:\fIport\fB:\fIname\fB <\fIinputfile\fR
+# .br
+# \fBpostmap -q - socketmap:unix:\fIpathname\fB:\fIname\fB <\fIinputfile\fR
+# DESCRIPTION
+# The Postfix mail system uses optional tables for address
+# rewriting. mail routing or policy lookup.
+#
+# The Postfix socketmap client expects TCP endpoint names of
+# the form \fBinet:\fIhost\fB:\fIport\fB:\fIname\fR, or
+# UNIX-domain endponts of the form \fBunix:\fIpathname\fB:\fIname\fR.
+# In both cases, \fIname\fR specifies the name field in a
+# socketmap client request (see "REQUEST FORMAT" below).
+# PROTOCOL
+# .ad
+# .fi
+# Socketmaps use a simple protocol: the client sends one
+# request, and the server sends one reply. Each request and
+# reply are sent as one netstring object.
+# REQUEST FORMAT
+# .ad
+# .fi
+# The socketmap protocol supports only the lookup request.
+# Postfix access, address mapping and routing tables will not
+# generate requests with partial keys such as parent domains
+# or networks, or keys without the address extension or domain
+# portion of an email address.
+# .IP "\fB\fIname\fB <space> \fIkey\fR"
+# Search the named socketmap for the specified key.
+# REPLY FORMAT
+# .ad
+# .fi
+# The Postfix socketmap client requires that replies are not
+# longer than 100000 characters (not including the netstring
+# encapsulation). Replies must have the following form:
+# .IP "\fBOK <space> \fIdata\fR"
+# The requested data was found.
+# .IP "\fBNOTFOUND <space>"
+# The requested data was not found.
+# .IP "\fBTEMP <space> \fIreason\fR"
+# .IP "\fBTIMEOUT <space> \fIreason\fR"
+# .IP "\fBPERM <space> \fIreason\fR"
+# The request failed. The reason, if non-empty, is descriptive
+# text.
+# SECURITY
+# This map cannot be used for security-sensitive information,
+# because neither the connection nor the server are authenticated.
+# SEE ALSO
+# postconf(1), Postfix supported lookup tables
+# postmap(1), Postfix lookup table manager
+# regexp_table(5), format of regular expression tables
+# pcre_table(5), format of PCRE tables
+# cidr_table(5), format of CIDR tables
+# README FILES
+# .ad
+# .fi
+# Use "\fBpostconf readme_directory\fR" or
+# "\fBpostconf html_directory\fR" to locate this information.
+# .na
+# .nf
+# DATABASE_README, Postfix lookup table overview
+# BUGS
+# The protocol limits are not yet configurable.
+# LICENSE
+# .ad
+# .fi
+# The Secure Mailer license must be distributed with this software.
+# AUTHOR(S)
+# Wietse Venema
+# IBM T.J. Watson Research
+# P.O. Box 704
+# Yorktown Heights, NY 10598, USA
+#--
+
* Patches change both the patchlevel and the release date. Snapshots have no
* patchlevel; they change the release date only.
*/
-#define MAIL_RELEASE_DATE "20131120"
+#define MAIL_RELEASE_DATE "20131121"
#define MAIL_VERSION_NUMBER "2.11"
#ifdef SNAPSHOT
struct DICT *dict; /* dict_xx_open() result */
void (*after_open) (struct MKMAP *); /* may be null */
void (*after_close) (struct MKMAP *); /* may be null */
+ int multi_writer; /* multi-writer safe */
} MKMAP;
extern MKMAP *mkmap_open(const char *, const char *, int, int);
/*
* Resume signal delivery.
*/
- sigresume();
+ if (mkmap->multi_writer == 0)
+ sigresume();
/*
* Cleanup.
mkmap->dict->lock_fd = -1; /* XXX just in case */
mkmap->dict->stat_fd = -1; /* XXX just in case */
mkmap->dict->flags |= DICT_FLAG_DUP_WARN;
+ mkmap->multi_writer = (mkmap->dict->flags & DICT_FLAG_MULTI_WRITER);
/*
* Do whatever post-open initialization is needed, such as acquiring a
if (mkmap->after_open)
mkmap->after_open(mkmap);
+ /*
+ * Resume signal delivery if multi-writer safe.
+ */
+ if (mkmap->multi_writer)
+ sigresume();
+
return (mkmap);
}
/* DATABASE_README document.
/* .RS
/* .IP \fBbtree\fR
-/* A sorted, balanced tree structure.
-/* This is available on systems with support for Berkeley DB
-/* databases.
+/* A sorted, balanced tree structure. Available on systems
+/* with support for Berkeley DB databases.
/* .IP \fBcdb\fR
-/* A read-optimized structure with no support for incremental updates.
-/* This is available on systems with support for CDB databases.
+/* A read-optimized structure with no support for incremental
+/* updates. Available on systems with support for CDB databases.
/* .IP \fBcidr\fR
-/* A table that associates values with Classless Inter-Domain Routing
-/* (CIDR) patterns. This is described in \fBcidr_table\fR(5).
+/* A table that associates values with Classless Inter-Domain
+/* Routing (CIDR) patterns. This is described in \fBcidr_table\fR(5).
/* .IP \fBdbm\fR
-/* An indexed file type based on hashing.
-/* This is available on systems with support for DBM databases.
+/* An indexed file type based on hashing. Available on systems
+/* with support for DBM databases.
/* .IP \fBenviron\fR
-/* The UNIX process environment array. The lookup key is the variable
-/* name. Originally implemented for testing, someone may find this
-/* useful someday.
+/* The UNIX process environment array. The lookup key is the
+/* variable name. Originally implemented for testing, someone
+/* may find this useful someday.
/* .IP \fBfail\fR
/* A table that reliably fails all requests. The lookup table
/* name is used for logging. This table exists to simplify
/* Postfix error tests.
/* .IP \fBhash\fR
-/* An indexed file type based on hashing.
-/* This is available on systems with support for Berkeley DB
-/* databases.
+/* An indexed file type based on hashing. Available on systems
+/* with support for Berkeley DB databases.
/* .IP \fBinternal\fR
/* A non-shared, in-memory hash table. Its content are lost
/* when a process terminates.
-/* .IP "\fBlmdb\fR (unsupported)"
-/* The OpenLDAP LMDB database (a memory-mapped, persistent
-/* file).
+/* .IP "\fBlmdb\fR"
+/* OpenLDAP LMDB database (a memory-mapped, persistent file).
+/* Available on systems with support for LMDB databases. This
+/* is described in \fBlmdb_table\fR(5).
/* .IP "\fBldap\fR (read-only)"
-/* Perform lookups using the LDAP protocol. This is described
-/* in \fBldap_table\fR(5).
+/* LDAP database client. This is described in \fBldap_table\fR(5).
/* .IP "\fBmemcache\fR"
-/* Perform lookups using the memcache protocol. This is described
-/* in \fBmemcache_table\fR(5).
+/* Memcache database client. This is described in
+/* \fBmemcache_table\fR(5).
/* .IP "\fBmysql\fR (read-only)"
-/* Perform lookups using the MYSQL protocol. This is described
-/* in \fBmysql_table\fR(5).
+/* MySQL database client. Available on systems with support
+/* for MySQL databases. This is described in \fBmysql_table\fR(5).
/* .IP "\fBpcre\fR (read-only)"
-/* A lookup table based on Perl Compatible Regular Expressions. The
-/* file format is described in \fBpcre_table\fR(5).
+/* A lookup table based on Perl Compatible Regular Expressions.
+/* The file format is described in \fBpcre_table\fR(5).
/* .IP "\fBpgsql\fR (read-only)"
-/* Perform lookups using the PostgreSQL protocol. This is described
-/* in \fBpgsql_table\fR(5).
+/* PostgreSQL database client. This is described in
+/* \fBpgsql_table\fR(5).
/* .IP "\fBproxy\fR"
-/* A lookup table that is implemented via the Postfix
-/* \fBproxymap\fR(8) service. The table name syntax is
-/* \fItype\fB:\fIname\fR.
+/* Postfix \fBproxymap\fR(8) client for shared access to Postfix
+/* databases. The table name syntax is \fItype\fB:\fIname\fR.
/* .IP "\fBregexp\fR (read-only)"
-/* A lookup table based on regular expressions. The file format is
-/* described in \fBregexp_table\fR(5).
+/* A lookup table based on regular expressions. The file format
+/* is described in \fBregexp_table\fR(5).
/* .IP \fBsdbm\fR
-/* An indexed file type based on hashing.
-/* This is available on systems with support for SDBM databases.
+/* An indexed file type based on hashing. Available on systems
+/* with support for SDBM databases.
/* .IP "\fBsocketmap\fR (read-only)"
-/* Query a Sendmail-style socketmap server. The name of the
-/* table specifies
-/* \fBinet\fR:\fIhost\fR:\fIport\fR:\fIsocketmap-name\fR for
-/* a TCP-based server, or
-/* \fBunix\fR:\fIpathname\fR:\fIsocketmap-name\fR for a
-/* UNIX-domain server. In both cases, \fIsocketmap-name\fR is
-/* the name of the socketmap.
+/* Sendmail-style socketmap client. The table name is
+/* \fBinet\fR:\fIhost\fR:\fIport\fR:\fIname\fR for a TCP/IP
+/* server, or \fBunix\fR:\fIpathname\fR:\fIname\fR for a
+/* UNIX-domain server. This is described in \fBsocketmap_table\fR(5).
/* .IP "\fBsqlite\fR (read-only)"
-/* Perform lookups from SQLite database files. This is described
-/* in \fBsqlite_table\fR(5).
+/* SQLite database. This is described in \fBsqlite_table\fR(5).
/* .IP "\fBstatic\fR (read-only)"
/* A table that always returns its name as lookup result. For example,
/* \fBstatic:foobar\fR always returns the string \fBfoobar\fR as lookup
/* result.
/* .IP "\fBtcp\fR (read-only)"
-/* Perform lookups using a simple request-reply protocol that is
-/* described in \fBtcp_table\fR(5).
+/* TCP/IP client. The protocol is described in \fBtcp_table\fR(5).
/* .IP "\fBtexthash\fR (read-only)"
/* Produces similar results as hash: files, except that you don't
/* need to run the \fBpostmap\fR(1) command before you can use the file,
/* and that it does not detect changes after the file is read.
/* .IP "\fBunix\fR (read-only)"
-/* A limited way to query the UNIX authentication database. The
+/* A limited view of the UNIX authentication database. The
/* following tables are implemented:
/* .RS
/*. IP \fBunix:passwd.byname\fR
/* Table lookup mechanisms:
/* cidr_table(5), Associate CIDR pattern with value
/* ldap_table(5), Postfix LDAP client
+/* lmdb_table(5), Postfix LMDB database driver
/* memcache_table(5), Postfix memcache client
/* mysql_table(5), Postfix MYSQL client
/* nisplus_table(5), Postfix NIS+ client
/* pcre_table(5), Associate PCRE pattern with value
/* pgsql_table(5), Postfix PostgreSQL client
/* regexp_table(5), Associate POSIX regexp pattern with value
+/* socketmap_table(5), Postfix socketmap client
/* sqlite_table(5), Postfix SQLite database driver
/* tcp_table(5), Postfix client-server table lookup
/*
smtp_chat.o: ../../include/cleanup_user.h
smtp_chat.o: ../../include/deliver_request.h
smtp_chat.o: ../../include/dict.h
+smtp_chat.o: ../../include/dns.h
smtp_chat.o: ../../include/dsn.h
smtp_chat.o: ../../include/dsn_buf.h
smtp_chat.o: ../../include/dsn_util.h
smtp_chat.o: ../../include/mime_state.h
smtp_chat.o: ../../include/msg.h
smtp_chat.o: ../../include/msg_stats.h
+smtp_chat.o: ../../include/myaddrinfo.h
smtp_chat.o: ../../include/myflock.h
smtp_chat.o: ../../include/mymalloc.h
smtp_chat.o: ../../include/name_code.h
smtp_chat.o: ../../include/resolve_clnt.h
smtp_chat.o: ../../include/scache.h
smtp_chat.o: ../../include/smtp_stream.h
+smtp_chat.o: ../../include/sock_addr.h
smtp_chat.o: ../../include/string_list.h
smtp_chat.o: ../../include/stringops.h
smtp_chat.o: ../../include/sys_defs.h
smtp_key.o: ../../include/base64_code.h
smtp_key.o: ../../include/deliver_request.h
smtp_key.o: ../../include/dict.h
+smtp_key.o: ../../include/dns.h
smtp_key.o: ../../include/dsn.h
smtp_key.o: ../../include/dsn_buf.h
smtp_key.o: ../../include/header_body_checks.h
smtp_key.o: ../../include/mime_state.h
smtp_key.o: ../../include/msg.h
smtp_key.o: ../../include/msg_stats.h
+smtp_key.o: ../../include/myaddrinfo.h
smtp_key.o: ../../include/myflock.h
smtp_key.o: ../../include/name_code.h
smtp_key.o: ../../include/name_mask.h
smtp_key.o: ../../include/recipient_list.h
smtp_key.o: ../../include/resolve_clnt.h
smtp_key.o: ../../include/scache.h
+smtp_key.o: ../../include/sock_addr.h
smtp_key.o: ../../include/string_list.h
smtp_key.o: ../../include/sys_defs.h
smtp_key.o: ../../include/tls.h
smtp_map11.o: ../../include/attr.h
smtp_map11.o: ../../include/deliver_request.h
smtp_map11.o: ../../include/dict.h
+smtp_map11.o: ../../include/dns.h
smtp_map11.o: ../../include/dsn.h
smtp_map11.o: ../../include/dsn_buf.h
smtp_map11.o: ../../include/header_body_checks.h
smtp_map11.o: ../../include/mime_state.h
smtp_map11.o: ../../include/msg.h
smtp_map11.o: ../../include/msg_stats.h
+smtp_map11.o: ../../include/myaddrinfo.h
smtp_map11.o: ../../include/myflock.h
smtp_map11.o: ../../include/name_code.h
smtp_map11.o: ../../include/name_mask.h
smtp_map11.o: ../../include/recipient_list.h
smtp_map11.o: ../../include/resolve_clnt.h
smtp_map11.o: ../../include/scache.h
+smtp_map11.o: ../../include/sock_addr.h
smtp_map11.o: ../../include/string_list.h
smtp_map11.o: ../../include/sys_defs.h
smtp_map11.o: ../../include/tls.h
smtp_proto.o: ../../include/defer.h
smtp_proto.o: ../../include/deliver_request.h
smtp_proto.o: ../../include/dict.h
+smtp_proto.o: ../../include/dns.h
smtp_proto.o: ../../include/dsn.h
smtp_proto.o: ../../include/dsn_buf.h
smtp_proto.o: ../../include/dsn_mask.h
smtp_proto.o: ../../include/mime_state.h
smtp_proto.o: ../../include/msg.h
smtp_proto.o: ../../include/msg_stats.h
+smtp_proto.o: ../../include/myaddrinfo.h
smtp_proto.o: ../../include/myflock.h
smtp_proto.o: ../../include/mymalloc.h
smtp_proto.o: ../../include/name_code.h
smtp_proto.o: ../../include/resolve_clnt.h
smtp_proto.o: ../../include/scache.h
smtp_proto.o: ../../include/smtp_stream.h
+smtp_proto.o: ../../include/sock_addr.h
smtp_proto.o: ../../include/split_at.h
smtp_proto.o: ../../include/string_list.h
smtp_proto.o: ../../include/stringops.h
smtp_rcpt.o: ../../include/deliver_completed.h
smtp_rcpt.o: ../../include/deliver_request.h
smtp_rcpt.o: ../../include/dict.h
+smtp_rcpt.o: ../../include/dns.h
smtp_rcpt.o: ../../include/dsn.h
smtp_rcpt.o: ../../include/dsn_buf.h
smtp_rcpt.o: ../../include/dsn_mask.h
smtp_rcpt.o: ../../include/mime_state.h
smtp_rcpt.o: ../../include/msg.h
smtp_rcpt.o: ../../include/msg_stats.h
+smtp_rcpt.o: ../../include/myaddrinfo.h
smtp_rcpt.o: ../../include/myflock.h
smtp_rcpt.o: ../../include/mymalloc.h
smtp_rcpt.o: ../../include/name_code.h
smtp_rcpt.o: ../../include/resolve_clnt.h
smtp_rcpt.o: ../../include/scache.h
smtp_rcpt.o: ../../include/sent.h
+smtp_rcpt.o: ../../include/sock_addr.h
smtp_rcpt.o: ../../include/string_list.h
smtp_rcpt.o: ../../include/stringops.h
smtp_rcpt.o: ../../include/sys_defs.h
smtp_reuse.o: ../../include/attr.h
smtp_reuse.o: ../../include/deliver_request.h
smtp_reuse.o: ../../include/dict.h
+smtp_reuse.o: ../../include/dns.h
smtp_reuse.o: ../../include/dsn.h
smtp_reuse.o: ../../include/dsn_buf.h
smtp_reuse.o: ../../include/header_body_checks.h
smtp_reuse.o: ../../include/mime_state.h
smtp_reuse.o: ../../include/msg.h
smtp_reuse.o: ../../include/msg_stats.h
+smtp_reuse.o: ../../include/myaddrinfo.h
smtp_reuse.o: ../../include/myflock.h
smtp_reuse.o: ../../include/mymalloc.h
smtp_reuse.o: ../../include/name_code.h
smtp_reuse.o: ../../include/recipient_list.h
smtp_reuse.o: ../../include/resolve_clnt.h
smtp_reuse.o: ../../include/scache.h
+smtp_reuse.o: ../../include/sock_addr.h
smtp_reuse.o: ../../include/string_list.h
smtp_reuse.o: ../../include/stringops.h
smtp_reuse.o: ../../include/sys_defs.h
smtp_sasl_auth_cache.o: ../../include/deliver_request.h
smtp_sasl_auth_cache.o: ../../include/dict.h
smtp_sasl_auth_cache.o: ../../include/dict_proxy.h
+smtp_sasl_auth_cache.o: ../../include/dns.h
smtp_sasl_auth_cache.o: ../../include/dsn.h
smtp_sasl_auth_cache.o: ../../include/dsn_buf.h
smtp_sasl_auth_cache.o: ../../include/dsn_util.h
smtp_sasl_auth_cache.o: ../../include/mime_state.h
smtp_sasl_auth_cache.o: ../../include/msg.h
smtp_sasl_auth_cache.o: ../../include/msg_stats.h
+smtp_sasl_auth_cache.o: ../../include/myaddrinfo.h
smtp_sasl_auth_cache.o: ../../include/myflock.h
smtp_sasl_auth_cache.o: ../../include/mymalloc.h
smtp_sasl_auth_cache.o: ../../include/name_code.h
smtp_sasl_auth_cache.o: ../../include/recipient_list.h
smtp_sasl_auth_cache.o: ../../include/resolve_clnt.h
smtp_sasl_auth_cache.o: ../../include/scache.h
+smtp_sasl_auth_cache.o: ../../include/sock_addr.h
smtp_sasl_auth_cache.o: ../../include/string_list.h
smtp_sasl_auth_cache.o: ../../include/stringops.h
smtp_sasl_auth_cache.o: ../../include/sys_defs.h
smtp_sasl_glue.o: ../../include/attr.h
smtp_sasl_glue.o: ../../include/deliver_request.h
smtp_sasl_glue.o: ../../include/dict.h
+smtp_sasl_glue.o: ../../include/dns.h
smtp_sasl_glue.o: ../../include/dsn.h
smtp_sasl_glue.o: ../../include/dsn_buf.h
smtp_sasl_glue.o: ../../include/header_body_checks.h
smtp_sasl_glue.o: ../../include/mime_state.h
smtp_sasl_glue.o: ../../include/msg.h
smtp_sasl_glue.o: ../../include/msg_stats.h
+smtp_sasl_glue.o: ../../include/myaddrinfo.h
smtp_sasl_glue.o: ../../include/myflock.h
smtp_sasl_glue.o: ../../include/mymalloc.h
smtp_sasl_glue.o: ../../include/name_code.h
smtp_sasl_glue.o: ../../include/resolve_clnt.h
smtp_sasl_glue.o: ../../include/scache.h
smtp_sasl_glue.o: ../../include/smtp_stream.h
+smtp_sasl_glue.o: ../../include/sock_addr.h
smtp_sasl_glue.o: ../../include/split_at.h
smtp_sasl_glue.o: ../../include/string_list.h
smtp_sasl_glue.o: ../../include/stringops.h
smtp_sasl_proto.o: ../../include/attr.h
smtp_sasl_proto.o: ../../include/deliver_request.h
smtp_sasl_proto.o: ../../include/dict.h
+smtp_sasl_proto.o: ../../include/dns.h
smtp_sasl_proto.o: ../../include/dsn.h
smtp_sasl_proto.o: ../../include/dsn_buf.h
smtp_sasl_proto.o: ../../include/header_body_checks.h
smtp_sasl_proto.o: ../../include/mime_state.h
smtp_sasl_proto.o: ../../include/msg.h
smtp_sasl_proto.o: ../../include/msg_stats.h
+smtp_sasl_proto.o: ../../include/myaddrinfo.h
smtp_sasl_proto.o: ../../include/myflock.h
smtp_sasl_proto.o: ../../include/mymalloc.h
smtp_sasl_proto.o: ../../include/name_code.h
smtp_sasl_proto.o: ../../include/recipient_list.h
smtp_sasl_proto.o: ../../include/resolve_clnt.h
smtp_sasl_proto.o: ../../include/scache.h
+smtp_sasl_proto.o: ../../include/sock_addr.h
smtp_sasl_proto.o: ../../include/string_list.h
smtp_sasl_proto.o: ../../include/stringops.h
smtp_sasl_proto.o: ../../include/sys_defs.h
smtp_session.o: ../../include/debug_peer.h
smtp_session.o: ../../include/deliver_request.h
smtp_session.o: ../../include/dict.h
+smtp_session.o: ../../include/dns.h
smtp_session.o: ../../include/dsn.h
smtp_session.o: ../../include/dsn_buf.h
smtp_session.o: ../../include/header_body_checks.h
smtp_session.o: ../../include/mime_state.h
smtp_session.o: ../../include/msg.h
smtp_session.o: ../../include/msg_stats.h
+smtp_session.o: ../../include/myaddrinfo.h
smtp_session.o: ../../include/myflock.h
smtp_session.o: ../../include/mymalloc.h
smtp_session.o: ../../include/name_code.h
smtp_session.o: ../../include/recipient_list.h
smtp_session.o: ../../include/resolve_clnt.h
smtp_session.o: ../../include/scache.h
+smtp_session.o: ../../include/sock_addr.h
smtp_session.o: ../../include/string_list.h
smtp_session.o: ../../include/stringops.h
smtp_session.o: ../../include/sys_defs.h
smtp_state.o: ../../include/attr.h
smtp_state.o: ../../include/deliver_request.h
smtp_state.o: ../../include/dict.h
+smtp_state.o: ../../include/dns.h
smtp_state.o: ../../include/dsn.h
smtp_state.o: ../../include/dsn_buf.h
smtp_state.o: ../../include/header_body_checks.h
smtp_state.o: ../../include/mime_state.h
smtp_state.o: ../../include/msg.h
smtp_state.o: ../../include/msg_stats.h
+smtp_state.o: ../../include/myaddrinfo.h
smtp_state.o: ../../include/myflock.h
smtp_state.o: ../../include/mymalloc.h
smtp_state.o: ../../include/name_code.h
smtp_state.o: ../../include/recipient_list.h
smtp_state.o: ../../include/resolve_clnt.h
smtp_state.o: ../../include/scache.h
+smtp_state.o: ../../include/sock_addr.h
smtp_state.o: ../../include/string_list.h
smtp_state.o: ../../include/sys_defs.h
smtp_state.o: ../../include/tls.h
smtp_trouble.o: ../../include/deliver_completed.h
smtp_trouble.o: ../../include/deliver_request.h
smtp_trouble.o: ../../include/dict.h
+smtp_trouble.o: ../../include/dns.h
smtp_trouble.o: ../../include/dsn.h
smtp_trouble.o: ../../include/dsn_buf.h
smtp_trouble.o: ../../include/header_body_checks.h
smtp_trouble.o: ../../include/mime_state.h
smtp_trouble.o: ../../include/msg.h
smtp_trouble.o: ../../include/msg_stats.h
+smtp_trouble.o: ../../include/myaddrinfo.h
smtp_trouble.o: ../../include/myflock.h
smtp_trouble.o: ../../include/name_code.h
smtp_trouble.o: ../../include/name_mask.h
smtp_trouble.o: ../../include/resolve_clnt.h
smtp_trouble.o: ../../include/scache.h
smtp_trouble.o: ../../include/smtp_stream.h
+smtp_trouble.o: ../../include/sock_addr.h
smtp_trouble.o: ../../include/string_list.h
smtp_trouble.o: ../../include/stringops.h
smtp_trouble.o: ../../include/sys_defs.h
smtpd.o: ../../include/cleanup_user.h
smtpd.o: ../../include/debug_peer.h
smtpd.o: ../../include/dict.h
+smtpd.o: ../../include/dns.h
smtpd.o: ../../include/dsn_mask.h
smtpd.o: ../../include/ehlo_mask.h
smtpd.o: ../../include/events.h
smtpd.o: ../../include/record.h
smtpd.o: ../../include/resolve_clnt.h
smtpd.o: ../../include/smtp_stream.h
+smtpd.o: ../../include/sock_addr.h
smtpd.o: ../../include/split_at.h
smtpd.o: ../../include/string_list.h
smtpd.o: ../../include/stringops.h
smtpd_chat.o: ../../include/argv.h
smtpd_chat.o: ../../include/attr.h
smtpd_chat.o: ../../include/cleanup_user.h
+smtpd_chat.o: ../../include/dns.h
smtpd_chat.o: ../../include/int_filt.h
smtpd_chat.o: ../../include/iostuff.h
smtpd_chat.o: ../../include/line_wrap.h
smtpd_chat.o: ../../include/record.h
smtpd_chat.o: ../../include/smtp_reply_footer.h
smtpd_chat.o: ../../include/smtp_stream.h
+smtpd_chat.o: ../../include/sock_addr.h
smtpd_chat.o: ../../include/stringops.h
smtpd_chat.o: ../../include/sys_defs.h
smtpd_chat.o: ../../include/tls.h
smtpd_dsn_fix.o: smtpd_dsn_fix.h
smtpd_expand.o: ../../include/argv.h
smtpd_expand.o: ../../include/attr.h
+smtpd_expand.o: ../../include/dns.h
smtpd_expand.o: ../../include/iostuff.h
smtpd_expand.o: ../../include/mac_expand.h
smtpd_expand.o: ../../include/mac_parse.h
smtpd_expand.o: ../../include/myaddrinfo.h
smtpd_expand.o: ../../include/name_code.h
smtpd_expand.o: ../../include/name_mask.h
+smtpd_expand.o: ../../include/sock_addr.h
smtpd_expand.o: ../../include/stringops.h
smtpd_expand.o: ../../include/sys_defs.h
smtpd_expand.o: ../../include/tls.h
smtpd_expand.o: smtpd_expand.h
smtpd_haproxy.o: ../../include/argv.h
smtpd_haproxy.o: ../../include/attr.h
+smtpd_haproxy.o: ../../include/dns.h
smtpd_haproxy.o: ../../include/haproxy_srvr.h
smtpd_haproxy.o: ../../include/mail_params.h
smtpd_haproxy.o: ../../include/mail_stream.h
smtpd_haproxy.o: ../../include/name_code.h
smtpd_haproxy.o: ../../include/name_mask.h
smtpd_haproxy.o: ../../include/smtp_stream.h
+smtpd_haproxy.o: ../../include/sock_addr.h
smtpd_haproxy.o: ../../include/stringops.h
smtpd_haproxy.o: ../../include/sys_defs.h
smtpd_haproxy.o: ../../include/tls.h
smtpd_haproxy.o: smtpd_haproxy.c
smtpd_milter.o: ../../include/argv.h
smtpd_milter.o: ../../include/attr.h
+smtpd_milter.o: ../../include/dns.h
smtpd_milter.o: ../../include/mail_params.h
smtpd_milter.o: ../../include/mail_stream.h
smtpd_milter.o: ../../include/milter.h
smtpd_milter.o: ../../include/quote_821_local.h
smtpd_milter.o: ../../include/quote_flags.h
smtpd_milter.o: ../../include/resolve_clnt.h
+smtpd_milter.o: ../../include/sock_addr.h
smtpd_milter.o: ../../include/split_at.h
smtpd_milter.o: ../../include/sys_defs.h
smtpd_milter.o: ../../include/tls.h
smtpd_milter.o: smtpd_sasl_glue.h
smtpd_peer.o: ../../include/argv.h
smtpd_peer.o: ../../include/attr.h
+smtpd_peer.o: ../../include/dns.h
smtpd_peer.o: ../../include/haproxy_srvr.h
smtpd_peer.o: ../../include/htable.h
smtpd_peer.o: ../../include/inet_proto.h
smtpd_proxy.o: ../../include/attr.h
smtpd_proxy.o: ../../include/cleanup_user.h
smtpd_proxy.o: ../../include/connect.h
+smtpd_proxy.o: ../../include/dns.h
smtpd_proxy.o: ../../include/iostuff.h
smtpd_proxy.o: ../../include/mail_error.h
smtpd_proxy.o: ../../include/mail_params.h
smtpd_proxy.o: ../../include/rec_type.h
smtpd_proxy.o: ../../include/record.h
smtpd_proxy.o: ../../include/smtp_stream.h
+smtpd_proxy.o: ../../include/sock_addr.h
smtpd_proxy.o: ../../include/stringops.h
smtpd_proxy.o: ../../include/sys_defs.h
smtpd_proxy.o: ../../include/tls.h
smtpd_resolve.o: smtpd_resolve.h
smtpd_sasl_glue.o: ../../include/argv.h
smtpd_sasl_glue.o: ../../include/attr.h
+smtpd_sasl_glue.o: ../../include/dns.h
smtpd_sasl_glue.o: ../../include/mail_params.h
smtpd_sasl_glue.o: ../../include/mail_stream.h
smtpd_sasl_glue.o: ../../include/milter.h
smtpd_sasl_glue.o: ../../include/mymalloc.h
smtpd_sasl_glue.o: ../../include/name_code.h
smtpd_sasl_glue.o: ../../include/name_mask.h
+smtpd_sasl_glue.o: ../../include/sock_addr.h
smtpd_sasl_glue.o: ../../include/stringops.h
smtpd_sasl_glue.o: ../../include/sys_defs.h
smtpd_sasl_glue.o: ../../include/tls.h
smtpd_sasl_glue.o: smtpd_sasl_glue.h
smtpd_sasl_proto.o: ../../include/argv.h
smtpd_sasl_proto.o: ../../include/attr.h
+smtpd_sasl_proto.o: ../../include/dns.h
smtpd_sasl_proto.o: ../../include/ehlo_mask.h
smtpd_sasl_proto.o: ../../include/iostuff.h
smtpd_sasl_proto.o: ../../include/mail_error.h
smtpd_sasl_proto.o: ../../include/mymalloc.h
smtpd_sasl_proto.o: ../../include/name_code.h
smtpd_sasl_proto.o: ../../include/name_mask.h
+smtpd_sasl_proto.o: ../../include/sock_addr.h
smtpd_sasl_proto.o: ../../include/stringops.h
smtpd_sasl_proto.o: ../../include/sys_defs.h
smtpd_sasl_proto.o: ../../include/tls.h
smtpd_state.o: ../../include/argv.h
smtpd_state.o: ../../include/attr.h
smtpd_state.o: ../../include/cleanup_user.h
+smtpd_state.o: ../../include/dns.h
smtpd_state.o: ../../include/events.h
smtpd_state.o: ../../include/iostuff.h
smtpd_state.o: ../../include/mail_error.h
smtpd_state.o: ../../include/mymalloc.h
smtpd_state.o: ../../include/name_code.h
smtpd_state.o: ../../include/name_mask.h
+smtpd_state.o: ../../include/sock_addr.h
smtpd_state.o: ../../include/sys_defs.h
smtpd_state.o: ../../include/tls.h
smtpd_state.o: ../../include/vbuf.h
smtpd_token.o: smtpd_token.h
smtpd_xforward.o: ../../include/argv.h
smtpd_xforward.o: ../../include/attr.h
+smtpd_xforward.o: ../../include/dns.h
smtpd_xforward.o: ../../include/iostuff.h
smtpd_xforward.o: ../../include/mail_proto.h
smtpd_xforward.o: ../../include/mail_stream.h
smtpd_xforward.o: ../../include/mymalloc.h
smtpd_xforward.o: ../../include/name_code.h
smtpd_xforward.o: ../../include/name_mask.h
+smtpd_xforward.o: ../../include/sock_addr.h
smtpd_xforward.o: ../../include/sys_defs.h
smtpd_xforward.o: ../../include/tls.h
smtpd_xforward.o: ../../include/vbuf.h
# do not edit below this line - it is generated by 'make depend'
tls_bio_ops.o: ../../include/argv.h
+tls_bio_ops.o: ../../include/dns.h
tls_bio_ops.o: ../../include/iostuff.h
tls_bio_ops.o: ../../include/msg.h
+tls_bio_ops.o: ../../include/myaddrinfo.h
tls_bio_ops.o: ../../include/name_code.h
tls_bio_ops.o: ../../include/name_mask.h
+tls_bio_ops.o: ../../include/sock_addr.h
tls_bio_ops.o: ../../include/sys_defs.h
tls_bio_ops.o: ../../include/vbuf.h
tls_bio_ops.o: ../../include/vstream.h
tls_bio_ops.o: tls.h
tls_bio_ops.o: tls_bio_ops.c
tls_certkey.o: ../../include/argv.h
+tls_certkey.o: ../../include/dns.h
tls_certkey.o: ../../include/mail_params.h
tls_certkey.o: ../../include/msg.h
+tls_certkey.o: ../../include/myaddrinfo.h
tls_certkey.o: ../../include/name_code.h
tls_certkey.o: ../../include/name_mask.h
+tls_certkey.o: ../../include/sock_addr.h
tls_certkey.o: ../../include/sys_defs.h
tls_certkey.o: ../../include/vbuf.h
tls_certkey.o: ../../include/vstream.h
tls_certkey.o: tls_certkey.c
tls_client.o: ../../include/argv.h
tls_client.o: ../../include/dict.h
+tls_client.o: ../../include/dns.h
tls_client.o: ../../include/iostuff.h
tls_client.o: ../../include/mail_params.h
tls_client.o: ../../include/msg.h
+tls_client.o: ../../include/myaddrinfo.h
tls_client.o: ../../include/myflock.h
tls_client.o: ../../include/mymalloc.h
tls_client.o: ../../include/name_code.h
tls_client.o: ../../include/name_mask.h
+tls_client.o: ../../include/sock_addr.h
tls_client.o: ../../include/stringops.h
tls_client.o: ../../include/sys_defs.h
tls_client.o: ../../include/vbuf.h
tls_dane.o: tls.h
tls_dane.o: tls_dane.c
tls_dh.o: ../../include/argv.h
+tls_dh.o: ../../include/dns.h
tls_dh.o: ../../include/mail_params.h
tls_dh.o: ../../include/msg.h
+tls_dh.o: ../../include/myaddrinfo.h
tls_dh.o: ../../include/name_code.h
tls_dh.o: ../../include/name_mask.h
+tls_dh.o: ../../include/sock_addr.h
tls_dh.o: ../../include/sys_defs.h
tls_dh.o: ../../include/vbuf.h
tls_dh.o: ../../include/vstream.h
tls_dh.o: tls.h
tls_dh.o: tls_dh.c
tls_fprint.o: ../../include/argv.h
+tls_fprint.o: ../../include/dns.h
tls_fprint.o: ../../include/mail_params.h
tls_fprint.o: ../../include/msg.h
+tls_fprint.o: ../../include/myaddrinfo.h
tls_fprint.o: ../../include/mymalloc.h
tls_fprint.o: ../../include/name_code.h
tls_fprint.o: ../../include/name_mask.h
+tls_fprint.o: ../../include/sock_addr.h
tls_fprint.o: ../../include/stringops.h
tls_fprint.o: ../../include/sys_defs.h
tls_fprint.o: ../../include/vbuf.h
tls_fprint.o: tls.h
tls_fprint.o: tls_fprint.c
tls_level.o: ../../include/argv.h
+tls_level.o: ../../include/dns.h
+tls_level.o: ../../include/myaddrinfo.h
tls_level.o: ../../include/name_code.h
tls_level.o: ../../include/name_mask.h
+tls_level.o: ../../include/sock_addr.h
tls_level.o: ../../include/sys_defs.h
tls_level.o: ../../include/vbuf.h
tls_level.o: ../../include/vstream.h
tls_mgr.o: tls_mgr.h
tls_mgr.o: tls_scache.h
tls_misc.o: ../../include/argv.h
+tls_misc.o: ../../include/dns.h
tls_misc.o: ../../include/mail_conf.h
tls_misc.o: ../../include/mail_params.h
tls_misc.o: ../../include/msg.h
+tls_misc.o: ../../include/myaddrinfo.h
tls_misc.o: ../../include/mymalloc.h
tls_misc.o: ../../include/name_code.h
tls_misc.o: ../../include/name_mask.h
+tls_misc.o: ../../include/sock_addr.h
tls_misc.o: ../../include/stringops.h
tls_misc.o: ../../include/sys_defs.h
tls_misc.o: ../../include/vbuf.h
tls_proxy_clnt.o: ../../include/argv.h
tls_proxy_clnt.o: ../../include/attr.h
tls_proxy_clnt.o: ../../include/connect.h
+tls_proxy_clnt.o: ../../include/dns.h
tls_proxy_clnt.o: ../../include/iostuff.h
tls_proxy_clnt.o: ../../include/mail_params.h
tls_proxy_clnt.o: ../../include/mail_proto.h
tls_proxy_clnt.o: ../../include/msg.h
+tls_proxy_clnt.o: ../../include/myaddrinfo.h
tls_proxy_clnt.o: ../../include/mymalloc.h
tls_proxy_clnt.o: ../../include/name_code.h
tls_proxy_clnt.o: ../../include/name_mask.h
+tls_proxy_clnt.o: ../../include/sock_addr.h
tls_proxy_clnt.o: ../../include/stringops.h
tls_proxy_clnt.o: ../../include/sys_defs.h
tls_proxy_clnt.o: ../../include/vbuf.h
tls_proxy_clnt.o: tls_proxy_clnt.c
tls_proxy_print.o: ../../include/argv.h
tls_proxy_print.o: ../../include/attr.h
+tls_proxy_print.o: ../../include/dns.h
tls_proxy_print.o: ../../include/iostuff.h
tls_proxy_print.o: ../../include/mail_proto.h
+tls_proxy_print.o: ../../include/myaddrinfo.h
tls_proxy_print.o: ../../include/name_code.h
tls_proxy_print.o: ../../include/name_mask.h
+tls_proxy_print.o: ../../include/sock_addr.h
tls_proxy_print.o: ../../include/sys_defs.h
tls_proxy_print.o: ../../include/vbuf.h
tls_proxy_print.o: ../../include/vstream.h
tls_proxy_print.o: tls_proxy_print.c
tls_proxy_scan.o: ../../include/argv.h
tls_proxy_scan.o: ../../include/attr.h
+tls_proxy_scan.o: ../../include/dns.h
tls_proxy_scan.o: ../../include/iostuff.h
tls_proxy_scan.o: ../../include/mail_proto.h
+tls_proxy_scan.o: ../../include/myaddrinfo.h
tls_proxy_scan.o: ../../include/name_code.h
tls_proxy_scan.o: ../../include/name_mask.h
+tls_proxy_scan.o: ../../include/sock_addr.h
tls_proxy_scan.o: ../../include/sys_defs.h
tls_proxy_scan.o: ../../include/vbuf.h
tls_proxy_scan.o: ../../include/vstream.h
tls_proxy_scan.o: tls_proxy.h
tls_proxy_scan.o: tls_proxy_scan.c
tls_rsa.o: ../../include/argv.h
+tls_rsa.o: ../../include/dns.h
+tls_rsa.o: ../../include/myaddrinfo.h
tls_rsa.o: ../../include/name_code.h
tls_rsa.o: ../../include/name_mask.h
+tls_rsa.o: ../../include/sock_addr.h
tls_rsa.o: ../../include/sys_defs.h
tls_rsa.o: ../../include/vbuf.h
tls_rsa.o: ../../include/vstream.h
tls_scache.o: tls_scache.h
tls_seed.o: ../../include/argv.h
tls_seed.o: ../../include/dict.h
+tls_seed.o: ../../include/dns.h
tls_seed.o: ../../include/msg.h
+tls_seed.o: ../../include/myaddrinfo.h
tls_seed.o: ../../include/myflock.h
tls_seed.o: ../../include/name_code.h
tls_seed.o: ../../include/name_mask.h
+tls_seed.o: ../../include/sock_addr.h
tls_seed.o: ../../include/sys_defs.h
tls_seed.o: ../../include/vbuf.h
tls_seed.o: ../../include/vstream.h
tls_seed.o: tls_seed.c
tls_server.o: ../../include/argv.h
tls_server.o: ../../include/dict.h
+tls_server.o: ../../include/dns.h
tls_server.o: ../../include/hex_code.h
tls_server.o: ../../include/iostuff.h
tls_server.o: ../../include/mail_params.h
tls_server.o: ../../include/msg.h
+tls_server.o: ../../include/myaddrinfo.h
tls_server.o: ../../include/myflock.h
tls_server.o: ../../include/mymalloc.h
tls_server.o: ../../include/name_code.h
tls_server.o: ../../include/name_mask.h
+tls_server.o: ../../include/sock_addr.h
tls_server.o: ../../include/stringops.h
tls_server.o: ../../include/sys_defs.h
tls_server.o: ../../include/vbuf.h
tls_server.o: tls_scache.h
tls_server.o: tls_server.c
tls_session.o: ../../include/argv.h
+tls_session.o: ../../include/dns.h
tls_session.o: ../../include/msg.h
+tls_session.o: ../../include/myaddrinfo.h
tls_session.o: ../../include/mymalloc.h
tls_session.o: ../../include/name_code.h
tls_session.o: ../../include/name_mask.h
+tls_session.o: ../../include/sock_addr.h
tls_session.o: ../../include/sys_defs.h
tls_session.o: ../../include/vbuf.h
tls_session.o: ../../include/vstream.h
tls_session.o: tls.h
tls_session.o: tls_session.c
tls_stream.o: ../../include/argv.h
+tls_stream.o: ../../include/dns.h
tls_stream.o: ../../include/iostuff.h
tls_stream.o: ../../include/msg.h
+tls_stream.o: ../../include/myaddrinfo.h
tls_stream.o: ../../include/name_code.h
tls_stream.o: ../../include/name_mask.h
+tls_stream.o: ../../include/sock_addr.h
tls_stream.o: ../../include/sys_defs.h
tls_stream.o: ../../include/vbuf.h
tls_stream.o: ../../include/vstream.h
tls_stream.o: tls.h
tls_stream.o: tls_stream.c
tls_verify.o: ../../include/argv.h
+tls_verify.o: ../../include/dns.h
tls_verify.o: ../../include/msg.h
+tls_verify.o: ../../include/myaddrinfo.h
tls_verify.o: ../../include/mymalloc.h
tls_verify.o: ../../include/name_code.h
tls_verify.o: ../../include/name_mask.h
+tls_verify.o: ../../include/sock_addr.h
tls_verify.o: ../../include/stringops.h
tls_verify.o: ../../include/sys_defs.h
tls_verify.o: ../../include/vbuf.h
tlsmgr.o: ../../include/attr.h
tlsmgr.o: ../../include/data_redirect.h
tlsmgr.o: ../../include/dict.h
+tlsmgr.o: ../../include/dns.h
tlsmgr.o: ../../include/events.h
tlsmgr.o: ../../include/htable.h
tlsmgr.o: ../../include/iostuff.h
tlsmgr.o: ../../include/mail_version.h
tlsmgr.o: ../../include/master_proto.h
tlsmgr.o: ../../include/msg.h
+tlsmgr.o: ../../include/myaddrinfo.h
tlsmgr.o: ../../include/myflock.h
tlsmgr.o: ../../include/mymalloc.h
tlsmgr.o: ../../include/name_code.h
tlsmgr.o: ../../include/name_mask.h
tlsmgr.o: ../../include/set_eugid.h
+tlsmgr.o: ../../include/sock_addr.h
tlsmgr.o: ../../include/stringops.h
tlsmgr.o: ../../include/sys_defs.h
tlsmgr.o: ../../include/tls.h
# do not edit below this line - it is generated by 'make depend'
tlsproxy.o: ../../include/argv.h
tlsproxy.o: ../../include/attr.h
+tlsproxy.o: ../../include/dns.h
tlsproxy.o: ../../include/events.h
tlsproxy.o: ../../include/iostuff.h
tlsproxy.o: ../../include/mail_conf.h
tlsproxy.o: ../../include/mail_server.h
tlsproxy.o: ../../include/mail_version.h
tlsproxy.o: ../../include/msg.h
+tlsproxy.o: ../../include/myaddrinfo.h
tlsproxy.o: ../../include/mymalloc.h
tlsproxy.o: ../../include/name_code.h
tlsproxy.o: ../../include/name_mask.h
tlsproxy.o: ../../include/nbbio.h
+tlsproxy.o: ../../include/sock_addr.h
tlsproxy.o: ../../include/sys_defs.h
tlsproxy.o: ../../include/tls.h
tlsproxy.o: ../../include/tls_proxy.h
tlsproxy.o: tlsproxy.c
tlsproxy.o: tlsproxy.h
tlsproxy_state.o: ../../include/argv.h
+tlsproxy_state.o: ../../include/dns.h
tlsproxy_state.o: ../../include/events.h
tlsproxy_state.o: ../../include/mail_server.h
tlsproxy_state.o: ../../include/msg.h
+tlsproxy_state.o: ../../include/myaddrinfo.h
tlsproxy_state.o: ../../include/mymalloc.h
tlsproxy_state.o: ../../include/name_code.h
tlsproxy_state.o: ../../include/name_mask.h
tlsproxy_state.o: ../../include/nbbio.h
+tlsproxy_state.o: ../../include/sock_addr.h
tlsproxy_state.o: ../../include/sys_defs.h
tlsproxy_state.o: ../../include/tls.h
tlsproxy_state.o: ../../include/vbuf.h