From: Wietse Venema Date: Mon, 24 Sep 2012 05:00:00 +0000 (-0500) Subject: postfix-2.10-20120924 X-Git-Tag: v2.10.0-RC1~15 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8db724d4738a87b44fb4be236fccb942772d333b;p=thirdparty%2Fpostfix.git postfix-2.10-20120924 --- diff --git a/postfix/HISTORY b/postfix/HISTORY index 0f30ecef8..c26b33053 100644 --- a/postfix/HISTORY +++ b/postfix/HISTORY @@ -17941,3 +17941,40 @@ Apologies for any names omitted. Cleanup (for change 20120824): the DSN RET attribute should not be stored once per recipient. It is a message property just like DSN ENVID. File: sendmail/sendmail.c. + +20120911 + + Documentation: more explicit enumeration of what happens + when setting a per-destination recipient limit value to 1. + File: proto/postconf.proto. + +20120918 + + Documentation: clarified the bounce/queue_life-time parameter + descriptions. File: proto/postconf.proto. + +20120920 + + Documentation: the postscreen_whitelist_interfaces parameter + syntax was defined only by example. File: proto/postconf.proto. + +20120923 + + Infrastructure: cleaned up the support for database + lock-on-open. This is needed for databases that are not + multi-updater safe. Files: util/dict_alloc.c, util/dict.c, + util/dict_open.c, util/dict.h. tls/tls_scache.c. + +20120924 + + Documentation: some people are read-challenged distribute + their own incorrect understanding of master.cf syntax. + File: proto/master. + + Cleanup: don't emulate UNIX-domain sockets over FIFOs on + Solaris systems less than 10 years old. This allows us to + globally s/fifo/unix/ in master.cf. Files: makedefs, + util/sys_defs.h. + + Laptop-friendliness: avoid disk spin-up on idle systems by + s/fifo/unix/ in master.cf. Files: conf/master.cf. diff --git a/postfix/README_FILES/POSTSCREEN_README b/postfix/README_FILES/POSTSCREEN_README index 0d2c1695b..4931e1adc 100644 --- a/postfix/README_FILES/POSTSCREEN_README +++ b/postfix/README_FILES/POSTSCREEN_README @@ -93,11 +93,11 @@ focused on. GGeenneerraall ooppeerraattiioonn -The postscreen(8) triage process involves a number of tests, in the order as -described below. Some tests introduce a delay of a few seconds. postscreen(8) -maintains a temporary whitelist for clients that pass its tests; by allowing -whitelisted clients to skip tests, postscreen(8) minimizes its impact on -legitimate email traffic. +For each connection from an SMTP client, postscreen(8) performs a number of +tests in the order as described below. Some tests introduce a delay of a few +seconds. postscreen(8) maintains a temporary whitelist for clients that pass +its tests; by allowing whitelisted clients to skip tests, postscreen(8) +minimizes its impact on legitimate email traffic. By default, postscreen(8) hands off all connections to a Postfix SMTP server process after logging its findings. This mode is useful for non-destructive diff --git a/postfix/WISHLIST b/postfix/WISHLIST index d7841a01a..077258562 100644 --- a/postfix/WISHLIST +++ b/postfix/WISHLIST @@ -9,6 +9,32 @@ Wish list: Don't forget Apple's code donation for fetching mail from IMAP server. + Make "rename" the default when postmapping a DB file + (later: use copy+rename for postmap -i, postmap -d). + + On most systems, switching the qmgr and pickup services + from "fifo" to "unix" endpoints can avoid disk spin-up due + to mtime changes. However, Postfix on Solaris emulates + UNIX-domain sockets by sending a file handle through a FIFO. + Either we need to a) find out if a Solaris FIFO is a "unix" + or "fifo" endpoint (parsing master.cf is not an option for + chrooted daemons), or b) silently implement a Solaris "fifo" + endpoint as if master.cf says "unix", so that all Solaris + FIFOs are emulated UNIX-domain endpoints. Or, we bite the + bullet and stop emulating UNIX-domain onver FIFOs. + + Service-name parameters aren't documented in daemon manpages. + + When faking up the DSN ORCPT, don't send bare usernames + from local command-line submission. + + lmtp_assume_final is broken. A 2XX response does not imply + final delivery. The Sieve language implements accept-then-bounce. + + postscreen event-driven plug-in interface to send out a + query in parallel with the Pregreet and DNSBL tests, using + a simplified version of the policy delegation protocol. + Parallelized queue preprocessing: rip out the queue manager code to read queue files and resolve recipients, and run it in parallel processes. The queue manager then processes @@ -18,13 +44,12 @@ Wish list: compared to hundreds of mail receiving or sending processes (especially if there is a way to scan the queue in parallel). - mem_pool module for frequently-allocated objects - such as postscreen VSTRINGS and STATE objects. - Operations: create, put, get, maybe destroy. - Call-backs: init, reset, and maybe destroy. - - Make "rename" the default when postmapping a DB file - (later: use copy+rename for postmap -i, postmap -d). + Memory pools for same-type memory objects. This can be + used to either increase memory locality for frequently-allocated + objects (MRU allocation) or to make use-after-free bugs + more detectable (use LRU allocation and wipe the object + immediately after free(). Finally, same-type memory pools + prevent object type errors with use-after-free bugs. "no-cache" option for selected postscreen tests? @@ -43,20 +68,6 @@ Wish list: Replace master(8) SIGHUP by very simple socket protocol to allow reload of a specific service. - Make the "trigger" service endpoint type configurable. On - non-Solaris systems, switching from fifo to unix can avoid - disk spin-up due to mtime changes (Postfix on Solaris - emulates UNIX-domain sockets by sending a file handle through - a FIFO). - - Service-name parameters aren't documented in daemon manpages. - - When faking up the DSN ORCPT, don't send bare usernames - from local command-line submission. - - lmtp_assume_final is broken. A 2XX response does not imply - final delivery. The Sieve language implements accept-then-bounce. - postscreen: in the dummy SMTP engine, log the protocol state at time of violation (like smtpd, set state->where initially to CONNECT, then update it with the name of the last "known" diff --git a/postfix/conf/master.cf b/postfix/conf/master.cf index 849f1599b..acc67d726 100644 --- a/postfix/conf/master.cf +++ b/postfix/conf/master.cf @@ -34,10 +34,10 @@ smtp inet n - n - - smtpd # -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject # -o milter_macro_daemon_name=ORIGINATING #628 inet n - n - - qmqpd -pickup fifo n - n 60 1 pickup +pickup unix n - n 60 1 pickup cleanup unix n - n - 0 cleanup -qmgr fifo n - n 300 1 qmgr -#qmgr fifo n - n 300 1 oqmgr +qmgr unix n - n 300 1 qmgr +#qmgr unix n - n 300 1 oqmgr tlsmgr unix - - n 1000? 1 tlsmgr rewrite unix - - n - - trivial-rewrite bounce unix - - n - 0 bounce diff --git a/postfix/html/POSTSCREEN_README.html b/postfix/html/POSTSCREEN_README.html index 20533e0b2..06b8dce50 100644 --- a/postfix/html/POSTSCREEN_README.html +++ b/postfix/html/POSTSCREEN_README.html @@ -132,7 +132,8 @@ and that is the problem that postscreen(8) is fo

General operation

-

The postscreen(8) triage process involves a number of tests, +

For each connection from an SMTP client, postscreen(8) performs +a number of tests in the order as described below. Some tests introduce a delay of a few seconds. postscreen(8) maintains a temporary whitelist for clients that pass its tests; by allowing whitelisted clients to diff --git a/postfix/html/mailq.1.html b/postfix/html/mailq.1.html index 32de6bf2d..3fa1ae37f 100644 --- a/postfix/html/mailq.1.html +++ b/postfix/html/mailq.1.html @@ -219,52 +219,51 @@ SENDMAIL(1) SENDMAIL(1) -R return Delivery status notification control. Specify - "hdrs" to return only the header if a message + "hdrs" to return only the header when a message bounces, "full" to return a full copy (the default behavior). - The -R option specifies an upper bound; for exam- - ple, Postfix will return only the header, when a - full copy would exceed the bounce_size_limit set- - ting. + The -R option specifies an upper bound; Postfix + will return only the header, when a full copy would + exceed the bounce_size_limit setting. This option is ignored before Postfix version 2.10. - -q Attempt to deliver all queued mail. This is imple- + -q Attempt to deliver all queued mail. This is imple- mented by executing the postqueue(1) command. Warning: flushing undeliverable mail frequently - will result in poor delivery performance of all + will result in poor delivery performance of all other mail. -qinterval (ignored) - The interval between queue runs. Use the + The interval between queue runs. Use the queue_run_delay configuration parameter instead. -qIqueueid Schedule immediate delivery of mail with the speci- - fied queue ID. This option is implemented by exe- - cuting the postqueue(1) command, and is available + fied queue ID. This option is implemented by exe- + cuting the postqueue(1) command, and is available with Postfix version 2.4 and later. -qRsite - Schedule immediate delivery of all mail that is + Schedule immediate delivery of all mail that is queued for the named site. This option accepts only - site names that are eligible for the "fast flush" - service, and is implemented by executing the + site names that are eligible for the "fast flush" + service, and is implemented by executing the postqueue(1) command. See flush(8) for more infor- mation about the "fast flush" service. -qSsite - This command is not implemented. Use the slower + This command is not implemented. Use the slower "sendmail -q" command instead. - -t Extract recipients from message headers. These are - added to any recipients specified on the command + -t Extract recipients from message headers. These are + added to any recipients specified on the command line. - With Postfix versions prior to 2.1, this option - requires that no recipient addresses are specified + With Postfix versions prior to 2.1, this option + requires that no recipient addresses are specified on the command line. -U (ignored) @@ -277,41 +276,41 @@ SENDMAIL(1) SENDMAIL(1) This feature is available in Postfix 2.3 and later. -XV (Postfix 2.2 and earlier: -V) - Variable Envelope Return Path. Given an envelope - sender address of the form owner-listname@origin, - each recipient user@domain receives mail with a + Variable Envelope Return Path. Given an envelope + sender address of the form owner-listname@origin, + each recipient user@domain receives mail with a personalized envelope sender address. - By default, the personalized envelope sender - address is owner-listname+user=domain@origin. The - default + and = characters are configurable with - the default_verp_delimiters configuration parame- + By default, the personalized envelope sender + address is owner-listname+user=domain@origin. The + default + and = characters are configurable with + the default_verp_delimiters configuration parame- ter. -XVxy (Postfix 2.2 and earlier: -Vxy) - As -XV, but uses x and y as the VERP delimiter - characters, instead of the characters specified - with the default_verp_delimiters configuration + As -XV, but uses x and y as the VERP delimiter + characters, instead of the characters specified + with the default_verp_delimiters configuration parameter. - -v Send an email report of the first delivery attempt - (Postfix versions 2.1 and later). Mail delivery - always happens in the background. When multiple -v + -v Send an email report of the first delivery attempt + (Postfix versions 2.1 and later). Mail delivery + always happens in the background. When multiple -v options are given, enable verbose logging for debugging purposes. -X log_file (ignored) - Log mailer traffic. Use the debug_peer_list and - debug_peer_level configuration parameters instead. + Log mailer traffic. Use the debug_peer_list and + debug_peer_level configuration parameters instead. SECURITY - By design, this program is not set-user (or group) id. - However, it must handle data from untrusted, possibly - remote, users. Thus, the usual precautions need to be + By design, this program is not set-user (or group) id. + However, it must handle data from untrusted, possibly + remote, users. Thus, the usual precautions need to be taken against malicious inputs. DIAGNOSTICS - Problems are logged to syslogd(8) and to the standard + Problems are logged to syslogd(8) and to the standard error stream. ENVIRONMENT @@ -323,29 +322,29 @@ SENDMAIL(1) SENDMAIL(1) MAIL_DEBUG (value does not matter) Enable debugging with an external command, as spec- - ified with the debugger_command configuration + ified with the debugger_command configuration parameter. - NAME The sender full name. This is used only with mes- - sages that have no From: message header. See also + NAME The sender full name. This is used only with mes- + sages that have no From: message header. See also the -F option above. CONFIGURATION PARAMETERS - The following main.cf parameters are especially relevant + The following main.cf parameters are especially relevant to this program. The text below provides only a parameter - summary. See postconf(5) for more details including exam- + summary. See postconf(5) for more details including exam- ples. COMPATIBILITY CONTROLS Available with Postfix 2.9 and later: sendmail_fix_line_endings (always) - Controls how the Postfix sendmail command converts - email message line endings from <CR><LF> into UNIX + Controls how the Postfix sendmail command converts + email message line endings from <CR><LF> into UNIX format (<LF>). TROUBLE SHOOTING CONTROLS - The DEBUG_README file gives examples of how to trouble + The DEBUG_README file gives examples of how to trouble shoot a Postfix system. debugger_command (empty) @@ -353,29 +352,29 @@ SENDMAIL(1) SENDMAIL(1) mon program is invoked with the -D option. debug_peer_level (2) - The increment in verbose logging level when a - remote client or server matches a pattern in the + The increment in verbose logging level when a + remote client or server matches a pattern in the debug_peer_list parameter. debug_peer_list (empty) - Optional list of remote client or server hostname - or network address patterns that cause the verbose - logging level to increase by the amount specified + Optional list of remote client or server hostname + or network address patterns that cause the verbose + logging level to increase by the amount specified in $debug_peer_level. ACCESS CONTROLS Available in Postfix version 2.2 and later: authorized_flush_users (static:anyone) - List of users who are authorized to flush the + List of users who are authorized to flush the queue. authorized_mailq_users (static:anyone) List of users who are authorized to view the queue. authorized_submit_users (static:anyone) - List of users who are authorized to submit mail - with the sendmail(1) command (and with the privi- + List of users who are authorized to submit mail + with the sendmail(1) command (and with the privi- leged postdrop(1) helper command). RESOURCE AND RATE CONTROLS @@ -384,7 +383,7 @@ SENDMAIL(1) SENDMAIL(1) sent in a non-delivery notification. fork_attempts (5) - The maximal number of attempts to fork() a child + The maximal number of attempts to fork() a child process. fork_delay (1s) @@ -392,11 +391,11 @@ SENDMAIL(1) SENDMAIL(1) process. hopcount_limit (50) - The maximal number of Received: message headers + The maximal number of Received: message headers that is allowed in the primary message headers. queue_run_delay (300s) - The time between deferred queue scans by the queue + The time between deferred queue scans by the queue manager; prior to Postfix 2.4 the default value was 1000s. @@ -406,37 +405,37 @@ SENDMAIL(1) SENDMAIL(1) fast_flush_domains ($relay_domains) Optional list of destinations that are eligible for - per-destination logfiles with mail that is queued + per-destination logfiles with mail that is queued to those destinations. VERP CONTROLS The VERP_README file describes configuration and operation - details of Postfix support for variable envelope return + details of Postfix support for variable envelope return path addresses. default_verp_delimiters (+=) The two default VERP delimiter characters. verp_delimiter_filter (-=+) - The characters Postfix accepts as VERP delimiter - characters on the Postfix sendmail(1) command line + The characters Postfix accepts as VERP delimiter + characters on the Postfix sendmail(1) command line and in SMTP commands. MISCELLANEOUS CONTROLS alias_database (see 'postconf -d' output) - The alias databases for local(8) delivery that are + The alias databases for local(8) delivery that are updated with "newaliases" or with "sendmail -bi". command_directory (see 'postconf -d' output) - The location of all postfix administrative com- + The location of all postfix administrative com- mands. config_directory (see 'postconf -d' output) - The default location of the Postfix main.cf and + The default location of the Postfix main.cf and master.cf configuration files. daemon_directory (see 'postconf -d' output) - The directory with Postfix support programs and + The directory with Postfix support programs and daemon programs. default_database_type (see 'postconf -d' output) @@ -444,16 +443,16 @@ SENDMAIL(1) SENDMAIL(1) postalias(1) and postmap(1) commands. delay_warning_time (0h) - The time after which the sender receives the mes- + The time after which the sender receives the mes- sage headers of mail that is still queued. enable_errors_to (no) - Report mail delivery errors to the address speci- - fied with the non-standard Errors-To: message - header, instead of the envelope sender address - (this feature is removed with Postfix version 2.2, - is turned off by default with Postfix version 2.1, - and is always turned on with older Postfix ver- + Report mail delivery errors to the address speci- + fied with the non-standard Errors-To: message + header, instead of the envelope sender address + (this feature is removed with Postfix version 2.2, + is turned off by default with Postfix version 2.1, + and is always turned on with older Postfix ver- sions). mail_owner (postfix) @@ -461,21 +460,21 @@ SENDMAIL(1) SENDMAIL(1) and most Postfix daemon processes. queue_directory (see 'postconf -d' output) - The location of the Postfix top-level queue direc- + The location of the Postfix top-level queue direc- tory. remote_header_rewrite_domain (empty) - Don't rewrite message headers from remote clients + Don't rewrite message headers from remote clients at all when this parameter is empty; otherwise, re- - write message headers and append the specified + write message headers and append the specified domain name to incomplete addresses. syslog_facility (mail) The syslog facility of Postfix logging. syslog_name (see 'postconf -d' output) - The mail system name that is prepended to the - process name in syslog records, so that "smtpd" + The mail system name that is prepended to the + process name in syslog records, so that "smtpd" becomes, for example, "postfix/smtpd". FILES @@ -500,7 +499,7 @@ SENDMAIL(1) SENDMAIL(1) VERP_README, Postfix VERP howto LICENSE - The Secure Mailer license must be distributed with this + The Secure Mailer license must be distributed with this software. AUTHOR(S) diff --git a/postfix/html/master.5.html b/postfix/html/master.5.html index 923a479a7..b8a0bc3ed 100644 --- a/postfix/html/master.5.html +++ b/postfix/html/master.5.html @@ -34,6 +34,14 @@ MASTER(5) MASTER(5) SYNTAX The general format of the master.cf file is as follows: + o Empty lines and whitespace-only lines are ignored, + as are lines whose first non-whitespace character + is a `#'. + + o A logical line starts with non-whitespace text. A + line that starts with whitespace continues a logi- + cal line. + o Each logical line defines a single Postfix service. Each service is identified by its name and type as described below. When multiple lines specify the @@ -41,14 +49,6 @@ MASTER(5) MASTER(5) remembered. Otherwise, the order of master.cf ser- vice definitions does not matter. - o Empty lines and whitespace-only lines are ignored, - as are lines whose first non-whitespace character - is a `#'. - - o A logical line starts with non-whitespace text. A - line that starts with whitespace continues a logi- - cal line. - Each logical line consists of eight fields separated by whitespace. These are described below in the order as they appear in the master.cf file. diff --git a/postfix/html/newaliases.1.html b/postfix/html/newaliases.1.html index 32de6bf2d..3fa1ae37f 100644 --- a/postfix/html/newaliases.1.html +++ b/postfix/html/newaliases.1.html @@ -219,52 +219,51 @@ SENDMAIL(1) SENDMAIL(1) -R return Delivery status notification control. Specify - "hdrs" to return only the header if a message + "hdrs" to return only the header when a message bounces, "full" to return a full copy (the default behavior). - The -R option specifies an upper bound; for exam- - ple, Postfix will return only the header, when a - full copy would exceed the bounce_size_limit set- - ting. + The -R option specifies an upper bound; Postfix + will return only the header, when a full copy would + exceed the bounce_size_limit setting. This option is ignored before Postfix version 2.10. - -q Attempt to deliver all queued mail. This is imple- + -q Attempt to deliver all queued mail. This is imple- mented by executing the postqueue(1) command. Warning: flushing undeliverable mail frequently - will result in poor delivery performance of all + will result in poor delivery performance of all other mail. -qinterval (ignored) - The interval between queue runs. Use the + The interval between queue runs. Use the queue_run_delay configuration parameter instead. -qIqueueid Schedule immediate delivery of mail with the speci- - fied queue ID. This option is implemented by exe- - cuting the postqueue(1) command, and is available + fied queue ID. This option is implemented by exe- + cuting the postqueue(1) command, and is available with Postfix version 2.4 and later. -qRsite - Schedule immediate delivery of all mail that is + Schedule immediate delivery of all mail that is queued for the named site. This option accepts only - site names that are eligible for the "fast flush" - service, and is implemented by executing the + site names that are eligible for the "fast flush" + service, and is implemented by executing the postqueue(1) command. See flush(8) for more infor- mation about the "fast flush" service. -qSsite - This command is not implemented. Use the slower + This command is not implemented. Use the slower "sendmail -q" command instead. - -t Extract recipients from message headers. These are - added to any recipients specified on the command + -t Extract recipients from message headers. These are + added to any recipients specified on the command line. - With Postfix versions prior to 2.1, this option - requires that no recipient addresses are specified + With Postfix versions prior to 2.1, this option + requires that no recipient addresses are specified on the command line. -U (ignored) @@ -277,41 +276,41 @@ SENDMAIL(1) SENDMAIL(1) This feature is available in Postfix 2.3 and later. -XV (Postfix 2.2 and earlier: -V) - Variable Envelope Return Path. Given an envelope - sender address of the form owner-listname@origin, - each recipient user@domain receives mail with a + Variable Envelope Return Path. Given an envelope + sender address of the form owner-listname@origin, + each recipient user@domain receives mail with a personalized envelope sender address. - By default, the personalized envelope sender - address is owner-listname+user=domain@origin. The - default + and = characters are configurable with - the default_verp_delimiters configuration parame- + By default, the personalized envelope sender + address is owner-listname+user=domain@origin. The + default + and = characters are configurable with + the default_verp_delimiters configuration parame- ter. -XVxy (Postfix 2.2 and earlier: -Vxy) - As -XV, but uses x and y as the VERP delimiter - characters, instead of the characters specified - with the default_verp_delimiters configuration + As -XV, but uses x and y as the VERP delimiter + characters, instead of the characters specified + with the default_verp_delimiters configuration parameter. - -v Send an email report of the first delivery attempt - (Postfix versions 2.1 and later). Mail delivery - always happens in the background. When multiple -v + -v Send an email report of the first delivery attempt + (Postfix versions 2.1 and later). Mail delivery + always happens in the background. When multiple -v options are given, enable verbose logging for debugging purposes. -X log_file (ignored) - Log mailer traffic. Use the debug_peer_list and - debug_peer_level configuration parameters instead. + Log mailer traffic. Use the debug_peer_list and + debug_peer_level configuration parameters instead. SECURITY - By design, this program is not set-user (or group) id. - However, it must handle data from untrusted, possibly - remote, users. Thus, the usual precautions need to be + By design, this program is not set-user (or group) id. + However, it must handle data from untrusted, possibly + remote, users. Thus, the usual precautions need to be taken against malicious inputs. DIAGNOSTICS - Problems are logged to syslogd(8) and to the standard + Problems are logged to syslogd(8) and to the standard error stream. ENVIRONMENT @@ -323,29 +322,29 @@ SENDMAIL(1) SENDMAIL(1) MAIL_DEBUG (value does not matter) Enable debugging with an external command, as spec- - ified with the debugger_command configuration + ified with the debugger_command configuration parameter. - NAME The sender full name. This is used only with mes- - sages that have no From: message header. See also + NAME The sender full name. This is used only with mes- + sages that have no From: message header. See also the -F option above. CONFIGURATION PARAMETERS - The following main.cf parameters are especially relevant + The following main.cf parameters are especially relevant to this program. The text below provides only a parameter - summary. See postconf(5) for more details including exam- + summary. See postconf(5) for more details including exam- ples. COMPATIBILITY CONTROLS Available with Postfix 2.9 and later: sendmail_fix_line_endings (always) - Controls how the Postfix sendmail command converts - email message line endings from <CR><LF> into UNIX + Controls how the Postfix sendmail command converts + email message line endings from <CR><LF> into UNIX format (<LF>). TROUBLE SHOOTING CONTROLS - The DEBUG_README file gives examples of how to trouble + The DEBUG_README file gives examples of how to trouble shoot a Postfix system. debugger_command (empty) @@ -353,29 +352,29 @@ SENDMAIL(1) SENDMAIL(1) mon program is invoked with the -D option. debug_peer_level (2) - The increment in verbose logging level when a - remote client or server matches a pattern in the + The increment in verbose logging level when a + remote client or server matches a pattern in the debug_peer_list parameter. debug_peer_list (empty) - Optional list of remote client or server hostname - or network address patterns that cause the verbose - logging level to increase by the amount specified + Optional list of remote client or server hostname + or network address patterns that cause the verbose + logging level to increase by the amount specified in $debug_peer_level. ACCESS CONTROLS Available in Postfix version 2.2 and later: authorized_flush_users (static:anyone) - List of users who are authorized to flush the + List of users who are authorized to flush the queue. authorized_mailq_users (static:anyone) List of users who are authorized to view the queue. authorized_submit_users (static:anyone) - List of users who are authorized to submit mail - with the sendmail(1) command (and with the privi- + List of users who are authorized to submit mail + with the sendmail(1) command (and with the privi- leged postdrop(1) helper command). RESOURCE AND RATE CONTROLS @@ -384,7 +383,7 @@ SENDMAIL(1) SENDMAIL(1) sent in a non-delivery notification. fork_attempts (5) - The maximal number of attempts to fork() a child + The maximal number of attempts to fork() a child process. fork_delay (1s) @@ -392,11 +391,11 @@ SENDMAIL(1) SENDMAIL(1) process. hopcount_limit (50) - The maximal number of Received: message headers + The maximal number of Received: message headers that is allowed in the primary message headers. queue_run_delay (300s) - The time between deferred queue scans by the queue + The time between deferred queue scans by the queue manager; prior to Postfix 2.4 the default value was 1000s. @@ -406,37 +405,37 @@ SENDMAIL(1) SENDMAIL(1) fast_flush_domains ($relay_domains) Optional list of destinations that are eligible for - per-destination logfiles with mail that is queued + per-destination logfiles with mail that is queued to those destinations. VERP CONTROLS The VERP_README file describes configuration and operation - details of Postfix support for variable envelope return + details of Postfix support for variable envelope return path addresses. default_verp_delimiters (+=) The two default VERP delimiter characters. verp_delimiter_filter (-=+) - The characters Postfix accepts as VERP delimiter - characters on the Postfix sendmail(1) command line + The characters Postfix accepts as VERP delimiter + characters on the Postfix sendmail(1) command line and in SMTP commands. MISCELLANEOUS CONTROLS alias_database (see 'postconf -d' output) - The alias databases for local(8) delivery that are + The alias databases for local(8) delivery that are updated with "newaliases" or with "sendmail -bi". command_directory (see 'postconf -d' output) - The location of all postfix administrative com- + The location of all postfix administrative com- mands. config_directory (see 'postconf -d' output) - The default location of the Postfix main.cf and + The default location of the Postfix main.cf and master.cf configuration files. daemon_directory (see 'postconf -d' output) - The directory with Postfix support programs and + The directory with Postfix support programs and daemon programs. default_database_type (see 'postconf -d' output) @@ -444,16 +443,16 @@ SENDMAIL(1) SENDMAIL(1) postalias(1) and postmap(1) commands. delay_warning_time (0h) - The time after which the sender receives the mes- + The time after which the sender receives the mes- sage headers of mail that is still queued. enable_errors_to (no) - Report mail delivery errors to the address speci- - fied with the non-standard Errors-To: message - header, instead of the envelope sender address - (this feature is removed with Postfix version 2.2, - is turned off by default with Postfix version 2.1, - and is always turned on with older Postfix ver- + Report mail delivery errors to the address speci- + fied with the non-standard Errors-To: message + header, instead of the envelope sender address + (this feature is removed with Postfix version 2.2, + is turned off by default with Postfix version 2.1, + and is always turned on with older Postfix ver- sions). mail_owner (postfix) @@ -461,21 +460,21 @@ SENDMAIL(1) SENDMAIL(1) and most Postfix daemon processes. queue_directory (see 'postconf -d' output) - The location of the Postfix top-level queue direc- + The location of the Postfix top-level queue direc- tory. remote_header_rewrite_domain (empty) - Don't rewrite message headers from remote clients + Don't rewrite message headers from remote clients at all when this parameter is empty; otherwise, re- - write message headers and append the specified + write message headers and append the specified domain name to incomplete addresses. syslog_facility (mail) The syslog facility of Postfix logging. syslog_name (see 'postconf -d' output) - The mail system name that is prepended to the - process name in syslog records, so that "smtpd" + The mail system name that is prepended to the + process name in syslog records, so that "smtpd" becomes, for example, "postfix/smtpd". FILES @@ -500,7 +499,7 @@ SENDMAIL(1) SENDMAIL(1) VERP_README, Postfix VERP howto LICENSE - The Secure Mailer license must be distributed with this + The Secure Mailer license must be distributed with this software. AUTHOR(S) diff --git a/postfix/html/oqmgr.8.html b/postfix/html/oqmgr.8.html index 43116cae0..4defc807b 100644 --- a/postfix/html/oqmgr.8.html +++ b/postfix/html/oqmgr.8.html @@ -213,8 +213,8 @@ OQMGR(8) OQMGR(8) qmgr_message_recipient_limit (20000) The maximal number of recipients held in memory by the Postfix queue manager, and the maximal size of - the size of the short-term, in-memory "dead" desti- - nation status cache. + the short-term, in-memory "dead" destination status + cache. DELIVERY CONCURRENCY CONTROLS qmgr_fudge_factor (100) @@ -316,9 +316,9 @@ OQMGR(8) OQMGR(8) default_destination_rate_delay (0s) The default amount of delay that is inserted between individual deliveries to the same destina- - tion; with per-destination recipient limit > 1, a - destination is a domain, otherwise it is a recipi- - ent. + tion; the resulting behavior depends on the value + of the corresponding per-destination recipient + limit. transport_destination_rate_delay $default_destina- tion_rate_delay diff --git a/postfix/html/postconf.5.html b/postfix/html/postconf.5.html index 69804ac42..52a5f4749 100644 --- a/postfix/html/postconf.5.html +++ b/postfix/html/postconf.5.html @@ -1204,9 +1204,10 @@ enabled with the notify_classes par (default: 5d)

-The maximal time a bounce message is queued before it is considered -undeliverable. By default, this is the same as the queue life time -for regular mail. +Consider a bounce message as undeliverable, when delivery fails +with a temporary error, and the time in the queue has reached the +bounce_queue_lifetime limit. By default, this limit is the same +as for regular mail.

@@ -2019,10 +2020,25 @@ is the master.cf name of the message delivery transp (default: 0s)

The default amount of delay that is inserted between individual -deliveries to the same destination; with per-destination recipient -limit > 1, a destination is a domain, otherwise it is a recipient. +deliveries to the same destination; the resulting behavior depends +on the value of the corresponding per-destination recipient limit.

+ +

To enable the delay, specify a non-zero time value (an integral value plus an optional one-letter suffix that specifies the time unit).

@@ -2059,9 +2075,29 @@ This is the default limit for delivery via the lmtp(8) smtp(8) and virtual(8) delivery agents.

-

Setting this parameter to a value of 1 changes the meaning of -the corresponding per-destination concurrency limit from concurrency -per domain into concurrency per recipient.

+

Setting this parameter to a value of 1 affects email deliveries +as follows:

+ +

Use transport_destination_recipient_limit to specify a transport-specific override, where transport is the master.cf @@ -5849,8 +5885,9 @@ The default time unit is s (seconds). (default: 5d)

-The maximal time a message is queued before it is sent back as -undeliverable. +Consider a message as undeliverable, when delivery fails with a +temporary error, and the time in the queue has reached the +maximal_queue_lifetime limit.

@@ -7717,6 +7754,26 @@ that connect only to backup MX addresses will never become whitelisted, and will never be allowed to talk to a Postfix SMTP server process.

+

Specify a list of network addresses or network/netmask patterns, +separated by commas and/or whitespace. The netmask specifies the +number of bits in the network part of a host address. Continue long +lines by starting the next line with whitespace.

+ +

You can also specify "/file/name" or "type:table" patterns. A +"/file/name" pattern is replaced by its contents; a "type:table" +lookup table is matched when a table entry matches a lookup string +(the lookup result is ignored).

+ +

The list is matched left to right, and the search stops on the +first match. Specify "!pattern" to exclude an address or network +block from the list.

+ +

Note: IP version 6 address information must be specified inside +[] in the postscreen_whitelist_interfaces value, and in files +specified with "/file/name". IP version 6 addresses contain the +":" character, and would otherwise be confused with a "type:table" +pattern.

+

Example:

@@ -7999,7 +8056,7 @@ The maximal number of messages in the 
 (default: 20000)

The maximal number of recipients held in memory by the Postfix -queue manager, and the maximal size of the size of the short-term, +queue manager, and the maximal size of the short-term, in-memory "dead" destination status cache.

@@ -9643,6 +9700,11 @@ By default, mail is returned to the sender when a destination is not found, and delivery is deferred when a destination is unreachable.

+

With bulk email deliveries, it can be beneficial to run the +fallback relay MTA on the same host, so that it can reuse the sender +IP address. This speeds up deliveries that are delayed by IP-based +reputation systems (greylist, etc.).

+

The fallback relays must be SMTP destinations. Specify a domain, host, host:port, [host]:port, [address] or [address]:port; the form [host] turns off MX lookups. If you specify multiple SMTP @@ -12565,7 +12627,7 @@ feature:

     # Bounce-never mail sink. Use notify_classes=bounce,resource,software
     # to send bounced mail to the postmaster (with message body removed).
-    /^(RCPT\s+TO:.*?)\bNOTIFY=\S+\b(.*)/ $1 NOTIFY=NEVER $2
+    /^(RCPT\s+TO:<.*>.*)\s+NOTIFY=\S+(.*)/ $1 NOTIFY=NEVER$2
     /^(RCPT\s+TO:.*)/                    $1 NOTIFY=NEVER
 
diff --git a/postfix/html/qmgr.8.html b/postfix/html/qmgr.8.html index 06aa2f692..157961cb4 100644 --- a/postfix/html/qmgr.8.html +++ b/postfix/html/qmgr.8.html @@ -219,8 +219,8 @@ QMGR(8) QMGR(8) qmgr_message_recipient_limit (20000) The maximal number of recipients held in memory by the Postfix queue manager, and the maximal size of - the size of the short-term, in-memory "dead" desti- - nation status cache. + the short-term, in-memory "dead" destination status + cache. qmgr_message_recipient_minimum (10) The minimal number of in-memory recipients for any @@ -388,9 +388,9 @@ QMGR(8) QMGR(8) default_destination_rate_delay (0s) The default amount of delay that is inserted between individual deliveries to the same destina- - tion; with per-destination recipient limit > 1, a - destination is a domain, otherwise it is a recipi- - ent. + tion; the resulting behavior depends on the value + of the corresponding per-destination recipient + limit. transport_destination_rate_delay $default_destina- tion_rate_delay diff --git a/postfix/html/sendmail.1.html b/postfix/html/sendmail.1.html index 32de6bf2d..3fa1ae37f 100644 --- a/postfix/html/sendmail.1.html +++ b/postfix/html/sendmail.1.html @@ -219,52 +219,51 @@ SENDMAIL(1) SENDMAIL(1) -R return Delivery status notification control. Specify - "hdrs" to return only the header if a message + "hdrs" to return only the header when a message bounces, "full" to return a full copy (the default behavior). - The -R option specifies an upper bound; for exam- - ple, Postfix will return only the header, when a - full copy would exceed the bounce_size_limit set- - ting. + The -R option specifies an upper bound; Postfix + will return only the header, when a full copy would + exceed the bounce_size_limit setting. This option is ignored before Postfix version 2.10. - -q Attempt to deliver all queued mail. This is imple- + -q Attempt to deliver all queued mail. This is imple- mented by executing the postqueue(1) command. Warning: flushing undeliverable mail frequently - will result in poor delivery performance of all + will result in poor delivery performance of all other mail. -qinterval (ignored) - The interval between queue runs. Use the + The interval between queue runs. Use the queue_run_delay configuration parameter instead. -qIqueueid Schedule immediate delivery of mail with the speci- - fied queue ID. This option is implemented by exe- - cuting the postqueue(1) command, and is available + fied queue ID. This option is implemented by exe- + cuting the postqueue(1) command, and is available with Postfix version 2.4 and later. -qRsite - Schedule immediate delivery of all mail that is + Schedule immediate delivery of all mail that is queued for the named site. This option accepts only - site names that are eligible for the "fast flush" - service, and is implemented by executing the + site names that are eligible for the "fast flush" + service, and is implemented by executing the postqueue(1) command. See flush(8) for more infor- mation about the "fast flush" service. -qSsite - This command is not implemented. Use the slower + This command is not implemented. Use the slower "sendmail -q" command instead. - -t Extract recipients from message headers. These are - added to any recipients specified on the command + -t Extract recipients from message headers. These are + added to any recipients specified on the command line. - With Postfix versions prior to 2.1, this option - requires that no recipient addresses are specified + With Postfix versions prior to 2.1, this option + requires that no recipient addresses are specified on the command line. -U (ignored) @@ -277,41 +276,41 @@ SENDMAIL(1) SENDMAIL(1) This feature is available in Postfix 2.3 and later. -XV (Postfix 2.2 and earlier: -V) - Variable Envelope Return Path. Given an envelope - sender address of the form owner-listname@origin, - each recipient user@domain receives mail with a + Variable Envelope Return Path. Given an envelope + sender address of the form owner-listname@origin, + each recipient user@domain receives mail with a personalized envelope sender address. - By default, the personalized envelope sender - address is owner-listname+user=domain@origin. The - default + and = characters are configurable with - the default_verp_delimiters configuration parame- + By default, the personalized envelope sender + address is owner-listname+user=domain@origin. The + default + and = characters are configurable with + the default_verp_delimiters configuration parame- ter. -XVxy (Postfix 2.2 and earlier: -Vxy) - As -XV, but uses x and y as the VERP delimiter - characters, instead of the characters specified - with the default_verp_delimiters configuration + As -XV, but uses x and y as the VERP delimiter + characters, instead of the characters specified + with the default_verp_delimiters configuration parameter. - -v Send an email report of the first delivery attempt - (Postfix versions 2.1 and later). Mail delivery - always happens in the background. When multiple -v + -v Send an email report of the first delivery attempt + (Postfix versions 2.1 and later). Mail delivery + always happens in the background. When multiple -v options are given, enable verbose logging for debugging purposes. -X log_file (ignored) - Log mailer traffic. Use the debug_peer_list and - debug_peer_level configuration parameters instead. + Log mailer traffic. Use the debug_peer_list and + debug_peer_level configuration parameters instead. SECURITY - By design, this program is not set-user (or group) id. - However, it must handle data from untrusted, possibly - remote, users. Thus, the usual precautions need to be + By design, this program is not set-user (or group) id. + However, it must handle data from untrusted, possibly + remote, users. Thus, the usual precautions need to be taken against malicious inputs. DIAGNOSTICS - Problems are logged to syslogd(8) and to the standard + Problems are logged to syslogd(8) and to the standard error stream. ENVIRONMENT @@ -323,29 +322,29 @@ SENDMAIL(1) SENDMAIL(1) MAIL_DEBUG (value does not matter) Enable debugging with an external command, as spec- - ified with the debugger_command configuration + ified with the debugger_command configuration parameter. - NAME The sender full name. This is used only with mes- - sages that have no From: message header. See also + NAME The sender full name. This is used only with mes- + sages that have no From: message header. See also the -F option above. CONFIGURATION PARAMETERS - The following main.cf parameters are especially relevant + The following main.cf parameters are especially relevant to this program. The text below provides only a parameter - summary. See postconf(5) for more details including exam- + summary. See postconf(5) for more details including exam- ples. COMPATIBILITY CONTROLS Available with Postfix 2.9 and later: sendmail_fix_line_endings (always) - Controls how the Postfix sendmail command converts - email message line endings from <CR><LF> into UNIX + Controls how the Postfix sendmail command converts + email message line endings from <CR><LF> into UNIX format (<LF>). TROUBLE SHOOTING CONTROLS - The DEBUG_README file gives examples of how to trouble + The DEBUG_README file gives examples of how to trouble shoot a Postfix system. debugger_command (empty) @@ -353,29 +352,29 @@ SENDMAIL(1) SENDMAIL(1) mon program is invoked with the -D option. debug_peer_level (2) - The increment in verbose logging level when a - remote client or server matches a pattern in the + The increment in verbose logging level when a + remote client or server matches a pattern in the debug_peer_list parameter. debug_peer_list (empty) - Optional list of remote client or server hostname - or network address patterns that cause the verbose - logging level to increase by the amount specified + Optional list of remote client or server hostname + or network address patterns that cause the verbose + logging level to increase by the amount specified in $debug_peer_level. ACCESS CONTROLS Available in Postfix version 2.2 and later: authorized_flush_users (static:anyone) - List of users who are authorized to flush the + List of users who are authorized to flush the queue. authorized_mailq_users (static:anyone) List of users who are authorized to view the queue. authorized_submit_users (static:anyone) - List of users who are authorized to submit mail - with the sendmail(1) command (and with the privi- + List of users who are authorized to submit mail + with the sendmail(1) command (and with the privi- leged postdrop(1) helper command). RESOURCE AND RATE CONTROLS @@ -384,7 +383,7 @@ SENDMAIL(1) SENDMAIL(1) sent in a non-delivery notification. fork_attempts (5) - The maximal number of attempts to fork() a child + The maximal number of attempts to fork() a child process. fork_delay (1s) @@ -392,11 +391,11 @@ SENDMAIL(1) SENDMAIL(1) process. hopcount_limit (50) - The maximal number of Received: message headers + The maximal number of Received: message headers that is allowed in the primary message headers. queue_run_delay (300s) - The time between deferred queue scans by the queue + The time between deferred queue scans by the queue manager; prior to Postfix 2.4 the default value was 1000s. @@ -406,37 +405,37 @@ SENDMAIL(1) SENDMAIL(1) fast_flush_domains ($relay_domains) Optional list of destinations that are eligible for - per-destination logfiles with mail that is queued + per-destination logfiles with mail that is queued to those destinations. VERP CONTROLS The VERP_README file describes configuration and operation - details of Postfix support for variable envelope return + details of Postfix support for variable envelope return path addresses. default_verp_delimiters (+=) The two default VERP delimiter characters. verp_delimiter_filter (-=+) - The characters Postfix accepts as VERP delimiter - characters on the Postfix sendmail(1) command line + The characters Postfix accepts as VERP delimiter + characters on the Postfix sendmail(1) command line and in SMTP commands. MISCELLANEOUS CONTROLS alias_database (see 'postconf -d' output) - The alias databases for local(8) delivery that are + The alias databases for local(8) delivery that are updated with "newaliases" or with "sendmail -bi". command_directory (see 'postconf -d' output) - The location of all postfix administrative com- + The location of all postfix administrative com- mands. config_directory (see 'postconf -d' output) - The default location of the Postfix main.cf and + The default location of the Postfix main.cf and master.cf configuration files. daemon_directory (see 'postconf -d' output) - The directory with Postfix support programs and + The directory with Postfix support programs and daemon programs. default_database_type (see 'postconf -d' output) @@ -444,16 +443,16 @@ SENDMAIL(1) SENDMAIL(1) postalias(1) and postmap(1) commands. delay_warning_time (0h) - The time after which the sender receives the mes- + The time after which the sender receives the mes- sage headers of mail that is still queued. enable_errors_to (no) - Report mail delivery errors to the address speci- - fied with the non-standard Errors-To: message - header, instead of the envelope sender address - (this feature is removed with Postfix version 2.2, - is turned off by default with Postfix version 2.1, - and is always turned on with older Postfix ver- + Report mail delivery errors to the address speci- + fied with the non-standard Errors-To: message + header, instead of the envelope sender address + (this feature is removed with Postfix version 2.2, + is turned off by default with Postfix version 2.1, + and is always turned on with older Postfix ver- sions). mail_owner (postfix) @@ -461,21 +460,21 @@ SENDMAIL(1) SENDMAIL(1) and most Postfix daemon processes. queue_directory (see 'postconf -d' output) - The location of the Postfix top-level queue direc- + The location of the Postfix top-level queue direc- tory. remote_header_rewrite_domain (empty) - Don't rewrite message headers from remote clients + Don't rewrite message headers from remote clients at all when this parameter is empty; otherwise, re- - write message headers and append the specified + write message headers and append the specified domain name to incomplete addresses. syslog_facility (mail) The syslog facility of Postfix logging. syslog_name (see 'postconf -d' output) - The mail system name that is prepended to the - process name in syslog records, so that "smtpd" + The mail system name that is prepended to the + process name in syslog records, so that "smtpd" becomes, for example, "postfix/smtpd". FILES @@ -500,7 +499,7 @@ SENDMAIL(1) SENDMAIL(1) VERP_README, Postfix VERP howto LICENSE - The Secure Mailer license must be distributed with this + The Secure Mailer license must be distributed with this software. AUTHOR(S) diff --git a/postfix/makedefs b/postfix/makedefs index d9149b4e5..050c87878 100644 --- a/postfix/makedefs +++ b/postfix/makedefs @@ -204,8 +204,9 @@ case "$SYSTEM.$RELEASE" in 5.[0-7]|5.[0-7].*) CCARGS="$CCARGS -DNO_IPV6 -DNO_DEVPOLL";; esac # Solaris 9 added closefrom(), futimesat() and /dev/*random + # and appears to have solid UNIX-domain sockets. case $RELEASE in - 5.[0-8]|5.[0-8].*) CCARGS="$CCARGS -DNO_CLOSEFROM -DNO_DEV_URANDOM -DNO_FUTIMESAT";; + 5.[0-8]|5.[0-8].*) CCARGS="$CCARGS -DNO_CLOSEFROM -DNO_DEV_URANDOM -DNO_FUTIMESAT -DSTREAM_CONNECTIONS";; esac # Work around broken str*casecmp(). Do it all here instead # of having half the solution in the sys_defs.h file. diff --git a/postfix/man/man1/sendmail.1 b/postfix/man/man1/sendmail.1 index 9d16aa23a..f7ad3116a 100644 --- a/postfix/man/man1/sendmail.1 +++ b/postfix/man/man1/sendmail.1 @@ -181,12 +181,12 @@ delivery problems are sent to. With Postfix versions before 2.1, the \fBErrors-To:\fR message header overrides the error return address. .IP "\fB-R \fIreturn\fR" Delivery status notification control. Specify "hdrs" to -return only the header if a message bounces, "full" to +return only the header when a message bounces, "full" to return a full copy (the default behavior). -The \fB-R\fR option specifies an upper bound; for example, -Postfix will return only the header, when a full copy would -exceed the bounce_size_limit setting. +The \fB-R\fR option specifies an upper bound; Postfix will +return only the header, when a full copy would exceed the +bounce_size_limit setting. This option is ignored before Postfix version 2.10. .IP \fB-q\fR diff --git a/postfix/man/man5/master.5 b/postfix/man/man5/master.5 index 977b013cd..272eb21da 100644 --- a/postfix/man/man5/master.5 +++ b/postfix/man/man5/master.5 @@ -35,17 +35,17 @@ to reload the configuration. .fi The general format of the master.cf file is as follows: .IP \(bu -Each logical line defines a single Postfix service. -Each service is identified by its name and type as described -below. When multiple lines specify the same service name -and type, only the last one is remembered. Otherwise, the -order of master.cf service definitions does not matter. -.IP \(bu Empty lines and whitespace-only lines are ignored, as are lines whose first non-whitespace character is a `#'. .IP \(bu A logical line starts with non-whitespace text. A line that starts with whitespace continues a logical line. +.IP \(bu +Each logical line defines a single Postfix service. +Each service is identified by its name and type as described +below. When multiple lines specify the same service name +and type, only the last one is remembered. Otherwise, the +order of master.cf service definitions does not matter. .PP Each logical line consists of eight fields separated by whitespace. These are described below in the order as they diff --git a/postfix/man/man5/postconf.5 b/postfix/man/man5/postconf.5 index 76f1c736a..67797c874 100644 --- a/postfix/man/man5/postconf.5 +++ b/postfix/man/man5/postconf.5 @@ -683,9 +683,10 @@ of mail that Postfix did not deliver and of SMTP conversation transcripts of mail that Postfix did not receive. This feature is enabled with the notify_classes parameter. .SH bounce_queue_lifetime (default: 5d) -The maximal time a bounce message is queued before it is considered -undeliverable. By default, this is the same as the queue life time -for regular mail. +Consider a bounce message as undeliverable, when delivery fails +with a temporary error, and the time in the queue has reached the +bounce_queue_lifetime limit. By default, this limit is the same +as for regular mail. .PP Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks). The default time unit is d (days). @@ -1177,8 +1178,18 @@ is the master.cf name of the message delivery transport. This feature is available in Postfix 2.5 and later. .SH default_destination_rate_delay (default: 0s) The default amount of delay that is inserted between individual -deliveries to the same destination; with per-destination recipient -limit > 1, a destination is a domain, otherwise it is a recipient. +deliveries to the same destination; the resulting behavior depends +on the value of the corresponding per-destination recipient limit. +.IP \(bu +With a corresponding per-destination recipient limit > +1, the rate delay specifies the time between deliveries to the +\fIsame domain\fR. Different domains are delivered in parallel, +subject to the process limits specified in master.cf. +.IP \(bu +With a corresponding per-destination recipient limit equal +to 1, the rate delay specifies the time between deliveries to the +\fIsame recipient\fR. Different recipients are delivered in +parallel, subject to the process limits specified in master.cf. .PP To enable the delay, specify a non-zero time value (an integral value plus an optional one-letter suffix that specifies the time @@ -1206,9 +1217,25 @@ The default maximal number of recipients per message delivery. This is the default limit for delivery via the \fBlmtp\fR(8), \fBpipe\fR(8), \fBsmtp\fR(8) and \fBvirtual\fR(8) delivery agents. .PP -Setting this parameter to a value of 1 changes the meaning of -the corresponding per-destination concurrency limit from concurrency -per domain into concurrency per recipient. +Setting this parameter to a value of 1 affects email deliveries +as follows: +.IP \(bu +It changes the meaning of the corresponding per-destination +concurrency limit, from concurrency of deliveries to the \fIsame +domain\fR into concurrency of deliveries to the \fIsame recipient\fR. +Different recipients are delivered in parallel, subject to the +process limits specified in master.cf. +.IP \(bu +It changes the meaning of the corresponding per-destination +rate delay, from the delay between deliveries to the \fIsame +domain\fR into the delay between deliveries to the \fIsame +recipient\fR. Again, different recipients are delivered in parallel, +subject to the process limits specified in master.cf. +.IP \(bu +It changes the meaning of other corresponding per-destination +settings in a similar manner, from settings for delivery to the +\fIsame domain\fR into settings for delivery to the \fIsame +recipient\fR. .PP Use \fItransport\fR_destination_recipient_limit to specify a transport-specific override, where \fItransport\fR is the master.cf @@ -3292,8 +3319,9 @@ to $minimal_backoff_time. See also $queue_run_delay. Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks). The default time unit is s (seconds). .SH maximal_queue_lifetime (default: 5d) -The maximal time a message is queued before it is sent back as -undeliverable. +Consider a message as undeliverable, when delivery fails with a +temporary error, and the time in the queue has reached the +maximal_queue_lifetime limit. .PP Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks). The default time unit is d (days). @@ -4475,6 +4503,26 @@ can talk to a Postfix SMTP server on any address. Thus, clients that connect only to backup MX addresses will never become whitelisted, and will never be allowed to talk to a Postfix SMTP server process. .PP +Specify a list of network addresses or network/netmask patterns, +separated by commas and/or whitespace. The netmask specifies the +number of bits in the network part of a host address. Continue long +lines by starting the next line with whitespace. +.PP +You can also specify "/file/name" or "type:table" patterns. A +"/file/name" pattern is replaced by its contents; a "type:table" +lookup table is matched when a table entry matches a lookup string +(the lookup result is ignored). +.PP +The list is matched left to right, and the search stops on the +first match. Specify "!pattern" to exclude an address or network +block from the list. +.PP +Note: IP version 6 address information must be specified inside +[] in the postscreen_whitelist_interfaces value, and in files +specified with "/file/name". IP version 6 addresses contain the +":" character, and would otherwise be confused with a "type:table" +pattern. +.PP Example: .PP .nf @@ -4626,7 +4674,7 @@ This feature is available in Postfix 2.8 and later. The maximal number of messages in the active queue. .SH qmgr_message_recipient_limit (default: 20000) The maximal number of recipients held in memory by the Postfix -queue manager, and the maximal size of the size of the short-term, +queue manager, and the maximal size of the short-term, in-memory "dead" destination status cache. .SH qmgr_message_recipient_minimum (default: 10) The minimal number of in-memory recipients for any message. This @@ -5643,6 +5691,11 @@ parameter is called fallback_relay. By default, mail is returned to the sender when a destination is not found, and delivery is deferred when a destination is unreachable. .PP +With bulk email deliveries, it can be beneficial to run the +fallback relay MTA on the same host, so that it can reuse the sender +IP address. This speeds up deliveries that are delayed by IP-based +reputation systems (greylist, etc.). +.PP The fallback relays must be SMTP destinations. Specify a domain, host, host:port, [host]:port, [address] or [address]:port; the form [host] turns off MX lookups. If you specify multiple SMTP @@ -7912,7 +7965,7 @@ feature: .ft C # Bounce-never mail sink. Use notify_classes=bounce,resource,software # to send bounced mail to the postmaster (with message body removed). - /^(RCPT\es+TO:.*?)\ebNOTIFY=\eS+\eb(.*)/ $1 NOTIFY=NEVER $2 + /^(RCPT\es+TO:<.*>.*)\es+NOTIFY=\eS+(.*)/ $1 NOTIFY=NEVER$2 /^(RCPT\es+TO:.*)/ $1 NOTIFY=NEVER .fi .ad diff --git a/postfix/man/man8/oqmgr.8 b/postfix/man/man8/oqmgr.8 index 6019d2bac..bfd7f03d4 100644 --- a/postfix/man/man8/oqmgr.8 +++ b/postfix/man/man8/oqmgr.8 @@ -201,7 +201,7 @@ clogging up the Postfix active queue. The maximal number of messages in the active queue. .IP "\fBqmgr_message_recipient_limit (20000)\fR" The maximal number of recipients held in memory by the Postfix -queue manager, and the maximal size of the size of the short-term, +queue manager, and the maximal size of the short-term, in-memory "dead" destination status cache. .SH "DELIVERY CONCURRENCY CONTROLS" .na @@ -283,8 +283,8 @@ undeliverable. Available in Postfix version 2.5 and later: .IP "\fBdefault_destination_rate_delay (0s)\fR" The default amount of delay that is inserted between individual -deliveries to the same destination; with per-destination recipient -limit > 1, a destination is a domain, otherwise it is a recipient. +deliveries to the same destination; the resulting behavior depends +on the value of the corresponding per-destination recipient limit. .IP "\fItransport\fB_destination_rate_delay $default_destination_rate_delay Idem, for delivery via the named message \fItransport\fR. .SH "SAFETY CONTROLS" diff --git a/postfix/man/man8/qmgr.8 b/postfix/man/man8/qmgr.8 index 550a91a20..3aa92ff5d 100644 --- a/postfix/man/man8/qmgr.8 +++ b/postfix/man/man8/qmgr.8 @@ -205,7 +205,7 @@ clogging up the Postfix active queue. The maximal number of messages in the active queue. .IP "\fBqmgr_message_recipient_limit (20000)\fR" The maximal number of recipients held in memory by the Postfix -queue manager, and the maximal size of the size of the short-term, +queue manager, and the maximal size of the short-term, in-memory "dead" destination status cache. .IP "\fBqmgr_message_recipient_minimum (10)\fR" The minimal number of in-memory recipients for any message. @@ -331,8 +331,8 @@ undeliverable. Available in Postfix version 2.5 and later: .IP "\fBdefault_destination_rate_delay (0s)\fR" The default amount of delay that is inserted between individual -deliveries to the same destination; with per-destination recipient -limit > 1, a destination is a domain, otherwise it is a recipient. +deliveries to the same destination; the resulting behavior depends +on the value of the corresponding per-destination recipient limit. .IP "\fItransport\fB_destination_rate_delay $default_destination_rate_delay Idem, for delivery via the named message \fItransport\fR. .SH "SAFETY CONTROLS" diff --git a/postfix/proto/POSTSCREEN_README.html b/postfix/proto/POSTSCREEN_README.html index c99cc08b1..b4aa01f21 100644 --- a/postfix/proto/POSTSCREEN_README.html +++ b/postfix/proto/POSTSCREEN_README.html @@ -132,7 +132,8 @@ and that is the problem that postscreen(8) is focused on.

General operation

-

The postscreen(8) triage process involves a number of tests, +

For each connection from an SMTP client, postscreen(8) performs +a number of tests in the order as described below. Some tests introduce a delay of a few seconds. postscreen(8) maintains a temporary whitelist for clients that pass its tests; by allowing whitelisted clients to diff --git a/postfix/proto/master b/postfix/proto/master index 82b183bcf..9fda10188 100644 --- a/postfix/proto/master +++ b/postfix/proto/master @@ -29,17 +29,17 @@ # .fi # The general format of the master.cf file is as follows: # .IP \(bu -# Each logical line defines a single Postfix service. -# Each service is identified by its name and type as described -# below. When multiple lines specify the same service name -# and type, only the last one is remembered. Otherwise, the -# order of master.cf service definitions does not matter. -# .IP \(bu # Empty lines and whitespace-only lines are ignored, as are # lines whose first non-whitespace character is a `#'. # .IP \(bu # A logical line starts with non-whitespace text. A line that # starts with whitespace continues a logical line. +# .IP \(bu +# Each logical line defines a single Postfix service. +# Each service is identified by its name and type as described +# below. When multiple lines specify the same service name +# and type, only the last one is remembered. Otherwise, the +# order of master.cf service definitions does not matter. # .PP # Each logical line consists of eight fields separated by # whitespace. These are described below in the order as they diff --git a/postfix/proto/postconf.proto b/postfix/proto/postconf.proto index df84dc128..90f1be402 100644 --- a/postfix/proto/postconf.proto +++ b/postfix/proto/postconf.proto @@ -731,9 +731,10 @@ This feature is available in Postfix 2.0 and later. %PARAM bounce_queue_lifetime 5d

-The maximal time a bounce message is queued before it is considered -undeliverable. By default, this is the same as the queue life time -for regular mail. +Consider a bounce message as undeliverable, when delivery fails +with a temporary error, and the time in the queue has reached the +bounce_queue_lifetime limit. By default, this limit is the same +as for regular mail.

@@ -1010,9 +1011,29 @@ This is the default limit for delivery via the lmtp(8), pipe(8), smtp(8) and virtual(8) delivery agents.

-

Setting this parameter to a value of 1 changes the meaning of -the corresponding per-destination concurrency limit from concurrency -per domain into concurrency per recipient.

+

Setting this parameter to a value of 1 affects email deliveries +as follows:

+ +
    + +
  • It changes the meaning of the corresponding per-destination +concurrency limit, from concurrency of deliveries to the same +domain into concurrency of deliveries to the same recipient. +Different recipients are delivered in parallel, subject to the +process limits specified in master.cf.

    + +
  • It changes the meaning of the corresponding per-destination +rate delay, from the delay between deliveries to the same +domain into the delay between deliveries to the same +recipient. Again, different recipients are delivered in parallel, +subject to the process limits specified in master.cf.

    + +
  • It changes the meaning of other corresponding per-destination +settings in a similar manner, from settings for delivery to the +same domain into settings for delivery to the same +recipient. + +

Use transport_destination_recipient_limit to specify a transport-specific override, where transport is the master.cf @@ -1410,6 +1431,11 @@ By default, mail is returned to the sender when a destination is not found, and delivery is deferred when a destination is unreachable.

+

With bulk email deliveries, it can be beneficial to run the +fallback relay MTA on the same host, so that it can reuse the sender +IP address. This speeds up deliveries that are delayed by IP-based +reputation systems (greylist, etc.).

+

The fallback relays must be SMTP destinations. Specify a domain, host, host:port, [host]:port, [address] or [address]:port; the form [host] turns off MX lookups. If you specify multiple SMTP @@ -2784,8 +2810,9 @@ The default time unit is s (seconds). %PARAM maximal_queue_lifetime 5d

-The maximal time a message is queued before it is sent back as -undeliverable. +Consider a message as undeliverable, when delivery fails with a +temporary error, and the time in the queue has reached the +maximal_queue_lifetime limit.

@@ -3180,7 +3207,7 @@ The maximal number of messages in the active queue. %PARAM qmgr_message_recipient_limit 20000

The maximal number of recipients held in memory by the Postfix -queue manager, and the maximal size of the size of the short-term, +queue manager, and the maximal size of the short-term, in-memory "dead" destination status cache.

%PARAM qmgr_message_recipient_minimum 10 @@ -12398,10 +12425,25 @@ this case: "_recipient_refill_delay").

%PARAM default_destination_rate_delay 0s

The default amount of delay that is inserted between individual -deliveries to the same destination; with per-destination recipient -limit > 1, a destination is a domain, otherwise it is a recipient. +deliveries to the same destination; the resulting behavior depends +on the value of the corresponding per-destination recipient limit. +

+ +
    + +
  • With a corresponding per-destination recipient limit > +1, the rate delay specifies the time between deliveries to the +same domain. Different domains are delivered in parallel, +subject to the process limits specified in master.cf.

    + +
  • With a corresponding per-destination recipient limit equal +to 1, the rate delay specifies the time between deliveries to the +same recipient. Different recipients are delivered in +parallel, subject to the process limits specified in master.cf.

    +
+

To enable the delay, specify a non-zero time value (an integral value plus an optional one-letter suffix that specifies the time unit).

@@ -13287,7 +13329,7 @@ feature:

     # Bounce-never mail sink. Use notify_classes=bounce,resource,software 
     # to send bounced mail to the postmaster (with message body removed).
-    /^(RCPT\s+TO:.*?)\bNOTIFY=\S+\b(.*)/ $1 NOTIFY=NEVER $2
+    /^(RCPT\s+TO:<.*>.*)\s+NOTIFY=\S+(.*)/ $1 NOTIFY=NEVER$2
     /^(RCPT\s+TO:.*)/                    $1 NOTIFY=NEVER
 
@@ -14395,6 +14437,26 @@ that connect only to backup MX addresses will never become whitelisted, and will never be allowed to talk to a Postfix SMTP server process.

+

Specify a list of network addresses or network/netmask patterns, +separated by commas and/or whitespace. The netmask specifies the +number of bits in the network part of a host address. Continue long +lines by starting the next line with whitespace.

+ +

You can also specify "/file/name" or "type:table" patterns. A +"/file/name" pattern is replaced by its contents; a "type:table" +lookup table is matched when a table entry matches a lookup string +(the lookup result is ignored).

+ +

The list is matched left to right, and the search stops on the +first match. Specify "!pattern" to exclude an address or network +block from the list.

+ +

Note: IP version 6 address information must be specified inside +[] in the postscreen_whitelist_interfaces value, and in files +specified with "/file/name". IP version 6 addresses contain the +":" character, and would otherwise be confused with a "type:table" +pattern.

+

Example:

diff --git a/postfix/src/cleanup/Makefile.in b/postfix/src/cleanup/Makefile.in
index 2bc9da548..28afe9df6 100644
--- a/postfix/src/cleanup/Makefile.in
+++ b/postfix/src/cleanup/Makefile.in
@@ -543,6 +543,7 @@ cleanup.o: ../../include/match_list.h
 cleanup.o: ../../include/milter.h
 cleanup.o: ../../include/mime_state.h
 cleanup.o: ../../include/msg.h
+cleanup.o: ../../include/myflock.h
 cleanup.o: ../../include/mymalloc.h
 cleanup.o: ../../include/nvtable.h
 cleanup.o: ../../include/rec_type.h
@@ -579,6 +580,7 @@ cleanup_addr.o: ../../include/match_list.h
 cleanup_addr.o: ../../include/milter.h
 cleanup_addr.o: ../../include/mime_state.h
 cleanup_addr.o: ../../include/msg.h
+cleanup_addr.o: ../../include/myflock.h
 cleanup_addr.o: ../../include/mymalloc.h
 cleanup_addr.o: ../../include/nvtable.h
 cleanup_addr.o: ../../include/rec_type.h
@@ -618,6 +620,7 @@ cleanup_api.o: ../../include/milter.h
 cleanup_api.o: ../../include/mime_state.h
 cleanup_api.o: ../../include/msg.h
 cleanup_api.o: ../../include/msg_stats.h
+cleanup_api.o: ../../include/myflock.h
 cleanup_api.o: ../../include/mymalloc.h
 cleanup_api.o: ../../include/nvtable.h
 cleanup_api.o: ../../include/rec_type.h
@@ -647,6 +650,7 @@ cleanup_body_edit.o: ../../include/match_list.h
 cleanup_body_edit.o: ../../include/milter.h
 cleanup_body_edit.o: ../../include/mime_state.h
 cleanup_body_edit.o: ../../include/msg.h
+cleanup_body_edit.o: ../../include/myflock.h
 cleanup_body_edit.o: ../../include/mymalloc.h
 cleanup_body_edit.o: ../../include/nvtable.h
 cleanup_body_edit.o: ../../include/rec_type.h
@@ -686,6 +690,7 @@ cleanup_bounce.o: ../../include/milter.h
 cleanup_bounce.o: ../../include/mime_state.h
 cleanup_bounce.o: ../../include/msg.h
 cleanup_bounce.o: ../../include/msg_stats.h
+cleanup_bounce.o: ../../include/myflock.h
 cleanup_bounce.o: ../../include/mymalloc.h
 cleanup_bounce.o: ../../include/nvtable.h
 cleanup_bounce.o: ../../include/rec_attr_map.h
@@ -721,6 +726,7 @@ cleanup_envelope.o: ../../include/match_list.h
 cleanup_envelope.o: ../../include/milter.h
 cleanup_envelope.o: ../../include/mime_state.h
 cleanup_envelope.o: ../../include/msg.h
+cleanup_envelope.o: ../../include/myflock.h
 cleanup_envelope.o: ../../include/mymalloc.h
 cleanup_envelope.o: ../../include/nvtable.h
 cleanup_envelope.o: ../../include/qmgr_user.h
@@ -758,6 +764,7 @@ cleanup_extracted.o: ../../include/match_list.h
 cleanup_extracted.o: ../../include/milter.h
 cleanup_extracted.o: ../../include/mime_state.h
 cleanup_extracted.o: ../../include/msg.h
+cleanup_extracted.o: ../../include/myflock.h
 cleanup_extracted.o: ../../include/mymalloc.h
 cleanup_extracted.o: ../../include/nvtable.h
 cleanup_extracted.o: ../../include/qmgr_user.h
@@ -790,6 +797,7 @@ cleanup_final.o: ../../include/match_list.h
 cleanup_final.o: ../../include/milter.h
 cleanup_final.o: ../../include/mime_state.h
 cleanup_final.o: ../../include/msg.h
+cleanup_final.o: ../../include/myflock.h
 cleanup_final.o: ../../include/mymalloc.h
 cleanup_final.o: ../../include/nvtable.h
 cleanup_final.o: ../../include/rec_type.h
@@ -824,6 +832,7 @@ cleanup_init.o: ../../include/match_list.h
 cleanup_init.o: ../../include/milter.h
 cleanup_init.o: ../../include/mime_state.h
 cleanup_init.o: ../../include/msg.h
+cleanup_init.o: ../../include/myflock.h
 cleanup_init.o: ../../include/mymalloc.h
 cleanup_init.o: ../../include/name_mask.h
 cleanup_init.o: ../../include/nvtable.h
@@ -854,6 +863,7 @@ cleanup_map11.o: ../../include/match_list.h
 cleanup_map11.o: ../../include/milter.h
 cleanup_map11.o: ../../include/mime_state.h
 cleanup_map11.o: ../../include/msg.h
+cleanup_map11.o: ../../include/myflock.h
 cleanup_map11.o: ../../include/mymalloc.h
 cleanup_map11.o: ../../include/nvtable.h
 cleanup_map11.o: ../../include/quote_822_local.h
@@ -885,6 +895,7 @@ cleanup_map1n.o: ../../include/match_list.h
 cleanup_map1n.o: ../../include/milter.h
 cleanup_map1n.o: ../../include/mime_state.h
 cleanup_map1n.o: ../../include/msg.h
+cleanup_map1n.o: ../../include/myflock.h
 cleanup_map1n.o: ../../include/mymalloc.h
 cleanup_map1n.o: ../../include/nvtable.h
 cleanup_map1n.o: ../../include/quote_822_local.h
@@ -915,6 +926,7 @@ cleanup_masquerade.o: ../../include/match_list.h
 cleanup_masquerade.o: ../../include/milter.h
 cleanup_masquerade.o: ../../include/mime_state.h
 cleanup_masquerade.o: ../../include/msg.h
+cleanup_masquerade.o: ../../include/myflock.h
 cleanup_masquerade.o: ../../include/mymalloc.h
 cleanup_masquerade.o: ../../include/nvtable.h
 cleanup_masquerade.o: ../../include/quote_822_local.h
@@ -955,6 +967,7 @@ cleanup_message.o: ../../include/match_list.h
 cleanup_message.o: ../../include/milter.h
 cleanup_message.o: ../../include/mime_state.h
 cleanup_message.o: ../../include/msg.h
+cleanup_message.o: ../../include/myflock.h
 cleanup_message.o: ../../include/mymalloc.h
 cleanup_message.o: ../../include/nvtable.h
 cleanup_message.o: ../../include/quote_822_local.h
@@ -994,6 +1007,7 @@ cleanup_milter.o: ../../include/match_list.h
 cleanup_milter.o: ../../include/milter.h
 cleanup_milter.o: ../../include/mime_state.h
 cleanup_milter.o: ../../include/msg.h
+cleanup_milter.o: ../../include/myflock.h
 cleanup_milter.o: ../../include/mymalloc.h
 cleanup_milter.o: ../../include/nvtable.h
 cleanup_milter.o: ../../include/off_cvt.h
@@ -1030,6 +1044,7 @@ cleanup_out.o: ../../include/match_list.h
 cleanup_out.o: ../../include/milter.h
 cleanup_out.o: ../../include/mime_state.h
 cleanup_out.o: ../../include/msg.h
+cleanup_out.o: ../../include/myflock.h
 cleanup_out.o: ../../include/mymalloc.h
 cleanup_out.o: ../../include/nvtable.h
 cleanup_out.o: ../../include/rec_type.h
@@ -1070,6 +1085,7 @@ cleanup_out_recipient.o: ../../include/milter.h
 cleanup_out_recipient.o: ../../include/mime_state.h
 cleanup_out_recipient.o: ../../include/msg.h
 cleanup_out_recipient.o: ../../include/msg_stats.h
+cleanup_out_recipient.o: ../../include/myflock.h
 cleanup_out_recipient.o: ../../include/mymalloc.h
 cleanup_out_recipient.o: ../../include/nvtable.h
 cleanup_out_recipient.o: ../../include/rec_type.h
@@ -1100,6 +1116,7 @@ cleanup_region.o: ../../include/match_list.h
 cleanup_region.o: ../../include/milter.h
 cleanup_region.o: ../../include/mime_state.h
 cleanup_region.o: ../../include/msg.h
+cleanup_region.o: ../../include/myflock.h
 cleanup_region.o: ../../include/mymalloc.h
 cleanup_region.o: ../../include/nvtable.h
 cleanup_region.o: ../../include/resolve_clnt.h
@@ -1130,6 +1147,7 @@ cleanup_rewrite.o: ../../include/match_list.h
 cleanup_rewrite.o: ../../include/milter.h
 cleanup_rewrite.o: ../../include/mime_state.h
 cleanup_rewrite.o: ../../include/msg.h
+cleanup_rewrite.o: ../../include/myflock.h
 cleanup_rewrite.o: ../../include/mymalloc.h
 cleanup_rewrite.o: ../../include/nvtable.h
 cleanup_rewrite.o: ../../include/quote_822_local.h
@@ -1162,6 +1180,7 @@ cleanup_state.o: ../../include/maps.h
 cleanup_state.o: ../../include/match_list.h
 cleanup_state.o: ../../include/milter.h
 cleanup_state.o: ../../include/mime_state.h
+cleanup_state.o: ../../include/myflock.h
 cleanup_state.o: ../../include/mymalloc.h
 cleanup_state.o: ../../include/nvtable.h
 cleanup_state.o: ../../include/resolve_clnt.h
diff --git a/postfix/src/global/Makefile.in b/postfix/src/global/Makefile.in
index 8e11da58d..664d7726f 100644
--- a/postfix/src/global/Makefile.in
+++ b/postfix/src/global/Makefile.in
@@ -698,6 +698,7 @@ canon_addr.o: rewrite_clnt.h
 cfg_parser.o: ../../include/argv.h
 cfg_parser.o: ../../include/dict.h
 cfg_parser.o: ../../include/msg.h
+cfg_parser.o: ../../include/myflock.h
 cfg_parser.o: ../../include/mymalloc.h
 cfg_parser.o: ../../include/sys_defs.h
 cfg_parser.o: ../../include/vbuf.h
@@ -740,6 +741,7 @@ data_redirect.o: ../../include/dict_cdb.h
 data_redirect.o: ../../include/dict_db.h
 data_redirect.o: ../../include/dict_dbm.h
 data_redirect.o: ../../include/msg.h
+data_redirect.o: ../../include/myflock.h
 data_redirect.o: ../../include/name_code.h
 data_redirect.o: ../../include/split_at.h
 data_redirect.o: ../../include/stringops.h
@@ -756,6 +758,7 @@ db_common.o: ../../include/argv.h
 db_common.o: ../../include/dict.h
 db_common.o: ../../include/match_list.h
 db_common.o: ../../include/msg.h
+db_common.o: ../../include/myflock.h
 db_common.o: ../../include/mymalloc.h
 db_common.o: ../../include/sys_defs.h
 db_common.o: ../../include/vbuf.h
@@ -886,6 +889,7 @@ dict_ldap.o: ../../include/binhash.h
 dict_ldap.o: ../../include/dict.h
 dict_ldap.o: ../../include/match_list.h
 dict_ldap.o: ../../include/msg.h
+dict_ldap.o: ../../include/myflock.h
 dict_ldap.o: ../../include/mymalloc.h
 dict_ldap.o: ../../include/name_code.h
 dict_ldap.o: ../../include/stringops.h
@@ -904,6 +908,7 @@ dict_memcache.o: ../../include/auto_clnt.h
 dict_memcache.o: ../../include/dict.h
 dict_memcache.o: ../../include/match_list.h
 dict_memcache.o: ../../include/msg.h
+dict_memcache.o: ../../include/myflock.h
 dict_memcache.o: ../../include/mymalloc.h
 dict_memcache.o: ../../include/stringops.h
 dict_memcache.o: ../../include/sys_defs.h
@@ -922,6 +927,7 @@ dict_mysql.o: ../../include/events.h
 dict_mysql.o: ../../include/find_inet.h
 dict_mysql.o: ../../include/match_list.h
 dict_mysql.o: ../../include/msg.h
+dict_mysql.o: ../../include/myflock.h
 dict_mysql.o: ../../include/mymalloc.h
 dict_mysql.o: ../../include/myrand.h
 dict_mysql.o: ../../include/split_at.h
@@ -941,6 +947,7 @@ dict_pgsql.o: ../../include/events.h
 dict_pgsql.o: ../../include/find_inet.h
 dict_pgsql.o: ../../include/match_list.h
 dict_pgsql.o: ../../include/msg.h
+dict_pgsql.o: ../../include/myflock.h
 dict_pgsql.o: ../../include/mymalloc.h
 dict_pgsql.o: ../../include/myrand.h
 dict_pgsql.o: ../../include/split_at.h
@@ -959,6 +966,7 @@ dict_proxy.o: ../../include/attr.h
 dict_proxy.o: ../../include/dict.h
 dict_proxy.o: ../../include/iostuff.h
 dict_proxy.o: ../../include/msg.h
+dict_proxy.o: ../../include/myflock.h
 dict_proxy.o: ../../include/mymalloc.h
 dict_proxy.o: ../../include/stringops.h
 dict_proxy.o: ../../include/sys_defs.h
@@ -974,6 +982,7 @@ dict_sqlite.o: ../../include/argv.h
 dict_sqlite.o: ../../include/dict.h
 dict_sqlite.o: ../../include/match_list.h
 dict_sqlite.o: ../../include/msg.h
+dict_sqlite.o: ../../include/myflock.h
 dict_sqlite.o: ../../include/mymalloc.h
 dict_sqlite.o: ../../include/stringops.h
 dict_sqlite.o: ../../include/sys_defs.h
@@ -1101,8 +1110,10 @@ fold_addr.o: ../../include/vbuf.h
 fold_addr.o: ../../include/vstring.h
 fold_addr.o: fold_addr.c
 fold_addr.o: fold_addr.h
+haproxy_srvr.o: ../../include/inet_proto.h
 haproxy_srvr.o: ../../include/msg.h
 haproxy_srvr.o: ../../include/myaddrinfo.h
+haproxy_srvr.o: ../../include/mymalloc.h
 haproxy_srvr.o: ../../include/stringops.h
 haproxy_srvr.o: ../../include/sys_defs.h
 haproxy_srvr.o: ../../include/valid_hostname.h
@@ -1113,6 +1124,7 @@ haproxy_srvr.o: haproxy_srvr.h
 header_body_checks.o: ../../include/argv.h
 header_body_checks.o: ../../include/dict.h
 header_body_checks.o: ../../include/msg.h
+header_body_checks.o: ../../include/myflock.h
 header_body_checks.o: ../../include/mymalloc.h
 header_body_checks.o: ../../include/sys_defs.h
 header_body_checks.o: ../../include/vbuf.h
@@ -1196,6 +1208,7 @@ mail_addr_crunch.o: tok822.h
 mail_addr_find.o: ../../include/argv.h
 mail_addr_find.o: ../../include/dict.h
 mail_addr_find.o: ../../include/msg.h
+mail_addr_find.o: ../../include/myflock.h
 mail_addr_find.o: ../../include/mymalloc.h
 mail_addr_find.o: ../../include/stringops.h
 mail_addr_find.o: ../../include/sys_defs.h
@@ -1211,6 +1224,7 @@ mail_addr_find.o: strip_addr.h
 mail_addr_map.o: ../../include/argv.h
 mail_addr_map.o: ../../include/dict.h
 mail_addr_map.o: ../../include/msg.h
+mail_addr_map.o: ../../include/myflock.h
 mail_addr_map.o: ../../include/mymalloc.h
 mail_addr_map.o: ../../include/sys_defs.h
 mail_addr_map.o: ../../include/vbuf.h
@@ -1238,6 +1252,7 @@ mail_command_server.o: mail_proto.h
 mail_conf.o: ../../include/argv.h
 mail_conf.o: ../../include/dict.h
 mail_conf.o: ../../include/msg.h
+mail_conf.o: ../../include/myflock.h
 mail_conf.o: ../../include/mymalloc.h
 mail_conf.o: ../../include/readlline.h
 mail_conf.o: ../../include/safe.h
@@ -1252,6 +1267,7 @@ mail_conf.o: mail_params.h
 mail_conf_bool.o: ../../include/argv.h
 mail_conf_bool.o: ../../include/dict.h
 mail_conf_bool.o: ../../include/msg.h
+mail_conf_bool.o: ../../include/myflock.h
 mail_conf_bool.o: ../../include/sys_defs.h
 mail_conf_bool.o: ../../include/vbuf.h
 mail_conf_bool.o: ../../include/vstream.h
@@ -1261,6 +1277,7 @@ mail_conf_bool.o: mail_conf_bool.c
 mail_conf_int.o: ../../include/argv.h
 mail_conf_int.o: ../../include/dict.h
 mail_conf_int.o: ../../include/msg.h
+mail_conf_int.o: ../../include/myflock.h
 mail_conf_int.o: ../../include/mymalloc.h
 mail_conf_int.o: ../../include/stringops.h
 mail_conf_int.o: ../../include/sys_defs.h
@@ -1272,6 +1289,7 @@ mail_conf_int.o: mail_conf_int.c
 mail_conf_long.o: ../../include/argv.h
 mail_conf_long.o: ../../include/dict.h
 mail_conf_long.o: ../../include/msg.h
+mail_conf_long.o: ../../include/myflock.h
 mail_conf_long.o: ../../include/mymalloc.h
 mail_conf_long.o: ../../include/stringops.h
 mail_conf_long.o: ../../include/sys_defs.h
@@ -1283,6 +1301,7 @@ mail_conf_long.o: mail_conf_long.c
 mail_conf_nbool.o: ../../include/argv.h
 mail_conf_nbool.o: ../../include/dict.h
 mail_conf_nbool.o: ../../include/msg.h
+mail_conf_nbool.o: ../../include/myflock.h
 mail_conf_nbool.o: ../../include/sys_defs.h
 mail_conf_nbool.o: ../../include/vbuf.h
 mail_conf_nbool.o: ../../include/vstream.h
@@ -1292,6 +1311,7 @@ mail_conf_nbool.o: mail_conf_nbool.c
 mail_conf_nint.o: ../../include/argv.h
 mail_conf_nint.o: ../../include/dict.h
 mail_conf_nint.o: ../../include/msg.h
+mail_conf_nint.o: ../../include/myflock.h
 mail_conf_nint.o: ../../include/mymalloc.h
 mail_conf_nint.o: ../../include/stringops.h
 mail_conf_nint.o: ../../include/sys_defs.h
@@ -1316,6 +1336,7 @@ mail_conf_str.o: mail_conf_str.c
 mail_conf_time.o: ../../include/argv.h
 mail_conf_time.o: ../../include/dict.h
 mail_conf_time.o: ../../include/msg.h
+mail_conf_time.o: ../../include/myflock.h
 mail_conf_time.o: ../../include/mymalloc.h
 mail_conf_time.o: ../../include/stringops.h
 mail_conf_time.o: ../../include/sys_defs.h
@@ -1372,6 +1393,7 @@ mail_date.o: mail_date.h
 mail_dict.o: ../../include/argv.h
 mail_dict.o: ../../include/dict.h
 mail_dict.o: ../../include/msg.h
+mail_dict.o: ../../include/myflock.h
 mail_dict.o: ../../include/sys_defs.h
 mail_dict.o: ../../include/vbuf.h
 mail_dict.o: ../../include/vstream.h
@@ -1419,6 +1441,7 @@ mail_params.o: ../../include/iostuff.h
 mail_params.o: ../../include/msg.h
 mail_params.o: ../../include/msg_syslog.h
 mail_params.o: ../../include/myaddrinfo.h
+mail_params.o: ../../include/myflock.h
 mail_params.o: ../../include/mymalloc.h
 mail_params.o: ../../include/safe.h
 mail_params.o: ../../include/safe_open.h
@@ -1528,6 +1551,7 @@ mail_version.o: mail_version.h
 maps.o: ../../include/argv.h
 maps.o: ../../include/dict.h
 maps.o: ../../include/msg.h
+maps.o: ../../include/myflock.h
 maps.o: ../../include/mymalloc.h
 maps.o: ../../include/split_at.h
 maps.o: ../../include/stringops.h
@@ -1619,6 +1643,7 @@ mime_state.o: rec_type.h
 mkmap_cdb.o: ../../include/argv.h
 mkmap_cdb.o: ../../include/dict.h
 mkmap_cdb.o: ../../include/dict_cdb.h
+mkmap_cdb.o: ../../include/myflock.h
 mkmap_cdb.o: ../../include/mymalloc.h
 mkmap_cdb.o: ../../include/sys_defs.h
 mkmap_cdb.o: ../../include/vbuf.h
@@ -1657,6 +1682,7 @@ mkmap_dbm.o: mkmap_dbm.c
 mkmap_fail.o: ../../include/argv.h
 mkmap_fail.o: ../../include/dict.h
 mkmap_fail.o: ../../include/dict_fail.h
+mkmap_fail.o: ../../include/myflock.h
 mkmap_fail.o: ../../include/mymalloc.h
 mkmap_fail.o: ../../include/sys_defs.h
 mkmap_fail.o: ../../include/vbuf.h
@@ -1672,6 +1698,7 @@ mkmap_open.o: ../../include/dict_dbm.h
 mkmap_open.o: ../../include/dict_fail.h
 mkmap_open.o: ../../include/dict_sdbm.h
 mkmap_open.o: ../../include/msg.h
+mkmap_open.o: ../../include/myflock.h
 mkmap_open.o: ../../include/mymalloc.h
 mkmap_open.o: ../../include/sigdelay.h
 mkmap_open.o: ../../include/sys_defs.h
@@ -1683,6 +1710,7 @@ mkmap_open.o: mkmap.h
 mkmap_open.o: mkmap_open.c
 mkmap_proxy.o: ../../include/argv.h
 mkmap_proxy.o: ../../include/dict.h
+mkmap_proxy.o: ../../include/myflock.h
 mkmap_proxy.o: ../../include/mymalloc.h
 mkmap_proxy.o: ../../include/sys_defs.h
 mkmap_proxy.o: ../../include/vbuf.h
@@ -1928,6 +1956,7 @@ resolve_local.o: ../../include/inet_addr_list.h
 resolve_local.o: ../../include/match_list.h
 resolve_local.o: ../../include/msg.h
 resolve_local.o: ../../include/myaddrinfo.h
+resolve_local.o: ../../include/myflock.h
 resolve_local.o: ../../include/mymalloc.h
 resolve_local.o: ../../include/sys_defs.h
 resolve_local.o: ../../include/valid_hostname.h
@@ -2030,6 +2059,7 @@ server_acl.o: ../../include/argv.h
 server_acl.o: ../../include/dict.h
 server_acl.o: ../../include/match_list.h
 server_acl.o: ../../include/msg.h
+server_acl.o: ../../include/myflock.h
 server_acl.o: ../../include/mymalloc.h
 server_acl.o: ../../include/stringops.h
 server_acl.o: ../../include/sys_defs.h
@@ -2170,6 +2200,7 @@ user_acl.o: ../../include/argv.h
 user_acl.o: ../../include/dict.h
 user_acl.o: ../../include/dict_static.h
 user_acl.o: ../../include/match_list.h
+user_acl.o: ../../include/myflock.h
 user_acl.o: ../../include/sys_defs.h
 user_acl.o: ../../include/vbuf.h
 user_acl.o: ../../include/vstream.h
diff --git a/postfix/src/global/mail_params.h b/postfix/src/global/mail_params.h
index 8913eed9c..5a3d2f899 100644
--- a/postfix/src/global/mail_params.h
+++ b/postfix/src/global/mail_params.h
@@ -3378,14 +3378,6 @@ extern char *var_psc_barlf_action;
 #define DEF_PSC_BARLF_TTL	"30d"
 extern int var_psc_barlf_ttl;
 
-#define VAR_PSC_WLIST_NETS	"postscreen_whitelist_networks"
-#define DEF_PSC_WLIST_NETS	"$" VAR_MYNETWORKS
-extern char *var_psc_wlist_nets;
-
-#define VAR_PSC_BLIST_NETS	"postscreen_blacklist_networks"
-#define DEF_PSC_BLIST_NETS	""
-extern char *var_psc_blist_nets;
-
 #define VAR_PSC_BLIST_ACTION	"postscreen_blacklist_action"
 #define DEF_PSC_BLIST_ACTION	"ignore"
 extern char *var_psc_blist_nets;
diff --git a/postfix/src/global/mail_version.h b/postfix/src/global/mail_version.h
index ac51d149a..91d8a26d0 100644
--- a/postfix/src/global/mail_version.h
+++ b/postfix/src/global/mail_version.h
@@ -20,7 +20,7 @@
   * Patches change both the patchlevel and the release date. Snapshots have no
   * patchlevel; they change the release date only.
   */
-#define MAIL_RELEASE_DATE	"20120908"
+#define MAIL_RELEASE_DATE	"20120924"
 #define MAIL_VERSION_NUMBER	"2.10"
 
 #ifdef SNAPSHOT
diff --git a/postfix/src/local/Makefile.in b/postfix/src/local/Makefile.in
index 92868a373..e11bc7540 100644
--- a/postfix/src/local/Makefile.in
+++ b/postfix/src/local/Makefile.in
@@ -83,6 +83,7 @@ alias.o: ../../include/maps.h
 alias.o: ../../include/mbox_conf.h
 alias.o: ../../include/msg.h
 alias.o: ../../include/msg_stats.h
+alias.o: ../../include/myflock.h
 alias.o: ../../include/mymalloc.h
 alias.o: ../../include/mypwd.h
 alias.o: ../../include/recipient_list.h
@@ -97,6 +98,7 @@ alias.o: ../../include/vstream.h
 alias.o: ../../include/vstring.h
 alias.o: alias.c
 alias.o: local.h
+biff_notify.o: ../../include/iostuff.h
 biff_notify.o: ../../include/msg.h
 biff_notify.o: ../../include/sys_defs.h
 biff_notify.o: biff_notify.c
@@ -119,6 +121,7 @@ bounce_workaround.o: ../../include/maps.h
 bounce_workaround.o: ../../include/mbox_conf.h
 bounce_workaround.o: ../../include/msg.h
 bounce_workaround.o: ../../include/msg_stats.h
+bounce_workaround.o: ../../include/myflock.h
 bounce_workaround.o: ../../include/mymalloc.h
 bounce_workaround.o: ../../include/recipient_list.h
 bounce_workaround.o: ../../include/resolve_clnt.h
@@ -153,6 +156,7 @@ command.o: ../../include/maps.h
 command.o: ../../include/mbox_conf.h
 command.o: ../../include/msg.h
 command.o: ../../include/msg_stats.h
+command.o: ../../include/myflock.h
 command.o: ../../include/pipe_command.h
 command.o: ../../include/recipient_list.h
 command.o: ../../include/resolve_clnt.h
@@ -178,6 +182,7 @@ deliver_attr.o: ../../include/maps.h
 deliver_attr.o: ../../include/mbox_conf.h
 deliver_attr.o: ../../include/msg.h
 deliver_attr.o: ../../include/msg_stats.h
+deliver_attr.o: ../../include/myflock.h
 deliver_attr.o: ../../include/recipient_list.h
 deliver_attr.o: ../../include/resolve_clnt.h
 deliver_attr.o: ../../include/sys_defs.h
@@ -211,6 +216,7 @@ dotforward.o: ../../include/maps.h
 dotforward.o: ../../include/mbox_conf.h
 dotforward.o: ../../include/msg.h
 dotforward.o: ../../include/msg_stats.h
+dotforward.o: ../../include/myflock.h
 dotforward.o: ../../include/mymalloc.h
 dotforward.o: ../../include/mypwd.h
 dotforward.o: ../../include/open_as.h
@@ -282,6 +288,7 @@ forward.o: ../../include/mark_corrupt.h
 forward.o: ../../include/mbox_conf.h
 forward.o: ../../include/msg.h
 forward.o: ../../include/msg_stats.h
+forward.o: ../../include/myflock.h
 forward.o: ../../include/mymalloc.h
 forward.o: ../../include/rec_type.h
 forward.o: ../../include/recipient_list.h
@@ -316,6 +323,7 @@ include.o: ../../include/maps.h
 include.o: ../../include/mbox_conf.h
 include.o: ../../include/msg.h
 include.o: ../../include/msg_stats.h
+include.o: ../../include/myflock.h
 include.o: ../../include/mymalloc.h
 include.o: ../../include/mypwd.h
 include.o: ../../include/open_as.h
@@ -347,6 +355,7 @@ indirect.o: ../../include/maps.h
 indirect.o: ../../include/mbox_conf.h
 indirect.o: ../../include/msg.h
 indirect.o: ../../include/msg_stats.h
+indirect.o: ../../include/myflock.h
 indirect.o: ../../include/recipient_list.h
 indirect.o: ../../include/resolve_clnt.h
 indirect.o: ../../include/sent.h
@@ -380,6 +389,7 @@ local.o: ../../include/maps.h
 local.o: ../../include/mbox_conf.h
 local.o: ../../include/msg.h
 local.o: ../../include/msg_stats.h
+local.o: ../../include/myflock.h
 local.o: ../../include/mymalloc.h
 local.o: ../../include/name_mask.h
 local.o: ../../include/recipient_list.h
@@ -408,6 +418,7 @@ local_expand.o: ../../include/mail_params.h
 local_expand.o: ../../include/maps.h
 local_expand.o: ../../include/mbox_conf.h
 local_expand.o: ../../include/msg_stats.h
+local_expand.o: ../../include/myflock.h
 local_expand.o: ../../include/recipient_list.h
 local_expand.o: ../../include/resolve_clnt.h
 local_expand.o: ../../include/sys_defs.h
@@ -440,6 +451,7 @@ mailbox.o: ../../include/mbox_conf.h
 mailbox.o: ../../include/mbox_open.h
 mailbox.o: ../../include/msg.h
 mailbox.o: ../../include/msg_stats.h
+mailbox.o: ../../include/myflock.h
 mailbox.o: ../../include/mymalloc.h
 mailbox.o: ../../include/mypwd.h
 mailbox.o: ../../include/recipient_list.h
@@ -479,6 +491,7 @@ maildir.o: ../../include/mbox_conf.h
 maildir.o: ../../include/mbox_open.h
 maildir.o: ../../include/msg.h
 maildir.o: ../../include/msg_stats.h
+maildir.o: ../../include/myflock.h
 maildir.o: ../../include/mymalloc.h
 maildir.o: ../../include/recipient_list.h
 maildir.o: ../../include/resolve_clnt.h
@@ -514,6 +527,7 @@ recipient.o: ../../include/maps.h
 recipient.o: ../../include/mbox_conf.h
 recipient.o: ../../include/msg.h
 recipient.o: ../../include/msg_stats.h
+recipient.o: ../../include/myflock.h
 recipient.o: ../../include/mymalloc.h
 recipient.o: ../../include/mypwd.h
 recipient.o: ../../include/recipient_list.h
@@ -549,6 +563,7 @@ resolve.o: ../../include/maps.h
 resolve.o: ../../include/mbox_conf.h
 resolve.o: ../../include/msg.h
 resolve.o: ../../include/msg_stats.h
+resolve.o: ../../include/myflock.h
 resolve.o: ../../include/recipient_list.h
 resolve.o: ../../include/resolve_clnt.h
 resolve.o: ../../include/rewrite_clnt.h
@@ -576,6 +591,7 @@ token.o: ../../include/maps.h
 token.o: ../../include/mbox_conf.h
 token.o: ../../include/msg.h
 token.o: ../../include/msg_stats.h
+token.o: ../../include/myflock.h
 token.o: ../../include/mymalloc.h
 token.o: ../../include/readlline.h
 token.o: ../../include/recipient_list.h
@@ -610,6 +626,7 @@ unknown.o: ../../include/maps.h
 unknown.o: ../../include/mbox_conf.h
 unknown.o: ../../include/msg.h
 unknown.o: ../../include/msg_stats.h
+unknown.o: ../../include/myflock.h
 unknown.o: ../../include/mymalloc.h
 unknown.o: ../../include/recipient_list.h
 unknown.o: ../../include/resolve_clnt.h
diff --git a/postfix/src/oqmgr/Makefile.in b/postfix/src/oqmgr/Makefile.in
index 1be25c873..3604e3249 100644
--- a/postfix/src/oqmgr/Makefile.in
+++ b/postfix/src/oqmgr/Makefile.in
@@ -80,6 +80,7 @@ qmgr.o: ../../include/mail_server.h
 qmgr.o: ../../include/mail_version.h
 qmgr.o: ../../include/master_proto.h
 qmgr.o: ../../include/msg.h
+qmgr.o: ../../include/myflock.h
 qmgr.o: ../../include/recipient_list.h
 qmgr.o: ../../include/scan_dir.h
 qmgr.o: ../../include/sys_defs.h
diff --git a/postfix/src/oqmgr/qmgr.c b/postfix/src/oqmgr/qmgr.c
index c3911ebdf..6f20c28ab 100644
--- a/postfix/src/oqmgr/qmgr.c
+++ b/postfix/src/oqmgr/qmgr.c
@@ -173,7 +173,7 @@
 /*	The maximal number of messages in the active queue.
 /* .IP "\fBqmgr_message_recipient_limit (20000)\fR"
 /*	The maximal number of recipients held in memory by the Postfix
-/*	queue manager, and the maximal size of the size of the short-term,
+/*	queue manager, and the maximal size of the short-term,
 /*	in-memory "dead" destination status cache.
 /* DELIVERY CONCURRENCY CONTROLS
 /* .ad
@@ -249,8 +249,8 @@
 /*	Available in Postfix version 2.5 and later:
 /* .IP "\fBdefault_destination_rate_delay (0s)\fR"
 /*	The default amount of delay that is inserted between individual
-/*	deliveries to the same destination; with per-destination recipient
-/*	limit > 1, a destination is a domain, otherwise it is a recipient.
+/*	deliveries to the same destination; the resulting behavior depends
+/*	on the value of the corresponding per-destination recipient limit.
 /* .IP "\fItransport\fB_destination_rate_delay $default_destination_rate_delay
 /*	Idem, for delivery via the named message \fItransport\fR.
 /* SAFETY CONTROLS
diff --git a/postfix/src/pipe/Makefile.in b/postfix/src/pipe/Makefile.in
index 6a10d5ff6..cfbd2e0d7 100644
--- a/postfix/src/pipe/Makefile.in
+++ b/postfix/src/pipe/Makefile.in
@@ -82,6 +82,7 @@ pipe.o: ../../include/mail_server.h
 pipe.o: ../../include/mail_version.h
 pipe.o: ../../include/msg.h
 pipe.o: ../../include/msg_stats.h
+pipe.o: ../../include/myflock.h
 pipe.o: ../../include/mymalloc.h
 pipe.o: ../../include/off_cvt.h
 pipe.o: ../../include/pipe_command.h
diff --git a/postfix/src/postalias/Makefile.in b/postfix/src/postalias/Makefile.in
index 699c3d3fc..a2e11f86a 100644
--- a/postfix/src/postalias/Makefile.in
+++ b/postfix/src/postalias/Makefile.in
@@ -98,6 +98,7 @@ postalias.o: ../../include/mkmap.h
 postalias.o: ../../include/msg.h
 postalias.o: ../../include/msg_syslog.h
 postalias.o: ../../include/msg_vstream.h
+postalias.o: ../../include/myflock.h
 postalias.o: ../../include/mymalloc.h
 postalias.o: ../../include/readlline.h
 postalias.o: ../../include/resolve_clnt.h
diff --git a/postfix/src/postconf/Makefile.in b/postfix/src/postconf/Makefile.in
index 25e2985c2..86d44b3c3 100644
--- a/postfix/src/postconf/Makefile.in
+++ b/postfix/src/postconf/Makefile.in
@@ -467,6 +467,7 @@ postconf.o: ../../include/mail_run.h
 postconf.o: ../../include/mail_version.h
 postconf.o: ../../include/msg.h
 postconf.o: ../../include/msg_vstream.h
+postconf.o: ../../include/myflock.h
 postconf.o: ../../include/name_mask.h
 postconf.o: ../../include/stringops.h
 postconf.o: ../../include/sys_defs.h
@@ -489,6 +490,7 @@ postconf_builtin.o: ../../include/mail_params.h
 postconf_builtin.o: ../../include/mail_proto.h
 postconf_builtin.o: ../../include/mail_version.h
 postconf_builtin.o: ../../include/msg.h
+postconf_builtin.o: ../../include/myflock.h
 postconf_builtin.o: ../../include/mymalloc.h
 postconf_builtin.o: ../../include/mynetworks.h
 postconf_builtin.o: ../../include/server_acl.h
@@ -529,6 +531,7 @@ postconf_dbms.o: ../../include/htable.h
 postconf_dbms.o: ../../include/mac_expand.h
 postconf_dbms.o: ../../include/mac_parse.h
 postconf_dbms.o: ../../include/mail_conf.h
+postconf_dbms.o: ../../include/myflock.h
 postconf_dbms.o: ../../include/split_at.h
 postconf_dbms.o: ../../include/stringops.h
 postconf_dbms.o: ../../include/sys_defs.h
@@ -543,6 +546,7 @@ postconf_edit.o: ../../include/edit_file.h
 postconf_edit.o: ../../include/htable.h
 postconf_edit.o: ../../include/mail_params.h
 postconf_edit.o: ../../include/msg.h
+postconf_edit.o: ../../include/myflock.h
 postconf_edit.o: ../../include/mymalloc.h
 postconf_edit.o: ../../include/readlline.h
 postconf_edit.o: ../../include/stringops.h
@@ -559,6 +563,7 @@ postconf_main.o: ../../include/htable.h
 postconf_main.o: ../../include/mail_conf.h
 postconf_main.o: ../../include/mail_params.h
 postconf_main.o: ../../include/msg.h
+postconf_main.o: ../../include/myflock.h
 postconf_main.o: ../../include/mymalloc.h
 postconf_main.o: ../../include/readlline.h
 postconf_main.o: ../../include/stringops.h
@@ -574,6 +579,7 @@ postconf_master.o: ../../include/htable.h
 postconf_master.o: ../../include/mail_params.h
 postconf_master.o: ../../include/match_service.h
 postconf_master.o: ../../include/msg.h
+postconf_master.o: ../../include/myflock.h
 postconf_master.o: ../../include/mymalloc.h
 postconf_master.o: ../../include/readlline.h
 postconf_master.o: ../../include/stringops.h
@@ -588,6 +594,7 @@ postconf_misc.o: ../../include/dict.h
 postconf_misc.o: ../../include/htable.h
 postconf_misc.o: ../../include/mail_conf.h
 postconf_misc.o: ../../include/mail_params.h
+postconf_misc.o: ../../include/myflock.h
 postconf_misc.o: ../../include/mymalloc.h
 postconf_misc.o: ../../include/safe.h
 postconf_misc.o: ../../include/sys_defs.h
@@ -600,6 +607,7 @@ postconf_node.o: ../../include/argv.h
 postconf_node.o: ../../include/dict.h
 postconf_node.o: ../../include/htable.h
 postconf_node.o: ../../include/msg.h
+postconf_node.o: ../../include/myflock.h
 postconf_node.o: ../../include/mymalloc.h
 postconf_node.o: ../../include/sys_defs.h
 postconf_node.o: ../../include/vbuf.h
@@ -611,6 +619,7 @@ postconf_other.o: ../../include/argv.h
 postconf_other.o: ../../include/dict.h
 postconf_other.o: ../../include/htable.h
 postconf_other.o: ../../include/mbox_conf.h
+postconf_other.o: ../../include/myflock.h
 postconf_other.o: ../../include/sys_defs.h
 postconf_other.o: ../../include/vbuf.h
 postconf_other.o: ../../include/vstream.h
@@ -623,6 +632,7 @@ postconf_service.o: ../../include/dict.h
 postconf_service.o: ../../include/htable.h
 postconf_service.o: ../../include/mail_params.h
 postconf_service.o: ../../include/msg.h
+postconf_service.o: ../../include/myflock.h
 postconf_service.o: ../../include/mymalloc.h
 postconf_service.o: ../../include/stringops.h
 postconf_service.o: ../../include/sys_defs.h
@@ -637,6 +647,7 @@ postconf_unused.o: ../../include/htable.h
 postconf_unused.o: ../../include/mail_conf.h
 postconf_unused.o: ../../include/mail_params.h
 postconf_unused.o: ../../include/msg.h
+postconf_unused.o: ../../include/myflock.h
 postconf_unused.o: ../../include/sys_defs.h
 postconf_unused.o: ../../include/vbuf.h
 postconf_unused.o: ../../include/vstream.h
@@ -651,6 +662,7 @@ postconf_user.o: ../../include/mac_parse.h
 postconf_user.o: ../../include/mail_conf.h
 postconf_user.o: ../../include/mail_params.h
 postconf_user.o: ../../include/msg.h
+postconf_user.o: ../../include/myflock.h
 postconf_user.o: ../../include/mymalloc.h
 postconf_user.o: ../../include/stringops.h
 postconf_user.o: ../../include/sys_defs.h
diff --git a/postfix/src/postmap/Makefile.in b/postfix/src/postmap/Makefile.in
index 9ffc591b6..75e7b21ec 100644
--- a/postfix/src/postmap/Makefile.in
+++ b/postfix/src/postmap/Makefile.in
@@ -100,6 +100,7 @@ postmap.o: ../../include/mkmap.h
 postmap.o: ../../include/msg.h
 postmap.o: ../../include/msg_syslog.h
 postmap.o: ../../include/msg_vstream.h
+postmap.o: ../../include/myflock.h
 postmap.o: ../../include/mymalloc.h
 postmap.o: ../../include/readlline.h
 postmap.o: ../../include/rec_type.h
diff --git a/postfix/src/postscreen/Makefile.in b/postfix/src/postscreen/Makefile.in
index d83a10bba..4d2f8265a 100644
--- a/postfix/src/postscreen/Makefile.in
+++ b/postfix/src/postscreen/Makefile.in
@@ -85,6 +85,7 @@ postscreen.o: ../../include/maps.h
 postscreen.o: ../../include/match_list.h
 postscreen.o: ../../include/msg.h
 postscreen.o: ../../include/myaddrinfo.h
+postscreen.o: ../../include/myflock.h
 postscreen.o: ../../include/mymalloc.h
 postscreen.o: ../../include/name_code.h
 postscreen.o: ../../include/server_acl.h
@@ -106,6 +107,7 @@ postscreen_dict.o: ../../include/maps.h
 postscreen_dict.o: ../../include/match_list.h
 postscreen_dict.o: ../../include/msg.h
 postscreen_dict.o: ../../include/myaddrinfo.h
+postscreen_dict.o: ../../include/myflock.h
 postscreen_dict.o: ../../include/server_acl.h
 postscreen_dict.o: ../../include/string_list.h
 postscreen_dict.o: ../../include/sys_defs.h
@@ -130,6 +132,7 @@ postscreen_dnsbl.o: ../../include/maps.h
 postscreen_dnsbl.o: ../../include/match_list.h
 postscreen_dnsbl.o: ../../include/msg.h
 postscreen_dnsbl.o: ../../include/myaddrinfo.h
+postscreen_dnsbl.o: ../../include/myflock.h
 postscreen_dnsbl.o: ../../include/mymalloc.h
 postscreen_dnsbl.o: ../../include/server_acl.h
 postscreen_dnsbl.o: ../../include/split_at.h
@@ -153,6 +156,7 @@ postscreen_early.o: ../../include/maps.h
 postscreen_early.o: ../../include/match_list.h
 postscreen_early.o: ../../include/msg.h
 postscreen_early.o: ../../include/myaddrinfo.h
+postscreen_early.o: ../../include/myflock.h
 postscreen_early.o: ../../include/mymalloc.h
 postscreen_early.o: ../../include/server_acl.h
 postscreen_early.o: ../../include/string_list.h
@@ -170,11 +174,13 @@ postscreen_endpt.o: ../../include/dict_cache.h
 postscreen_endpt.o: ../../include/events.h
 postscreen_endpt.o: ../../include/haproxy_srvr.h
 postscreen_endpt.o: ../../include/htable.h
+postscreen_endpt.o: ../../include/inet_proto.h
 postscreen_endpt.o: ../../include/mail_params.h
 postscreen_endpt.o: ../../include/maps.h
 postscreen_endpt.o: ../../include/match_list.h
 postscreen_endpt.o: ../../include/msg.h
 postscreen_endpt.o: ../../include/myaddrinfo.h
+postscreen_endpt.o: ../../include/myflock.h
 postscreen_endpt.o: ../../include/server_acl.h
 postscreen_endpt.o: ../../include/string_list.h
 postscreen_endpt.o: ../../include/sys_defs.h
@@ -198,6 +204,7 @@ postscreen_expand.o: ../../include/maps.h
 postscreen_expand.o: ../../include/match_list.h
 postscreen_expand.o: ../../include/msg.h
 postscreen_expand.o: ../../include/myaddrinfo.h
+postscreen_expand.o: ../../include/myflock.h
 postscreen_expand.o: ../../include/server_acl.h
 postscreen_expand.o: ../../include/string_list.h
 postscreen_expand.o: ../../include/stringops.h
@@ -214,10 +221,12 @@ postscreen_haproxy.o: ../../include/dict_cache.h
 postscreen_haproxy.o: ../../include/events.h
 postscreen_haproxy.o: ../../include/haproxy_srvr.h
 postscreen_haproxy.o: ../../include/htable.h
+postscreen_haproxy.o: ../../include/mail_params.h
 postscreen_haproxy.o: ../../include/maps.h
 postscreen_haproxy.o: ../../include/match_list.h
 postscreen_haproxy.o: ../../include/msg.h
 postscreen_haproxy.o: ../../include/myaddrinfo.h
+postscreen_haproxy.o: ../../include/myflock.h
 postscreen_haproxy.o: ../../include/mymalloc.h
 postscreen_haproxy.o: ../../include/server_acl.h
 postscreen_haproxy.o: ../../include/string_list.h
@@ -242,6 +251,7 @@ postscreen_misc.o: ../../include/maps.h
 postscreen_misc.o: ../../include/match_list.h
 postscreen_misc.o: ../../include/msg.h
 postscreen_misc.o: ../../include/myaddrinfo.h
+postscreen_misc.o: ../../include/myflock.h
 postscreen_misc.o: ../../include/server_acl.h
 postscreen_misc.o: ../../include/string_list.h
 postscreen_misc.o: ../../include/sys_defs.h
@@ -267,6 +277,7 @@ postscreen_send.o: ../../include/maps.h
 postscreen_send.o: ../../include/match_list.h
 postscreen_send.o: ../../include/msg.h
 postscreen_send.o: ../../include/myaddrinfo.h
+postscreen_send.o: ../../include/myflock.h
 postscreen_send.o: ../../include/server_acl.h
 postscreen_send.o: ../../include/smtp_reply_footer.h
 postscreen_send.o: ../../include/string_list.h
@@ -293,6 +304,7 @@ postscreen_smtpd.o: ../../include/maps.h
 postscreen_smtpd.o: ../../include/match_list.h
 postscreen_smtpd.o: ../../include/msg.h
 postscreen_smtpd.o: ../../include/myaddrinfo.h
+postscreen_smtpd.o: ../../include/myflock.h
 postscreen_smtpd.o: ../../include/mymalloc.h
 postscreen_smtpd.o: ../../include/name_code.h
 postscreen_smtpd.o: ../../include/name_mask.h
@@ -321,6 +333,7 @@ postscreen_starttls.o: ../../include/maps.h
 postscreen_starttls.o: ../../include/match_list.h
 postscreen_starttls.o: ../../include/msg.h
 postscreen_starttls.o: ../../include/myaddrinfo.h
+postscreen_starttls.o: ../../include/myflock.h
 postscreen_starttls.o: ../../include/mymalloc.h
 postscreen_starttls.o: ../../include/name_code.h
 postscreen_starttls.o: ../../include/name_mask.h
@@ -349,6 +362,7 @@ postscreen_state.o: ../../include/maps.h
 postscreen_state.o: ../../include/match_list.h
 postscreen_state.o: ../../include/msg.h
 postscreen_state.o: ../../include/myaddrinfo.h
+postscreen_state.o: ../../include/myflock.h
 postscreen_state.o: ../../include/mymalloc.h
 postscreen_state.o: ../../include/name_mask.h
 postscreen_state.o: ../../include/server_acl.h
@@ -370,6 +384,7 @@ postscreen_tests.o: ../../include/maps.h
 postscreen_tests.o: ../../include/match_list.h
 postscreen_tests.o: ../../include/msg.h
 postscreen_tests.o: ../../include/myaddrinfo.h
+postscreen_tests.o: ../../include/myflock.h
 postscreen_tests.o: ../../include/server_acl.h
 postscreen_tests.o: ../../include/string_list.h
 postscreen_tests.o: ../../include/sys_defs.h
diff --git a/postfix/src/proxymap/Makefile.in b/postfix/src/proxymap/Makefile.in
index c4ccf673d..96358faa3 100644
--- a/postfix/src/proxymap/Makefile.in
+++ b/postfix/src/proxymap/Makefile.in
@@ -69,6 +69,7 @@ proxymap.o: ../../include/mail_proto.h
 proxymap.o: ../../include/mail_server.h
 proxymap.o: ../../include/mail_version.h
 proxymap.o: ../../include/msg.h
+proxymap.o: ../../include/myflock.h
 proxymap.o: ../../include/mymalloc.h
 proxymap.o: ../../include/stringops.h
 proxymap.o: ../../include/sys_defs.h
diff --git a/postfix/src/qmgr/Makefile.in b/postfix/src/qmgr/Makefile.in
index e9e2a3ba6..bd63a9b43 100644
--- a/postfix/src/qmgr/Makefile.in
+++ b/postfix/src/qmgr/Makefile.in
@@ -82,6 +82,7 @@ qmgr.o: ../../include/mail_server.h
 qmgr.o: ../../include/mail_version.h
 qmgr.o: ../../include/master_proto.h
 qmgr.o: ../../include/msg.h
+qmgr.o: ../../include/myflock.h
 qmgr.o: ../../include/recipient_list.h
 qmgr.o: ../../include/scan_dir.h
 qmgr.o: ../../include/sys_defs.h
diff --git a/postfix/src/qmgr/qmgr.c b/postfix/src/qmgr/qmgr.c
index a59bf5da0..fbf7daba6 100644
--- a/postfix/src/qmgr/qmgr.c
+++ b/postfix/src/qmgr/qmgr.c
@@ -177,7 +177,7 @@
 /*	The maximal number of messages in the active queue.
 /* .IP "\fBqmgr_message_recipient_limit (20000)\fR"
 /*	The maximal number of recipients held in memory by the Postfix
-/*	queue manager, and the maximal size of the size of the short-term,
+/*	queue manager, and the maximal size of the short-term,
 /*	in-memory "dead" destination status cache.
 /* .IP "\fBqmgr_message_recipient_minimum (10)\fR"
 /*	The minimal number of in-memory recipients for any message.
@@ -295,8 +295,8 @@
 /*	Available in Postfix version 2.5 and later:
 /* .IP "\fBdefault_destination_rate_delay (0s)\fR"
 /*	The default amount of delay that is inserted between individual
-/*	deliveries to the same destination; with per-destination recipient
-/*	limit > 1, a destination is a domain, otherwise it is a recipient.
+/*	deliveries to the same destination; the resulting behavior depends
+/*	on the value of the corresponding per-destination recipient limit.
 /* .IP "\fItransport\fB_destination_rate_delay $default_destination_rate_delay
 /*	Idem, for delivery via the named message \fItransport\fR.
 /* SAFETY CONTROLS
diff --git a/postfix/src/qmqpd/Makefile.in b/postfix/src/qmqpd/Makefile.in
index e54679d48..f99e26695 100644
--- a/postfix/src/qmqpd/Makefile.in
+++ b/postfix/src/qmqpd/Makefile.in
@@ -77,6 +77,7 @@ qmqpd.o: ../../include/mail_version.h
 qmqpd.o: ../../include/match_list.h
 qmqpd.o: ../../include/match_parent_style.h
 qmqpd.o: ../../include/msg.h
+qmqpd.o: ../../include/myflock.h
 qmqpd.o: ../../include/mymalloc.h
 qmqpd.o: ../../include/namadr_list.h
 qmqpd.o: ../../include/netstring.h
diff --git a/postfix/src/sendmail/sendmail.c b/postfix/src/sendmail/sendmail.c
index 88a7b67ec..e8c0b6ca7 100644
--- a/postfix/src/sendmail/sendmail.c
+++ b/postfix/src/sendmail/sendmail.c
@@ -175,12 +175,12 @@
 /*	\fBErrors-To:\fR message header overrides the error return address.
 /* .IP "\fB-R \fIreturn\fR"
 /*	Delivery status notification control.  Specify "hdrs" to
-/*	return only the header if a message bounces, "full" to
+/*	return only the header when a message bounces, "full" to
 /*	return a full copy (the default behavior).
 /*
-/*	The \fB-R\fR option specifies an upper bound; for example,
-/*	Postfix will return only the header, when a full copy would
-/*	exceed the bounce_size_limit setting.
+/*	The \fB-R\fR option specifies an upper bound; Postfix will
+/*	return only the header, when a full copy would exceed the
+/*	bounce_size_limit setting.
 /*
 /*	This option is ignored before Postfix version 2.10.
 /* .IP \fB-q\fR
diff --git a/postfix/src/smtp/Makefile.in b/postfix/src/smtp/Makefile.in
index ebb11b851..ef017fdcc 100644
--- a/postfix/src/smtp/Makefile.in
+++ b/postfix/src/smtp/Makefile.in
@@ -111,6 +111,7 @@ smtp.o: ../../include/mime_state.h
 smtp.o: ../../include/msg.h
 smtp.o: ../../include/msg_stats.h
 smtp.o: ../../include/myaddrinfo.h
+smtp.o: ../../include/myflock.h
 smtp.o: ../../include/mymalloc.h
 smtp.o: ../../include/name_code.h
 smtp.o: ../../include/name_mask.h
@@ -150,6 +151,7 @@ smtp_addr.o: ../../include/mime_state.h
 smtp_addr.o: ../../include/msg.h
 smtp_addr.o: ../../include/msg_stats.h
 smtp_addr.o: ../../include/myaddrinfo.h
+smtp_addr.o: ../../include/myflock.h
 smtp_addr.o: ../../include/mymalloc.h
 smtp_addr.o: ../../include/name_code.h
 smtp_addr.o: ../../include/name_mask.h
@@ -190,6 +192,7 @@ smtp_chat.o: ../../include/match_list.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/myflock.h
 smtp_chat.o: ../../include/mymalloc.h
 smtp_chat.o: ../../include/name_code.h
 smtp_chat.o: ../../include/name_mask.h
@@ -233,6 +236,7 @@ smtp_connect.o: ../../include/mime_state.h
 smtp_connect.o: ../../include/msg.h
 smtp_connect.o: ../../include/msg_stats.h
 smtp_connect.o: ../../include/myaddrinfo.h
+smtp_connect.o: ../../include/myflock.h
 smtp_connect.o: ../../include/mymalloc.h
 smtp_connect.o: ../../include/name_code.h
 smtp_connect.o: ../../include/name_mask.h
@@ -271,6 +275,7 @@ smtp_map11.o: ../../include/match_list.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/myflock.h
 smtp_map11.o: ../../include/name_code.h
 smtp_map11.o: ../../include/name_mask.h
 smtp_map11.o: ../../include/quote_822_local.h
@@ -315,6 +320,7 @@ smtp_proto.o: ../../include/match_list.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/myflock.h
 smtp_proto.o: ../../include/mymalloc.h
 smtp_proto.o: ../../include/name_code.h
 smtp_proto.o: ../../include/name_mask.h
@@ -360,6 +366,7 @@ smtp_rcpt.o: ../../include/match_list.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/myflock.h
 smtp_rcpt.o: ../../include/mymalloc.h
 smtp_rcpt.o: ../../include/name_code.h
 smtp_rcpt.o: ../../include/name_mask.h
@@ -392,6 +399,7 @@ smtp_reuse.o: ../../include/match_list.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/myflock.h
 smtp_reuse.o: ../../include/mymalloc.h
 smtp_reuse.o: ../../include/name_code.h
 smtp_reuse.o: ../../include/name_mask.h
@@ -426,6 +434,7 @@ smtp_sasl_auth_cache.o: ../../include/match_list.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/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/name_mask.h
@@ -459,6 +468,7 @@ smtp_sasl_glue.o: ../../include/match_list.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/myflock.h
 smtp_sasl_glue.o: ../../include/mymalloc.h
 smtp_sasl_glue.o: ../../include/name_code.h
 smtp_sasl_glue.o: ../../include/name_mask.h
@@ -495,6 +505,7 @@ smtp_sasl_proto.o: ../../include/match_list.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/myflock.h
 smtp_sasl_proto.o: ../../include/mymalloc.h
 smtp_sasl_proto.o: ../../include/name_code.h
 smtp_sasl_proto.o: ../../include/name_mask.h
@@ -528,6 +539,7 @@ smtp_session.o: ../../include/match_list.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/myflock.h
 smtp_session.o: ../../include/mymalloc.h
 smtp_session.o: ../../include/name_code.h
 smtp_session.o: ../../include/name_mask.h
@@ -562,6 +574,7 @@ smtp_state.o: ../../include/match_list.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/myflock.h
 smtp_state.o: ../../include/mymalloc.h
 smtp_state.o: ../../include/name_code.h
 smtp_state.o: ../../include/name_mask.h
@@ -597,6 +610,7 @@ smtp_trouble.o: ../../include/match_list.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/myflock.h
 smtp_trouble.o: ../../include/name_code.h
 smtp_trouble.o: ../../include/name_mask.h
 smtp_trouble.o: ../../include/recipient_list.h
@@ -629,6 +643,7 @@ smtp_unalias.o: ../../include/mime_state.h
 smtp_unalias.o: ../../include/msg.h
 smtp_unalias.o: ../../include/msg_stats.h
 smtp_unalias.o: ../../include/myaddrinfo.h
+smtp_unalias.o: ../../include/myflock.h
 smtp_unalias.o: ../../include/name_code.h
 smtp_unalias.o: ../../include/name_mask.h
 smtp_unalias.o: ../../include/recipient_list.h
diff --git a/postfix/src/smtpd/Makefile.in b/postfix/src/smtpd/Makefile.in
index 3178a0a20..01b4a545f 100644
--- a/postfix/src/smtpd/Makefile.in
+++ b/postfix/src/smtpd/Makefile.in
@@ -180,6 +180,7 @@ smtpd.o: ../../include/match_list.h
 smtpd.o: ../../include/milter.h
 smtpd.o: ../../include/msg.h
 smtpd.o: ../../include/myaddrinfo.h
+smtpd.o: ../../include/myflock.h
 smtpd.o: ../../include/mymalloc.h
 smtpd.o: ../../include/namadr_list.h
 smtpd.o: ../../include/name_code.h
@@ -289,6 +290,7 @@ smtpd_check.o: ../../include/milter.h
 smtpd_check.o: ../../include/msg.h
 smtpd_check.o: ../../include/msg_stats.h
 smtpd_check.o: ../../include/myaddrinfo.h
+smtpd_check.o: ../../include/myflock.h
 smtpd_check.o: ../../include/mymalloc.h
 smtpd_check.o: ../../include/namadr_list.h
 smtpd_check.o: ../../include/name_code.h
diff --git a/postfix/src/smtpstone/Makefile.in b/postfix/src/smtpstone/Makefile.in
index 3c0316e73..f51b0f6de 100644
--- a/postfix/src/smtpstone/Makefile.in
+++ b/postfix/src/smtpstone/Makefile.in
@@ -79,6 +79,7 @@ depend: $(MAKES)
 
 # do not edit below this line - it is generated by 'make depend'
 qmqp-sink.o: ../../include/events.h
+qmqp-sink.o: ../../include/htable.h
 qmqp-sink.o: ../../include/inet_proto.h
 qmqp-sink.o: ../../include/iostuff.h
 qmqp-sink.o: ../../include/listen.h
@@ -119,6 +120,7 @@ qmqp-source.o: qmqp-source.c
 smtp-sink.o: ../../include/chroot_uid.h
 smtp-sink.o: ../../include/events.h
 smtp-sink.o: ../../include/get_hostname.h
+smtp-sink.o: ../../include/htable.h
 smtp-sink.o: ../../include/inet_proto.h
 smtp-sink.o: ../../include/iostuff.h
 smtp-sink.o: ../../include/listen.h
diff --git a/postfix/src/spawn/Makefile.in b/postfix/src/spawn/Makefile.in
index 1a89937db..33c075a9e 100644
--- a/postfix/src/spawn/Makefile.in
+++ b/postfix/src/spawn/Makefile.in
@@ -64,6 +64,7 @@ spawn.o: ../../include/mail_params.h
 spawn.o: ../../include/mail_server.h
 spawn.o: ../../include/mail_version.h
 spawn.o: ../../include/msg.h
+spawn.o: ../../include/myflock.h
 spawn.o: ../../include/mymalloc.h
 spawn.o: ../../include/set_eugid.h
 spawn.o: ../../include/spawn_command.h
diff --git a/postfix/src/tls/Makefile.in b/postfix/src/tls/Makefile.in
index 1dbe1546b..48e13f06e 100644
--- a/postfix/src/tls/Makefile.in
+++ b/postfix/src/tls/Makefile.in
@@ -285,6 +285,7 @@ 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/myflock.h
 tls_server.o: ../../include/mymalloc.h
 tls_server.o: ../../include/name_code.h
 tls_server.o: ../../include/name_mask.h
diff --git a/postfix/src/tls/tls_scache.c b/postfix/src/tls/tls_scache.c
index 7eefd9055..5ff68ec0f 100644
--- a/postfix/src/tls/tls_scache.c
+++ b/postfix/src/tls/tls_scache.c
@@ -447,7 +447,7 @@ TLS_SCACHE *tls_scache_open(const char *dbname, const char *cache_label,
      * opening a damaged file after some process terminated abnormally.
      */
 #ifdef SINGLE_UPDATER
-#define DICT_FLAGS (DICT_FLAG_DUP_REPLACE)
+#define DICT_FLAGS (DICT_FLAG_DUP_REPLACE | DICT_FLAG_OPEN_LOCK)
 #else
 #define DICT_FLAGS \
 	(DICT_FLAG_DUP_REPLACE | DICT_FLAG_LOCK | DICT_FLAG_SYNC_UPDATE)
@@ -458,13 +458,6 @@ TLS_SCACHE *tls_scache_open(const char *dbname, const char *cache_label,
     /*
      * Sanity checks.
      */
-    if (dict->lock_fd < 0)
-	msg_fatal("dictionary %s is not a regular file", dbname);
-#ifdef SINGLE_UPDATER
-    if (myflock(dict->lock_fd, INTERNAL_LOCK,
-		MYFLOCK_OP_EXCLUSIVE | MYFLOCK_OP_NOWAIT) < 0)
-	msg_fatal("cannot lock dictionary %s for exclusive use: %m", dbname);
-#endif
     if (dict->update == 0)
 	msg_fatal("dictionary %s does not support update operations", dbname);
     if (dict->delete == 0)
diff --git a/postfix/src/tlsmgr/Makefile.in b/postfix/src/tlsmgr/Makefile.in
index 5ad0645b5..c40c91fe7 100644
--- a/postfix/src/tlsmgr/Makefile.in
+++ b/postfix/src/tlsmgr/Makefile.in
@@ -73,6 +73,7 @@ tlsmgr.o: ../../include/mail_server.h
 tlsmgr.o: ../../include/mail_version.h
 tlsmgr.o: ../../include/master_proto.h
 tlsmgr.o: ../../include/msg.h
+tlsmgr.o: ../../include/myflock.h
 tlsmgr.o: ../../include/mymalloc.h
 tlsmgr.o: ../../include/name_code.h
 tlsmgr.o: ../../include/name_mask.h
diff --git a/postfix/src/trivial-rewrite/Makefile.in b/postfix/src/trivial-rewrite/Makefile.in
index 199585680..c1860672f 100644
--- a/postfix/src/trivial-rewrite/Makefile.in
+++ b/postfix/src/trivial-rewrite/Makefile.in
@@ -76,6 +76,7 @@ resolve.o: ../../include/maps.h
 resolve.o: ../../include/match_list.h
 resolve.o: ../../include/match_parent_style.h
 resolve.o: ../../include/msg.h
+resolve.o: ../../include/myflock.h
 resolve.o: ../../include/mymalloc.h
 resolve.o: ../../include/quote_822_local.h
 resolve.o: ../../include/quote_flags.h
@@ -104,6 +105,7 @@ rewrite.o: ../../include/mail_params.h
 rewrite.o: ../../include/mail_proto.h
 rewrite.o: ../../include/maps.h
 rewrite.o: ../../include/msg.h
+rewrite.o: ../../include/myflock.h
 rewrite.o: ../../include/resolve_clnt.h
 rewrite.o: ../../include/resolve_local.h
 rewrite.o: ../../include/split_at.h
@@ -126,6 +128,7 @@ transport.o: ../../include/maps.h
 transport.o: ../../include/match_list.h
 transport.o: ../../include/match_parent_style.h
 transport.o: ../../include/msg.h
+transport.o: ../../include/myflock.h
 transport.o: ../../include/mymalloc.h
 transport.o: ../../include/split_at.h
 transport.o: ../../include/stringops.h
@@ -149,6 +152,7 @@ trivial-rewrite.o: ../../include/mail_server.h
 trivial-rewrite.o: ../../include/mail_version.h
 trivial-rewrite.o: ../../include/maps.h
 trivial-rewrite.o: ../../include/msg.h
+trivial-rewrite.o: ../../include/myflock.h
 trivial-rewrite.o: ../../include/resolve_clnt.h
 trivial-rewrite.o: ../../include/resolve_local.h
 trivial-rewrite.o: ../../include/rewrite_clnt.h
diff --git a/postfix/src/util/Makefile.in b/postfix/src/util/Makefile.in
index 48990a635..4bef13123 100644
--- a/postfix/src/util/Makefile.in
+++ b/postfix/src/util/Makefile.in
@@ -859,6 +859,7 @@ dict.o: line_number.h
 dict.o: mac_expand.h
 dict.o: mac_parse.h
 dict.o: msg.h
+dict.o: myflock.h
 dict.o: mymalloc.h
 dict.o: name_mask.h
 dict.o: readlline.h
@@ -872,6 +873,7 @@ dict_alloc.o: argv.h
 dict_alloc.o: dict.h
 dict_alloc.o: dict_alloc.c
 dict_alloc.o: msg.h
+dict_alloc.o: myflock.h
 dict_alloc.o: mymalloc.h
 dict_alloc.o: sys_defs.h
 dict_alloc.o: vbuf.h
@@ -883,6 +885,7 @@ dict_cache.o: dict_cache.c
 dict_cache.o: dict_cache.h
 dict_cache.o: events.h
 dict_cache.o: msg.h
+dict_cache.o: myflock.h
 dict_cache.o: mymalloc.h
 dict_cache.o: sys_defs.h
 dict_cache.o: vbuf.h
@@ -909,6 +912,7 @@ dict_cidr.o: dict_cidr.c
 dict_cidr.o: dict_cidr.h
 dict_cidr.o: msg.h
 dict_cidr.o: myaddrinfo.h
+dict_cidr.o: myflock.h
 dict_cidr.o: mymalloc.h
 dict_cidr.o: readlline.h
 dict_cidr.o: stringops.h
@@ -937,6 +941,7 @@ dict_debug.o: argv.h
 dict_debug.o: dict.h
 dict_debug.o: dict_debug.c
 dict_debug.o: msg.h
+dict_debug.o: myflock.h
 dict_debug.o: mymalloc.h
 dict_debug.o: sys_defs.h
 dict_debug.o: vbuf.h
@@ -947,6 +952,7 @@ dict_env.o: dict.h
 dict_env.o: dict_env.c
 dict_env.o: dict_env.h
 dict_env.o: msg.h
+dict_env.o: myflock.h
 dict_env.o: mymalloc.h
 dict_env.o: safe.h
 dict_env.o: stringops.h
@@ -959,6 +965,7 @@ dict_fail.o: dict.h
 dict_fail.o: dict_fail.c
 dict_fail.o: dict_fail.h
 dict_fail.o: msg.h
+dict_fail.o: myflock.h
 dict_fail.o: mymalloc.h
 dict_fail.o: sys_defs.h
 dict_fail.o: vbuf.h
@@ -969,6 +976,7 @@ dict_ht.o: dict.h
 dict_ht.o: dict_ht.c
 dict_ht.o: dict_ht.h
 dict_ht.o: htable.h
+dict_ht.o: myflock.h
 dict_ht.o: mymalloc.h
 dict_ht.o: stringops.h
 dict_ht.o: sys_defs.h
@@ -982,6 +990,7 @@ dict_nis.o: dict.h
 dict_nis.o: dict_nis.c
 dict_nis.o: dict_nis.h
 dict_nis.o: msg.h
+dict_nis.o: myflock.h
 dict_nis.o: mymalloc.h
 dict_nis.o: stringops.h
 dict_nis.o: sys_defs.h
@@ -993,6 +1002,7 @@ dict_nisplus.o: dict.h
 dict_nisplus.o: dict_nisplus.c
 dict_nisplus.o: dict_nisplus.h
 dict_nisplus.o: msg.h
+dict_nisplus.o: myflock.h
 dict_nisplus.o: mymalloc.h
 dict_nisplus.o: stringops.h
 dict_nisplus.o: sys_defs.h
@@ -1036,6 +1046,7 @@ dict_pcre.o: dict_pcre.c
 dict_pcre.o: dict_pcre.h
 dict_pcre.o: mac_parse.h
 dict_pcre.o: msg.h
+dict_pcre.o: myflock.h
 dict_pcre.o: mymalloc.h
 dict_pcre.o: readlline.h
 dict_pcre.o: safe.h
@@ -1051,6 +1062,7 @@ dict_regexp.o: dict_regexp.c
 dict_regexp.o: dict_regexp.h
 dict_regexp.o: mac_parse.h
 dict_regexp.o: msg.h
+dict_regexp.o: myflock.h
 dict_regexp.o: mymalloc.h
 dict_regexp.o: readlline.h
 dict_regexp.o: safe.h
@@ -1082,6 +1094,7 @@ dict_sockmap.o: dict_sockmap.c
 dict_sockmap.o: dict_sockmap.h
 dict_sockmap.o: htable.h
 dict_sockmap.o: msg.h
+dict_sockmap.o: myflock.h
 dict_sockmap.o: mymalloc.h
 dict_sockmap.o: netstring.h
 dict_sockmap.o: split_at.h
@@ -1095,6 +1108,7 @@ dict_static.o: dict.h
 dict_static.o: dict_static.c
 dict_static.o: dict_static.h
 dict_static.o: msg.h
+dict_static.o: myflock.h
 dict_static.o: mymalloc.h
 dict_static.o: sys_defs.h
 dict_static.o: vbuf.h
@@ -1104,6 +1118,7 @@ dict_surrogate.o: argv.h
 dict_surrogate.o: dict.h
 dict_surrogate.o: dict_surrogate.c
 dict_surrogate.o: msg.h
+dict_surrogate.o: myflock.h
 dict_surrogate.o: mymalloc.h
 dict_surrogate.o: sys_defs.h
 dict_surrogate.o: vbuf.h
@@ -1117,6 +1132,7 @@ dict_tcp.o: dict_tcp.h
 dict_tcp.o: hex_quote.h
 dict_tcp.o: iostuff.h
 dict_tcp.o: msg.h
+dict_tcp.o: myflock.h
 dict_tcp.o: mymalloc.h
 dict_tcp.o: stringops.h
 dict_tcp.o: sys_defs.h
@@ -1129,6 +1145,7 @@ dict_test.o: dict.h
 dict_test.o: dict_test.c
 dict_test.o: msg.h
 dict_test.o: msg_vstream.h
+dict_test.o: myflock.h
 dict_test.o: stringops.h
 dict_test.o: sys_defs.h
 dict_test.o: vbuf.h
@@ -1142,6 +1159,7 @@ dict_thash.o: dict_thash.h
 dict_thash.o: htable.h
 dict_thash.o: iostuff.h
 dict_thash.o: msg.h
+dict_thash.o: myflock.h
 dict_thash.o: mymalloc.h
 dict_thash.o: readlline.h
 dict_thash.o: stringops.h
@@ -1155,6 +1173,7 @@ dict_unix.o: dict.h
 dict_unix.o: dict_unix.c
 dict_unix.o: dict_unix.h
 dict_unix.o: msg.h
+dict_unix.o: myflock.h
 dict_unix.o: mymalloc.h
 dict_unix.o: stringops.h
 dict_unix.o: sys_defs.h
@@ -1438,6 +1457,7 @@ match_list.o: dict.h
 match_list.o: match_list.c
 match_list.o: match_list.h
 match_list.o: msg.h
+match_list.o: myflock.h
 match_list.o: mymalloc.h
 match_list.o: stringops.h
 match_list.o: sys_defs.h
@@ -1452,6 +1472,7 @@ match_ops.o: match_list.h
 match_ops.o: match_ops.c
 match_ops.o: msg.h
 match_ops.o: myaddrinfo.h
+match_ops.o: myflock.h
 match_ops.o: mymalloc.h
 match_ops.o: split_at.h
 match_ops.o: stringops.h
diff --git a/postfix/src/util/dict.h b/postfix/src/util/dict.h
index f8e91a405..850e07c73 100644
--- a/postfix/src/util/dict.h
+++ b/postfix/src/util/dict.h
@@ -22,6 +22,7 @@
 #include 
 #include 
 #include 
+#include 
 
  /*
   * Provenance information.
@@ -47,6 +48,7 @@ typedef struct DICT {
     int     (*update) (struct DICT *, const char *, const char *);
     int     (*delete) (struct DICT *, const char *);
     int     (*sequence) (struct DICT *, int, const char **, const char **);
+    int     (*lock) (struct DICT *, int);
     void    (*close) (struct DICT *);
     int     lock_fd;			/* for dict_update() lock */
     int     stat_fd;			/* change detection */
@@ -70,7 +72,7 @@ extern DICT *dict_debug(DICT *);
 #define DICT_FLAG_TRY1NULL	(1<<3)	/* append 0 to key/value */
 #define DICT_FLAG_FIXED		(1<<4)	/* fixed key map */
 #define DICT_FLAG_PATTERN	(1<<5)	/* keys are patterns */
-#define DICT_FLAG_LOCK		(1<<6)	/* lock before access */
+#define DICT_FLAG_LOCK		(1<<6)	/* temp lock before each access */
 #define DICT_FLAG_DUP_REPLACE	(1<<7)	/* if file, replace dups */
 #define DICT_FLAG_SYNC_UPDATE	(1<<8)	/* if file, sync updates */
 #define DICT_FLAG_DEBUG		(1<<9)	/* log access */
@@ -81,7 +83,7 @@ extern DICT *dict_debug(DICT *);
 #define DICT_FLAG_FOLD_FIX	(1<<14)	/* case-fold key with fixed-case map */
 #define DICT_FLAG_FOLD_MUL	(1<<15)	/* case-fold key with multi-case map */
 #define DICT_FLAG_FOLD_ANY	(DICT_FLAG_FOLD_FIX | DICT_FLAG_FOLD_MUL)
-#define DICT_FLAG_OPEN_LOCK	(1<<16)	/* open file with exclusive lock */
+#define DICT_FLAG_OPEN_LOCK	(1<<16)	/* perm lock if not multi-writer safe */
 
  /* IMPORTANT: Update the dict_mask[] table when the above changes */
 
diff --git a/postfix/src/util/dict_alloc.c b/postfix/src/util/dict_alloc.c
index 03321f1da..588868309 100644
--- a/postfix/src/util/dict_alloc.c
+++ b/postfix/src/util/dict_alloc.c
@@ -23,6 +23,13 @@
 /*	The purpose of the default methods is to trap an attempt to
 /*	invoke an unsupported method.
 /*
+/*	One exception is the default lock function.  When the
+/*	dictionary provides a file handle for locking, the default
+/*	lock function returns the result from myflock(), otherwise
+/*	it returns 0. The lock function is called to implement the
+/*	DICT_FLAG_OPEN_LOCK feature (lock database on open) when
+/*	a database is not multi-writer safe.
+/*
 /*	dict_free() releases memory and cleans up after dict_alloc().
 /*	It is up to the caller to dispose of any memory that was allocated
 /*	by the caller.
@@ -59,6 +66,7 @@
 
 #include "msg.h"
 #include "mymalloc.h"
+#include "myflock.h"
 #include "dict.h"
 
 /* dict_default_lookup - trap unimplemented operation */
@@ -95,6 +103,17 @@ static int dict_default_sequence(DICT *dict, int unused_function,
 	      dict->type, dict->name);
 }
 
+/* dict_default_lock - default lock handler */
+
+static int dict_default_lock(DICT *dict, int operation)
+{
+    if (dict->lock_fd >= 0) {
+	return (myflock(dict->lock_fd, INTERNAL_LOCK, operation));
+    } else {
+	return (0);
+    }
+}
+ 
 /* dict_default_close - trap unimplemented operation */
 
 static void dict_default_close(DICT *dict)
@@ -117,6 +136,7 @@ DICT   *dict_alloc(const char *dict_type, const char *dict_name, ssize_t size)
     dict->delete = dict_default_delete;
     dict->sequence = dict_default_sequence;
     dict->close = dict_default_close;
+    dict->lock = dict_default_lock;
     dict->lock_fd = -1;
     dict->stat_fd = -1;
     dict->mtime = 0;
diff --git a/postfix/src/util/dict_open.c b/postfix/src/util/dict_open.c
index cd90e08b2..62dd60a02 100644
--- a/postfix/src/util/dict_open.c
+++ b/postfix/src/util/dict_open.c
@@ -81,9 +81,9 @@
 /*	With maps where this is appropriate, acquire an exclusive lock
 /*	before writing, and acquire a shared lock before reading.
 /* .IP DICT_FLAG_OPEN_LOCK
-/*	With maps where this is appropriate, acquire an exclusive
-/*	lock upon open, and report a fatal run-time error if the
-/*	table is already locked.
+/*	With databases that are not multi-writer safe, request that
+/*	dict_open() acquires an exclusive lock, or that it reports
+/*	a fatal run-time error otherwise.
 /* .IP DICT_FLAG_FOLD_FIX
 /*	With databases whose lookup fields are fixed-case strings,
 /*	fold the search key to lower case before accessing the
@@ -349,12 +349,11 @@ DICT   *dict_open3(const char *dict_type, const char *dict_name,
     if (msg_verbose)
 	msg_info("%s: %s:%s", myname, dict_type, dict_name);
     /* XXX the choice between wait-for-lock or no-wait is hard-coded. */
-    if (dict->lock_fd >= 0 && (dict_flags & DICT_FLAG_OPEN_LOCK) != 0) {
+    if (dict_flags & DICT_FLAG_OPEN_LOCK) {
 	if (dict_flags & DICT_FLAG_LOCK)
 	    msg_panic("%s: attempt to open %s:%s with both \"open\" lock and \"access\" lock",
 		      myname, dict_type, dict_name);
-	if (myflock(dict->lock_fd, INTERNAL_LOCK,
-		    MYFLOCK_OP_EXCLUSIVE | MYFLOCK_OP_NOWAIT) < 0)
+	if (dict->lock(dict, MYFLOCK_OP_EXCLUSIVE | MYFLOCK_OP_NOWAIT) < 0)
 	    msg_fatal("%s:%s: unable to get exclusive lock: %m",
 		      dict_type, dict_name);
     }
diff --git a/postfix/src/util/dict_test.c b/postfix/src/util/dict_test.c
index 3d60b7a92..69591ea5a 100644
--- a/postfix/src/util/dict_test.c
+++ b/postfix/src/util/dict_test.c
@@ -73,9 +73,13 @@ void    dict_test(int argc, char **argv)
 	    dict_flags |= DICT_FLAG_FOLD_ANY;
 	else if (strcasecmp(argv[optind + 2], "sync") == 0)
 	    dict_flags |= DICT_FLAG_SYNC_UPDATE;
-	else
+	else if (strcasecmp(argv[optind + 2], "open_lock") == 0) {
+	    dict_flags |= DICT_FLAG_OPEN_LOCK;
+	    dict_flags &= ~DICT_FLAG_LOCK;
+	} else
 	    usage(argv[0]);
     }
+    vstream_fflush(VSTREAM_OUT);
     dict_name = argv[optind];
     dict_allow_surrogate = 1;
     dict = dict_open(dict_name, open_flags, dict_flags);
diff --git a/postfix/src/util/sys_defs.h b/postfix/src/util/sys_defs.h
index 5c5b9d784..00cbdc2e1 100644
--- a/postfix/src/util/sys_defs.h
+++ b/postfix/src/util/sys_defs.h
@@ -429,13 +429,14 @@ extern int opterr;
 #define USE_STATVFS
 #define STATVFS_IN_SYS_STATVFS_H
 #define INT_MAX_IN_LIMITS_H
-#define STREAM_CONNECTIONS		/* avoid UNIX-domain sockets */
+#ifdef STREAM_CONNECTIONS		/* avoid UNIX-domain sockets */
 #define LOCAL_LISTEN	stream_listen
 #define LOCAL_ACCEPT	stream_accept
 #define LOCAL_CONNECT	stream_connect
 #define LOCAL_TRIGGER	stream_trigger
 #define LOCAL_SEND_FD	stream_send_fd
 #define LOCAL_RECV_FD	stream_recv_fd
+#endif
 #define HAS_VOLATILE_LOCKS
 #define BROKEN_READ_SELECT_ON_TCP_SOCKET
 #define CANT_WRITE_BEFORE_SENDING_FD
diff --git a/postfix/src/verify/Makefile.in b/postfix/src/verify/Makefile.in
index 12c378abc..78d985f13 100644
--- a/postfix/src/verify/Makefile.in
+++ b/postfix/src/verify/Makefile.in
@@ -77,6 +77,7 @@ verify.o: ../../include/mail_server.h
 verify.o: ../../include/mail_version.h
 verify.o: ../../include/msg.h
 verify.o: ../../include/msg_stats.h
+verify.o: ../../include/myflock.h
 verify.o: ../../include/mymalloc.h
 verify.o: ../../include/post_mail.h
 verify.o: ../../include/recipient_list.h
diff --git a/postfix/src/virtual/Makefile.in b/postfix/src/virtual/Makefile.in
index 954c544a4..068bc8232 100644
--- a/postfix/src/virtual/Makefile.in
+++ b/postfix/src/virtual/Makefile.in
@@ -68,6 +68,7 @@ deliver_attr.o: ../../include/maps.h
 deliver_attr.o: ../../include/mbox_conf.h
 deliver_attr.o: ../../include/msg.h
 deliver_attr.o: ../../include/msg_stats.h
+deliver_attr.o: ../../include/myflock.h
 deliver_attr.o: ../../include/recipient_list.h
 deliver_attr.o: ../../include/sys_defs.h
 deliver_attr.o: ../../include/vbuf.h
@@ -92,6 +93,7 @@ mailbox.o: ../../include/mbox_conf.h
 mailbox.o: ../../include/mbox_open.h
 mailbox.o: ../../include/msg.h
 mailbox.o: ../../include/msg_stats.h
+mailbox.o: ../../include/myflock.h
 mailbox.o: ../../include/mymalloc.h
 mailbox.o: ../../include/recipient_list.h
 mailbox.o: ../../include/safe_open.h
@@ -122,6 +124,7 @@ maildir.o: ../../include/mbox_conf.h
 maildir.o: ../../include/mbox_open.h
 maildir.o: ../../include/msg.h
 maildir.o: ../../include/msg_stats.h
+maildir.o: ../../include/myflock.h
 maildir.o: ../../include/mymalloc.h
 maildir.o: ../../include/recipient_list.h
 maildir.o: ../../include/safe_open.h
@@ -147,6 +150,7 @@ recipient.o: ../../include/maps.h
 recipient.o: ../../include/mbox_conf.h
 recipient.o: ../../include/msg.h
 recipient.o: ../../include/msg_stats.h
+recipient.o: ../../include/myflock.h
 recipient.o: ../../include/mymalloc.h
 recipient.o: ../../include/recipient_list.h
 recipient.o: ../../include/stringops.h
@@ -167,6 +171,7 @@ unknown.o: ../../include/maps.h
 unknown.o: ../../include/mbox_conf.h
 unknown.o: ../../include/msg.h
 unknown.o: ../../include/msg_stats.h
+unknown.o: ../../include/myflock.h
 unknown.o: ../../include/recipient_list.h
 unknown.o: ../../include/sys_defs.h
 unknown.o: ../../include/vbuf.h
@@ -193,6 +198,7 @@ virtual.o: ../../include/maps.h
 virtual.o: ../../include/mbox_conf.h
 virtual.o: ../../include/msg.h
 virtual.o: ../../include/msg_stats.h
+virtual.o: ../../include/myflock.h
 virtual.o: ../../include/recipient_list.h
 virtual.o: ../../include/set_eugid.h
 virtual.o: ../../include/sys_defs.h