head 1.1;
branch 1.1.1;
access;
symbols
netbsd-11-0-RC4:1.1.1.1.2.2
netbsd-11:1.1.1.1.0.2
PFIX-3-11-2:1.1.1.1
VENEMA:1.1.1;
locks; strict;
comment @# @;
1.1
date 2026.05.09.18.39.10; author christos; state Exp;
branches
1.1.1.1;
next ;
commitid mtbvlXzNqJaszaFG;
1.1.1.1
date 2026.05.09.18.39.10; author christos; state Exp;
branches
1.1.1.1.2.1;
next ;
commitid mtbvlXzNqJaszaFG;
1.1.1.1.2.1
date 2026.05.09.18.39.10; author martin; state dead;
branches;
next 1.1.1.1.2.2;
commitid 2QeqaJm8KrXk4qFG;
1.1.1.1.2.2
date 2026.05.11.17.13.37; author martin; state Exp;
branches;
next ;
commitid 2QeqaJm8KrXk4qFG;
desc
@@
1.1
log
@Initial revision
@
text
@
Postfix Non-Berkeley-DB migration
Postfix
Non-Berkeley-DB migration
Table of contents
Note: be sure to visit the on-line version of this text at
https://www.postfix.org/NON_BERKELEYDB_README.html, as support for
different Postfix versions may be added over time.
(Please see the Appendix for Mailman
integration tips.)
After running the same Postfix configuration for a decade or
more, there is a rude awakening when you update the OS to a newer
version that has deleted its support for Berkeley DB. Postfix
programs fail to open all hash: and btree: tables with messages
like this:
Berkeley DB support for 'hash:/etc/postfix/virtual' is not available
for this build; see https://www.postfix.org/NON_BERKELEYDB_README.html
for alternatives
This document comes to the rescue, with strategies to migrate
an existing Postfix configuration that uses Berkeley DB hash: and
btree: database files, to an OS distribution that has removed
Berkeley DB support, with a Postfix configuration that uses lmdb: (or
a combination of cdb: and lmdb:).
By the way, you don't have to wait until Berkeley DB support
is removed; your can proactively use the steps described here on a
system that still has Berkeley DB, to migrate a Postfix configuration
from Berkeley DB to lmdb: (or a combination of cdb: and lmdb:).
Historically, Postfix has used Berkeley DB hash: and btree: for
key-value stores, as indicated in the "With Berkeley DB" table
column below. In a world without Berkeley DB, good replacements are
cdb: and lmdb: as indicated in the "No Berkeley DB" column.
Purpose
With Berkeley DB
No Berkeley
DB
Mostly-static data such as aliases, transport_maps,
access tables
The sections that follow present three migration strategies
with different levels of assistance by tooling that was developed
for Postfix 3.11 and later.
On systems that have removed Berkeley DB support, run "make
makefiles" with a CCARGS value that (also) contains "-DNO_DB",
and specify appropriate values for default_database_type (lmdb or cdb)
and default_cache_db_type (lmdb).
In the examples below, the "..." are place holders any
dependencies that you build Postfix with, such as CDB, LDAP, LMDB,
MySQL/MariaDB, OpenSSL, SASL, and so on.
The goal of the migration is clear: stop using hash: and btree:,
and use lmdb: or cdb: instead. If your configuration is simple or
if you are familiar with Postfix configuration, a few "grep"
commands will find all the problems, and a few edits will be easy
to make.
If, on the other hand, you are not familiar with the details of your
Postfix configuration, then this document provides options where Postfix
can help.
Postfix 3.11 introduces multiple levels of migration support.
You can use the command "postfix non-bdb status" to view
the migration support level. This is what the default should look
like (terminal input is bold, output is normal
font):
You start up Postfix, watch the logging when Postfix programs
fail to open a hash: or btree: table, edit Postfix configuration
files to use lmdb: or cdb:, then run postmap(1) or postalias(1)
commands to create lmdb: or cdb: indexed database files. Use this
option if you are familiar with Postfix configuration.
This will not fix the integration with Mailman versions from
before gitlab
commit 8fa56b72 (May 2025) and other software that are broken
when they want to use "postmap hash:/path/to/file".
Mailman uses this to maintain a table with mailing list contact
addresses. For that, you need to use the next-up level.
This level implicitly redirects a request to access
hash:/path/to/file to $default_database_type:/path/to/file,
and redirects a request to access a btree:/path/to/file to
$default_cache_db_type:/path/to/file.
This still requires manually running postmap(1) or postalias(1)
commands, but "fixes" the integration with Mailman versions from
before gitlab
commit 8fa56b72 (May 2025) and other software when they want
to use "postmap hash:/path/to/file", and Berkeley
DB support is not available. Such commands will implicitly create
a new lmdb: or cdb: indexed database file, depending on the
default_database_type value.
This level implements "enable-redirect (database
aliasing)", and also runs the postmap(1) or postalias(1) command to create
a new lmdb or cdb indexed database file. This uses the nbdb_reindexd(8)
daemon.
Using these levels gives you extra time to prepare for a
long-term configuration change that replaces hard-coded instances of hash:
with the value of default_database_type, and that replaces btree: with
the value of default_cache_db_type.
Depending on your use of other software that wants to use
postmap(1) or postalias(1) commands, you may have to permanently
the leave the enable-redirect level
active.
After this overview, the sections that follow will go into more
detail.
This will edit main.cf to remove a non_bdb_migration_level setting
and the level revert to its implicit default (disable), and will edit
master.cf to remove an entry for the reindex service.
This setting will cause problems with Mailman versions from
before gitlab
commit 8fa56b72 (May 2025) and other software that wants to use
"postmap hash:/path/to/file" (or similar postalias
commands), and Berkeley DB support is no longer available. In that
case, you will need the "enable-redirect" migration support
level.
Alternatively, make cdb the default for default_database_type
(read-mostly lookup tables).
Look for hash: and btree: references in Postfix
configuration files. Instead of /etc/postfix use the pathname
in the output from "postconf -x config_directory".
# grep -E -r '(hash|btree):/' /etc/postfix
(Use "egrep" on systems that do not support "grep -E".)
For each instance in the "grep" output :
Edit the configuration file and replace "hash" with "lmdb"
or "cdb" (use the same value as the output from "postconf
-hx default_database_type") and replace "btree" with "lmdb".
If this instance has no source file (only the ".db" file
exists), proceed with the next instance of "grep" output.
Postfix 3.11 and later: if this instance appears in the
output from "postconf -hPPx '*/*/alias_maps' | sort -u",
run the postalias(1) command. If this instance is like
"lmdb:/path/to/source":
Instead of "lmdb:" use "cdb:" if the instance is like
"cdb:/path/to/source".
Postfix 3.10 and earlier: if this instance appears in the
output from "postconf -hx alias_maps", run the
postalias(1) command. If this instance is like "lmdb:/path/to/source":
Watch the log for
warnings about files that cannot be opened, find the configuration
file that still uses "hash" or "btree", and repeat steps 1-5 above.
Enable inbound network mail, reload Postfix, and connect
to the Postfix SMTP network port.
Watch the log for
warnings about files that cannot be opened, find the configuration
file that still uses "hash" or "btree", and repeat steps 1-5 above.
This migration support level will not automatically create
non-Berkeley-DB indexed database files; if you need that, see "enable-redirect below. Instead, Postfix
programs will log an error as they fail to open an indexed database
file, and will leave it to the system administrator to run postmap(1)
or postalias(1) to create that file.
Migration Process with 'enable-redirect' (Postfix 3.11
and later)
Scan the logging for
failure to open database files. For each instance of
"hash:/path/to/source" or "btree:/path/to/source"
that requires manually running postmap(1) or postalias(1):
If this instance appears in the output from "postconf
-hPPx '*/*/alias_maps' | sort -u", run the postalias(1)
command. If this instance is like "lmdb:/path/to/source":
This may reveal a few more problems. Once there are no more
errors with opening database files for about 24 hours, scan the log for messages similar to:
redirecting xxx:/path/to/file to yyy:/path/to/file
and update the obsolete Postfix configuration settings, replacing
"xxx:/path/to/file" with "yyy:/path/to/file.
Once there is no more "redirect" logging, and there are no other
programs (such as Mailman, see Appendix
below) that want to use "postmap hash:/path/to/file", then
you can turn off non-Berkeley-DB migration support (see "disable" above).
This migration support level will fix problems with Mailman
versions from before May 2025 and other software that wants to use
"postmap hash:/path/to/file". With database
redirection, such commands will implicitly create an indexed file
for $default_database_type:/path/to/file (similar aliasing
happens for postalias commands).
NOTE: this level should be used only temporarily to generate
most of the non-Berkeley-DB indexed files that Postfix needs.
Leaving this enabled may expose the system to privilege-escalation
attacks. There are no security concerns for using enable-redirect.
But you should probably wait and review the "Migration Process"
below first.
This postfix non-bdb command edits main.cf to set the non-Berkeley-DB
migration support level, and master.cf to add or replace an
nbdb-reindex service entry.
The resulting configuration implements not only the functionality
of enable-redirect, but also tries
to automatically create a non-Berkeley-DB indexed database file
when a daemon program wants to access a file that does not exist.
This uses the nbdb_reindexd(8) daemon to run postmap(1) or postalias(1)
commands for databases that satisfy basic requirements to block
privilege-escalation attacks. The number of requirements is large,
but mainly, database files and their parent directory must not allow
write access for group or other users, and their pathnames must
match a list of trusted directory prefixes. The complete list of
requirements is documented in nbdb_reindexd(8).
This may reveal a few more problems. Once there are no more
errors from Postfix programs for about 24 hours, turn off automatic
index generation by reducing the support level to enable-redirect
with:
redirecting xxx:/path/to/file to yyy:/path/to/file
and update the obsolete Postfix configuration settings, replacing
"xxx:/path/to/file" with "yyy:/path/to/file.
Once there is no more "redirect" logging, and there are no other
programs (such as Mailman, see Appendix
below) that want to use "postmap hash:/path/to/file", then
you can turn off non-Berkeley-DB migration support (see "disable" above). You will have keep Postfix
configured with "enable-redirect" until Mailman can be
updated to a version that supports other Postfix database types.
could not execute command 'postmap lmdb:/path/to/file': table
/path/to/file has an unexpected pathname;
to allow automatic indexing as root, append its parent directory
to the non_bdb_migration_allow_root_prefixes setting (current setting
is: "/etc /usr/local/etc");
alternatively, execute the failed command by hand
You have two options:
If you think that the suggested change is safe, update the
setting as proposed and execute "postfix reload".
Alternatively, you can execute the failed postmap(1) or
postalias(1) command by hand, and Postfix will not log the same error
again.
A similar request may be logged when a file needs to be indexed as
a non-root user.
Unexpected file or directory owner or permissions
Other errors may be logged
when a database file or directory has an unexpected owner, or when
it is writable by group or by other users.
Example with line breaks added for readability:
could not execute command 'postmap lmdb:/path/to/file': legacy
indexed file '/path/to/file.db' is owned by uid '0', but parent
directory '/path/to' is owned or writable by other user;
to allow automatic indexing, correct the ownership or permissions;
alternatively, execute the failed command by hand
Again, you have two options:
Fix the ownership or permission error.
Execute the failed postmap(1) or postalias(1) command by
hand, and Postfix will not log the same error again.
This section has instructions to migrate an existing Mailman
configuration that wants to use commands like "postmap
hash:/path/to/file". Mailman uses such commands to maintain
tables with mailing list contact addresses and domain names. This
will break on systems that no longer have Berkeley DB support.
Solutions:
(Not recommended) Upgrade to a Mailman version that contains
gitlab commit 8fa56b72 (May 2025). Unfortunately,
this has not yet been widely adopted by OS distributions.
Avoid Mailman changes, and use Postfix migration support
described below. In a nutshell, the postmap command will execute
the command "postmap hash:/path/to/file" as if the command
specifies lmdb:/path/to/file (or cdb:, depending on Postfix
configuration).
With Mailman3 the integration with Postfix using LMTP may look
like:
/var/lib/mailman3/data/postfix_domains (domain names)
/var/lib/mailman3/data/postfix_domains.db (Berkeley DB hash file)
/var/lib/mailman3/data/postfix_lmtp (transport map)
/var/lib/mailman3/data/postfix_lmtp.db (Berkeley DB hash file)
Caution: the data directory may contain other files
with names ending in ".db" that are not part of the
Mailman-Postfix integration. Do not tamper with the other files.
This will fix the problem that Mailman wants to use commands like
"postmap hash:/path/to/postfix_domains" and "postmap
hash:/path/to/postfix_lmtp".
Instead of complaining about an unsupported database type, these
postmap commands will implicitly create ".lmdb" indexed
files like (lmdb:/path/to/postfix_domains or
lmdb:/path/to/postfix_lmtp, or their cdb: versions depending
on the Postfix default_database_type setting).
This will not fix the problem that Postfix wants to
use databases like hash:/path/to/postfix_domains
and hash::/path/to/postfix_lmtp. With enable-redirect, these will redirect to
".lmdb" indexed files (good) but those files do not yet exist
(bad). You will need to create them by hand with commands like:
After this, no further human action will be needed. When Mailman
needs to update these files, it will invoke postmap commands that
will work as promised above. Leave the Postfix migration level at enable-reindex until you can upgrade to a
newer Mailman version that supports Postfix with non-Berkeley
databases.
enable-reindex (also automatically
run postmap commands)
In addition to "enable-redirect",
Postfix will also try to run commands like "postmap
lmdb:/path/to/postfix_domains" and "postmap
lmdb:/path/to/postfix_lmtp". There will be some delay
depending on the amount of mailing list traffic; you may want to post
a test message to make the postmap commands happen sooner.
Note: once these "postmap" commands have completed,
you should reduce the migration support level with the command
"postfix non-bdb enable-redirect". For security reasons the enable-reindex level should not be permanently
enabled.
@
1.1.1.1
log
@Import postfix 3.11.2 (previous was 3.10.1)
Changes in 3.11.2
Bugfix (defect introduced: Postfix 3.11): the proxymap(8) daemon
dereferenced an uninitialized pointer after a request protocol
error. This daemon is not exposed to local or remote users. Found
by Claude Opus 4.6.
Bugfix (defect introduced: 20260309) a change, to set the service_name
default value to "amnesiac", violated a test that parameter names
in postconf output must match 1:1 with parameter names in the
postlink script.
Changes in 3.11.1
Bugfix (defect introduced: 20260219): alias_maps errors when
default_database_type was not set in main.cf. Fix by Michael Tokarev.
Bugfix (defect introduced: Postfix 3.0): buffer over-read when
Postfix is configured with an enhanced status code not followed by
other text. For example, "5.7.2" without text after the three-number
code, in an access(5) table, header or body checks, or with "$rbl_code
$rbl_text" in rbl_reply_maps or default_rbl_reply. These are all
uncommon configurations. Problem reported by Kamil Frankowicz.
Bugfix (defect introduced: Postfix 3.3): null pointer in nbdb_reindexd(8)
because the "service_name" value was not propagated. Report by
Michael Tokarev.
During Postfix start-up, avoid a spurious error message from
nbdb_reindexd(8), when non_bdb_migration_level disables automatic
re-indexing.
Changes in 3.11.0
Postfix stable release 3.11.0 is available. Postfix 3.7 - 3.10 were
updated a few weeks ago; after that, Postfix 3.7 will no longer be
updated.
The main changes are below. See the RELEASE_NOTES file for further details.
Berkeley DB migration:
Some (Linux) distributions are removing support for BerkeleyDB
databases (In Postfix, this means we lose support for the hash:
and btree: lookup tables). See NON_BERKELEYDB_README for manual
and partially automatic migration from btree: to lmdb:, and from
hash: to lmdb: or cdb:.
The loss of BerkeleyDB affects Mailman versions that want to execute
commands like "postmap hash:/path/to/file" when a mailing list is
added or removed. Postfix provides a way to redirect such commands
to a supported database type.
You don't have to wait until BerkeleyDB support is removed. It can
make sense to migrate while BerkeleyDB support is still available
(mainly, less downtime).
Changes in TLS support:
Default TLS security. The Postfix SMTP client smtp_tls_security_level
default value is "may" if Postfix was built with TLS support, and
the compatibility_level is 3.11 or higher.
Support for the RFC 8689 "REQUIRETLS" verb in ESMTP. This requires
that every SMTP (and LMTP) server in the forward path is strongly
authenticated with DANE, STS, or equivalent, and that every server
announces REQUIRETLS support.
See REQUIRETLS_README for suggestions to carefully enforce REQUIRETLS
without causing massive mail delivery problems.
Logging the TLS security level. This shows the desired and actual
TLS security level enforcement status and, if a message requests
REQUIRETLS, the REQUIRETLS policy enforcement status. For a list
of examples see smtp_log_tls_feature_status
Workaround for an interface mismatch between the Postfix SMTP client
and MTA-STS policy plugins. This introduces a new parameter
smtp_tls_enforce_sts_mx_patterns (default: "yes"). The MTA-STS
plugin configuration needs to enable TLSRPT support, so that it
forwards STS policy attributes to Postfix. Both postfix-tlspol and
postfix-mta-sts-resolver have been updated accordingly.
With this, the Postfix SMTP client will connect to an MX host only
if its name matches any STS policy MX host pattern, and will match
a server certificate against the MX hostname. Otherwise, the old
behavior stays in effect: connect to any MX host listed in DNS,
and match a server certificate against any STS policy MX host
pattern.
Post-quantum cryptography support. With OpenSSL 3.5 and later,
change the tls_eecdh_auto_curves default value to avoid problems
with network infrastructure that mishandles TLS hello messages
larger than one (Ethernet) TCP segment. This problem is more
generally known as "protocol ossification".
Miscellaneous changes:
Deprecation of obsolete parameters. Postfix programs log a warning
that these parameters will be removed. See DEPRECATION_README for
a list of deprecated parameters.
JSON output support with "postconf -j|-jM|-jF|-jP", "postalias
-jq|-js", "postmap -jq|-js", and "postmulti -jl". No support is
planned for JSON input support.
Milter support: improved Milter error handling for messages that
arrive over a long-lived SMTP connection, by changing the default
milter_default_action from "tempfail" to the new "shutdown" action
(i.e. disconnect the remote SMTP client). This was already back-ported
to earlier stable releases.
For more changes in the 3.10 branch see:
https://www.postfix.org/announcements.html
@
text
@@
1.1.1.1.2.1
log
@file NON_BERKELEYDB_README.html was added on branch netbsd-11 on 2026-05-11 17:13:37 +0000
@
text
@d1 899
@
1.1.1.1.2.2
log
@Pull up the following, requested by christos in ticket #283:
external/ibm-public/postfix//dist/README_FILES/NON_BERKELEYDB_README up to
external/ibm-public/postfix//dist/README_FILES/REQUIRETLS_README up to
external/ibm-public/postfix//dist/conf/postfix-non-bdb-script up to
external/ibm-public/postfix//dist/html/NON_BERKELEYDB_README.html up to
external/ibm-public/postfix//dist/html/REQUIRETLS_README.html up to
external/ibm-public/postfix//dist/html/nbdb_reindexd.8.html up to
external/ibm-public/postfix//dist/html/postfix-non-bdb.1.html up to
external/ibm-public/postfix//dist/man/man1/postfix-non-bdb.1 up to
external/ibm-public/postfix//dist/man/man8/nbdb_reindexd.8 up to
external/ibm-public/postfix//dist/mantools/check-proxy-type-table up to
external/ibm-public/postfix//dist/proto/NON_BERKELEYDB_README.html up to
external/ibm-public/postfix//dist/proto/REQUIRETLS_README.html up to
external/ibm-public/postfix//dist/src/cleanup/cleanup_message_test.c up to
external/ibm-public/postfix//dist/src/global/ehlo_mask_test.c up to
external/ibm-public/postfix//dist/src/global/nbdb_clnt.c up to
external/ibm-public/postfix//dist/src/global/allowed_prefix.c up to
external/ibm-public/postfix//dist/src/global/allowed_prefix.h up to
external/ibm-public/postfix//dist/src/global/allowed_prefix_test.c up to
external/ibm-public/postfix//dist/src/global/dict_sqlite_test.c up to
external/ibm-public/postfix//dist/src/global/haproxy_srvr_test.c up to
external/ibm-public/postfix//dist/src/global/login_sender_match_test.c up to
external/ibm-public/postfix//dist/src/global/nbdb_clnt.h up to
external/ibm-public/postfix//dist/src/global/nbdb_redirect.c up to
external/ibm-public/postfix//dist/src/global/nbdb_redirect.h up to
external/ibm-public/postfix//dist/src/global/nbdb_redirect_test.c up to
external/ibm-public/postfix//dist/src/global/nbdb_surrogate.c up to
external/ibm-public/postfix//dist/src/global/nbdb_surrogate.h up to
external/ibm-public/postfix//dist/src/global/nbdb_surrogate_test.c up to
external/ibm-public/postfix//dist/src/global/nbdb_util.c up to
external/ibm-public/postfix//dist/src/global/nbdb_util.h up to
external/ibm-public/postfix//dist/src/global/nbdb_util_test.c up to
external/ibm-public/postfix//dist/src/global/pol_stats.c up to
external/ibm-public/postfix//dist/src/global/pol_stats.h up to
external/ibm-public/postfix//dist/src/global/pol_stats_test.c up to
external/ibm-public/postfix//dist/src/postalias/mode_conflict_test.in up to
external/ibm-public/postfix//dist/src/postalias/mode_conflict_test.ref up to
external/ibm-public/postfix//dist/src/postconf/test77-main.cf up to
external/ibm-public/postfix//dist/src/postconf/test77.ref up to
external/ibm-public/postfix//dist/src/postconf/test78.ref up to
external/ibm-public/postfix//dist/src/postconf/test79.ref up to
external/ibm-public/postfix//dist/src/postconf/test80.ref up to
external/ibm-public/postfix//dist/src/postconf/test81.ref up to
external/ibm-public/postfix//dist/src/postconf/test82.ref up to
external/ibm-public/postfix//dist/src/postconf/test83.ref up to
external/ibm-public/postfix//dist/src/postconf/test84.ref up to
external/ibm-public/postfix//dist/src/postconf/test85.ref up to
external/ibm-public/postfix//dist/src/postconf/test86.ref up to
external/ibm-public/postfix//dist/src/postconf/test87.ref up to
external/ibm-public/postfix//dist/src/postconf/test91.ref up to
external/ibm-public/postfix//dist/src/postmap/mode_conflict_test.in up to
external/ibm-public/postfix//dist/src/postmap/mode_conflict_test.ref up to
external/ibm-public/postfix//dist/src/postmulti/fake_strcmp.c up to
external/ibm-public/postfix//dist/src/smtp/smtp_reqtls_policy.c up to
external/ibm-public/postfix//dist/src/smtp/smtp_reqtls_policy.h up to
external/ibm-public/postfix//dist/src/smtp/smtp_reqtls_policy_test.c up to
external/ibm-public/postfix//dist/src/smtp/smtp_tls_policy_test.c up to
external/ibm-public/postfix//dist/src/smtpd/smtpd_peer_test.c up to
external/ibm-public/postfix//dist/src/util/dict_union_test.c up to
external/ibm-public/postfix//dist/src/util/hash_fnv_test.c up to
external/ibm-public/postfix//dist/src/util/mac_midna.h up to
external/ibm-public/postfix//dist/src/util/normalize_v4mapped_addr.c up to
external/ibm-public/postfix//dist/src/util/dict_debug.h up to
external/ibm-public/postfix//dist/src/util/dict_debug_test.ref up to
external/ibm-public/postfix//dist/src/util/dict_debug_test.sh up to
external/ibm-public/postfix//dist/src/util/dict_pipe_test.c up to
external/ibm-public/postfix//dist/src/util/mac_midna.c up to
external/ibm-public/postfix//dist/src/util/normalize_v4mapped_addr.h up to
external/ibm-public/postfix//dist/src/util/normalize_v4mapped_addr_test.c up to
external/ibm-public/postfix//dist/src/util/ossl_digest.c up to
external/ibm-public/postfix//dist/src/util/ossl_digest.h up to
external/ibm-public/postfix//dist/src/util/ossl_digest_test.c up to
external/ibm-public/postfix//dist/src/util/wrap_stat.c up to
external/ibm-public/postfix//dist/src/util/wrap_stat.h up to
external/ibm-public/postfix//dist/src/nbdb_reindexd/Makefile.in up to
external/ibm-public/postfix//dist/src/nbdb_reindexd/nbdb_index_as.c up to
external/ibm-public/postfix//dist/src/nbdb_reindexd/nbdb_index_as.h up to
external/ibm-public/postfix//dist/src/nbdb_reindexd/nbdb_index_as_test.c up to
external/ibm-public/postfix//dist/src/nbdb_reindexd/nbdb_process.c up to
external/ibm-public/postfix//dist/src/nbdb_reindexd/nbdb_process.h up to
external/ibm-public/postfix//dist/src/nbdb_reindexd/nbdb_process_test.c up to
external/ibm-public/postfix//dist/src/nbdb_reindexd/nbdb_reindexd.c up to
external/ibm-public/postfix//dist/src/nbdb_reindexd/nbdb_reindexd.h up to
external/ibm-public/postfix//dist/src/nbdb_reindexd/nbdb_safe.c up to
external/ibm-public/postfix//dist/src/nbdb_reindexd/nbdb_safe.h up to
external/ibm-public/postfix//dist/src/nbdb_reindexd/nbdb_safe_test.c up to
external/ibm-public/postfix//dist/src/nbdb_reindexd/nbdb_sniffer.c up to
external/ibm-public/postfix//dist/src/nbdb_reindexd/nbdb_sniffer.h up to
external/ibm-public/postfix//dist/src/nbdb_reindexd/nbdb_sniffer_test.c up to
external/ibm-public/postfix//dist/src/testing/Makefile.in up to
external/ibm-public/postfix//dist/src/testing/dict_test_helper.c up to
external/ibm-public/postfix//dist/src/testing/dict_test_helper.h up to
external/ibm-public/postfix//dist/src/testing/mock_dict.c up to
external/ibm-public/postfix//dist/src/testing/mock_dict.h up to
external/ibm-public/postfix//dist/src/testing/mock_open_as.c up to
external/ibm-public/postfix//dist/src/testing/mock_open_as.h up to
external/ibm-public/postfix//dist/src/testing/mock_spawn_command.c up to
external/ibm-public/postfix//dist/src/testing/mock_spawn_command.h up to
external/ibm-public/postfix//dist/src/testing/mock_stat.c up to
external/ibm-public/postfix//dist/src/testing/mock_stat.h up to
external/ibm-public/postfix//dist/src/testing/msg_capture.c up to
external/ibm-public/postfix//dist/src/testing/msg_capture.h up to
external/ibm-public/postfix//dist/src/testing/nosleep.c up to
external/ibm-public/postfix//dist/TESTING up to
external/ibm-public/postfix//dist/RELEASE_NOTES-3.10 up to
external/ibm-public/postfix//dist/src/global/ehlo_mask.in delete
external/ibm-public/postfix//dist/src/global/ehlo_mask.ref delete
external/ibm-public/postfix//dist/src/util/dict_pipe_test.in delete
external/ibm-public/postfix//dist/src/util/dict_pipe_test.ref delete
external/ibm-public/postfix//dist/src/util/dict_union_test.in delete
external/ibm-public/postfix//dist/src/util/dict_union_test.ref delete
external/ibm-public/postfix/Makefile.inc up to 1.32
external/ibm-public/postfix/dist/HISTORY up to 1.1.1.31
external/ibm-public/postfix/dist/INSTALL up to 1.1.1.11
external/ibm-public/postfix/dist/Makefile.in up to 1.1.1.12
external/ibm-public/postfix/dist/RELEASE_NOTES up to 1.1.1.19
external/ibm-public/postfix/dist/makedefs up to 1.18
external/ibm-public/postfix/dist/README_FILES/AAAREADME up to 1.1.1.8
external/ibm-public/postfix/dist/README_FILES/CDB_README up to 1.1.1.4
external/ibm-public/postfix/dist/README_FILES/COMPATIBILITY_README up to 1.1.1.5
external/ibm-public/postfix/dist/README_FILES/DATABASE_README up to 1.1.1.11
external/ibm-public/postfix/dist/README_FILES/DEPRECATION_README up to 1.1.1.2
external/ibm-public/postfix/dist/README_FILES/INSTALL up to 1.12
external/ibm-public/postfix/dist/README_FILES/MULTI_INSTANCE_README up to 1.1.1.8
external/ibm-public/postfix/dist/README_FILES/MYSQL_README up to 1.1.1.7
external/ibm-public/postfix/dist/README_FILES/OVERVIEW up to 1.1.1.7
external/ibm-public/postfix/dist/README_FILES/RELEASE_NOTES up to 1.1.1.19
external/ibm-public/postfix/dist/README_FILES/SASL_README up to 1.1.1.13
external/ibm-public/postfix/dist/README_FILES/SMTPUTF8_README up to 1.1.1.5
external/ibm-public/postfix/dist/README_FILES/SOHO_README up to 1.1.1.6
external/ibm-public/postfix/dist/README_FILES/STANDARD_CONFIGURATION_README up to 1.1.1.8
external/ibm-public/postfix/dist/README_FILES/TLSRPT_README up to 1.1.1.2
external/ibm-public/postfix/dist/README_FILES/UUCP_README up to 1.1.1.3
external/ibm-public/postfix/dist/README_FILES/VIRTUAL_README up to 1.1.1.4
external/ibm-public/postfix/dist/README_FILES/XCLIENT_README up to 1.1.1.5
external/ibm-public/postfix/dist/conf/access up to 1.1.1.10
external/ibm-public/postfix/dist/conf/aliases up to 1.1.1.7
external/ibm-public/postfix/dist/conf/canonical up to 1.1.1.7
external/ibm-public/postfix/dist/conf/generic up to 1.1.1.6
external/ibm-public/postfix/dist/conf/main.cf up to 1.12
external/ibm-public/postfix/dist/conf/postfix-files up to 1.11
external/ibm-public/postfix/dist/conf/postfix-script up to 1.6
external/ibm-public/postfix/dist/conf/postfix-tls-script up to 1.6
external/ibm-public/postfix/dist/conf/relocated up to 1.1.1.5
external/ibm-public/postfix/dist/conf/transport up to 1.1.1.6
external/ibm-public/postfix/dist/conf/virtual up to 1.1.1.8
external/ibm-public/postfix/dist/html/CDB_README.html up to 1.1.1.6
external/ibm-public/postfix/dist/html/COMPATIBILITY_README.html up to 1.1.1.6
external/ibm-public/postfix/dist/html/DATABASE_README.html up to 1.1.1.12
external/ibm-public/postfix/dist/html/DEPRECATION_README.html up to 1.1.1.2
external/ibm-public/postfix/dist/html/INSTALL.html up to 1.12
external/ibm-public/postfix/dist/html/MULTI_INSTANCE_README.html up to 1.1.1.11
external/ibm-public/postfix/dist/html/MYSQL_README.html up to 1.1.1.7
external/ibm-public/postfix/dist/html/Makefile.in up to 1.1.1.9
external/ibm-public/postfix/dist/html/OVERVIEW.html up to 1.1.1.8
external/ibm-public/postfix/dist/html/SASL_README.html up to 1.1.1.13
external/ibm-public/postfix/dist/html/SMTPUTF8_README.html up to 1.1.1.6
external/ibm-public/postfix/dist/html/SOHO_README.html up to 1.1.1.8
external/ibm-public/postfix/dist/html/STANDARD_CONFIGURATION_README.html up to 1.1.1.9
external/ibm-public/postfix/dist/html/TLSRPT_README.html up to 1.1.1.2
external/ibm-public/postfix/dist/html/UUCP_README.html up to 1.1.1.6
external/ibm-public/postfix/dist/html/VIRTUAL_README.html up to 1.1.1.8
external/ibm-public/postfix/dist/html/XCLIENT_README.html up to 1.1.1.8
external/ibm-public/postfix/dist/html/access.5.html up to 1.1.1.11
external/ibm-public/postfix/dist/html/aliases.5.html up to 1.1.1.9
external/ibm-public/postfix/dist/html/bounce.8.html up to 1.1.1.9
external/ibm-public/postfix/dist/html/canonical.5.html up to 1.1.1.8
external/ibm-public/postfix/dist/html/cidr_table.5.html up to 1.1.1.8
external/ibm-public/postfix/dist/html/cleanup.8.html up to 1.1.1.11
external/ibm-public/postfix/dist/html/defer.8.html up to 1.1.1.9
external/ibm-public/postfix/dist/html/discard.8.html up to 1.1.1.8
external/ibm-public/postfix/dist/html/error.8.html up to 1.1.1.8
external/ibm-public/postfix/dist/html/generic.5.html up to 1.1.1.8
external/ibm-public/postfix/dist/html/index.html up to 1.1.1.10
external/ibm-public/postfix/dist/html/ldap_table.5.html up to 1.1.1.9
external/ibm-public/postfix/dist/html/lmdb_table.5.html up to 1.1.1.6
external/ibm-public/postfix/dist/html/lmtp.8.html up to 1.1.1.14
external/ibm-public/postfix/dist/html/mailq.1.html up to 1.1.1.10
external/ibm-public/postfix/dist/html/makedefs.1.html up to 1.1.1.5
external/ibm-public/postfix/dist/html/memcache_table.5.html up to 1.1.1.8
external/ibm-public/postfix/dist/html/mongodb_table.5.html up to 1.1.1.2
external/ibm-public/postfix/dist/html/mysql_table.5.html up to 1.1.1.10
external/ibm-public/postfix/dist/html/newaliases.1.html up to 1.1.1.10
external/ibm-public/postfix/dist/html/nisplus_table.5.html up to 1.1.1.7
external/ibm-public/postfix/dist/html/oqmgr.8.html up to 1.1.1.11
external/ibm-public/postfix/dist/html/pcre_table.5.html up to 1.1.1.8
external/ibm-public/postfix/dist/html/pgsql_table.5.html up to 1.1.1.10
external/ibm-public/postfix/dist/html/postalias.1.html up to 1.1.1.9
external/ibm-public/postfix/dist/html/postconf.1.html up to 1.1.1.13
external/ibm-public/postfix/dist/html/postconf.5.html up to 1.22
external/ibm-public/postfix/dist/html/postdrop.1.html up to 1.1.1.9
external/ibm-public/postfix/dist/html/postfix-manuals.html up to 1.1.1.10
external/ibm-public/postfix/dist/html/postfix-tls.1.html up to 1.1.1.5
external/ibm-public/postfix/dist/html/postfix.1.html up to 1.1.1.11
external/ibm-public/postfix/dist/html/postlog.1.html up to 1.1.1.8
external/ibm-public/postfix/dist/html/postmap.1.html up to 1.1.1.9
external/ibm-public/postfix/dist/html/postmulti.1.html up to 1.1.1.9
external/ibm-public/postfix/dist/html/postqueue.1.html up to 1.1.1.11
external/ibm-public/postfix/dist/html/postscreen.8.html up to 1.1.1.10
external/ibm-public/postfix/dist/html/posttls-finger.1.html up to 1.1.1.7
external/ibm-public/postfix/dist/html/proxymap.8.html up to 1.1.1.10
external/ibm-public/postfix/dist/html/qmgr.8.html up to 1.1.1.11
external/ibm-public/postfix/dist/html/regexp_table.5.html up to 1.1.1.8
external/ibm-public/postfix/dist/html/relocated.5.html up to 1.1.1.7
external/ibm-public/postfix/dist/html/sendmail.1.html up to 1.1.1.10
external/ibm-public/postfix/dist/html/smtp.8.html up to 1.1.1.14
external/ibm-public/postfix/dist/html/smtpd.8.html up to 1.1.1.15
external/ibm-public/postfix/dist/html/socketmap_table.5.html up to 1.1.1.7
external/ibm-public/postfix/dist/html/sqlite_table.5.html up to 1.1.1.8
external/ibm-public/postfix/dist/html/tcp_table.5.html up to 1.1.1.8
external/ibm-public/postfix/dist/html/trace.8.html up to 1.1.1.9
external/ibm-public/postfix/dist/html/transport.5.html up to 1.1.1.9
external/ibm-public/postfix/dist/html/virtual.5.html up to 1.1.1.9
external/ibm-public/postfix/dist/html/virtual.8.html up to 1.1.1.9
external/ibm-public/postfix/dist/man/Makefile.in up to 1.1.1.9
external/ibm-public/postfix/dist/man/man1/makedefs.1 up to 1.5
external/ibm-public/postfix/dist/man/man1/postalias.1 up to 1.5
external/ibm-public/postfix/dist/man/man1/postconf.1 up to 1.6
external/ibm-public/postfix/dist/man/man1/postdrop.1 up to 1.6
external/ibm-public/postfix/dist/man/man1/postfix-tls.1 up to 1.4
external/ibm-public/postfix/dist/man/man1/postfix.1 up to 1.8
external/ibm-public/postfix/dist/man/man1/postlog.1 up to 1.7
external/ibm-public/postfix/dist/man/man1/postmap.1 up to 1.5
external/ibm-public/postfix/dist/man/man1/postmulti.1 up to 1.5
external/ibm-public/postfix/dist/man/man1/postqueue.1 up to 1.6
external/ibm-public/postfix/dist/man/man1/posttls-finger.1 up to 1.7
external/ibm-public/postfix/dist/man/man1/sendmail.1 up to 1.6
external/ibm-public/postfix/dist/man/man5/access.5 up to 1.6
external/ibm-public/postfix/dist/man/man5/aliases.5 up to 1.7
external/ibm-public/postfix/dist/man/man5/canonical.5 up to 1.6
external/ibm-public/postfix/dist/man/man5/cidr_table.5 up to 1.7
external/ibm-public/postfix/dist/man/man5/generic.5 up to 1.6
external/ibm-public/postfix/dist/man/man5/ldap_table.5 up to 1.7
external/ibm-public/postfix/dist/man/man5/lmdb_table.5 up to 1.4
external/ibm-public/postfix/dist/man/man5/memcache_table.5 up to 1.3
external/ibm-public/postfix/dist/man/man5/mongodb_table.5 up to 1.3
external/ibm-public/postfix/dist/man/man5/mysql_table.5 up to 1.7
external/ibm-public/postfix/dist/man/man5/nisplus_table.5 up to 1.3
external/ibm-public/postfix/dist/man/man5/pcre_table.5 up to 1.6
external/ibm-public/postfix/dist/man/man5/pgsql_table.5 up to 1.7
external/ibm-public/postfix/dist/man/man5/postconf.5 up to 1.21
external/ibm-public/postfix/dist/man/man5/regexp_table.5 up to 1.6
external/ibm-public/postfix/dist/man/man5/relocated.5 up to 1.5
external/ibm-public/postfix/dist/man/man5/socketmap_table.5 up to 1.5
external/ibm-public/postfix/dist/man/man5/sqlite_table.5 up to 1.5
external/ibm-public/postfix/dist/man/man5/tcp_table.5 up to 1.4
external/ibm-public/postfix/dist/man/man5/transport.5 up to 1.5
external/ibm-public/postfix/dist/man/man5/virtual.5 up to 1.7
external/ibm-public/postfix/dist/man/man8/bounce.8 up to 1.6
external/ibm-public/postfix/dist/man/man8/cleanup.8 up to 1.6
external/ibm-public/postfix/dist/man/man8/discard.8 up to 1.4
external/ibm-public/postfix/dist/man/man8/error.8 up to 1.4
external/ibm-public/postfix/dist/man/man8/oqmgr.8 up to 1.4
external/ibm-public/postfix/dist/man/man8/postscreen.8 up to 1.7
external/ibm-public/postfix/dist/man/man8/proxymap.8 up to 1.5
external/ibm-public/postfix/dist/man/man8/qmgr.8 up to 1.5
external/ibm-public/postfix/dist/man/man8/smtp.8 up to 1.7
external/ibm-public/postfix/dist/man/man8/smtpd.8 up to 1.7
external/ibm-public/postfix/dist/man/man8/virtual.8 up to 1.5
external/ibm-public/postfix/dist/mantools/check-postconf-unimplemented up to 1.1.1.2
external/ibm-public/postfix/dist/mantools/check-spell-history up to 1.1.1.2
external/ibm-public/postfix/dist/mantools/check-spell-proto-html up to 1.1.1.3
external/ibm-public/postfix/dist/mantools/dehtml up to 1.1.1.3
external/ibm-public/postfix/dist/mantools/postconf2man up to 1.1.1.7
external/ibm-public/postfix/dist/mantools/postlink up to 1.1.1.15
external/ibm-public/postfix/dist/mantools/srctoman up to 1.1.1.5
external/ibm-public/postfix/dist/proto/CDB_README.html up to 1.1.1.6
external/ibm-public/postfix/dist/proto/COMPATIBILITY_README.html up to 1.1.1.6
external/ibm-public/postfix/dist/proto/DATABASE_README.html up to 1.1.1.12
external/ibm-public/postfix/dist/proto/DEPRECATION_README.html up to 1.1.1.2
external/ibm-public/postfix/dist/proto/INSTALL.html up to 1.12
external/ibm-public/postfix/dist/proto/MULTI_INSTANCE_README.html up to 1.1.1.10
external/ibm-public/postfix/dist/proto/MYSQL_README.html up to 1.1.1.7
external/ibm-public/postfix/dist/proto/Makefile.in up to 1.1.1.9
external/ibm-public/postfix/dist/proto/OVERVIEW.html up to 1.1.1.8
external/ibm-public/postfix/dist/proto/SASL_README.html up to 1.1.1.13
external/ibm-public/postfix/dist/proto/SMTPUTF8_README.html up to 1.1.1.6
external/ibm-public/postfix/dist/proto/STANDARD_CONFIGURATION_README.html up to 1.1.1.8
external/ibm-public/postfix/dist/proto/TLSRPT_README.html up to 1.1.1.2
external/ibm-public/postfix/dist/proto/UUCP_README.html up to 1.1.1.5
external/ibm-public/postfix/dist/proto/VIRTUAL_README.html up to 1.1.1.6
external/ibm-public/postfix/dist/proto/XCLIENT_README.html up to 1.1.1.8
external/ibm-public/postfix/dist/proto/access up to 1.1.1.10
external/ibm-public/postfix/dist/proto/aliases up to 1.1.1.8
external/ibm-public/postfix/dist/proto/canonical up to 1.1.1.7
external/ibm-public/postfix/dist/proto/cidr_table up to 1.1.1.8
external/ibm-public/postfix/dist/proto/generic up to 1.1.1.6
external/ibm-public/postfix/dist/proto/index.html up to 1.1.1.2
external/ibm-public/postfix/dist/proto/ldap_table up to 1.1.1.9
external/ibm-public/postfix/dist/proto/lmdb_table up to 1.1.1.4
external/ibm-public/postfix/dist/proto/memcache_table up to 1.1.1.5
external/ibm-public/postfix/dist/proto/mongodb_table up to 1.1.1.2
external/ibm-public/postfix/dist/proto/mysql_table up to 1.1.1.10
external/ibm-public/postfix/dist/proto/nisplus_table up to 1.1.1.4
external/ibm-public/postfix/dist/proto/pcre_table up to 1.1.1.8
external/ibm-public/postfix/dist/proto/pgsql_table up to 1.1.1.10
external/ibm-public/postfix/dist/proto/postconf.html.prolog up to 1.1.1.7
external/ibm-public/postfix/dist/proto/postconf.man.prolog up to 1.1.1.5
external/ibm-public/postfix/dist/proto/postconf.proto up to 1.21
external/ibm-public/postfix/dist/proto/regexp_table up to 1.1.1.8
external/ibm-public/postfix/dist/proto/relocated up to 1.1.1.5
external/ibm-public/postfix/dist/proto/socketmap_table up to 1.1.1.5
external/ibm-public/postfix/dist/proto/sqlite_table up to 1.1.1.6
external/ibm-public/postfix/dist/proto/stop up to 1.1.1.9
external/ibm-public/postfix/dist/proto/stop.double-cc up to 1.1.1.4
external/ibm-public/postfix/dist/proto/stop.double-history up to 1.1.1.3
external/ibm-public/postfix/dist/proto/stop.double-install-proto-text up to 1.1.1.3
external/ibm-public/postfix/dist/proto/stop.double-proto-html up to 1.1.1.4
external/ibm-public/postfix/dist/proto/stop.spell-cc up to 1.1.1.4
external/ibm-public/postfix/dist/proto/stop.spell-history up to 1.1.1.3
external/ibm-public/postfix/dist/proto/stop.spell-proto-html up to 1.1.1.4
external/ibm-public/postfix/dist/proto/tcp_table up to 1.1.1.5
external/ibm-public/postfix/dist/proto/transport up to 1.1.1.6
external/ibm-public/postfix/dist/proto/virtual up to 1.1.1.8
external/ibm-public/postfix/dist/src/bounce/Makefile.in up to 1.1.1.7
external/ibm-public/postfix/dist/src/bounce/bounce.c up to 1.6
external/ibm-public/postfix/dist/src/bounce/bounce_notify_service.c up to 1.4
external/ibm-public/postfix/dist/src/bounce/bounce_notify_util.c up to 1.6
external/ibm-public/postfix/dist/src/bounce/bounce_notify_verp.c up to 1.4
external/ibm-public/postfix/dist/src/bounce/bounce_one_service.c up to 1.4
external/ibm-public/postfix/dist/src/bounce/bounce_trace_service.c up to 1.4
external/ibm-public/postfix/dist/src/bounce/bounce_warn_service.c up to 1.4
external/ibm-public/postfix/dist/src/cleanup/Makefile.in up to 1.1.1.11
external/ibm-public/postfix/dist/src/cleanup/cleanup.c up to 1.10
external/ibm-public/postfix/dist/src/cleanup/cleanup.h up to 1.12
external/ibm-public/postfix/dist/src/cleanup/cleanup_api.c up to 1.6
external/ibm-public/postfix/dist/src/cleanup/cleanup_bounce.c up to 1.4
external/ibm-public/postfix/dist/src/cleanup/cleanup_init.c up to 1.9
external/ibm-public/postfix/dist/src/cleanup/cleanup_message.c up to 1.6
external/ibm-public/postfix/dist/src/cleanup/cleanup_milter.c up to 1.7
external/ibm-public/postfix/dist/src/cleanup/cleanup_out_recipient.c up to 1.6
external/ibm-public/postfix/dist/src/cleanup/cleanup_state.c up to 1.6
external/ibm-public/postfix/dist/src/discard/Makefile.in up to 1.1.1.5
external/ibm-public/postfix/dist/src/discard/discard.c up to 1.4
external/ibm-public/postfix/dist/src/dns/dns.h up to 1.8
external/ibm-public/postfix/dist/src/dns/dns_lookup.c up to 1.10
external/ibm-public/postfix/dist/src/error/Makefile.in up to 1.1.1.5
external/ibm-public/postfix/dist/src/error/error.c up to 1.4
external/ibm-public/postfix/dist/src/global/Makefile.in up to 1.1.1.12
external/ibm-public/postfix/dist/src/global/abounce.c up to 1.5
external/ibm-public/postfix/dist/src/global/ascii_header_text.c up to 1.3
external/ibm-public/postfix/dist/src/global/ascii_header_text.h up to 1.3
external/ibm-public/postfix/dist/src/global/bounce.c up to 1.5
external/ibm-public/postfix/dist/src/global/bounce.h up to 1.3
external/ibm-public/postfix/dist/src/global/cleanup_strflags.c up to 1.3
external/ibm-public/postfix/dist/src/global/cleanup_user.h up to 1.5
external/ibm-public/postfix/dist/src/global/config_known_tcp_ports.c up to 1.3
external/ibm-public/postfix/dist/src/global/data_redirect.c up to 1.3
external/ibm-public/postfix/dist/src/global/defer.c up to 1.5
external/ibm-public/postfix/dist/src/global/defer.h up to 1.3
external/ibm-public/postfix/dist/src/global/deliver_pass.c up to 1.5
external/ibm-public/postfix/dist/src/global/dict_ldap.c up to 1.7
external/ibm-public/postfix/dist/src/global/dict_memcache.c up to 1.4
external/ibm-public/postfix/dist/src/global/dict_mongodb.c up to 1.3
external/ibm-public/postfix/dist/src/global/dict_mysql.c up to 1.6
external/ibm-public/postfix/dist/src/global/dict_pgsql.c up to 1.6
external/ibm-public/postfix/dist/src/global/dict_proxy.c up to 1.4
external/ibm-public/postfix/dist/src/global/dict_sqlite.c up to 1.6
external/ibm-public/postfix/dist/src/global/dict_sqlite.h up to 1.2
external/ibm-public/postfix/dist/src/global/dsn_util.c up to 1.2
external/ibm-public/postfix/dist/src/global/ehlo_mask.c up to 1.4
external/ibm-public/postfix/dist/src/global/ehlo_mask.h up to 1.4
external/ibm-public/postfix/dist/src/global/haproxy_srvr.c up to 1.5
external/ibm-public/postfix/dist/src/global/haproxy_srvr.h up to 1.3
external/ibm-public/postfix/dist/src/global/header_opts.c up to 1.4
external/ibm-public/postfix/dist/src/global/header_opts.h up to 1.4
external/ibm-public/postfix/dist/src/global/log_adhoc.c up to 1.4
external/ibm-public/postfix/dist/src/global/log_adhoc.h up to 1.2
external/ibm-public/postfix/dist/src/global/login_sender_match.c up to 1.3
external/ibm-public/postfix/dist/src/global/mail_conf.c up to 1.5
external/ibm-public/postfix/dist/src/global/mail_conf.h up to 1.4
external/ibm-public/postfix/dist/src/global/mail_params.c up to 1.7
external/ibm-public/postfix/dist/src/global/mail_params.h up to 1.21
external/ibm-public/postfix/dist/src/global/mail_proto.h up to 1.7
external/ibm-public/postfix/dist/src/global/mail_version.h up to 1.8
external/ibm-public/postfix/dist/src/global/maps.c up to 1.6
external/ibm-public/postfix/dist/src/global/mime_garb3.ref up to 1.1.1.2
external/ibm-public/postfix/dist/src/global/mime_state.c up to 1.4
external/ibm-public/postfix/dist/src/global/mime_state.h up to 1.2
external/ibm-public/postfix/dist/src/global/mynetworks.c up to 1.3
external/ibm-public/postfix/dist/src/global/namadr_list.in up to 1.1.1.5
external/ibm-public/postfix/dist/src/global/namadr_list.ref up to 1.1.1.6
external/ibm-public/postfix/dist/src/global/own_inet_addr.c up to 1.3
external/ibm-public/postfix/dist/src/global/pipe_command.c up to 1.3
external/ibm-public/postfix/dist/src/global/post_mail.c up to 1.6
external/ibm-public/postfix/dist/src/global/rec_type.h up to 1.5
external/ibm-public/postfix/dist/src/global/reject_deliver_request.c up to 1.3
external/ibm-public/postfix/dist/src/global/rfc2047_code.c up to 1.3
external/ibm-public/postfix/dist/src/global/rfc2047_code.h up to 1.3
external/ibm-public/postfix/dist/src/global/sendopts.c up to 1.3
external/ibm-public/postfix/dist/src/global/sent.c up to 1.4
external/ibm-public/postfix/dist/src/global/sent.h up to 1.3
external/ibm-public/postfix/dist/src/global/server_acl.c up to 1.5
external/ibm-public/postfix/dist/src/global/trace.c up to 1.4
external/ibm-public/postfix/dist/src/global/trace.h up to 1.2
external/ibm-public/postfix/dist/src/global/verify.c up to 1.5
external/ibm-public/postfix/dist/src/global/verify.h up to 1.2
external/ibm-public/postfix/dist/src/local/Makefile.in up to 1.1.1.10
external/ibm-public/postfix/dist/src/local/forward.c up to 1.6
external/ibm-public/postfix/dist/src/local/local.c up to 1.6
external/ibm-public/postfix/dist/src/local/local.h up to 1.4
external/ibm-public/postfix/dist/src/master/Makefile.in up to 1.1.1.9
external/ibm-public/postfix/dist/src/master/event_server.c up to 1.5
external/ibm-public/postfix/dist/src/master/multi_server.c up to 1.5
external/ibm-public/postfix/dist/src/milter/milter8.c up to 1.7
external/ibm-public/postfix/dist/src/milter/test-milter.c up to 1.5
external/ibm-public/postfix/dist/src/oqmgr/Makefile.in up to 1.1.1.7
external/ibm-public/postfix/dist/src/oqmgr/qmgr.c up to 1.4
external/ibm-public/postfix/dist/src/oqmgr/qmgr_bounce.c up to 1.2
external/ibm-public/postfix/dist/src/oqmgr/qmgr_defer.c up to 1.2
external/ibm-public/postfix/dist/src/oqmgr/qmgr_message.c up to 1.6
external/ibm-public/postfix/dist/src/pipe/Makefile.in up to 1.1.1.6
external/ibm-public/postfix/dist/src/pipe/pipe.c up to 1.6
external/ibm-public/postfix/dist/src/postalias/Makefile.in up to 1.1.1.8
external/ibm-public/postfix/dist/src/postalias/postalias.c up to 1.7
external/ibm-public/postfix/dist/src/postcat/postcat.c up to 1.6
external/ibm-public/postfix/dist/src/postconf/Makefile.in up to 1.1.1.13
external/ibm-public/postfix/dist/src/postconf/extract.awk up to 1.1.1.7
external/ibm-public/postfix/dist/src/postconf/postconf.c up to 1.6
external/ibm-public/postfix/dist/src/postconf/postconf.h up to 1.6
external/ibm-public/postfix/dist/src/postconf/postconf_builtin.c up to 1.5
external/ibm-public/postfix/dist/src/postconf/postconf_dbms.c up to 1.7
external/ibm-public/postfix/dist/src/postconf/postconf_edit.c up to 1.4
external/ibm-public/postfix/dist/src/postconf/postconf_lookup.c up to 1.5
external/ibm-public/postfix/dist/src/postconf/postconf_main.c up to 1.5
external/ibm-public/postfix/dist/src/postconf/postconf_master.c up to 1.9
external/ibm-public/postfix/dist/src/postconf/postconf_unused.c up to 1.3
external/ibm-public/postfix/dist/src/postconf/postconf_user.c up to 1.6
external/ibm-public/postfix/dist/src/postconf/test18.ref up to 1.1.1.2
external/ibm-public/postfix/dist/src/postconf/test2.ref up to 1.1.1.2
external/ibm-public/postfix/dist/src/postconf/test28.ref up to 1.1.1.4
external/ibm-public/postfix/dist/src/postconf/test29.ref up to 1.1.1.5
external/ibm-public/postfix/dist/src/postconf/test57.ref up to 1.1.1.2
external/ibm-public/postfix/dist/src/postconf/test59.ref up to 1.1.1.4
external/ibm-public/postfix/dist/src/postconf/test67.ref up to 1.1.1.3
external/ibm-public/postfix/dist/src/postconf/test76.ref up to 1.1.1.2
external/ibm-public/postfix/dist/src/postdrop/postdrop.c up to 1.6
external/ibm-public/postfix/dist/src/postfix/postfix.c up to 1.8
external/ibm-public/postfix/dist/src/postlog/postlog.c up to 1.7
external/ibm-public/postfix/dist/src/postmap/Makefile.in up to 1.1.1.9
external/ibm-public/postfix/dist/src/postmap/postmap.c up to 1.7
external/ibm-public/postfix/dist/src/postmulti/Makefile.in up to 1.1.1.6
external/ibm-public/postfix/dist/src/postmulti/postmulti.c up to 1.5
external/ibm-public/postfix/dist/src/postqueue/postqueue.c up to 1.6
external/ibm-public/postfix/dist/src/postqueue/showq_compat.c up to 1.5
external/ibm-public/postfix/dist/src/postqueue/showq_json.c up to 1.6
external/ibm-public/postfix/dist/src/postscreen/postscreen.c up to 1.7
external/ibm-public/postfix/dist/src/postscreen/postscreen_endpt.c up to 1.6
external/ibm-public/postfix/dist/src/posttls-finger/posttls-finger.c up to 1.7
external/ibm-public/postfix/dist/src/proxymap/Makefile.in up to 1.1.1.8
external/ibm-public/postfix/dist/src/proxymap/proxymap.c up to 1.6
external/ibm-public/postfix/dist/src/qmgr/Makefile.in up to 1.1.1.7
external/ibm-public/postfix/dist/src/qmgr/qmgr.c up to 1.5
external/ibm-public/postfix/dist/src/qmgr/qmgr_bounce.c up to 1.2
external/ibm-public/postfix/dist/src/qmgr/qmgr_defer.c up to 1.2
external/ibm-public/postfix/dist/src/qmgr/qmgr_message.c up to 1.6
external/ibm-public/postfix/dist/src/sendmail/Makefile.in up to 1.1.1.6
external/ibm-public/postfix/dist/src/sendmail/sendmail.c up to 1.6
external/ibm-public/postfix/dist/src/showq/showq.c up to 1.6
external/ibm-public/postfix/dist/src/smtp/Makefile.in up to 1.1.1.12
external/ibm-public/postfix/dist/src/smtp/lmtp_params.c up to 1.7
external/ibm-public/postfix/dist/src/smtp/smtp.c up to 1.15
external/ibm-public/postfix/dist/src/smtp/smtp.h up to 1.7
external/ibm-public/postfix/dist/src/smtp/smtp_connect.c up to 1.7
external/ibm-public/postfix/dist/src/smtp/smtp_key.c up to 1.4
external/ibm-public/postfix/dist/src/smtp/smtp_params.c up to 1.7
external/ibm-public/postfix/dist/src/smtp/smtp_proto.c up to 1.7
external/ibm-public/postfix/dist/src/smtp/smtp_rcpt.c up to 1.4
external/ibm-public/postfix/dist/src/smtp/smtp_state.c up to 1.5
external/ibm-public/postfix/dist/src/smtp/smtp_tls_policy.c up to 1.6
external/ibm-public/postfix/dist/src/smtp/smtp_tlsrpt.c up to 1.3
external/ibm-public/postfix/dist/src/smtp/smtp_trouble.c up to 1.4
external/ibm-public/postfix/dist/src/smtpd/Makefile.in up to 1.1.1.13
external/ibm-public/postfix/dist/src/smtpd/smtpd.c up to 1.22
external/ibm-public/postfix/dist/src/smtpd/smtpd.h up to 1.7
external/ibm-public/postfix/dist/src/smtpd/smtpd_chat.c up to 1.5
external/ibm-public/postfix/dist/src/smtpd/smtpd_check.c up to 1.8
external/ibm-public/postfix/dist/src/smtpd/smtpd_haproxy.c up to 1.4
external/ibm-public/postfix/dist/src/smtpd/smtpd_peer.c up to 1.6
external/ibm-public/postfix/dist/src/smtpd/smtpd_proxy.c up to 1.4
external/ibm-public/postfix/dist/src/smtpd/smtpd_proxy.h up to 1.2
external/ibm-public/postfix/dist/src/tls/Makefile.in up to 1.1.1.12
external/ibm-public/postfix/dist/src/tls/tls.h up to 1.7
external/ibm-public/postfix/dist/src/tls/tls_client.c up to 1.15
external/ibm-public/postfix/dist/src/tls/tls_dane.c up to 1.7
external/ibm-public/postfix/dist/src/tls/tls_dane.sh up to 1.1.1.2
external/ibm-public/postfix/dist/src/tls/tls_dh.c up to 1.7
external/ibm-public/postfix/dist/src/tls/tls_misc.c up to 1.7
external/ibm-public/postfix/dist/src/tls/tls_prng_file.c up to 1.3
external/ibm-public/postfix/dist/src/tls/tls_proxy.h up to 1.6
external/ibm-public/postfix/dist/src/tls/tls_proxy_client_misc.c up to 1.5
external/ibm-public/postfix/dist/src/tls/tls_proxy_client_print.c up to 1.6
external/ibm-public/postfix/dist/src/tls/tls_proxy_client_scan.c up to 1.6
external/ibm-public/postfix/dist/src/tls/tls_server.c up to 1.14
external/ibm-public/postfix/dist/src/tls/tls_verify.c up to 1.6
external/ibm-public/postfix/dist/src/tls/tlsrpt_wrapper.c up to 1.3
external/ibm-public/postfix/dist/src/tlsproxy/tlsproxy.c up to 1.8
external/ibm-public/postfix/dist/src/tlsproxy/tlsproxy_state.c up to 1.4
external/ibm-public/postfix/dist/src/trivial-rewrite/Makefile.in up to 1.1.1.7
external/ibm-public/postfix/dist/src/trivial-rewrite/resolve.c up to 1.6
external/ibm-public/postfix/dist/src/trivial-rewrite/trivial-rewrite.c up to 1.6
external/ibm-public/postfix/dist/src/util/Makefile.in up to 1.1.1.13
external/ibm-public/postfix/dist/src/util/alldig.c up to 1.4
external/ibm-public/postfix/dist/src/util/argv.c up to 1.6
external/ibm-public/postfix/dist/src/util/argv.h up to 1.6
external/ibm-public/postfix/dist/src/util/dict.c up to 1.5
external/ibm-public/postfix/dist/src/util/dict.h up to 1.7
external/ibm-public/postfix/dist/src/util/dict_alloc.c up to 1.4
external/ibm-public/postfix/dist/src/util/dict_cache.c up to 1.5
external/ibm-public/postfix/dist/src/util/dict_cache.h up to 1.3
external/ibm-public/postfix/dist/src/util/dict_cdb.c up to 1.5
external/ibm-public/postfix/dist/src/util/dict_cidr.c up to 1.6
external/ibm-public/postfix/dist/src/util/dict_db.c up to 1.5
external/ibm-public/postfix/dist/src/util/dict_dbm.c up to 1.3
external/ibm-public/postfix/dist/src/util/dict_debug.c up to 1.3
external/ibm-public/postfix/dist/src/util/dict_env.c up to 1.2
external/ibm-public/postfix/dist/src/util/dict_fail.c up to 1.3
external/ibm-public/postfix/dist/src/util/dict_inline.c up to 1.6
external/ibm-public/postfix/dist/src/util/dict_lmdb.c up to 1.5
external/ibm-public/postfix/dist/src/util/dict_ni.c up to 1.2
external/ibm-public/postfix/dist/src/util/dict_nis.c up to 1.2
external/ibm-public/postfix/dist/src/util/dict_nisplus.c up to 1.2
external/ibm-public/postfix/dist/src/util/dict_open.c up to 1.5
external/ibm-public/postfix/dist/src/util/dict_pcre.c up to 1.6
external/ibm-public/postfix/dist/src/util/dict_pipe.c up to 1.3
external/ibm-public/postfix/dist/src/util/dict_random.c up to 1.5
external/ibm-public/postfix/dist/src/util/dict_regexp.c up to 1.6
external/ibm-public/postfix/dist/src/util/dict_sdbm.c up to 1.2
external/ibm-public/postfix/dist/src/util/dict_seq.ref up to 1.1.1.2
external/ibm-public/postfix/dist/src/util/dict_sockmap.c up to 1.7
external/ibm-public/postfix/dist/src/util/dict_static.c up to 1.5
external/ibm-public/postfix/dist/src/util/dict_surrogate.c up to 1.3
external/ibm-public/postfix/dist/src/util/dict_tcp.c up to 1.3
external/ibm-public/postfix/dist/src/util/dict_test.c up to 1.3
external/ibm-public/postfix/dist/src/util/dict_thash.c up to 1.6
external/ibm-public/postfix/dist/src/util/dict_union.c up to 1.4
external/ibm-public/postfix/dist/src/util/dict_unix.c up to 1.2
external/ibm-public/postfix/dist/src/util/dict_utf8_test.ref up to 1.1.1.2
external/ibm-public/postfix/dist/src/util/hash_fnv.c up to 1.5
external/ibm-public/postfix/dist/src/util/hex_code.c up to 1.5
external/ibm-public/postfix/dist/src/util/hex_code.h up to 1.6
external/ibm-public/postfix/dist/src/util/htable.c up to 1.5
external/ibm-public/postfix/dist/src/util/inet_addr_list.c up to 1.3
external/ibm-public/postfix/dist/src/util/inet_prefix_top.c up to 1.4
external/ibm-public/postfix/dist/src/util/inet_proto.c up to 1.5
external/ibm-public/postfix/dist/src/util/mac_expand.c up to 1.5
external/ibm-public/postfix/dist/src/util/mac_expand.h up to 1.6
external/ibm-public/postfix/dist/src/util/mac_expand.in up to 1.1.1.5
external/ibm-public/postfix/dist/src/util/mac_expand.ref up to 1.1.1.5
external/ibm-public/postfix/dist/src/util/match_list.c up to 1.4
external/ibm-public/postfix/dist/src/util/midna_domain.c up to 1.6
external/ibm-public/postfix/dist/src/util/mkmap_open.c up to 1.3
external/ibm-public/postfix/dist/src/util/msg_vstream.c up to 1.2
external/ibm-public/postfix/dist/src/util/myaddrinfo.c up to 1.4
external/ibm-public/postfix/dist/src/util/myaddrinfo.h up to 1.5
external/ibm-public/postfix/dist/src/util/myaddrinfo.ref up to 1.1.1.6
external/ibm-public/postfix/dist/src/util/myaddrinfo.ref2 up to 1.1.1.2
external/ibm-public/postfix/dist/src/util/myaddrinfo4.ref up to 1.1.1.3
external/ibm-public/postfix/dist/src/util/myaddrinfo4.ref2 up to 1.1.1.2
external/ibm-public/postfix/dist/src/util/myflock.c up to 1.4
external/ibm-public/postfix/dist/src/util/name_mask.c up to 1.5
external/ibm-public/postfix/dist/src/util/name_mask.h up to 1.2
external/ibm-public/postfix/dist/src/util/name_mask.ref5 up to 1.1.1.2
external/ibm-public/postfix/dist/src/util/name_mask.ref6 up to 1.1.1.2
external/ibm-public/postfix/dist/src/util/netstring.c up to 1.5
external/ibm-public/postfix/dist/src/util/normalize_ws.c up to 1.3
external/ibm-public/postfix/dist/src/util/open_as.c up to 1.2
external/ibm-public/postfix/dist/src/util/open_as.h up to 1.2
external/ibm-public/postfix/dist/src/util/quote_for_json.c up to 1.3
external/ibm-public/postfix/dist/src/util/sane_sockaddr_to_hostaddr.c up to 1.3
external/ibm-public/postfix/dist/src/util/spawn_command.c up to 1.4
external/ibm-public/postfix/dist/src/util/spawn_command.h up to 1.3
external/ibm-public/postfix/dist/src/util/stringops.h up to 1.7
external/ibm-public/postfix/dist/src/util/sys_defs.h up to 1.16
external/ibm-public/postfix/dist/src/util/unescape.ref up to 1.1.1.3
external/ibm-public/postfix/dist/src/util/vbuf_print.c up to 1.6
external/ibm-public/postfix/dist/src/util/vbuf_print_test.in up to 1.1.1.2
external/ibm-public/postfix/dist/src/util/vbuf_print_test.ref up to 1.1.1.2
external/ibm-public/postfix/dist/src/util/vstream.c up to 1.6
external/ibm-public/postfix/dist/src/util/vstream.h up to 1.5
external/ibm-public/postfix/dist/src/util/vstring.c up to 1.5
external/ibm-public/postfix/dist/src/util/vstring_vstream.c up to 1.3
external/ibm-public/postfix/dist/src/verify/verify.c up to 1.6
external/ibm-public/postfix/dist/src/virtual/Makefile.in up to 1.1.1.7
external/ibm-public/postfix/dist/src/virtual/virtual.c up to 1.5
external/ibm-public/postfix/dist/src/virtual/virtual.h up to 1.2
external/ibm-public/postfix/dist/src/xsasl/xsasl_dovecot_server.c up to 1.6
external/ibm-public/postfix/lib/global/Makefile up to 1.12
external/ibm-public/postfix/lib/util/Makefile up to 1.13
external/ibm-public/postfix/libexec/smtp/Makefile up to 1.5
doc/3RDPARTY (manually edited)
Import Postfix 3.11.2.
@
text
@a0 899
Postfix Non-Berkeley-DB migration
Postfix
Non-Berkeley-DB migration
Table of contents
Note: be sure to visit the on-line version of this text at
https://www.postfix.org/NON_BERKELEYDB_README.html, as support for
different Postfix versions may be added over time.
(Please see the Appendix for Mailman
integration tips.)
After running the same Postfix configuration for a decade or
more, there is a rude awakening when you update the OS to a newer
version that has deleted its support for Berkeley DB. Postfix
programs fail to open all hash: and btree: tables with messages
like this:
Berkeley DB support for 'hash:/etc/postfix/virtual' is not available
for this build; see https://www.postfix.org/NON_BERKELEYDB_README.html
for alternatives
This document comes to the rescue, with strategies to migrate
an existing Postfix configuration that uses Berkeley DB hash: and
btree: database files, to an OS distribution that has removed
Berkeley DB support, with a Postfix configuration that uses lmdb: (or
a combination of cdb: and lmdb:).
By the way, you don't have to wait until Berkeley DB support
is removed; your can proactively use the steps described here on a
system that still has Berkeley DB, to migrate a Postfix configuration
from Berkeley DB to lmdb: (or a combination of cdb: and lmdb:).
Historically, Postfix has used Berkeley DB hash: and btree: for
key-value stores, as indicated in the "With Berkeley DB" table
column below. In a world without Berkeley DB, good replacements are
cdb: and lmdb: as indicated in the "No Berkeley DB" column.
Purpose
With Berkeley DB
No Berkeley
DB
Mostly-static data such as aliases, transport_maps,
access tables
The sections that follow present three migration strategies
with different levels of assistance by tooling that was developed
for Postfix 3.11 and later.
On systems that have removed Berkeley DB support, run "make
makefiles" with a CCARGS value that (also) contains "-DNO_DB",
and specify appropriate values for default_database_type (lmdb or cdb)
and default_cache_db_type (lmdb).
In the examples below, the "..." are place holders any
dependencies that you build Postfix with, such as CDB, LDAP, LMDB,
MySQL/MariaDB, OpenSSL, SASL, and so on.
The goal of the migration is clear: stop using hash: and btree:,
and use lmdb: or cdb: instead. If your configuration is simple or
if you are familiar with Postfix configuration, a few "grep"
commands will find all the problems, and a few edits will be easy
to make.
If, on the other hand, you are not familiar with the details of your
Postfix configuration, then this document provides options where Postfix
can help.
Postfix 3.11 introduces multiple levels of migration support.
You can use the command "postfix non-bdb status" to view
the migration support level. This is what the default should look
like (terminal input is bold, output is normal
font):
You start up Postfix, watch the logging when Postfix programs
fail to open a hash: or btree: table, edit Postfix configuration
files to use lmdb: or cdb:, then run postmap(1) or postalias(1)
commands to create lmdb: or cdb: indexed database files. Use this
option if you are familiar with Postfix configuration.
This will not fix the integration with Mailman versions from
before gitlab
commit 8fa56b72 (May 2025) and other software that are broken
when they want to use "postmap hash:/path/to/file".
Mailman uses this to maintain a table with mailing list contact
addresses. For that, you need to use the next-up level.
This level implicitly redirects a request to access
hash:/path/to/file to $default_database_type:/path/to/file,
and redirects a request to access a btree:/path/to/file to
$default_cache_db_type:/path/to/file.
This still requires manually running postmap(1) or postalias(1)
commands, but "fixes" the integration with Mailman versions from
before gitlab
commit 8fa56b72 (May 2025) and other software when they want
to use "postmap hash:/path/to/file", and Berkeley
DB support is not available. Such commands will implicitly create
a new lmdb: or cdb: indexed database file, depending on the
default_database_type value.
This level implements "enable-redirect (database
aliasing)", and also runs the postmap(1) or postalias(1) command to create
a new lmdb or cdb indexed database file. This uses the nbdb_reindexd(8)
daemon.
Using these levels gives you extra time to prepare for a
long-term configuration change that replaces hard-coded instances of hash:
with the value of default_database_type, and that replaces btree: with
the value of default_cache_db_type.
Depending on your use of other software that wants to use
postmap(1) or postalias(1) commands, you may have to permanently
the leave the enable-redirect level
active.
After this overview, the sections that follow will go into more
detail.
This will edit main.cf to remove a non_bdb_migration_level setting
and the level revert to its implicit default (disable), and will edit
master.cf to remove an entry for the reindex service.
This setting will cause problems with Mailman versions from
before gitlab
commit 8fa56b72 (May 2025) and other software that wants to use
"postmap hash:/path/to/file" (or similar postalias
commands), and Berkeley DB support is no longer available. In that
case, you will need the "enable-redirect" migration support
level.
Alternatively, make cdb the default for default_database_type
(read-mostly lookup tables).
Look for hash: and btree: references in Postfix
configuration files. Instead of /etc/postfix use the pathname
in the output from "postconf -x config_directory".
# grep -E -r '(hash|btree):/' /etc/postfix
(Use "egrep" on systems that do not support "grep -E".)
For each instance in the "grep" output :
Edit the configuration file and replace "hash" with "lmdb"
or "cdb" (use the same value as the output from "postconf
-hx default_database_type") and replace "btree" with "lmdb".
If this instance has no source file (only the ".db" file
exists), proceed with the next instance of "grep" output.
Postfix 3.11 and later: if this instance appears in the
output from "postconf -hPPx '*/*/alias_maps' | sort -u",
run the postalias(1) command. If this instance is like
"lmdb:/path/to/source":
Instead of "lmdb:" use "cdb:" if the instance is like
"cdb:/path/to/source".
Postfix 3.10 and earlier: if this instance appears in the
output from "postconf -hx alias_maps", run the
postalias(1) command. If this instance is like "lmdb:/path/to/source":
Watch the log for
warnings about files that cannot be opened, find the configuration
file that still uses "hash" or "btree", and repeat steps 1-5 above.
Enable inbound network mail, reload Postfix, and connect
to the Postfix SMTP network port.
Watch the log for
warnings about files that cannot be opened, find the configuration
file that still uses "hash" or "btree", and repeat steps 1-5 above.
This migration support level will not automatically create
non-Berkeley-DB indexed database files; if you need that, see "enable-redirect below. Instead, Postfix
programs will log an error as they fail to open an indexed database
file, and will leave it to the system administrator to run postmap(1)
or postalias(1) to create that file.
Migration Process with 'enable-redirect' (Postfix 3.11
and later)
Scan the logging for
failure to open database files. For each instance of
"hash:/path/to/source" or "btree:/path/to/source"
that requires manually running postmap(1) or postalias(1):
If this instance appears in the output from "postconf
-hPPx '*/*/alias_maps' | sort -u", run the postalias(1)
command. If this instance is like "lmdb:/path/to/source":
This may reveal a few more problems. Once there are no more
errors with opening database files for about 24 hours, scan the log for messages similar to:
redirecting xxx:/path/to/file to yyy:/path/to/file
and update the obsolete Postfix configuration settings, replacing
"xxx:/path/to/file" with "yyy:/path/to/file.
Once there is no more "redirect" logging, and there are no other
programs (such as Mailman, see Appendix
below) that want to use "postmap hash:/path/to/file", then
you can turn off non-Berkeley-DB migration support (see "disable" above).
This migration support level will fix problems with Mailman
versions from before May 2025 and other software that wants to use
"postmap hash:/path/to/file". With database
redirection, such commands will implicitly create an indexed file
for $default_database_type:/path/to/file (similar aliasing
happens for postalias commands).
NOTE: this level should be used only temporarily to generate
most of the non-Berkeley-DB indexed files that Postfix needs.
Leaving this enabled may expose the system to privilege-escalation
attacks. There are no security concerns for using enable-redirect.
But you should probably wait and review the "Migration Process"
below first.
This postfix non-bdb command edits main.cf to set the non-Berkeley-DB
migration support level, and master.cf to add or replace an
nbdb-reindex service entry.
The resulting configuration implements not only the functionality
of enable-redirect, but also tries
to automatically create a non-Berkeley-DB indexed database file
when a daemon program wants to access a file that does not exist.
This uses the nbdb_reindexd(8) daemon to run postmap(1) or postalias(1)
commands for databases that satisfy basic requirements to block
privilege-escalation attacks. The number of requirements is large,
but mainly, database files and their parent directory must not allow
write access for group or other users, and their pathnames must
match a list of trusted directory prefixes. The complete list of
requirements is documented in nbdb_reindexd(8).
This may reveal a few more problems. Once there are no more
errors from Postfix programs for about 24 hours, turn off automatic
index generation by reducing the support level to enable-redirect
with:
redirecting xxx:/path/to/file to yyy:/path/to/file
and update the obsolete Postfix configuration settings, replacing
"xxx:/path/to/file" with "yyy:/path/to/file.
Once there is no more "redirect" logging, and there are no other
programs (such as Mailman, see Appendix
below) that want to use "postmap hash:/path/to/file", then
you can turn off non-Berkeley-DB migration support (see "disable" above). You will have keep Postfix
configured with "enable-redirect" until Mailman can be
updated to a version that supports other Postfix database types.
could not execute command 'postmap lmdb:/path/to/file': table
/path/to/file has an unexpected pathname;
to allow automatic indexing as root, append its parent directory
to the non_bdb_migration_allow_root_prefixes setting (current setting
is: "/etc /usr/local/etc");
alternatively, execute the failed command by hand
You have two options:
If you think that the suggested change is safe, update the
setting as proposed and execute "postfix reload".
Alternatively, you can execute the failed postmap(1) or
postalias(1) command by hand, and Postfix will not log the same error
again.
A similar request may be logged when a file needs to be indexed as
a non-root user.
Unexpected file or directory owner or permissions
Other errors may be logged
when a database file or directory has an unexpected owner, or when
it is writable by group or by other users.
Example with line breaks added for readability:
could not execute command 'postmap lmdb:/path/to/file': legacy
indexed file '/path/to/file.db' is owned by uid '0', but parent
directory '/path/to' is owned or writable by other user;
to allow automatic indexing, correct the ownership or permissions;
alternatively, execute the failed command by hand
Again, you have two options:
Fix the ownership or permission error.
Execute the failed postmap(1) or postalias(1) command by
hand, and Postfix will not log the same error again.
This section has instructions to migrate an existing Mailman
configuration that wants to use commands like "postmap
hash:/path/to/file". Mailman uses such commands to maintain
tables with mailing list contact addresses and domain names. This
will break on systems that no longer have Berkeley DB support.
Solutions:
(Not recommended) Upgrade to a Mailman version that contains
gitlab commit 8fa56b72 (May 2025). Unfortunately,
this has not yet been widely adopted by OS distributions.
Avoid Mailman changes, and use Postfix migration support
described below. In a nutshell, the postmap command will execute
the command "postmap hash:/path/to/file" as if the command
specifies lmdb:/path/to/file (or cdb:, depending on Postfix
configuration).
With Mailman3 the integration with Postfix using LMTP may look
like:
/var/lib/mailman3/data/postfix_domains (domain names)
/var/lib/mailman3/data/postfix_domains.db (Berkeley DB hash file)
/var/lib/mailman3/data/postfix_lmtp (transport map)
/var/lib/mailman3/data/postfix_lmtp.db (Berkeley DB hash file)
Caution: the data directory may contain other files
with names ending in ".db" that are not part of the
Mailman-Postfix integration. Do not tamper with the other files.
This will fix the problem that Mailman wants to use commands like
"postmap hash:/path/to/postfix_domains" and "postmap
hash:/path/to/postfix_lmtp".
Instead of complaining about an unsupported database type, these
postmap commands will implicitly create ".lmdb" indexed
files like (lmdb:/path/to/postfix_domains or
lmdb:/path/to/postfix_lmtp, or their cdb: versions depending
on the Postfix default_database_type setting).
This will not fix the problem that Postfix wants to
use databases like hash:/path/to/postfix_domains
and hash::/path/to/postfix_lmtp. With enable-redirect, these will redirect to
".lmdb" indexed files (good) but those files do not yet exist
(bad). You will need to create them by hand with commands like:
After this, no further human action will be needed. When Mailman
needs to update these files, it will invoke postmap commands that
will work as promised above. Leave the Postfix migration level at enable-reindex until you can upgrade to a
newer Mailman version that supports Postfix with non-Berkeley
databases.
enable-reindex (also automatically
run postmap commands)
In addition to "enable-redirect",
Postfix will also try to run commands like "postmap
lmdb:/path/to/postfix_domains" and "postmap
lmdb:/path/to/postfix_lmtp". There will be some delay
depending on the amount of mailing list traffic; you may want to post
a test message to make the postmap commands happen sooner.
Note: once these "postmap" commands have completed,
you should reduce the migration support level with the command
"postfix non-bdb enable-redirect". For security reasons the enable-reindex level should not be permanently
enabled.