]> git.ipfire.org Git - thirdparty/postfix.git/commitdiff
postfix-3.7-20220102
authorWietse Venema <wietse@porcupine.org>
Sun, 2 Jan 2022 05:00:00 +0000 (00:00 -0500)
committerViktor Dukhovni <postfix-users@dukhovni.org>
Wed, 19 Jan 2022 06:36:08 +0000 (01:36 -0500)
310 files changed:
postfix/HISTORY
postfix/INSTALL
postfix/Makefile.in
postfix/README_FILES/ADDRESS_REWRITING_README
postfix/README_FILES/BACKSCATTER_README
postfix/README_FILES/BASIC_CONFIGURATION_README
postfix/README_FILES/BDAT_README
postfix/README_FILES/BUILTIN_FILTER_README
postfix/README_FILES/COMPATIBILITY_README
postfix/README_FILES/CONNECTION_CACHE_README
postfix/README_FILES/DATABASE_README
postfix/README_FILES/DEBUG_README
postfix/README_FILES/FORWARD_SECRECY_README
postfix/README_FILES/INSTALL
postfix/README_FILES/IPV6_README
postfix/README_FILES/LDAP_README
postfix/README_FILES/LINUX_README
postfix/README_FILES/MAILLOG_README
postfix/README_FILES/MILTER_README
postfix/README_FILES/MULTI_INSTANCE_README
postfix/README_FILES/MYSQL_README
postfix/README_FILES/POSTSCREEN_3_5_README
postfix/README_FILES/POSTSCREEN_README
postfix/README_FILES/QSHAPE_README
postfix/README_FILES/SASL_README
postfix/README_FILES/SCHEDULER_README
postfix/README_FILES/SMTPD_ACCESS_README
postfix/README_FILES/SMTPD_POLICY_README
postfix/README_FILES/SMTPD_PROXY_README
postfix/README_FILES/SMTPUTF8_README
postfix/README_FILES/SOHO_README
postfix/README_FILES/SQLITE_README
postfix/README_FILES/STANDARD_CONFIGURATION_README
postfix/README_FILES/STRESS_README
postfix/README_FILES/TLS_LEGACY_README
postfix/README_FILES/TLS_README
postfix/README_FILES/TUNING_README
postfix/README_FILES/VIRTUAL_README
postfix/TLS_ACKNOWLEDGEMENTS
postfix/TLS_CHANGES
postfix/WISHLIST
postfix/auxiliary/qshape/qshape.pl
postfix/conf/access
postfix/conf/canonical
postfix/conf/generic
postfix/conf/main.cf
postfix/conf/post-install
postfix/conf/postmulti-script
postfix/conf/relocated
postfix/conf/transport
postfix/conf/virtual
postfix/html/ADDRESS_REWRITING_README.html
postfix/html/BACKSCATTER_README.html
postfix/html/BASIC_CONFIGURATION_README.html
postfix/html/BDAT_README.html
postfix/html/BUILTIN_FILTER_README.html
postfix/html/COMPATIBILITY_README.html
postfix/html/CONNECTION_CACHE_README.html
postfix/html/DATABASE_README.html
postfix/html/DEBUG_README.html
postfix/html/FORWARD_SECRECY_README.html
postfix/html/INSTALL.html
postfix/html/IPV6_README.html
postfix/html/LDAP_README.html
postfix/html/LINUX_README.html
postfix/html/MAILLOG_README.html
postfix/html/MILTER_README.html
postfix/html/MULTI_INSTANCE_README.html
postfix/html/MYSQL_README.html
postfix/html/POSTSCREEN_3_5_README.html
postfix/html/POSTSCREEN_README.html
postfix/html/QSHAPE_README.html
postfix/html/SASL_README.html
postfix/html/SCHEDULER_README.html
postfix/html/SMTPD_ACCESS_README.html
postfix/html/SMTPD_POLICY_README.html
postfix/html/SMTPD_PROXY_README.html
postfix/html/SMTPUTF8_README.html
postfix/html/SOHO_README.html
postfix/html/SQLITE_README.html
postfix/html/STANDARD_CONFIGURATION_README.html
postfix/html/STRESS_README.html
postfix/html/TLS_LEGACY_README.html
postfix/html/TLS_README.html
postfix/html/TUNING_README.html
postfix/html/VIRTUAL_README.html
postfix/html/access.5.html
postfix/html/bounce.8.html
postfix/html/canonical.5.html
postfix/html/cidr_table.5.html
postfix/html/cleanup.8.html
postfix/html/defer.8.html
postfix/html/generic.5.html
postfix/html/ldap_table.5.html
postfix/html/lmtp.8.html
postfix/html/local.8.html
postfix/html/mailq.1.html
postfix/html/makedefs.1.html
postfix/html/master.5.html
postfix/html/mysql_table.5.html
postfix/html/newaliases.1.html
postfix/html/pgsql_table.5.html
postfix/html/pipe.8.html
postfix/html/postalias.1.html
postfix/html/postconf.1.html
postfix/html/postconf.5.html
postfix/html/postfix-manuals.html
postfix/html/postfix.1.html
postfix/html/postmap.1.html
postfix/html/postmulti.1.html
postfix/html/posttls-finger.1.html
postfix/html/relocated.5.html
postfix/html/sendmail.1.html
postfix/html/smtp-sink.1.html
postfix/html/smtp.8.html
postfix/html/smtpd.8.html
postfix/html/spawn.8.html
postfix/html/sqlite_table.5.html
postfix/html/tlsproxy.8.html
postfix/html/trace.8.html
postfix/html/transport.5.html
postfix/html/trivial-rewrite.8.html
postfix/html/virtual.5.html
postfix/html/virtual.8.html
postfix/makedefs
postfix/man/man1/postalias.1
postfix/man/man1/postconf.1
postfix/man/man1/postfix.1
postfix/man/man1/postmap.1
postfix/man/man1/postmulti.1
postfix/man/man1/posttls-finger.1
postfix/man/man1/sendmail.1
postfix/man/man1/smtp-sink.1
postfix/man/man5/access.5
postfix/man/man5/canonical.5
postfix/man/man5/cidr_table.5
postfix/man/man5/generic.5
postfix/man/man5/ldap_table.5
postfix/man/man5/master.5
postfix/man/man5/mysql_table.5
postfix/man/man5/pgsql_table.5
postfix/man/man5/postconf.5
postfix/man/man5/relocated.5
postfix/man/man5/sqlite_table.5
postfix/man/man5/transport.5
postfix/man/man5/virtual.5
postfix/man/man8/local.8
postfix/man/man8/pipe.8
postfix/man/man8/spawn.8
postfix/man/man8/tlsproxy.8
postfix/man/man8/trivial-rewrite.8
postfix/man/man8/virtual.8
postfix/mantools/check-double-cc [new file with mode: 0755]
postfix/mantools/check-double-install-proto-text [new file with mode: 0755]
postfix/mantools/check-double-proto-html [new file with mode: 0755]
postfix/mantools/check-spell-cc [new file with mode: 0755]
postfix/mantools/check-spell-install-proto-text [new file with mode: 0755]
postfix/mantools/check-spell-proto-html [new file with mode: 0755]
postfix/mantools/comment.c [new file with mode: 0644]
postfix/mantools/deroff [new file with mode: 0755]
postfix/mantools/find-double [new file with mode: 0755]
postfix/mantools/postlink
postfix/postfix-install
postfix/proto/ADDRESS_REWRITING_README.html
postfix/proto/BACKSCATTER_README.html
postfix/proto/BASIC_CONFIGURATION_README.html
postfix/proto/BDAT_README.html
postfix/proto/BUILTIN_FILTER_README.html
postfix/proto/COMPATIBILITY_README.html
postfix/proto/CONNECTION_CACHE_README.html
postfix/proto/DATABASE_README.html
postfix/proto/DEBUG_README.html
postfix/proto/FORWARD_SECRECY_README.html
postfix/proto/INSTALL.html
postfix/proto/IPV6_README.html
postfix/proto/LDAP_README.html
postfix/proto/LINUX_README.html
postfix/proto/MAILLOG_README.html
postfix/proto/MILTER_README.html
postfix/proto/MULTI_INSTANCE_README.html
postfix/proto/MYSQL_README.html
postfix/proto/POSTSCREEN_3_5_README.html
postfix/proto/POSTSCREEN_README.html
postfix/proto/QSHAPE_README.html
postfix/proto/SASL_README.html
postfix/proto/SCHEDULER_README.html
postfix/proto/SMTPD_ACCESS_README.html
postfix/proto/SMTPD_POLICY_README.html
postfix/proto/SMTPD_PROXY_README.html
postfix/proto/SMTPUTF8_README.html
postfix/proto/SQLITE_README.html
postfix/proto/STANDARD_CONFIGURATION_README.html
postfix/proto/STRESS_README.html
postfix/proto/TLS_LEGACY_README.html
postfix/proto/TLS_README.html
postfix/proto/TUNING_README.html
postfix/proto/VIRTUAL_README.html
postfix/proto/access
postfix/proto/canonical
postfix/proto/cidr_table
postfix/proto/generic
postfix/proto/ldap_table
postfix/proto/master
postfix/proto/mysql_table
postfix/proto/pgsql_table
postfix/proto/postconf.proto
postfix/proto/relocated
postfix/proto/sqlite_table
postfix/proto/stop
postfix/proto/stop.double-cc [new file with mode: 0644]
postfix/proto/stop.double-install-proto-text [new file with mode: 0644]
postfix/proto/stop.double-proto-html [new file with mode: 0644]
postfix/proto/stop.spell-cc [new file with mode: 0644]
postfix/proto/stop.spell-proto-html [new file with mode: 0644]
postfix/proto/transport
postfix/proto/virtual
postfix/src/bounce/bounce_notify_util.c
postfix/src/cleanup/cleanup_api.c
postfix/src/cleanup/cleanup_message.c
postfix/src/dns/dns_lookup.c
postfix/src/flush/flush.c
postfix/src/global/compat_level.c
postfix/src/global/db_common.c
postfix/src/global/deliver_request.c
postfix/src/global/dict_ldap.c
postfix/src/global/dict_sqlite.c
postfix/src/global/dynamicmaps.c
postfix/src/global/mail_conf_time.c
postfix/src/global/mail_copy.c
postfix/src/global/mail_params.h
postfix/src/global/mail_proto.h
postfix/src/global/mail_version.h
postfix/src/global/memcache_proto.c
postfix/src/global/normalize_mailhost_addr.c
postfix/src/global/quote_822_local.c
postfix/src/global/test_main.c
postfix/src/global/verify.c
postfix/src/global/verify_sender_addr.c
postfix/src/local/local.c
postfix/src/local/unknown.c
postfix/src/master/dgram_server.c
postfix/src/master/event_server.c
postfix/src/master/multi_server.c
postfix/src/master/single_server.c
postfix/src/master/trigger_server.c
postfix/src/oqmgr/qmgr_entry.c
postfix/src/oqmgr/qmgr_feedback.c
postfix/src/pipe/pipe.c
postfix/src/postalias/postalias.c
postfix/src/postconf/postconf.c
postfix/src/postconf/postconf_dbms.c
postfix/src/postconf/postconf_master.c
postfix/src/postconf/postconf_user.c
postfix/src/postdrop/postdrop.c
postfix/src/postfix/postfix.c
postfix/src/postmap/postmap.c
postfix/src/postmulti/postmulti.c
postfix/src/postqueue/postqueue.c
postfix/src/postqueue/showq_compat.c
postfix/src/postscreen/postscreen_smtpd.c
postfix/src/postscreen/postscreen_starttls.c
postfix/src/posttls-finger/posttls-finger.c
postfix/src/proxymap/proxymap.c
postfix/src/qmgr/qmgr_entry.c
postfix/src/qmgr/qmgr_feedback.c
postfix/src/qmqpd/qmqpd_peer.c
postfix/src/sendmail/sendmail.c
postfix/src/smtp/smtp.h
postfix/src/smtp/smtp_proto.c
postfix/src/smtpd/smtpd_check.c
postfix/src/smtpd/smtpd_peer.c
postfix/src/smtpstone/smtp-sink.c
postfix/src/spawn/spawn.c
postfix/src/tls/tls_certkey.c
postfix/src/tls/tls_client.c
postfix/src/tls/tls_fprint.c
postfix/src/tls/tls_misc.c
postfix/src/tls/tls_server.c
postfix/src/tlsmgr/tlsmgr.c
postfix/src/tlsproxy/tlsproxy.c
postfix/src/trivial-rewrite/resolve.c
postfix/src/trivial-rewrite/transport.c
postfix/src/trivial-rewrite/trivial-rewrite.c
postfix/src/util/argv.c
postfix/src/util/dict_cache.c
postfix/src/util/dict_cdb.c
postfix/src/util/dict_db.c
postfix/src/util/dict_file.c
postfix/src/util/dict_random.c
postfix/src/util/dict_random.h
postfix/src/util/dict_thash.c
postfix/src/util/dict_thash.ref
postfix/src/util/dup2_pass_on_exec.c
postfix/src/util/edit_file.c
postfix/src/util/extpar.c
postfix/src/util/gccw.c
postfix/src/util/htable.c
postfix/src/util/load_lib.c
postfix/src/util/mac_expand.c
postfix/src/util/mac_expand.h
postfix/src/util/myaddrinfo.c
postfix/src/util/name_mask.c
postfix/src/util/sane_link.c
postfix/src/util/sane_rename.c
postfix/src/util/unix_dgram_connect.c
postfix/src/util/unix_dgram_listen.c
postfix/src/util/unix_pass_fd_fix.c
postfix/src/util/vstring.c
postfix/src/virtual/virtual.c
postfix/src/xsasl/xsasl_dovecot_server.c

index 14dece592e607cbf5eaa260d644aa44b4b076de2..73ab7d767cc4f69be5e525e95697e7f2daf6ce87 100644 (file)
@@ -25930,6 +25930,13 @@ Apologies for any names omitted.
        Regression prevention: copied a queue file record typecheck
        from the pickup daemon. Files: *qmgr/qmgr_message.c.
 
+20211115
+
+       Bugfix (introduced: 20210708): duplicate bounce_notice_recipient
+       entries in postconf output. The fix to send SMTP session
+       transcripts to bounce_notice_recipient was incomplete.
+       Reported by Vincent Lefevre. File: smtpd/smtpd.c.
+
 20211127
 
        Feature: support for the pcre2 library (the legacy pcre
@@ -25968,3 +25975,192 @@ Apologies for any names omitted.
        automatically authorize proxied maps inside pipemap (example:
        pipemap:{proxy:maptype:mapname, ...}) or inside unionmap. Problem
        reported by Mirko Vogt. Files: proxymap/proxymap.c.
+
+20211218
+
+       Typo fixes based on automated scans of C source code comments.
+       Verified that the .o files have not changed. Files:
+       bounce/bounce_notify_util.c, cleanup/cleanup_api.c,
+       cleanup/cleanup_message.c, dns/dns_lookup.c, flush/flush.c,
+       global/compat_level.c, global/db_common.c,
+       global/deliver_request.c, global/dict_ldap.c, global/dict_sqlite.c,
+       global/dynamicmaps.c, global/mail_conf_time.c, global/mail_copy.c,
+       global/mail_params.h, global/mail_proto.h, global/memcache_proto.c,
+       global/normalize_mailhost_addr.c, global/quote_822_local.c,
+       global/test_main.c, global/verify.c, global/verify_sender_addr.c,
+       local/unknown.c, master/dgram_server.c, master/event_server.c,
+       master/multi_server.c, master/single_server.c,
+       master/trigger_server.c, oqmgr/qmgr_entry.c,
+       postconf/postconf_dbms.c, postconf/postconf_master.c,
+       postconf/postconf_user.c, postdrop/postdrop.c, postmap/postmap.c,
+       postmulti/postmulti.c, postqueue/showq_compat.c,
+       postscreen/postscreen_smtpd.c, postscreen/postscreen_starttls.c,
+       posttls-finger/posttls-finger.c, proxymap/proxymap.c,
+       qmgr/qmgr_entry.c, qmqpd/qmqpd_peer.c, smtp/smtp.h,
+       smtp/smtp_proto.c, smtpd/smtpd_check.c, smtpd/smtpd_peer.c,
+       tls/tls_certkey.c, tls/tls_client.c, tls/tls_fprint.c,
+       tls/tls_misc.c, tls/tls_server.c, tlsmgr/tlsmgr.c,
+       tlsproxy/tlsproxy.c, trivial-rewrite/resolve.c,
+       trivial-rewrite/transport.c, trivial-rewrite/trivial-rewrite.c,
+       util/argv.c, util/dict_cache.c, util/dict_cdb.c, util/dict_file.c,
+       util/dict_random.c, util/dict_random.h, util/dict_thash.c,
+       util/dup2_pass_on_exec.c, util/edit_file.c, util/extpar.c,
+       util/gccw.c, util/mac_expand.c, util/mac_expand.h,
+       util/myaddrinfo.c, util/name_mask.c, util/sane_link.c,
+       util/sane_rename.c, util/unix_dgram_connect.c,
+       util/unix_dgram_listen.c, util/unix_pass_fd_fix.c,
+       util/vstring.c, xsasl/xsasl_dovecot_server.c.
+
+       Typo fixes based on automated scans of other files. Files:
+       auxiliary/qshape/qshape.pl, conf/post-install,
+       conf/postmulti-script, makedefs, postfix-install,
+       proto/postconf.proto, TLS_ACKNOWLEDGEMENTS, TLS_CHANGES.
+
+       Documentation: added a note to the cidr_table manpage that
+       with an inline CIDR map, "$" needs to be specified as "$$"
+       to avoid $name expansion surprises. File: proto/cidr_table.
+
+20211220
+
+       Bugfix (introduced: Postfix 2.5): off-by-one error while writing
+       a string terminator. This code had passed all memory corruption
+       tests, presumably because it wrote over an alignment padding byte,
+       or over an adjacent character byte that was never read. Reported
+       by Robert Siemer. Files: *qmgr/qmgr_feedback.c.
+
+       Typo fixes from Raf, based on manual inspection. Verified
+       that the .o files have not changed. Files: conf/main.cf,
+       mantools/postlink, proto/ADDRESS_REWRITING_README.html,
+       proto/BACKSCATTER_README.html,
+       proto/BASIC_CONFIGURATION_README.html, proto/BDAT_README.html,
+       proto/BUILTIN_FILTER_README.html, proto/COMPATIBILITY_README.html,
+       proto/CONNECTION_CACHE_README.html, proto/DATABASE_README.html,
+       proto/DEBUG_README.html, proto/FORWARD_SECRECY_README.html,
+       proto/INSTALL.html, proto/IPV6_README.html, proto/LDAP_README.html,
+       proto/LINUX_README.html, proto/MAILLOG_README.html,
+       proto/MILTER_README.html, proto/MULTI_INSTANCE_README.html,
+       proto/MYSQL_README.html, proto/POSTSCREEN_3_5_README.html,
+       proto/POSTSCREEN_README.html, proto/QSHAPE_README.html,
+       proto/SASL_README.html, proto/SCHEDULER_README.html,
+       proto/SMTPD_ACCESS_README.html, proto/SMTPD_POLICY_README.html,
+       proto/SMTPD_PROXY_README.html, proto/SMTPUTF8_README.html,
+       proto/SQLITE_README.html, proto/STANDARD_CONFIGURATION_README.html,
+       proto/STRESS_README.html, proto/TLS_LEGACY_README.html,
+       proto/TLS_README.html, proto/TUNING_README.html,
+       proto/VIRTUAL_README.html, proto/access, proto/canonical,
+       proto/generic, proto/ldap_table, proto/master, proto/mysql_table,
+       proto/pgsql_table, proto/postconf.proto, proto/relocated,
+       proto/sqlite_table, proto/transport, proto/virtual,
+       global/mail_version.h, local/local.c, pipe/pipe.c,
+       postalias/postalias.c, postconf/postconf.c, postfix/postfix.c,
+       postmap/postmap.c, postmulti/postmulti.c,
+       posttls-finger/posttls-finger.c, sendmail/sendmail.c,
+       smtpstone/smtp-sink.c, tlsproxy/tlsproxy.c,
+       trivial-rewrite/trivial-rewrite.c, virtual/virtual.c.
+
+20211221
+
+       Documentation: reverted some postconf(5) changes from
+       "Specify a non-zero time value" to "Specify a non-negative
+       time value". File: proto/postconf.proto.
+
+       Documentation: reverted "destination concurrency limit" to
+       "destination recipient limit". File: proto/SCHEDULER_README.html.
+
+       Documentation: rephrased conditional $name expositions for
+       forward_path and command_execution_directory. File:
+       local/local.c.
+
+       Documentation: added Postfix 3.0 syntax to postconf(5)
+       descriptions of command_execution_directory, default_rbl_reply,
+       forward_path, luser_relay, recipient_delimiter. File:
+       proto/postconf.proto.
+
+       Documentation: updated descriptions of smtpd_error_sleep_time
+       and smtpd_soft_error_limit. File: proto/postconf.proto.
+
+       Fixed non-UTF8 quotes in TLS_CHANGES that caused nvi to 
+       truncate the file.
+
+       Fixed a remaining typo in util/load_lib.c.
+
+20211222
+
+       Added a top-level 'make typo-check' target to automate
+       the typo checks (this only works on Wietse's development
+       system, because it depends on specific implementations of
+       spell and lynx). Files: Makefile.in, mantools/comment.c,
+       mantools/deroff, mantools/check-double-cc,
+       mantools/check-double-install-proto-text,
+       mantools/check-double-proto-html, mantools/check-spell-cc,
+       mantools/check-spell-install-proto-text,
+       mantools/check-spell-proto-html, proto/stop, proto/stop.double-cc,
+       proto/stop.double-install-proto-text, proto/stop.double-proto-html,
+       proto/stop.spell-cc, proto/stop.spell-proto-html.
+
+       Cleanup: manpages don't need \' - that causes groff to emit
+       non-ASCII text (depending on the locale). Christian Goettsche.
+       Files: sendmail/sendmail.c, spawn/spawn.c.
+
+20211223
+
+       Report unsupported usage. Do not link Postfix database
+       plugins against libpostfix-util or libpostfix-global. This
+       introduces false build dependencies. File: makedefs.
+
+       Report unsupported usage. Do not build with LD_LIBRARY_PATH.
+       File: makedefs.
+
+       Documented the implementation-dependent mailbox_size_limit
+       and message_size_limit maximal values. File: proto/postconf.proto.
+
+       Cleanup: make typo-check tests portable across differernt
+       spellcheck implementations. Files: proto/stop.spell-proto-html,
+       proto/stop.spell-cc.
+
+       Cleanup: added missing parameters to the mantools/postlink
+       script, based on output from the mantools/check-postlink
+       script.
+
+       Cleanup: added missing _maps parameter names to the
+       proxy_read_maps default value, based on output from the
+       mantools/missing-proxy-read-maps script.
+       File: global/mail_params.h.
+
+       Sanity: added LANG=C to the typo-check scripts to get
+       consistent output. Files: mantools/check-spell-proto-html,
+       mantools/check-spell-install-proto-text, mantools/check-spell-cc,
+       mantools/check-double-proto-html,
+       mantools/check-double-install-proto-text, mantools/check-double-cc.
+
+20211224
+
+       Cleanup: some compilter complains about indentation in a
+       multiline macro. File: util/dict_db.c.
+
+20211231
+
+       Cleanup: informative error message after failure to connect
+       to 'dovecot' socket. File: src/xsasl/xsasl_dovecot_server.c.
+
+20220101
+
+       Cleanup: AppArmor may return EPERM for permission errors.
+       This could result in a false "mail system is down" error
+       message from the postqueue command. File: postqueue/postqueue.c.
+
+202220102
+
+       Cleanup: log the reason why the postqueue command thinks
+       that the mail system is down, in case some security software
+       or kernel bug emits a weird error. File: postqueue/postqueue.c.
+
+       Robustness: randomize the initial state of Postfix in-memory
+       hash tables, to defend against collision attacks involving
+       a large number of attacker-chosen lookup keys. Presently,
+       the only known opportunity for such attacks involves remote
+       SMTP client IPv6 addresses in the anvil service. Other
+       tables with attacker-chosen lookup keys are limited in size.
+       The fix is cheap, and therefore implemented for all Postfix
+       in-memory hash tables. Problem reported by Pascal Junod.
+       File: util/htable.c.
index 28a7e68a32e22c6e17eee809a8987414263c73d9..4ab046d40d19d7f9084291859222833d7b3724ba 100644 (file)
@@ -331,7 +331,7 @@ install" or "make upgrade".
     # make upgrade meta_directory=/usr/libexec/postfix ...
     # make install meta_directory=/usr/libexec/postfix ...
 
-As with the command "make makefiles, the command "make install/upgrade
+As with the command "make makefiles", the command "make install/upgrade
 name=value..." will replace the string MAIL_VERSION at the end of a
 configuration parameter value with the Postfix release version. Do not try to
 specify something like $mail_version on this command line. This produces
@@ -1088,6 +1088,7 @@ Finally, build the indexed aliases file with one of the following commands:
 
     # newaliases
     # sendmail -bi
+    # postalias /etc/aliases (pathname is system dependent!)
 
 11 - To chroot or not to chroot
 
index 65e7911d378a187ae996f4641a16acac9c8cc4a8..b2ad1842a5f700b2b8bf06439219da0cae6b21c3 100644 (file)
@@ -1,5 +1,5 @@
 # To test with valgrind:
-# make -i tests VALGRIND="valgrind --tool=memcheck --log-file=/some/where.%p" 
+# make -i tests NORANDOMIZE="" VALGRIND="valgrind --tool=memcheck --log-file=/some/where.%p" 
 SHELL  = /bin/sh
 WARN    = -Wmissing-prototypes -Wformat -Wno-comment -fno-common
 OPTS   = 'WARN=$(WARN)'
@@ -114,7 +114,26 @@ manpages:
         (set -e; echo "[$$i]"; cd $$i; $(MAKE) -f Makefile.in $(OPTS) MAKELEVEL=) || exit 1; \
        done </dev/null
 
-printfck: update
+typo-check: spell-cc spell-install-proto-text spell-proto-html \
+       double-cc double-install-proto-text double-proto-html
+
+spell-cc:
+       mantools/check-spell-cc | diff /dev/null -
+
+spell-install-proto-text:
+       mantools/check-spell-install-proto-text | diff /dev/null -
+
+spell-proto-html:
+       mantools/check-spell-proto-html | diff /dev/null -
+
+double-cc:
+       mantools/check-double-cc | diff /dev/null -
+
+double-install-proto-text:
+       mantools/check-double-install-proto-text | diff /dev/null -
+
+double-proto-html:
+       mantools/check-double-proto-html | diff /dev/null -
 
 # The build-time shlib_directory setting must take precedence over
 # the installed main.cf settings, otherwise we can't update an
index a0ccc20400166197f3aba505176bd1c4a3664729..78237b9ec06fde07f85d33199bfee3348256fcda 100644 (file)
@@ -280,8 +280,8 @@ address manipulations:
 
     Rewrite "user@host" to "user@host.$mydomain"
         This feature is controlled by the boolean append_dot_mydomain parameter
-        (default: yes). The purpose is to get consistent treatment of different
-        forms of the same hostname.
+        (default: Postfix â‰¥ 3.0: no, Postfix < 3.0: yes). The purpose is to
+        get consistent treatment of different forms of the same hostname.
 
         NOTE: Postfix versions 2.2 and later rewrite message headers from
         remote SMTP clients only if the client matches the
index 2870d11f8dc8f127096724f8b3efb9efd43c392a..8095df27c343f8cee1dc44d697f8ffffe66de67e 100644 (file)
@@ -200,8 +200,8 @@ C\bCa\bav\bve\bea\bat\bts\bs
     email addresses as username@example.com, messages with DSN turned on will
     trigger the REJECT action in the previous section.
 
-    If you have such clients then you can to exclude their Message-ID strings
-    with the two "Message-ID:.* <!&!" patterns that are shown in the previous
+    If you have such clients then you can exclude their Message-ID strings with
+    the two "Message-ID:.* <!&!" patterns that are shown in the previous
     section. Otherwise you will not be able to use the two backscatter rules to
     stop forged Message ID strings. Of course this workaround may break the
     next time Outlook is changed.
@@ -260,8 +260,9 @@ techniques to recognize forgeries.
 Recognizing virus scanner mail is an error prone process, because there is a
 lot of variation in report formats. The following is only a small example of
 message header patterns. For a large collection of header and body patterns
-that recognize virus notification email, see http://www.dkuug.dk/keld/virus/ or
-http://www.t29.dk/antiantivirus.txt.
+that recognize virus notification email, see https://web.archive.org/web/
+20100317123907/http://std.dkuug.dk/keld/virus/ or http://www.t29.dk/
+antiantivirus.txt.
 
     /etc/postfix/header_checks:
         /^Subject: *Your email contains VIRUSES/ DISCARD virus notification
index cfd8851107b6013386b6abe08eb86d70b5ba4244..4bc4d845df4cb044ef6659743025f2dbe7fcb4a6 100644 (file)
@@ -173,7 +173,7 @@ mail from outside an authorized network block. This is explained in the
 SASL_README and TLS_README documents.
 
 IMPORTANT: If your machine is connected to a wide area network then the
-"mynetworks_style = host" setting may be too friendly.
+"mynetworks_style = subnet" setting may be too friendly.
 
 Examples (specify only one of the following):
 
@@ -188,13 +188,13 @@ You can specify the trusted networks in the main.cf file, or you can let
 Postfix do the work for you. The default is to let Postfix do the work. The
 result depends on the mynetworks_style parameter value.
 
-  * Specify "mynetworks_style = host" when Postfix should forward mail from
-    only the local machine.
+  * Specify "mynetworks_style = host" (the default when compatibility_level >=
+    2) when Postfix should forward mail from only the local machine.
 
-  * Specify "mynetworks_style = subnet" (the default) when Postfix should
-    forward mail from SMTP clients in the same IP subnetworks as the local
-    machine. On Linux, this works correctly only with interfaces specified with
-    the "ifconfig" command.
+  * Specify "mynetworks_style = subnet" (the default when compatibility_level <
+    2) when Postfix should forward mail from SMTP clients in the same IP
+    subnetworks as the local machine. On Linux, this works correctly only with
+    interfaces specified with the "ifconfig" or "ip" command.
 
   * Specify "mynetworks_style = class" when Postfix should forward mail from
     SMTP clients in the same IP class A/B/C networks as the local machine.
index 1248804099f623ef99d421a00c9074317a73f98a..6ed565ccdd3e26a0130b457756b31fe308534a43 100644 (file)
@@ -119,6 +119,6 @@ Postfix's CHUNKING announcement as described above.
 
 In RFC 4468, the authors write that a client may pipeline commands, and that
 after sending BURL LAST or BDAT LAST, a client must wait for the server's
-response. But as this text does not appear in RFC 3030 which defines BDAT, is
-it a useless restriction that Postfix will not enforce.
+response. But as this text does not appear in RFC 3030 which defines BDAT, it
+is a useless restriction that Postfix will not enforce.
 
index 5ed04169de4c4a65235cbd58df7b599088238b7c..2ce639df538cfa1602b64efda8542bc13761be31 100644 (file)
@@ -300,9 +300,9 @@ C\bCo\bon\bnf\bfi\big\bgu\bur\bri\bin\bng\bg h\bhe\bea\bad\bde\ber\br/\b/b\bbo\bod\bdy\by c\bch\bhe\bec\bc
 The following information applies to Postfix 2.1. Earlier Postfix versions do
 not support the receive_override_options feature.
 
-If you are MX service provider and want to apply disable head/body checks for
-some domains, you can configure ONE Postfix instance with multiple SMTP server
-IP addresses in master.cf. Each address provides a different service.
+If you are an MX service provider and want to enable header/body checks only
+for some domains, you can configure ONE Postfix instance with multiple SMTP
+server IP addresses in master.cf. Each address provides a different service.
 
     /etc/postfix.master.cf:
         # =================================================================
index 112063a6204085b2634dbaa1639526b45baa4765..55182b7f66fc9ae1ecf2ccf38b32fc36da320c35 100644 (file)
@@ -156,7 +156,7 @@ U\bUs\bsi\bin\bng\bg b\bba\bac\bck\bkw\bwa\bar\brd\bds\bs-\b-c\bco\bom\bmp\bpa\bat\bti\bib\bbl\ble\be d\bd
 
 The mynetworks_style default value has changed from "subnet" to "host". This
 parameter is used to implement the "permit_mynetworks" feature. The change
-could in unexpected 'access denied' errors after Postfix is updated from an
+could cause unexpected 'access denied' errors after Postfix is updated from an
 older version. The backwards-compatibility safety net is designed to prevent
 such surprises.
 
index e1a0f07dfd954b33b54367b06c509e7590ae65e2..f578fb7d1894c2ef5d828b8e9b0e41b75e853d70 100644 (file)
@@ -113,7 +113,7 @@ mail delivery request. Meanwhile, any smtp(8) client process can ask the scache
 The connection cache can be searched by destination domain name (the right-hand
 side of the recipient address) and by the IP address of the host at the other
 end of the connection. This allows Postfix to reuse a connection even when the
-remote host is mail server for domains with different names.
+remote host is mail server for domains with different names.
 
 C\bCo\bon\bnn\bne\bec\bct\bti\bio\bon\bn c\bca\bac\bch\bhe\be c\bco\bon\bnf\bfi\big\bgu\bur\bra\bat\bti\bio\bon\bn
 
index 99e10a7555c45f66f9854172c3ce0d35e42d0ee8..3fd88c3e6cce187b6379c049782b0b288ed81151 100644 (file)
@@ -58,7 +58,7 @@ With some tables, however, Postfix needs to know only if the lookup key exists.
 Any non-empty lookup result value may be used here: the lookup result is not
 used. Examples are the local_recipient_maps that determine what local
 recipients Postfix accepts in mail from the network, the mydestination
-parameter that specifies what domains Postfix delivers locally, or the
+parameter that specifies what domains Postfix delivers locally for, or the
 mynetworks parameter that specifies the IP addresses of trusted clients or
 client networks. Technically, these are lists, not tables. Despite the
 difference, Postfix lists are described here because they use the same
@@ -221,8 +221,8 @@ To find out what database types your Postfix system supports, use the "p\bpo\bos\bs
         to create a database file for just a few fixed elements. See also the
         static: map type.
     i\bin\bnt\bte\ber\brn\bna\bal\bl
-        A non-shared, in-memory hash table. Its content are lost when a process
-        terminates.
+        A non-shared, in-memory hash table. Its contents are lost when a
+        process terminates.
     l\blm\bmd\bdb\bb
         OpenLDAP LMDB database. This is available only on systems with support
         for LMDB databases. Public database files are created with the postmap
index a277d96636abc046e1d628a590cfef6b51a90c7e..3a895c743de709cb0d8246d719527f27b3e10659 100644 (file)
@@ -386,12 +386,12 @@ When reporting a problem, be sure to include the following information.
 
       o "p\bpo\bos\bst\btc\bco\bon\bnf\bf -\b-M\bMf\bf" (Postfix 2.9 or later).
 
-  * Better, provide output from the p\bpo\bos\bst\btf\bfi\bin\bng\bge\ber\br tool. This can be found at http:
-    //ftp.wl0.org/SOURCES/postfinger.
+  * Better, provide output from the p\bpo\bos\bst\btf\bfi\bin\bng\bge\ber\br tool. This can be found at
+    https://github.com/ford--prefect/postfinger.
 
   * If the problem is SASL related, consider including the output from the
-    s\bsa\bas\bsl\blf\bfi\bin\bng\bge\ber\br tool. This can be found at http://postfix.state-of-mind.de/
-    patrick.koetter/saslfinger/.
+    s\bsa\bas\bsl\blf\bfi\bin\bng\bge\ber\br tool. This can be found at https://packages.debian.org/
+    search?keywords=sasl2-bin.
 
   * If the problem is about too much mail in the queue, consider including
     output from the q\bqs\bsh\bha\bap\bpe\be tool, as described in the QSHAPE_README file.
index 4615b89c1f20b1b0f86dd53d55bca07d7e134373..3eb707cc8f8b57ce06c8e1687c1dac9848658ffd 100644 (file)
@@ -121,7 +121,7 @@ Exchange servers and is not recommended for now.
 
 E\bED\bDH\bH S\bSe\ber\brv\bve\ber\br s\bsu\bup\bpp\bpo\bor\brt\bt
 
-Postfix >= 2.2 support 1024-bit-prime EDH out of the box, with no additional
+Postfix >= 2.2 supports 1024-bit-prime EDH out of the box, with no additional
 configuration, but you may want to override the default prime to be 2048 bits
 long, and you may want to regenerate your primes periodically. See the quick-
 start section for details. With Postfix >= 3.1 the out of the box (compiled-in)
@@ -153,7 +153,7 @@ recommended configuration to work around this issue.
 
 E\bEE\bEC\bCD\bDH\bH S\bSe\ber\brv\bve\ber\br s\bsu\bup\bpp\bpo\bor\brt\bt
 
-Postfix >= 2.6 support NIST P-256 EECDH when built with OpenSSL >= 1.0.0. When
+Postfix >= 2.6 supports NIST P-256 EECDH when built with OpenSSL >= 1.0.0. When
 the remote SMTP client also supports EECDH and implements the P-256 curve,
 forward secrecy just works.
 
@@ -412,7 +412,7 @@ with one of these prefixes. This pattern is likely to persist until some new
 key-exchange mechanism is invented that also supports forward secrecy.
 
 The actual key length and raw algorithm key length are generally the same with
-non-export ciphers, but may they differ for the legacy export ciphers where the
+non-export ciphers, but they may differ for the legacy export ciphers where the
 actual key is artificially shortened.
 
 Starting with TLS 1.3 the cipher name no longer contains enough information to
index ae822b93526483368ec4567d5728599336448086..e9d4f0695b451550e14fb38a8e18d90a604459c4 100644 (file)
@@ -331,7 +331,7 @@ install" or "make upgrade".
     # make upgrade meta_directory=/usr/libexec/postfix ...
     # make install meta_directory=/usr/libexec/postfix ...
 
-As with the command "make makefiles, the command "make install/upgrade
+As with the command "make makefiles", the command "make install/upgrade
 name=value..." will replace the string MAIL_VERSION at the end of a
 configuration parameter value with the Postfix release version. Do not try to
 specify something like $mail_version on this command line. This produces
@@ -1088,6 +1088,7 @@ Finally, build the indexed aliases file with one of the following commands:
 
     # newaliases
     # sendmail -bi
+    # postalias /etc/aliases (pathname is system dependent!)
 
 1\b11\b1 -\b- T\bTo\bo c\bch\bhr\bro\boo\bot\bt o\bor\br n\bno\bot\bt t\bto\bo c\bch\bhr\bro\boo\bot\bt
 
index df6ad7ac29ffd760d676fb51d0c22000daaaf63f..a29560c472eec812d524eb26ee14a796269cf5ed 100644 (file)
@@ -98,7 +98,7 @@ configuration work with Postfix.
         mynetworks = 127.0.0.0/8 168.100.189.0/28 [::1]/128 [fe80::]/10 [2001:
         240:587::]/64
 
-    If you did specify the mynetworks parameter value in main.cf, you need
+    If you did specify the mynetworks parameter value in main.cf, you need to
     update the mynetworks value to include the IPv6 networks the system is in.
     Be sure to specify IPv6 address information inside "[]", like this:
 
index a6cb84e5ed2fadda77b8d49c868e01bfca1cd4ad..eeef565a6d80ffdf86f632c2a6fc843201b57490 100644 (file)
@@ -394,7 +394,7 @@ N\bNo\bot\bte\bes\bs a\ban\bnd\bd t\bth\bhi\bin\bng\bgs\bs t\bto\bo t\bth\bhi\bin\bnk\bk a\bab\bbo\bou\bu
         query_filter = (&(mailacceptinggeneralid=%s)(!(|(maildrop="*|*")
         (maildrop="*:*")(maildrop="*/*"))))
 
-  * And for that matter, even for aliases, you may not want users able to
+  * And for that matter, even for aliases, you may not want users to be able to
     specify their maildrops as programs, includes, etc. This might be
     particularly pertinent on a "sealed" server where they don't have local
     UNIX accounts, but exist only in LDAP and Cyrus. You might allow the fun
index a8569c7bb1f5df9e8c8bb246dbd7ca30739ed93f..6330278a161466abce2c1fcc832243d612be3dfd 100644 (file)
@@ -4,10 +4,10 @@ P\bPo\bos\bst\btf\bfi\bix\bx a\ban\bnd\bd L\bLi\bin\bnu\bux\bx
 
 H\bHo\bos\bst\bt l\blo\boo\bok\bku\bup\bp i\bis\bss\bsu\bue\bes\bs
 
-By default Linux /etc/hosts lookups do not support multiple IP address per
+By default Linux /etc/hosts lookups do not support multiple IP addresses per
 hostname. This causes warnings from the Postfix SMTP server that "hostname XXX
 does not resolve to address YYY", and is especially a problem with hosts that
-have both IPv4 and IPv6 addresses. To fix, turn on support for multiple IP
+have both IPv4 and IPv6 addresses. To fix this, turn on support for multiple IP
 addresses:
 
     /etc/host.conf:
@@ -42,7 +42,7 @@ file for further information.
 
 P\bPr\bro\boc\bcm\bma\bai\bil\bl i\bis\bss\bsu\bue\bes\bs
 
-On RedHat Linux 7.1 and later p\bpr\bro\boc\bcm\bma\bai\bil\bl no longer has permission to write the
+On RedHat Linux 7.1 and later p\bpr\bro\boc\bcm\bma\bai\bil\bl no longer has permission to write to the
 mail spool directory. Workaround:
 
     # chmod 1777 /var/spool/mail
index d0849bb73c4d99c170927109c29780f03a49fc67..ec63b96fece78905f0a0bd45a56b08c14b60f3a7 100644 (file)
@@ -73,7 +73,7 @@ implements the following steps:
 
 Notes:
 
-  * This command will not rotate a logfile with pathname under the /dev
+  * This command will not rotate a logfile with pathname under the /dev
     directory, such as /dev/stdout.
 
   * This command does not (yet) remove old logfiles.
@@ -86,7 +86,7 @@ Background:
     as well as non-daemon programs for local mail submission or Postfix
     management.
 
-  * Logging to Postfix logfile or stdout requires the Postfix postlogd(8)
+  * Logging to the Postfix logfile or stdout requires the Postfix postlogd(8)
     service. This ensures that simultaneous logging from different programs
     will not get mixed up.
 
index 6cdea837ddac0753ab9f166714d69fb6ae614c19..9e866d4cc599edc53d58390a2b73b4952a3ba299 100644 (file)
@@ -163,7 +163,7 @@ The general syntax for listening sockets is as follows:
         Connect to the local UNIX-domain server that is bound to the specified
         pathname. If the smtpd(8) or cleanup(8) process runs chrooted, an
         absolute pathname is interpreted relative to the Postfix queue
-        directory.
+        directory. On many systems, l\blo\boc\bca\bal\bl is a synonym for u\bun\bni\bix\bx
 
     i\bin\bne\bet\bt:\b:host:\b:port
         Connect to the specified TCP port on the specified local or remote
@@ -507,7 +507,7 @@ queue ID, sender, or recipient).
 To force a macro to be sent even when its value has not been updated, you may
 specify macro default values with the milter_macro_defaults parameter. Specify
 zero or more name=value pairs separated by comma or whitespace; you may even
-specify macro names that Postfix does know about!
+specify macro names that Postfix does not know about!
 
 W\bWo\bor\brk\bka\bar\bro\bou\bun\bnd\bds\bs
 
index 7e930f25c353124a1a795d19d80cc511a95ed4cc..1f261f6c04f5eac65fd28bc075885b588620d849 100644 (file)
@@ -196,7 +196,7 @@ running "make"), then start and test the null-client:
     testing
     EOF
 
-The test message should be delivered the members of the "mtaadmin" address
+The test message should be delivered to the members of the "mtaadmin" address
 group (or whatever address group you choose) with the following headers:
 
     From: mtaadmin+root=mta1@example.com
@@ -294,7 +294,7 @@ injection SMTP service. Typical additions include:
         smtpd_relay_restrictions =
         smtpd_recipient_restrictions = permit_mynetworks, reject
 
-        # Tolerate occasional high latency in the  content filter.
+        # Tolerate occasional high latency in the content filter.
         #
         smtpd_timeout = 1200s
 
index c6633a91893f94beb3dcb0ecf24ab8e9496b2e8e..5a728fb06e20f0ea891fe850850eb58801e7bb94 100644 (file)
@@ -29,7 +29,6 @@ The Postfix MySQL client utilizes the mysql client library, which can be
 obtained from:
 
     http://www.mysql.com/downloads/
-    http://sourceforge.net/projects/mysql/
 
 In order to build Postfix with mysql map support, you will need to add -
 DHAS_MYSQL and -I for the directory containing the mysql headers, and the
@@ -132,5 +131,5 @@ C\bCr\bre\bed\bdi\bit\bts\bs
     configuration feature.
   * Liviu Daia with further refinements from Jose Luis Tallon and Victor
     Duchovni developed the common query, result_format, domain and
-    expansion_limit interface for LDAP, MySQL and PosgreSQL.
+    expansion_limit interface for LDAP, MySQL and PostgreSQL.
 
index 4fb3d896bdac99c5460d9d9cc63f131a7692d0a8..ab67800bef3a3c50a0d4e7e89679a7096e62820a 100644 (file)
@@ -195,9 +195,9 @@ weaker anti-spam policies than primary MX hosts).
     introduce a common point of failure.
 
   * First, configure the host to listen on both primary and backup MX
-    addresses. Use the appropriate ifconfig command for the local operating
-    system, or update the appropriate configuration files and "refresh" the
-    network protocol stack.
+    addresses. Use the appropriate ifconfig or ip command for the local
+    operating system, or update the appropriate configuration files and
+    "refresh" the network protocol stack.
 
     Second, configure Postfix to listen on the new IP address (this step is
     needed when you have specified inet_interfaces in main.cf).
@@ -642,8 +642,9 @@ Notes:
   * Some postscreen(8) configuration parameters implement stress-dependent
     behavior. This is supported only when the default value is stress-dependent
     (that is, "postconf -d parametername" output shows "parametername = $
-    {stress?something}${stress:something}"). Other parameters always evaluate
-    as if the stress value is the empty string.
+    {stress?something}${stress:something}" or "parametername = ${stress?
+    {something}:{something}}"). Other parameters always evaluate as if the
+    stress value is the empty string.
 
   * See "Tests before the 220 SMTP server greeting" for details about the
     logging from these postscreen(8) tests.
index d4399043bf163699c0b5bfc2892bd6370f25f7c8..9467e68f6c7f811ef748a546ed5b7a7f07204f21 100644 (file)
@@ -202,9 +202,9 @@ weaker anti-spam policies than primary MX hosts).
     introduce a common point of failure.
 
   * First, configure the host to listen on both primary and backup MX
-    addresses. Use the appropriate ifconfig command for the local operating
-    system, or update the appropriate configuration files and "refresh" the
-    network protocol stack.
+    addresses. Use the appropriate ifconfig or ip command for the local
+    operating system, or update the appropriate configuration files and
+    "refresh" the network protocol stack.
 
     Second, configure Postfix to listen on the new IP address (this step is
     needed when you have specified inet_interfaces in main.cf).
@@ -652,8 +652,9 @@ Notes:
   * Some postscreen(8) configuration parameters implement stress-dependent
     behavior. This is supported only when the default value is stress-dependent
     (that is, "postconf -d parametername" output shows "parametername = $
-    {stress?something}${stress:something}"). Other parameters always evaluate
-    as if the stress value is the empty string.
+    {stress?something}${stress:something}" or "parametername = ${stress?
+    {something}:{something}}"). Other parameters always evaluate as if the
+    stress value is the empty string.
 
   * See "Tests before the 220 SMTP server greeting" for details about the
     logging from these postscreen(8) tests.
index 311797a6f6ff7b13da298e1f35e3b4fb789a597e..eba722e1317488cee1e71f9d3dcc3ee1ee6cb576 100644 (file)
@@ -68,11 +68,11 @@ sender domain distribution for captured spam in the "hold" queue:
 When the output is a terminal intermediate results showing the top 20 domains
 (-n option) are displayed after every 1000 messages (-N option) and the final
 output also shows only the top 20 domains. This makes qshape useful even when
-the deferred queue is very large and it may otherwise take prohibitively long
-to read the entire deferred queue.
+the "deferred" queue is very large and it may otherwise take prohibitively long
+to read the entire "deferred" queue.
 
-By default, qshape shows statistics for the union of both the incoming and
-active queues which are the most relevant queues to look at when analyzing
+By default, qshape shows statistics for the union of both the "incoming" and
+"active" queues which are the most relevant queues to look at when analyzing
 performance.
 
 One can request an alternate list of queues:
@@ -80,8 +80,8 @@ One can request an alternate list of queues:
     $ qshape deferred
     $ qshape incoming active deferred
 
-this will show the age distribution of the deferred queue or the union of the
-incoming active and deferred queues.
+this will show the age distribution of the "deferred" queue or the union of the
+"incoming", "active" and "deferred" queues.
 
 Command line options control the number of display "buckets", the age limit for
 the smallest bucket, display of parent domain counts and so on. The "-h" option
@@ -96,16 +96,16 @@ recipient counts, approximately when a burst of mail started, and when it
 stopped.
 
 The problem destinations or sender domains appear near the top left corner of
-the output table. Remember that the active queue can accommodate up to 20000
+the output table. Remember that the "active" queue can accommodate up to 20000
 ($qmgr_message_active_limit) messages. To check whether this limit has been
 reached, use:
 
     $ qshape -s active       (show sender statistics)
 
-If the total sender count is below 20000 the active queue is not yet saturated,
-any high volume sender domains show near the top of the output.
+If the total sender count is below 20000 the "active" queue is not yet
+saturated, any high volume sender domains show near the top of the output.
 
-With oqmgr(8) the active queue is also limited to at most 20000 recipient
+With oqmgr(8) the "active" queue is also limited to at most 20000 recipient
 addresses ($qmgr_message_recipient_limit). To check for exhaustion of this
 limit use:
 
@@ -142,19 +142,19 @@ forget to include the top 10 or 20 lines of qshape(1) output.
 
 E\bEx\bxa\bam\bmp\bpl\ble\be 1\b1:\b: H\bHe\bea\bal\blt\bth\bhy\by q\bqu\bue\beu\bue\be
 
-When looking at just the incoming and active queues, under normal conditions
-(no congestion) the incoming and active queues are nearly empty. Mail leaves
-the system almost as quickly as it comes in or is deferred without congestion
-in the active queue.
+When looking at just the "incoming" and "active" queues, under normal
+conditions (no congestion) the "incoming" and "active" queues are nearly empty.
+Mail leaves the system almost as quickly as it comes in or is deferred without
+congestion in the "active" queue.
 
-    $ qshape        (show incoming and active queue status)
+    $ qshape        (show "incoming" and "active" queue status)
 
                      T  5 10 20 40 80 160 320 640 1280 1280+
               TOTAL  5  0  0  0  1  0   0   0   1    1     2
       meri.uwasa.fi  5  0  0  0  1  0   0   0   1    1     2
 
-If one looks at the two queues separately, the incoming queue is empty or
-perhaps briefly has one or two messages, while the active queue holds more
+If one looks at the two queues separately, the "incoming" queue is empty or
+perhaps briefly has one or two messages, while the "active" queue holds more
 messages and for a somewhat longer time:
 
     $ qshape incoming
@@ -173,8 +173,8 @@ E\bEx\bxa\bam\bmp\bpl\ble\be 2\b2:\b: D\bDe\bef\bfe\ber\brr\bre\bed\bd q\bqu\bue\beu\bue\be f\bfu\bul\bll
 This is from a server where recipient validation is not yet available for some
 of the hosted domains. Dictionary attacks on the unvalidated domains result in
 bounce backscatter. The bounces dominate the queue, but with proper tuning they
-do not saturate the incoming or active queues. The high volume of deferred mail
-is not a direct cause for alarm.
+do not saturate the "incoming" or "active" queues. The high volume of deferred
+mail is not a direct cause for alarm.
 
     $ qshape deferred | head
 
@@ -192,8 +192,8 @@ is not a direct cause for alarm.
 The domains shown are mostly bulk-mailers and all the volume is the tail end of
 the time distribution, showing that short term arrival rates are moderate.
 Larger numbers and lower message ages are more indicative of current trouble.
-Old mail still going nowhere is largely harmless so long as the active and
-incoming queues are short. We can also see that the groups.msn.com
+Old mail still going nowhere is largely harmless so long as the "active" and
+"incoming" queues are short. We can also see that the groups.msn.com
 undeliverables are low rate steady stream rather than a concentrated dictionary
 attack that is now over.
 
@@ -215,7 +215,7 @@ messages are bounces.
 E\bEx\bxa\bam\bmp\bpl\ble\be 3\b3:\b: C\bCo\bon\bng\bge\bes\bst\bti\bio\bon\bn i\bin\bn t\bth\bhe\be a\bac\bct\bti\biv\bve\be q\bqu\bue\beu\bue\be
 
 This example is taken from a Feb 2004 discussion on the Postfix Users list.
-Congestion was reported with the active and incoming queues large and not
+Congestion was reported with the "active" and "incoming" queues large and not
 shrinking despite very large delivery agent process limits. The thread is
 archived at: http://groups.google.com/
 groups?threadm=c0b7js$2r65$1@FreeBSD.csie.NCTU.edu.tw and http://
@@ -224,7 +224,7 @@ archives.neohapsis.com/archives/postfix/2004-02/thread.html#1371
 Using an older version of qshape(1) it was quickly determined that all the
 messages were for just a few destinations:
 
-    $ qshape        (show incoming and active queue status)
+    $ qshape        (show "incoming" and "active" queue status)
 
                                T   A   5  10  20  40  80 160 320 320+
                      TOTAL 11775 9996  0   0   1   1  42  94 221 1420
@@ -232,10 +232,10 @@ messages were for just a few destinations:
      lists.sourceforge.net  2313 2313  0   0   0   0   0   0   0    0
             gzd.gotdns.com   102    0  0   0   0   0   0   0   2  100
 
-The "A" column showed the count of messages in the active queue, and the
-numbered columns showed totals for the deferred queue. At 10000 messages
-(Postfix 1.x active queue size limit) the active queue is full. The incoming
-was growing rapidly.
+The "A" column showed the count of messages in the "active" queue, and the
+numbered columns showed totals for the "deferred" queue. At 10000 messages
+(Postfix 1.x "active" queue size limit) the "active" queue is full. The
+"incoming" queue was growing rapidly.
 
 With the trouble destinations clearly identified, the administrator quickly
 found and fixed the problem. It is substantially harder to glean the same
@@ -246,7 +246,7 @@ by looking at the queue one message at a time.
 E\bEx\bxa\bam\bmp\bpl\ble\be 4\b4:\b: H\bHi\big\bgh\bh v\bvo\bol\blu\bum\bme\be d\bde\bes\bst\bti\bin\bna\bat\bti\bio\bon\bn b\bba\bac\bck\bkl\blo\bog\bg
 
 When a site you send a lot of email to is down or slow, mail messages will
-rapidly build up in the deferred queue, or worse, in the active queue. The
+rapidly build up in the "deferred" queue, or worse, in the "active" queue. The
 qshape output will show large numbers for the destination domain in all age
 buckets that overlap the starting time of the problem:
 
@@ -258,14 +258,14 @@ buckets that overlap the starting time of the problem:
                  ...
 
 Here the "highvolume.com" destination is continuing to accumulate deferred
-mail. The incoming and active queues are fine, but the deferred queue started
-growing some time between 1 and 2 hours ago and continues to grow.
+mail. The "incoming" and "active" queues are fine, but the "deferred" queue
+started growing some time between 1 and 2 hours ago and continues to grow.
 
 If the high volume destination is not down, but is instead slow, one might see
-similar congestion in the active queue. Active queue congestion is a greater
-cause for alarm; one might need to take measures to ensure that the mail is
-deferred instead or even add an access(5) rule asking the sender to try again
-later.
+similar congestion in the "active" queue. "Active" queue congestion is a
+greater cause for alarm; one might need to take measures to ensure that the
+mail is deferred instead or even add an access(5) rule asking the sender to try
+again later.
 
 If a high volume destination exhibits frequent bursts of consecutive
 connections refused by all MX hosts or "421 Server busy errors", it is possible
@@ -456,7 +456,7 @@ Congestion in this queue is indicative of an excessive local message submission
 rate or perhaps excessive CPU consumption in the cleanup(8) service due to
 excessive body_checks, or (Postfix >= 2.3) high latency milters.
 
-Note, that once the active queue is full, the cleanup service will attempt to
+Note, that once the "active" queue is full, the cleanup service will attempt to
 slow down message injection by pausing $in_flow_delay for each message. In this
 case "maildrop" queue congestion may be a consequence of congestion downstream,
 rather than a problem in its own right.
@@ -504,18 +504,18 @@ and notifies the queue manager of new mail arrival. The queue manager ignores
 incomplete queue files whose mode is 0600, as these are still being written by
 cleanup.
 
-The queue manager scans the incoming queue bringing any new mail into the
-"active" queue if the active queue resource limits have not been exceeded. By
-default, the active queue accommodates at most 20000 messages. Once the active
-queue message limit is reached, the queue manager stops scanning the incoming
-(and deferred, see below) queue.
+The queue manager scans the "incoming" queue bringing any new mail into the
+"active" queue if the "active" queue resource limits have not been exceeded. By
+default, the "active" queue accommodates at most 20000 messages. Once the
+"active" queue message limit is reached, the queue manager stops scanning the
+"incoming" queue (and the "deferred" queue, see below).
 
-Under normal conditions the incoming queue is nearly empty (has only mode 0600
-files), with the queue manager able to import new messages into the active
-queue as soon as they become available.
+Under normal conditions the "incoming" queue is nearly empty (has only mode
+0600 files), with the queue manager able to import new messages into the
+"active" queue as soon as they become available.
 
-The incoming queue grows when the message input rate spikes above the rate at
-which the queue manager can import messages into the active queue. The main
+The "incoming" queue grows when the message input rate spikes above the rate at
+which the queue manager can import messages into the "active" queue. The main
 factors slowing down the queue manager are disk I/O and lookup queries to the
 trivial-rewrite service. If the queue manager is routinely not keeping up,
 consider not using "slow" lookup services (MySQL, LDAP, ...) for transport
@@ -540,8 +540,8 @@ but is not strong enough to deflect an excessive input rate from many sources
 at the same time.
 
 If a server is being hammered from multiple directions, consider raising the
-in_flow_delay to 10 seconds, but only if the incoming queue is growing even
-while the active queue is not full and the trivial-rewrite service is using a
+in_flow_delay to 10 seconds, but only if the "incoming" queue is growing even
+while the "active" queue is not full and the trivial-rewrite service is using a
 fast transport lookup mechanism.
 
 T\bTh\bhe\be "\b"a\bac\bct\bti\biv\bve\be"\b" q\bqu\bue\beu\bue\be
@@ -549,8 +549,8 @@ T\bTh\bhe\be "\b"a\bac\bct\bti\biv\bve\be"\b" q\bqu\bue\beu\bue\be
 The queue manager is a delivery agent scheduler; it works to ensure fast and
 fair delivery of mail to all destinations within designated resource limits.
 
-The active queue is somewhat analogous to an operating system's process run
-queue. Messages in the active queue are ready to be sent (runnable), but are
+The "active" queue is somewhat analogous to an operating system's process run
+queue. Messages in the "active" queue are ready to be sent (runnable), but are
 not necessarily in the process of being sent (running).
 
 While most Postfix administrators think of the "active" queue as a directory on
@@ -562,9 +562,9 @@ below) do not occupy memory; they are safely stored on disk waiting for their
 turn to be processed. The envelope information for messages in the "active"
 queue is managed in memory, allowing the queue manager to do global scheduling,
 allocating available delivery agent processes to an appropriate message in the
-active queue.
+"active" queue.
 
-Within the active queue, (multi-recipient) messages are broken up into groups
+Within the "active" queue, (multi-recipient) messages are broken up into groups
 of recipients that share the same transport/nexthop combination; the group size
 is capped by the transport's recipient concurrency limit.
 
@@ -577,14 +577,14 @@ per-recipient concurrency limits rather than per-domain concurrency limits.
 Per-recipient limits are appropriate when performing final delivery to
 mailboxes rather than when relaying to a remote server.
 
-Congestion occurs in the active queue when one or more destinations drain
+Congestion occurs in the "active" queue when one or more destinations drain
 slower than the corresponding message input rate.
 
-Input into the active queue comes both from new mail in the "incoming" queue,
+Input into the "active" queue comes both from new mail in the "incoming" queue,
 and retries of mail in the "deferred" queue. Should the "deferred" queue get
 really large, retries of old mail can dominate the arrival rate of new mail.
 Systems with more CPU, faster disks and more network bandwidth can deal with
-larger deferred queues, but as a rule of thumb the deferred queue scales to
+larger "deferred" queues, but as a rule of thumb the "deferred" queue scales to
 somewhere between 100,000 and 1,000,000 messages with good performance unlikely
 above that "limit". Systems with queues this large should typically stop
 accepting new mail, or put the backlog "on hold" until the underlying issue is
@@ -592,14 +592,14 @@ fixed (provided that there is enough capacity to handle just the new mail).
 
 When a destination is down for some time, the queue manager will mark it dead,
 and immediately defer all mail for the destination without trying to assign it
-to a delivery agent. In this case the messages will quickly leave the active
-queue and end up in the deferred queue (with Postfix < 2.4, this is done
+to a delivery agent. In this case the messages will quickly leave the "active"
+queue and end up in the "deferred" queue (with Postfix < 2.4, this is done
 directly by the queue manager, with Postfix >= 2.4 this is done via the "retry"
 delivery agent).
 
 When the destination is instead simply slow, or there is a problem causing an
-excessive arrival rate the active queue will grow and will become dominated by
-mail to the congested destination.
+excessive arrival rate the "active" queue will grow and will become dominated
+by mail to the congested destination.
 
 The only way to reduce congestion is to either reduce the input rate or
 increase the throughput. Increasing the throughput requires either increasing
@@ -635,7 +635,7 @@ per second.
 The best way to avoid bottlenecks when one or more MX hosts is non-responsive
 is to use connection caching. Connection caching was introduced with Postfix
 2.2 and is by default enabled on demand for destinations with a backlog of mail
-in the active queue. When connection caching is in effect for a particular
+in the "active" queue. When connection caching is in effect for a particular
 destination, established connections are re-used to send additional messages,
 this reduces the number of connections made per message delivery and maintains
 good throughput even in the face of partial unavailability of the destination's
@@ -664,73 +664,75 @@ a separate delivery agent pool to these destinations and allows separate tuning
 of timeouts and concurrency limits.
 
 Another common cause of congestion is unwarranted flushing of the entire
-deferred queue. The deferred queue holds messages that are likely to fail to be
-delivered and are also likely to be slow to fail delivery (time out). As a
-result the most common reaction to a large deferred queue (flush it!) is more
-than likely counter-productive, and typically makes the congestion worse. Do
-not flush the deferred queue unless you expect that most of its content has
-recently become deliverable (e.g. relayhost back up after an outage)!
+"deferred" queue. The "deferred" queue holds messages that are likely to fail
+to be delivered and are also likely to be slow to fail delivery (time out). As
+a result the most common reaction to a large "deferred" queue (flush it!) is
+more than likely counter-productive, and typically makes the congestion worse.
+Do not flush the "deferred" queue unless you expect that most of its content
+has recently become deliverable (e.g. relayhost back up after an outage)!
 
 Note that whenever the queue manager is restarted, there may already be
-messages in the active queue directory, but the "real" active queue in memory
-is empty. In order to recover the in-memory state, the queue manager moves all
-the active queue messages back into the incoming queue, and then uses its
-normal incoming queue scan to refill the active queue. The process of moving
-all the messages back and forth, redoing transport table (trivial-rewrite(8)
-resolve service) lookups, and re-importing the messages back into memory is
-expensive. At all costs, avoid frequent restarts of the queue manager (e.g. via
-frequent execution of "postfix reload").
+messages in the "active" queue directory, but the "real" "active" queue in
+memory is empty. In order to recover the in-memory state, the queue manager
+moves all the "active" queue messages back into the "incoming" queue, and then
+uses its normal "incoming" queue scan to refill the "active" queue. The process
+of moving all the messages back and forth, redoing transport table (trivial-
+rewrite(8) resolve service) lookups, and re-importing the messages back into
+memory is expensive. At all costs, avoid frequent restarts of the queue manager
+(e.g. via frequent execution of "postfix reload").
 
 T\bTh\bhe\be "\b"d\bde\bef\bfe\ber\brr\bre\bed\bd"\b" q\bqu\bue\beu\bue\be
 
 When all the deliverable recipients for a message are delivered, and for some
 recipients delivery failed for a transient reason (it might succeed later), the
-message is placed in the deferred queue.
+message is placed in the "deferred" queue.
 
-The queue manager scans the deferred queue periodically. The scan interval is
-controlled by the queue_run_delay parameter. While a deferred queue scan is in
-progress, if an incoming queue scan is also in progress (ideally these are
-brief since the incoming queue should be short), the queue manager alternates
+The queue manager scans the "deferred" queue periodically. The scan interval is
+controlled by the queue_run_delay parameter. While a "deferred" queue scan is
+in progress, if an "incoming" queue scan is also in progress (ideally these are
+brief since the "incoming" queue should be short), the queue manager alternates
 between looking for messages in the "incoming" queue and in the "deferred"
-queue. This "round-robin" strategy prevents starvation of either the incoming
-or the deferred queues.
+queue. This "round-robin" strategy prevents starvation of either the "incoming"
+or the "deferred" queues.
 
-Each deferred queue scan only brings a fraction of the deferred queue back into
-the active queue for a retry. This is because each message in the deferred
-queue is assigned a "cool-off" time when it is deferred. This is done by time-
-warping the modification time of the queue file into the future. The queue file
-is not eligible for a retry if its modification time is not yet reached.
+Each "deferred" queue scan only brings a fraction of the "deferred" queue back
+into the "active" queue for a retry. This is because each message in the
+"deferred" queue is assigned a "cool-off" time when it is deferred. This is
+done by time-warping the modification time of the queue file into the future.
+The queue file is not eligible for a retry if its modification time is not yet
+reached.
 
 The "cool-off" time is at least $minimal_backoff_time and at most
 $maximal_backoff_time. The next retry time is set by doubling the message's age
 in the queue, and adjusting up or down to lie within the limits. This means
 that young messages are initially retried more often than old messages.
 
-If a high volume site routinely has large deferred queues, it may be useful to
-adjust the queue_run_delay, minimal_backoff_time and maximal_backoff_time to
+If a high volume site routinely has large "deferred" queues, it may be useful
+to adjust the queue_run_delay, minimal_backoff_time and maximal_backoff_time to
 provide short enough delays on first failure (Postfix >= 2.4 has a sensibly low
 minimal backoff time by default), with perhaps longer delays after multiple
 failures, to reduce the retransmission rate of old messages and thereby reduce
-the quantity of previously deferred mail in the active queue. If you want a
+the quantity of previously deferred mail in the "active" queue. If you want a
 really low minimal_backoff_time, you may also want to lower queue_run_delay,
 but understand that more frequent scans will increase the demand for disk I/O.
 
-One common cause of large deferred queues is failure to validate recipients at
-the SMTP input stage. Since spammers routinely launch dictionary attacks from
-unrepliable sender addresses, the bounces for invalid recipient addresses clog
-the deferred queue (and at high volumes proportionally clog the active queue).
-Recipient validation is strongly recommended through use of the
+One common cause of large "deferred" queues is failure to validate recipients
+at the SMTP input stage. Since spammers routinely launch dictionary attacks
+from unrepliable sender addresses, the bounces for invalid recipient addresses
+clog the "deferred" queue (and at high volumes proportionally clog the "active"
+queue). Recipient validation is strongly recommended through use of the
 local_recipient_maps and relay_recipient_maps parameters. Even when bounces
 drain quickly they inundate innocent victims of forgery with unwanted email. To
 avoid this, do not accept mail for invalid recipients.
 
 When a host with lots of deferred mail is down for some time, it is possible
-for the entire deferred queue to reach its retry time simultaneously. This can
-lead to a very full active queue once the host comes back up. The phenomenon
-can repeat approximately every maximal_backoff_time seconds if the messages are
-again deferred after a brief burst of congestion. Perhaps, a future Postfix
-release will add a random offset to the retry time (or use a combination of
-strategies) to reduce the odds of repeated complete deferred queue flushes.
+for the entire "deferred" queue to reach its retry time simultaneously. This
+can lead to a very full "active" queue once the host comes back up. The
+phenomenon can repeat approximately every maximal_backoff_time seconds if the
+messages are again deferred after a brief burst of congestion. Perhaps, a
+future Postfix release will add a random offset to the retry time (or use a
+combination of strategies) to reduce the odds of repeated complete "deferred"
+queue flushes.
 
 C\bCr\bre\bed\bdi\bit\bts\bs
 
index 0feebc7f5f1b6e4b5c2e6d730881be78479558fc..94a377eab0b1111f6b6610b28e58bab960057064 100644 (file)
@@ -558,8 +558,8 @@ The following is a summary of applicable smtpd.conf file entries:
         Specify ldapdb to enable the plugin.
 
     ldapdb_uri
-        Specify either ldapi:// for to connect over a UNIX-domain socket, ldap:
-        // for an unencrypted TCP connection or ldaps:// for an encrypted TCP
+        Specify either ldapi:// to connect over a UNIX-domain socket, ldap:/
+        / for an unencrypted TCP connection, or ldaps:// for an encrypted TCP
         connection.
 
     ldapdb_id
@@ -1134,14 +1134,14 @@ final resort.
     single MySQL database, and configure different Postfix queries to extract
     the appropriate information.
 
-  * Specify dbm instead of hash if your system uses dbm files instead of db
+  * Specify d\bdb\bbm\bm instead of h\bha\bas\bsh\bh if your system uses d\bdb\bbm\bm files instead of d\bdb\bb
     files. To find out what lookup tables Postfix supports, use the command
-    "postconf -m".
+    "p\bpo\bos\bst\btc\bco\bon\bnf\bf -\b-m\bm".
 
-  * Execute the command "postmap /etc/postfix/sasl_passwd" whenever you change
+  * Execute the command "p\bpo\bos\bst\btm\bma\bap\bp /\b/e\bet\btc\bc/\b/p\bpo\bos\bst\btf\bfi\bix\bx/\b/s\bsa\bas\bsl\bl_\b_p\bpa\bas\bss\bsw\bwd\bd" whenever you change
     the sasl_passwd table.
 
-  * Execute the command "postmap /etc/postfix/sender_relay" whenever you change
+  * Execute the command "p\bpo\bos\bst\btm\bma\bap\bp /\b/e\bet\btc\bc/\b/p\bpo\bos\bst\btf\bfi\bix\bx/\b/s\bse\ben\bnd\bde\ber\br_\b_r\bre\bel\bla\bay\by" whenever you change
     the sender_relay table.
 
 P\bPo\bos\bst\btf\bfi\bix\bx S\bSM\bMT\bTP\bP/\b/L\bLM\bMT\bTP\bP c\bcl\bli\bie\ben\bnt\bt p\bpo\bol\bli\bic\bcy\by -\b- S\bSA\bAS\bSL\bL m\bme\bec\bch\bha\ban\bni\bis\bsm\bm p\bpr\bro\bop\bpe\ber\brt\bti\bie\bes\bs
@@ -1296,7 +1296,7 @@ N\bNo\bot\bte\be
     Postfix configuration a little more convenient because you don't have to
     specify the SASL plug-in type in the Postfix main.cf file (but this may
     cause surprises when you switch to a later Postfix version that is built
-    with the default SASL type of sasl).
+    with the default SASL type of cyrus).
 
   * If you also want support for LDAP or TLS (or for Cyrus SASL), you need to
     merge their CCARGS and AUXLIBS options into the above command line; see the
index a6f7702ffc51b861ab9f8fa9d1f2bbb37640bc5d..448ee0a799121f8ae2955fa0493553301e2beddd 100644 (file)
@@ -496,7 +496,7 @@ This document is divided into sections as follows:
 T\bTh\bhe\be s\bst\btr\bru\buc\bct\btu\bur\bre\bes\bs u\bus\bse\bed\bd b\bby\by n\bnq\bqm\bmg\bgr\br
 
 Let's start by recapitulating the structures and terms used when referring to
-queue manager and how it operates. Many of these are partially described
+the queue manager and how it operates. Many of these are partially described
 elsewhere, but it is nice to have a coherent overview in one place:
 
   * Each message structure represents one mail message which Postfix is to
@@ -512,8 +512,8 @@ elsewhere, but it is nice to have a coherent overview in one place:
     set of queues (describing the destinations it shall talk to) and jobs
     (referencing the messages it shall deliver).
 
-  * Each transport queue (not to be confused with the on-disk active queue or
-    incoming queue) groups everything what is going be delivered to given
+  * Each transport queue (not to be confused with the on-disk "active" queue or
+    "incoming" queue) groups everything what is going be delivered to given
     destination (aka nexthop) by its transport. Each queue belongs to one
     transport, so each destination may be referred to by several queues, one
     for each transport. Each queue maintains a list of all recipient entries
@@ -547,17 +547,17 @@ description above anytime you'll feel you have lost a sense what is what.
 
 W\bWh\bha\bat\bt h\bha\bap\bpp\bpe\ben\bns\bs w\bwh\bhe\ben\bn n\bnq\bqm\bmg\bgr\br p\bpi\bic\bck\bks\bs u\bup\bp t\bth\bhe\be m\bme\bes\bss\bsa\bag\bge\be
 
-Whenever nqmgr moves a queue file into the active queue, the following happens:
-It reads all necessary information from the queue file as oqmgr does, and also
-reads as many recipients as possible - more on that later, for now let's just
-pretend it always reads all recipients.
+Whenever nqmgr moves a queue file into the "active" queue, the following
+happens: It reads all necessary information from the queue file as oqmgr does,
+and also reads as many recipients as possible - more on that later, for now
+let's just pretend it always reads all recipients.
 
 Then it resolves the recipients as oqmgr does, which means obtaining (address,
 nexthop, transport) triple for each recipient. For each triple, it finds the
 transport; if it does not exist yet, it instantiates it (unless it's dead).
-Within the transport, it finds the destination queue for given nexthop; if it
-does not exist yet, it instantiates it (unless it's dead). The triple is then
-bound to given destination queue. This happens in qmgr_resolve() and is
+Within the transport, it finds the destination queue for the given nexthop; if
+it does not exist yet, it instantiates it (unless it's dead). The triple is
+then bound to given destination queue. This happens in qmgr_resolve() and is
 basically the same as in oqmgr.
 
 Then for each triple which was bound to some queue (and thus transport), the
@@ -566,19 +566,19 @@ context; if it does not exist yet, it instantiates it. Within the job, it finds
 the peer which represents the bound destination queue within this jobs context;
 if it does not exist yet, it instantiates it. Finally, it stores the address
 from the resolved triple to the recipient entry which is appended to both the
-queue entry list and the peer entry list. The addresses for same nexthop are
-batched in the entries up to recipient_concurrency limit for that transport.
-This happens in qmgr_assign() and apart from that it operates with job and peer
-structures it is basically the same as in oqmgr.
+queue entry list and the peer entry list. The addresses for the same nexthop
+are batched in the entries up to the transport_destination_recipient_limit for
+that transport. This happens in qmgr_message_assign(), and apart from that it
+operates with job and peer structures, it is basically the same as in oqmgr.
 
 When the job is instantiated, it is enqueued on the transport's job list based
 on the time its message was picked up by nqmgr. For first batch of recipients
 this means it is appended to the end of the job list, but the ordering of the
 job list by the enqueue time is important as we will see shortly.
 
-[Now you should have pretty good idea what is the state of the nqmgr after
-couple of messages was picked up, what is the relation between all those job,
-peer, queue and entry structures.]
+[Now you should have a pretty good idea what the state of the nqmgr is after a
+couple of messages were picked up, and what the relation is between all those
+job, peer, queue and entry structures.]
 
 H\bHo\bow\bw t\bth\bhe\be e\ben\bnt\btr\bry\by s\bse\bel\ble\bec\bct\bti\bio\bon\bn w\bwo\bor\brk\bks\bs
 
@@ -606,9 +606,9 @@ job list is by default kept in the order the message was picked up by the
 nqmgr. So by default we get the top-level round-robin transport, and within
 each transport we get the FIFO message delivery. The round-robin of the peers
 by the destination is perhaps of little importance in most real-life cases
-(unless the recipient_concurrency limit is reached, in one job there is only
-one peer structure for each destination), but theoretically it makes sure that
-even within single jobs, destinations are treated fairly.
+(unless the transport_destination_recipient_limit is reached, in one job there
+is only one peer structure for each destination), but theoretically it makes
+sure that even within single jobs, destinations are treated fairly.
 
 [By now you should have a feeling you really know how the scheduler works,
 except for the preemption, under ideal conditions - that is, no recipient
@@ -661,14 +661,14 @@ with more than one recipient? Say if we have one four-recipient mail followed
 by two two-recipient mails?
 
 The simple answer would be to use delivery sequence 12121313. But the problem
-is that this does not scale well. Imagine you have mail with thousand
-recipients followed by mail with hundred recipients. It is tempting to suggest
-the delivery sequence like 121212...., but alas! Imagine there arrives another
-mail with say ten recipients. But there are no free slots anymore, so it can't
-slip by, not even if it had just only one recipients. It will be stuck until
+is that this does not scale well. Imagine you have mail with thousand
+recipients followed by mail with a hundred recipients. It is tempting to
+suggest the delivery sequence like 121212...., but alas! Imagine there arrives
+another mail with say ten recipients. But there are no free slots anymore, so
+it can't slip by, not even if it had only one recipient. It will be stuck until
 the hundred-recipient mail is delivered, which really sucks.
 
-So, it becomes obvious that while inflating the message to get free slots is
+So, it becomes obvious that while inflating the message to get free slots is a
 great idea, one has to be really careful of how the free slots are assigned,
 otherwise one might corner himself. So, how does nqmgr really use the free
 slots?
@@ -689,30 +689,30 @@ slots, and then we could preempt it and sneak in the ten-recipient mail... Wait
 wait wait! Could we? Aren't we overinflating the original one thousand
 recipient mail?
 
-Well, despite it looks so at the first glance, another trick will allow us to
-answer "no, we are not!". If we had said that we will inflate the delivery time
-twice at maximum, and then we consider every other slot as a free slot, then we
-would overinflate in case of the recursive preemption. BUT! The trick is that
-if we use only every n-th slot as a free slot for n>2, there is always some
-worst inflation factor which we can guarantee not to be breached, even if we
-apply the algorithm recursively. To be precise, if for every k>1 normally used
-slots we accumulate one free delivery slot, than the inflation factor is not
-worse than k/(k-1) no matter how many recursive preemptions happen. And it's
-not worse than (k+1)/k if only non-recursive preemption happens. Now, having
-got through the theory and the related math, let's see how nqmgr implements
-this.
+Well, despite the fact that it looks so at the first glance, another trick will
+allow us to answer "no, we are not!". If we had said that we will inflate the
+delivery time twice at maximum, and then we consider every other slot as a free
+slot, then we would overinflate in case of the recursive preemption. BUT! The
+trick is that if we use only every n-th slot as a free slot for n>2, there is
+always some worst inflation factor which we can guarantee not to be breached,
+even if we apply the algorithm recursively. To be precise, if for every k>1
+normally used slots we accumulate one free delivery slot, than the inflation
+factor is not worse than k/(k-1) no matter how many recursive preemptions
+happen. And it's not worse than (k+1)/k if only non-recursive preemption
+happens. Now, having got through the theory and the related math, let's see how
+nqmgr implements this.
 
 Each job has so called "available delivery slot" counter. Each transport has a
 transport_delivery_slot_cost parameter, which defaults to
 default_delivery_slot_cost parameter which is set to 5 by default. This is the
 k from the paragraph above. Each time k entries of the job are selected for
 delivery, this counter is incremented by one. Once there are some slots
-accumulated, job which requires no more than that number of slots to be fully
+accumulated, job which requires no more than that number of slots to be fully
 delivered can preempt this job.
 
 [Well, the truth is, the counter is incremented every time an entry is selected
-and it is divided by k when it is used. But for the understanding it's good
-enough to use the above approximation of the truth.]
+and it is divided by k when it is used. But to understand, it's good enough to
+use the above approximation of the truth.]
 
 OK, so now we know the conditions which must be satisfied so one job can
 preempt another one. But what job gets preempted, how do we choose what job
@@ -720,11 +720,11 @@ preempts it if there are several valid candidates, and when does all this
 exactly happen?
 
 The answer for the first part is simple. The job whose entry was selected the
-last time is so called current job. Normally, it is the first job on the
+last time is the so called current job. Normally, it is the first job on the
 scheduler's job list, but destination concurrency limits may change this as we
 will see later. It is always only the current job which may get preempted.
 
-Now for the second part. The current job has certain amount of recipient
+Now for the second part. The current job has certain amount of recipient
 entries, and as such may accumulate at maximum some amount of available
 delivery slots. It might have already accumulated some, and perhaps even
 already used some when it was preempted before (remember a job can be preempted
@@ -737,22 +737,22 @@ The answer is - the one with maximum enqueue_time/recipient_entry_count. That
 is, the older the job is, the more we should try to deliver it in order to get
 best message delivery rates. These rates are of course subject to how many
 recipients the message has, therefore the division by the recipient (entry)
-count. No one shall be surprised that message with n recipients takes n times
-longer to deliver than message with one recipient.
+count. No one shall be surprised that message with n recipients takes n times
+longer to deliver than message with one recipient.
 
 Now let's recap the previous two paragraphs. Isn't it too complicated? Why
 don't the candidates come only among the jobs which can be delivered within the
 number of slots the current job already accumulated? Why do we need to estimate
 how much it has yet to accumulate? If you found out the answer, congratulate
 yourself. If we did it this simple way, we would always choose the candidate
-with least recipient entries. If there were enough single recipient mails
+with the fewest recipient entries. If there were enough single recipient mails
 coming in, they would always slip by the bulk mail as soon as possible, and the
-two and more recipients mail would never get a chance, no matter how long they
+two or more recipients mail would never get a chance, no matter how long they
 have been sitting around in the job list.
 
-This candidate selection has interesting implication - that when we choose the
-best candidate for preemption (this is done in qmgr_choose_candidate()), it may
-happen that we may not use it for preemption immediately. This leads to an
+This candidate selection has an interesting implication - that when we choose
+the best candidate for preemption (this is done in qmgr_choose_candidate()), it
+may happen that we may not use it for preemption immediately. This leads to an
 answer to the last part of the original question - when does the preemption
 happen?
 
@@ -760,23 +760,23 @@ The preemption attempt happens every time next transport's recipient entry is
 to be chosen for delivery. To avoid needless overhead, the preemption is not
 attempted if the current job could never accumulate more than
 transport_minimum_delivery_slots (defaults to default_minimum_delivery_slots
-which defaults to 3). If there is already enough accumulated slots to preempt
+which defaults to 3). If there are already enough accumulated slots to preempt
 the current job by the chosen best candidate, it is done immediately. This
 basically means that the candidate is moved in front of the current job on the
 scheduler's job list and decreasing the accumulated slot counter by the amount
-used by the candidate. If there is not enough slots... well, I could say that
+used by the candidate. If there are not enough slots... well, I could say that
 nothing happens and the another preemption is attempted the next time. But
 that's not the complete truth.
 
 The truth is that it turns out that it is not really necessary to wait until
 the jobs counter accumulates all the delivery slots in advance. Say we have
 ten-recipient mail followed by two two-recipient mails. If the preemption
-happened when enough delivery slot accumulate (assuming slot cost 2), the
+happened when enough delivery slots accumulate (assuming slot cost 2), the
 delivery sequence becomes 11112211113311. Now what would we get if we would
 wait only for 50% of the necessary slots to accumulate and we promise we would
 wait for the remaining 50% later, after we get back to the preempted job? If we
-use such slot loan, the delivery sequence becomes 11221111331111. As we can
-see, it makes it no considerably worse for the delivery of the ten-recipient
+use such slot loan, the delivery sequence becomes 11221111331111. As we can
+see, it makes it not considerably worse for the delivery of the ten-recipient
 mail, but it allows the small messages to be delivered sooner.
 
 The concept of these slot loans is where the transport_delivery_slot_discount
@@ -787,11 +787,11 @@ many percent (resp. how many slots) one "gets in advance", when the number of
 slots required to deliver the best candidate is compared with the number of
 slots the current slot had accumulated so far.
 
-And it pretty much concludes this chapter.
+And that pretty much concludes this chapter.
 
 [Now you should have a feeling that you pretty much understand the scheduler
-and the preemption, or at least that you will have it after you read the last
-chapter couple more times. You shall clearly see the job list and the
+and the preemption, or at least that you will have after you read the last
+chapter couple more times. You shall clearly see the job list and the
 preemption happening at its head, in ideal delivery conditions. The feeling of
 understanding shall last until you start wondering what happens if some of the
 jobs are blocked, which you might eventually figure out correctly from what had
@@ -805,17 +805,18 @@ The nqmgr uses the same algorithm for destination concurrency control as oqmgr.
 Now what happens when the destination limits are reached and no more entries
 for that destination may be selected by the scheduler?
 
-From user's point of view it is all simple. If some of the peers of a job can't
-be selected, those peers are simply skipped by the entry selection algorithm
-(the pseudo-code described before) and only the selectable ones are used. If
-none of the peers may be selected, the job is declared a "blocker job". Blocker
-jobs are skipped by the entry selection algorithm and they are also excluded
-from the candidates for preemption of current job. Thus the scheduler
-effectively behaves as if the blocker jobs didn't exist on the job list at all.
-As soon as at least one of the peers of a blocker job becomes unblocked (that
-is, the delivery agent handling the delivery of the recipient entry for given
-destination successfully finishes), the job's blocker status is removed and the
-job again participates in all further scheduler actions normally.
+From the user's point of view it is all simple. If some of the peers of a job
+can't be selected, those peers are simply skipped by the entry selection
+algorithm (the pseudo-code described before) and only the selectable ones are
+used. If none of the peers may be selected, the job is declared a "blocker
+job". Blocker jobs are skipped by the entry selection algorithm and they are
+also excluded from the candidates for preemption of the current job. Thus the
+scheduler effectively behaves as if the blocker jobs didn't exist on the job
+list at all. As soon as at least one of the peers of a blocker job becomes
+unblocked (that is, the delivery agent handling the delivery of the recipient
+entry for the given destination successfully finishes), the job's blocker
+status is removed and the job again participates in all further scheduler
+actions normally.
 
 So the summary is that the users don't really have to be concerned about the
 interaction of the destination limits and scheduling algorithm. It works well
@@ -844,8 +845,8 @@ are selected, and once they are all selected, job 1 continues.
 As we see, it's all very clean and straightforward. Now how does this change
 because of blockers?
 
-The answer is: a lot. Any job may become blocker job at any time, and also
-become normal job again at any time. This has several important implications:
+The answer is: a lot. Any job may become blocker job at any time, and also
+become normal job again at any time. This has several important implications:
 
  1. The jobs may be completed in arbitrary order. For example, in the example
     above, if the current job 7 becomes blocked, the next job 4 may complete
@@ -854,7 +855,7 @@ become normal job again at any time. This has several important implications:
     completed and only after that 4 becomes unblocked and is completed... You
     get the idea.
 
-    [Interesting side note: even when jobs are delivered out of order, from
+    [Interesting side note: even when jobs are delivered out of order, from a
     single destination's point of view the jobs are still delivered in the
     expected order (that is, FIFO unless there was some preemption involved).
     This is because whenever a destination queue becomes unblocked (the
@@ -885,7 +886,7 @@ the point 3) example: jobs 7 and 8 preempt job 4, now job 8 becomes blocked
 too, then job 4 completes. Tricky, huh?
 
 If I illustrate the relations after the above mentioned examples (but those in
-point 1)), the situation would look like this:
+point 1), the situation would look like this:
 
                                 v- parent
 
@@ -900,11 +901,11 @@ point 1)), the situation would look like this:
 Now how does nqmgr deal with all these complicated relations?
 
 Well, it maintains them all as described, but fortunately, all these relations
-are necessary only for purposes of proper counting of available delivery slots.
-For purposes of ordering the jobs for entry selection, the original rule still
-applies: "the job preempting the current job is moved in front of the current
-job on the job list". So for entry selection purposes, the job relations remain
-as simple as this:
+are necessary only for the purpose of proper counting of available delivery
+slots. For the purpose of ordering the jobs for entry selection, the original
+rule still applies: "the job preempting the current job is moved in front of
+the current job on the job list". So for entry selection purposes, the job
+relations remain as simple as this:
 
     7--8--1--2--6--3--5--..   <- scheduler's job list order
 
@@ -916,8 +917,8 @@ introduction to the problem domain. Otherwise I suggest you just forget about
 all this and stick with the user's point of view: the blocker jobs are simply
 ignored.
 
-[By now, you should have a feeling that there is more things going under the
-hood than you ever wanted to know. You decide that forgetting about this
+[By now, you should have a feeling that there are more things going on under
+the hood than you ever wanted to know. You decide that forgetting about this
 chapter is the best you can do for the sake of your mind's health and you
 basically stick with the idea how the scheduler works in ideal conditions, when
 there are no blockers, which is good enough.]
@@ -925,25 +926,25 @@ there are no blockers, which is good enough.]
 D\bDe\bea\bal\bli\bin\bng\bg w\bwi\bit\bth\bh m\bme\bem\bmo\bor\bry\by r\bre\bes\bso\bou\bur\brc\bce\be l\bli\bim\bmi\bit\bts\bs
 
 When discussing the nqmgr scheduler, we have so far assumed that all recipients
-of all messages in the active queue are completely read into the memory. This
-is simply not true. There is an upper bound on the amount of memory the nqmgr
-may use, and therefore it must impose some limits on the information it may
-store in the memory at any given time.
+of all messages in the "active" queue are completely read into memory. This is
+simply not true. There is an upper bound on the amount of memory the nqmgr may
+use, and therefore it must impose some limits on the information it may store
+in memory at any given time.
 
 First of all, not all messages may be read in-core at once. At any time, only
 qmgr_message_active_limit messages may be read in-core at maximum. When read
-into memory, the messages are picked from the incoming and deferred message
-queues and moved to the active queue (incoming having priority), so if there is
-more than qmgr_message_active_limit messages queued in the active queue, the
-rest will have to wait until (some of) the messages in the active queue are
+into memory, the messages are picked from the "incoming" and "deferred" queues
+and moved to the "active" queue (incoming having priority), so if there are
+more than qmgr_message_active_limit messages queued in the "active" queue, the
+rest will have to wait until (some of) the messages in the "active" queue are
 completely delivered (or deferred).
 
 Even with the limited amount of in-core messages, there is another limit which
-must be imposed in order to avoid memory exhaustion. Each message may contain
-huge amount of recipients (tens or hundreds of thousands are not uncommon), so
-if nqmgr read all recipients of all messages in the active queue, it may easily
-run out of memory. Therefore there must be some upper bound on the amount of
-message recipients which are read into the memory at the same time.
+must be imposed in order to avoid memory exhaustion. Each message may contain a
+huge number of recipients (tens or hundreds of thousands are not uncommon), so
+if nqmgr read all recipients of all messages in the "active" queue, it may
+easily run out of memory. Therefore there must be some upper bound on the
+amount of message recipients which are read into memory at the same time.
 
 Before discussing how exactly nqmgr implements the recipient limits, let's see
 how the sole existence of the limits themselves affects the nqmgr and its
@@ -951,7 +952,7 @@ scheduler.
 
 The message limit is straightforward - it just limits the size of the lookahead
 the nqmgr's scheduler has when choosing which message can preempt the current
-one. Messages not in the active queue simply are not considered at all.
+one. Messages not in the "active" queue are simply not considered at all.
 
 The recipient limit complicates more things. First of all, the message reading
 code must support reading the recipients in batches, which among other things
@@ -967,14 +968,14 @@ file, the scheduler can't operate with exact counts of recipient entries. With
 unread recipients, it is not clear how many recipient entries there will be, as
 they are subject to per-destination grouping. It is not even clear to what
 transports (and thus jobs) the recipients will be assigned. And with messages
-coming from the deferred queue, it is not even clear how many unread recipients
-are still to be delivered. This all means that the scheduler must use only
-estimates of how many recipients entries there will be. Fortunately, it is
-possible to estimate the minimum and maximum correctly, so the scheduler can
-always err on the safe side. Obviously, the better the estimates, the better
-results, so it is best when we are able to read all recipients in-core and turn
-the estimates into exact counts, or at least try to read as many as possible to
-make the estimates as accurate as possible.
+coming from the "deferred" queue, it is not even clear how many unread
+recipients are still to be delivered. This all means that the scheduler must
+use only estimates of how many recipients entries there will be. Fortunately,
+it is possible to estimate the minimum and maximum correctly, so the scheduler
+can always err on the safe side. Obviously, the better the estimates, the
+better the results, so it is best when we are able to read all recipients in-
+core and turn the estimates into exact counts, or at least try to read as many
+as possible to make the estimates as accurate as possible.
 
 The third complication is that it is no longer true that the scheduler is done
 with a job once all of its in-core recipients are delivered. It is possible
@@ -987,9 +988,9 @@ And finally, the fourth complication is that the nqmgr code must somehow impose
 the recipient limit itself. Now how does it achieve it?
 
 Perhaps the easiest solution would be to say that each message may have at
-maximum X recipients stored in-core, but such solution would be poor for
+maximum X recipients stored in-core, but such solution would be poor for
 several reasons. With reasonable qmgr_message_active_limit values, the X would
-have to be quite low to maintain reasonable memory footprint. And with low X
+have to be quite low to maintain reasonable memory footprint. And with low X
 lots of things would not work well. The nqmgr would have problems to use the
 transport_destination_recipient_limit efficiently. The scheduler's preemption
 would be suboptimal as the recipient count estimates would be inaccurate. The
@@ -997,28 +998,28 @@ message queue file would have to be accessed many times to read in more
 recipients again and again.
 
 Therefore it seems reasonable to have a solution which does not use a limit
-imposed on per-message basis, but which maintains a pool of available recipient
-slots, which can be shared among all messages in the most efficient manner. And
-as we do not want separate transports to compete for resources whenever
-possible, it seems appropriate to maintain such recipient pool for each
-transport separately. This is the general idea, now how does it work in
+imposed on a per-message basis, but which maintains a pool of available
+recipient slots, which can be shared among all messages in the most efficient
+manner. And as we do not want separate transports to compete for resources
+whenever possible, it seems appropriate to maintain such a recipient pool for
+each transport separately. This is the general idea, now how does it work in
 practice?
 
-First we have to solve little chicken-and-egg problem. If we want to use the
-per-transport recipient pools, we first need to know to what transport(s) is
-the message assigned. But we will find that out only after we read in the
-recipients first. So it is obvious that we first have to read in some
-recipients, use them to find out to what transports is the message to be
-assigned, and only after that we can use the per-transport recipient pools.
+First we have to solve little chicken-and-egg problem. If we want to use the
+per-transport recipient pools, we first need to know to what transport(s) the
+message is assigned. But we will find that out only after we first read in the
+recipients. So it is obvious that we first have to read in some recipients, use
+them to find out to what transports the message is to be assigned, and only
+after that can we use the per-transport recipient pools.
 
 Now how many recipients shall we read for the first time? This is what
 qmgr_message_recipient_minimum and qmgr_message_recipient_limit values control.
 The qmgr_message_recipient_minimum value specifies how many recipients of each
-message we will read for the first time, no matter what. It is necessary to
-read at least one recipient before we can assign the message to a transport and
-create the first job. However, reading only qmgr_message_recipient_minimum
-recipients even if there are only few messages with few recipients in-core
-would be wasteful. Therefore if there is less than qmgr_message_recipient_limit
+message we will read the first time, no matter what. It is necessary to read at
+least one recipient before we can assign the message to a transport and create
+the first job. However, reading only qmgr_message_recipient_minimum recipients
+even if there are only few messages with few recipients in-core would be
+wasteful. Therefore if there are fewer than qmgr_message_recipient_limit
 recipients in-core so far, the first batch of recipients may be larger than
 qmgr_message_recipient_minimum - as large as is required to reach the
 qmgr_message_recipient_limit limit.
@@ -1033,12 +1034,12 @@ recipient batch may be as large as the sum of all recipient slots of all jobs
 of the message permits (plus the qmgr_message_recipient_minimum amount which
 always applies).
 
-For example, if a message has three jobs, first with 1 recipient still in-core
-and 4 recipient slots, second with 5 recipient in-core and 5 recipient slots,
-and third with 2 recipients in-core and 0 recipient slots, it has 1+5+2=7
-recipients in-core and 4+5+0=9 jobs' recipients slots in total. This means that
-we could immediately read 2+qmgr_message_recipient_minimum more recipients of
-that message in core.
+For example, if a message has three jobs, the first with 1 recipient still in-
+core and 4 recipient slots, the second with 5 recipients in-core and 5
+recipient slots, and the third with 2 recipients in-core and 0 recipient slots,
+it has 1+5+2=8 recipients in-core and 4+5+0=9 jobs' recipients slots in total.
+This means that we could immediately read 2+qmgr_message_recipient_minimum more
+recipients of that message in core.
 
 The above example illustrates several things which might be worth mentioning
 explicitly: first, note that although the per-transport slots are assigned to
@@ -1067,17 +1068,17 @@ job list does.
 More specifically, each time a job is created and appended to the job list, it
 gets all unused recipient slots from its transport's pool. It keeps them until
 all recipients of its message are read. When this happens, all unused recipient
-slots are transferred to the next job (which is now in fact now first such job)
+slots are transferred to the next job (which is now in fact the first such job)
 on the job list which still has some recipients unread, or eventually back to
-the transport pool if there is no such job. Such transfer then also happens
+the transport pool if there is no such job. Such transfer then also happens
 whenever a recipient entry of that job is delivered.
 
 There is also a scenario when a job is not appended to the end of the job list
-(for example it was created as a result of second or later recipient batch).
+(for example it was created as a result of second or later recipient batch).
 Then it works exactly as above, except that if it was put in front of the first
 unread job (that is, the job of a message which still has some unread
-recipients in queue file), that job is first forced to return all of its unused
-recipient slots to the transport pool.
+recipients in the queue file), that job is first forced to return all of its
+unused recipient slots to the transport pool.
 
 The algorithm just described leads to the following state: The first unread job
 on the job list always gets all the remaining recipient slots of that transport
@@ -1087,22 +1088,22 @@ maximum as many slots as they still have recipients in-core (the maximum is
 there because of the sponsoring mentioned before) and the jobs after this job
 get nothing from the transport recipient pool (unless they got something before
 and then the first unread job was created and enqueued in front of them later -
-in such case the also get at maximum as many slots as they have recipients in-
-core).
-
-Things work fine in such state for most of the time, because the current job is
-either completely read in-core or has as much recipient slots as there are, but
-there is one situation which we still have to take care of specially. Imagine
-if the current job is preempted by some unread job from the job list and there
-are no more recipient slots available, so this new current job could read only
-batches of qmgr_message_recipient_minimum recipients at a time. This would
-really degrade performance. For this reason, each transport has extra pool of
-transport_extra_recipient_limit recipient slots, dedicated exactly for this
-situation. Each time an unread job preempts the current job, it gets half of
-the remaining recipient slots from the normal pool and this extra pool.
+in such a case, they also get at maximum as many slots as they have recipients
+in-core).
+
+Things work fine in such a state for most of the time, because the current job
+is either completely read in-core or has as many recipient slots as there are,
+but there is one situation which we still have to take care of specially.
+Imagine if the current job is preempted by some unread job from the job list
+and there are no more recipient slots available, so this new current job could
+read only batches of qmgr_message_recipient_minimum recipients at a time. This
+would really degrade performance. For this reason, each transport has an extra
+pool of transport_extra_recipient_limit recipient slots, dedicated exactly for
+this situation. Each time an unread job preempts the current job, it gets half
+of the remaining recipient slots from the normal pool and this extra pool.
 
 And that's it. It sure does sound pretty complicated, but fortunately most
-people don't really have to care how exactly it works as long as it works.
+people don't really have to care exactly how it works as long as it works.
 Perhaps the only important things to know for most people are the following
 upper bound formulas:
 
@@ -1126,14 +1127,14 @@ The total amount of recipients in core is
 
 where the sum is over all used transports.
 
-And this terribly complicated chapter concludes the documentation of nqmgr
+And this terribly complicated chapter concludes the documentation of the nqmgr
 scheduler.
 
 [By now you should theoretically know the nqmgr scheduler inside out. In
 practice, you still hope that you will never have to really understand the last
 or last two chapters completely, and fortunately most people really won't.
 Understanding how the scheduler works in ideal conditions is more than good
-enough for vast majority of users.]
+enough for the vast majority of users.]
 
 C\bCr\bre\bed\bdi\bit\bts\bs
 
index a4d7c208a34ddeacf837eeeaba695e316a13d8da..7477a3685d2dc6bbef2a59f043dd2f2a165878b4 100644 (file)
@@ -160,8 +160,9 @@ Each restriction list is evaluated from left to right until some restriction
 produces a result of PERMIT, REJECT or DEFER (try again later). The end of each
 list is equivalent to a PERMIT result. By placing a PERMIT restriction before a
 REJECT restriction you can make exceptions for specific clients or users. This
-is called allowlisting; the fourth example above allows mail from local
-networks but otherwise rejects mail to arbitrary destinations.
+is called allowlisting; the smtpd_relay_restrictions example above allows mail
+from local networks, and from SASL authenticated clients, but otherwise rejects
+mail to arbitrary destinations.
 
 The table below summarizes the purpose of each SMTP access restriction list.
 All lists use the exact same syntax; they differ only in the time of evaluation
index 6386b0ec57427e350b7383dbf068d72dbe8b3bc1..291fa5c870933eff0256e22f30ab65cdfed38e00 100644 (file)
@@ -201,7 +201,7 @@ The first example specifies that the policy server listens on a TCP socket at
 127.0.0.1 port 9998. The second example specifies an absolute pathname of a
 UNIX-domain socket. The third example specifies a pathname relative to the
 Postfix queue directory; use this for policy servers that are spawned by the
-Postfix master daemon.
+Postfix master daemon. On many systems, "local" is a synonym for "unix".
 
 To create a policy service that listens on a UNIX-domain socket called
 "policy", and that runs under control of the Postfix spawn(8) daemon, you would
@@ -240,7 +240,7 @@ NOTES:
 
   * Line 11: this increases the time that a policy server process may run to
     3600 seconds. The default time limit of 1000 seconds is too short; the
-    policy daemon needs to run long as the SMTP server process that talks to
+    policy daemon needs to run as long as the SMTP server process that talks to
     it. See the spawn(8) manpage for more information about the
     transport_time_limit parameter.
 
@@ -432,8 +432,8 @@ Notes:
 
   * Line 6: this increases the time that a greylist server process may run to
     3600 seconds. The default time limit of 1000 seconds is too short; the
-    greylist daemon needs to run long as the SMTP server process that talks to
-    it. See the spawn(8) manpage for more information about the
+    greylist daemon needs to run as long as the SMTP server process that talks
+    to it. See the spawn(8) manpage for more information about the
     transport_time_limit parameter.
 
   * Line 9: reject_unauth_destination is not needed here if the mail relay
@@ -470,8 +470,9 @@ G\bGr\bre\bey\byl\bli\bis\bst\bti\bin\bng\bg m\bma\bai\bil\bl f\bfr\bro\bom\bm f\bfr\bre\beq\bqu\bue\ben\b
 
 It is relatively safe to turn on greylisting for specific domains that often
 appear in forged email. At some point in cyberspace/time a list of frequently
-forged MAIL FROM domains could be found at http://www.monkeys.com/anti-spam/
-filtering/sender-domain-validate.in.
+forged MAIL FROM domains could be found at https://web.archive.org/web/
+20080526153208/http://www.monkeys.com/anti-spam/filtering/sender-domain-
+validate.in.
 
      1 /etc/postfix/main.cf:
      2     smtpd_recipient_restrictions =
index f2cd530d44f2041fae64f96a60a2d9f0e2bc30bf..a3707ea4c621dbbfed71ceb6faf074b76351da49 100644 (file)
@@ -102,8 +102,9 @@ From then on mail is processed as usual.
 
 The content filter itself is not described here. You can use any filter that is
 SMTP enabled. For non-SMTP capable content filtering software, Bennett Todd's
-SMTP proxy implements a nice Perl-based framework. See: http://
-bent.latency.net/smtpprox/ or https://github.com/jnorell/smtpprox.
+SMTP proxy implements a nice Perl-based framework. See: https://
+web.archive.org/web/20151022025756/http://bent.latency.net/smtpprox/ or https:/
+/github.com/jnorell/smtpprox/
 
                                                Postfix
                   Postfix      filter on     SMTP server    Postfix    Postfix
@@ -197,9 +198,9 @@ The after-filter SMTP server is a new master.cf entry:
 
 By default, the filter has 100 seconds to do its work. If it takes longer then
 Postfix gives up and reports an error to the remote SMTP client. You can
-increase this time limit (see configuration parameter section below) but doing
-so is pointless because you can't control when the remote SMTP client times
-out.
+increase this time limit (see the "Configuration parameters" section below) but
+doing so is pointless because you can't control when the remote SMTP client
+times out.
 
 C\bCo\bon\bnf\bfi\big\bgu\bur\bra\bat\bti\bio\bon\bn p\bpa\bar\bra\bam\bme\bet\bte\ber\brs\bs
 
index 5496a3b0d38b4221d0e3f83fa255442f225bb81f..9e7970e72f25bcb8faa3b149954db88106e3e3e1 100644 (file)
@@ -173,7 +173,7 @@ This section applies only to systems that have SMTPUTF8 support turned on
 
 For compatibility with pre-SMTPUTF8 environments, Postfix does not
 automatically set the "SMTPUTF8 requested" flag on messages from non-SMTPUTF8
-clients that contain an UTF-8 header value or UTF-8 address localpart. This
+clients that contain a UTF-8 header value or UTF-8 address localpart. This
 would make such messages undeliverable to non-SMTPUTF8 servers, and could be a
 barrier to SMTPUTF8 adoption.
 
index 3804b9da2574d5bf80c44950d920cada313f913c..bbba7c210d9c2d4bb1a5c7847af0a44e083f0123 100644 (file)
@@ -73,8 +73,8 @@ addresses by valid Internet addresses. This mapping happens ONLY when mail
 leaves the machine; not when you send mail between users on the same machine.
 
 The following example presents additional configuration. You need to combine
-this with basic configuration information as discussed the first half of this
-document.
+this with basic configuration information as discussed in the first half of
+this document.
 
     1 /etc/postfix/main.cf:
     2     smtp_generic_maps = hash:/etc/postfix/generic
@@ -109,8 +109,8 @@ fantasy addresses, including mail to local fantasy addresses that don't have a
 valid Internet address of their own.
 
 The following example presents additional configuration. You need to combine
-this with basic configuration information as discussed the first half of this
-document.
+this with basic configuration information as discussed in the first half of
+this document.
 
      1 /etc/postfix/main.cf:
      2     myhostname = hostname.localdomain
@@ -276,13 +276,13 @@ final resort.
     single MySQL database, and configure different Postfix queries to extract
     the appropriate information.
 
-  * Specify dbm instead of hash if your system uses dbm files instead of db
+  * Specify d\bdb\bbm\bm instead of h\bha\bas\bsh\bh if your system uses d\bdb\bbm\bm files instead of d\bdb\bb
     files. To find out what lookup tables Postfix supports, use the command
-    "postconf -m".
+    "p\bpo\bos\bst\btc\bco\bon\bnf\bf -\b-m\bm".
 
-  * Execute the command "postmap /etc/postfix/sasl_passwd" whenever you change
+  * Execute the command "p\bpo\bos\bst\btm\bma\bap\bp /\b/e\bet\btc\bc/\b/p\bpo\bos\bst\btf\bfi\bix\bx/\b/s\bsa\bas\bsl\bl_\b_p\bpa\bas\bss\bsw\bwd\bd" whenever you change
     the sasl_passwd table.
 
-  * Execute the command "postmap /etc/postfix/sender_relay" whenever you change
+  * Execute the command "p\bpo\bos\bst\btm\bma\bap\bp /\b/e\bet\btc\bc/\b/p\bpo\bos\bst\btf\bfi\bix\bx/\b/s\bse\ben\bnd\bde\ber\br_\b_r\bre\bel\bla\bay\by" whenever you change
     the sender_relay table.
 
index 3fb9757c5e58783fdf8e56c9230e3cec434f2a54..7f668dea4df690394691c59e7d2fff946084b85c 100644 (file)
@@ -65,12 +65,6 @@ dbpath = /some/path/to/sqlite_database
 # See sqlite_table(5) for details.
 query = SELECT forw_addr FROM mxaliases WHERE alias='%s' AND status='paid'
 
-A\bAd\bdd\bdi\bit\bti\bio\bon\bna\bal\bl n\bno\bot\bte\bes\bs
-
-The SQLite configuration interface setup allows for multiple sqlite databases:
-you can use one for a virtual table, one for an access table, and one for an
-aliases table if you want.
-
 C\bCr\bre\bed\bdi\bit\bts\bs
 
 SQLite support was added with Postfix version 2.8.
index ceb18fce8a7afe106318caac3c4f59cd2d538390..ca188fe2b0e6699c3542fa136221f94f1c1f8589 100644 (file)
@@ -113,7 +113,7 @@ As usual, the examples show only parameters that are not left at their default
 settings.
 
 First we present the non-mailhost configuration, because it is the simpler one.
-This machine sends mail as "user@example.com" and is final destination for
+This machine sends mail as "user@example.com" and is the final destination for
 "user@hostname.example.com".
 
     1 /etc/postfix/main.cf:
@@ -135,8 +135,8 @@ Translation:
     below, "Postfix behind a firewall".
 
 Next we present the mailhost configuration. This machine sends mail as
-"user@example.com" and is final destination for "user@hostname.example.com" as
-well as "user@example.com".
+"user@example.com" and is the final destination for "user@hostname.example.com"
+as well as "user@example.com".
 
      1 DNS:
      2     example.com    IN    MX  10 mailhost.example.com.
@@ -238,7 +238,7 @@ Translation:
     literals matching $inet_interfaces or $proxy_interfaces are deemed local.
     So "localpart@[a.d.d.r]" can be matched as simply "localpart" in canonical
     (5) and virtual(5). This avoids the need to specify firewall IP addresses
-    into Postfix configuration files.
+    in Postfix configuration files.
 
 The last part of the solution does the email forwarding, which is the real
 purpose of the firewall email function.
@@ -348,8 +348,8 @@ Note: this example requires Postfix version 2.0 and later. To find out what
 Postfix version you have, execute the command "p\bpo\bos\bst\btc\bco\bon\bnf\bf m\bma\bai\bil\bl_\b_v\bve\ber\brs\bsi\bio\bon\bn".
 
 The following example presents additional configuration. You need to combine
-this with basic configuration information as discussed the first half of this
-document.
+this with basic configuration information as discussed in the first half of
+this document.
 
      1 /etc/postfix/main.cf:
      2     transport_maps = hash:/etc/postfix/transport
@@ -386,7 +386,8 @@ transport table.
 C\bCo\bon\bnf\bfi\big\bgu\bur\bri\bin\bng\bg P\bPo\bos\bst\btf\bfi\bix\bx a\bas\bs p\bpr\bri\bim\bma\bar\bry\by o\bor\br b\bba\bac\bck\bku\bup\bp M\bMX\bX h\bho\bos\bst\bt f\bfo\bor\br a\ba r\bre\bem\bmo\bot\bte\be s\bsi\bit\bte\be
 
 This section presents additional configuration. You need to combine this with
-basic configuration information as discussed the first half of this document.
+basic configuration information as discussed in the first half of this
+document.
 
 When your system is SECONDARY MX host for a remote site this is all you need:
 
@@ -472,7 +473,8 @@ This section applies to dialup connections that are down most of the time. For
 dialup connections that are up 24x7, see the local area network section above.
 
 This section presents additional configuration. You need to combine this with
-basic configuration information as discussed the first half of this document.
+basic configuration information as discussed in the first half of this
+document.
 
 If you do not have your own hostname and IP address (usually with dialup, cable
 TV or DSL connections) then you should also study the section on "Postfix on
@@ -553,8 +555,8 @@ addresses by valid Internet addresses. This mapping happens ONLY when mail
 leaves the machine; not when you send mail between users on the same machine.
 
 The following example presents additional configuration. You need to combine
-this with basic configuration information as discussed the first half of this
-document.
+this with basic configuration information as discussed in the first half of
+this document.
 
     1 /etc/postfix/main.cf:
     2     smtp_generic_maps = hash:/etc/postfix/generic
@@ -589,8 +591,8 @@ fantasy addresses, including mail to local fantasy addresses that don't have a
 valid Internet address of their own.
 
 The following example presents additional configuration. You need to combine
-this with basic configuration information as discussed the first half of this
-document.
+this with basic configuration information as discussed in the first half of
+this document.
 
      1 /etc/postfix/main.cf:
      2     myhostname = hostname.localdomain
index 79d113a550c23fcd9d149b057e0881a4c009261d..8edc148e400be1a94e5ecd99c062a1cbfec25818 100644 (file)
@@ -410,7 +410,7 @@ O\bOt\bth\bhe\ber\br m\bme\bea\bas\bsu\bur\bre\bes\bs t\bto\bo o\bof\bff\bf-\b-l\blo\boa\bad\bd z\bzo\bom
 
 The postscreen(8) daemon, introduced with Postfix 2.8, provides additional
 protection against mail server overload. One postscreen(8) process handles
-multiple inbound SMTP connections, and decides which clients may to talk to a
+multiple inbound SMTP connections, and decides which clients may talk to a
 Postfix SMTP server process. By keeping spambots away, postscreen(8) leaves
 more SMTP server processes available for legitimate clients, and delays the
 onset of server overload conditions.
index 1a18bc531d086e0141153ee83f1d3d59d611414b..f4dae6b003fe34b8c977faa36c6638d444c62dd4 100644 (file)
@@ -126,7 +126,7 @@ S\bSe\ber\brv\bve\ber\br-\b-s\bsi\bid\bde\be c\bce\ber\brt\bti\bif\bfi\bic\bca\bat\bte\be a\ban\bnd\bd p\b
 
 In order to use TLS, the Postfix SMTP server needs a certificate and a private
 key. Both must be in "pem" format. The private key must not be encrypted,
-meaning: the key must be accessible without password. Both certificate and
+meaning: the key must be accessible without password. Both certificate and
 private key may be in the same file.
 
 Both RSA and DSA certificates are supported. Typically you will only have RSA
@@ -147,7 +147,7 @@ with:
 
     % c\bca\bat\bt s\bse\ber\brv\bve\ber\br_\b_c\bce\ber\brt\bt.\b.p\bpe\bem\bm i\bin\bnt\bte\ber\brm\bme\bed\bdi\bia\bat\bte\be_\b_C\bCA\bA.\b.p\bpe\bem\bm >\b> s\bse\ber\brv\bve\ber\br.\b.p\bpe\bem\bm
 
-A Postfix SMTP server certificate supplied here must be usable as SSL server
+A Postfix SMTP server certificate supplied here must be usable as an SSL server
 certificate and hence pass the "openssl verify -purpose sslserver ..." test.
 
 A client that trusts the root CA has a local copy of the root CA certificate,
@@ -410,8 +410,8 @@ server access control:
 
 The permit_tls_all_clientcerts feature must be used with caution, because it
 can result in too many access permissions. Use this feature only if a special
-CA issues the client certificates, and only if this CA is listed as trusted CA.
-If other CAs are trusted, any owner of a valid client certificate would be
+CA issues the client certificates, and only if this CA is listed as a trusted
+CA. If other CAs are trusted, any owner of a valid client certificate would be
 authorized. The permit_tls_all_clientcerts feature can be practical for a
 specially created email relay server.
 
@@ -447,9 +447,9 @@ Example:
 S\bSe\ber\brv\bve\ber\br-\b-s\bsi\bid\bde\be c\bci\bip\bph\bhe\ber\br c\bco\bon\bnt\btr\bro\bol\bls\bs
 
 To influence the Postfix SMTP server cipher selection scheme, you can give
-cipherlist string. A detailed description would go to far here; please refer to
-the OpenSSL documentation. If you don't know what to do with it, simply don't
-touch it and leave the (openssl-)compiled in default!
+cipherlist string. A detailed description would go too far here; please refer
+to the OpenSSL documentation. If you don't know what to do with it, simply
+don't touch it and leave the (openssl-)compiled in default!
 
 DO NOT USE " to enclose the string, specify just the string!!!
 
@@ -520,8 +520,8 @@ time, in which case the cipher used determines which certificate is presented.
 It is possible for the Postfix SMTP client to use the same key/certificate pair
 as the Postfix SMTP server. If a certificate is to be presented, it must be in
 "pem" format. The private key must not be encrypted, meaning: it must be
-accessible without password. Both parts (certificate and private key) may be in
-the same file.
+accessible without a password. Both parts (certificate and private key) may be
+in the same file.
 
 In order for remote SMTP servers to verify the Postfix SMTP client
 certificates, the CA certificate (in case of a certificate chain, all CA
@@ -534,7 +534,7 @@ with:
 
     % c\bca\bat\bt c\bcl\bli\bie\ben\bnt\bt_\b_c\bce\ber\brt\bt.\b.p\bpe\bem\bm i\bin\bnt\bte\ber\brm\bme\bed\bdi\bia\bat\bte\be_\b_C\bCA\bA.\b.p\bpe\bem\bm >\b> c\bcl\bli\bie\ben\bnt\bt.\b.p\bpe\bem\bm
 
-A Postfix SMTP client certificate supplied here must be usable as SSL client
+A Postfix SMTP client certificate supplied here must be usable as an SSL client
 certificate and hence pass the "openssl verify -purpose sslclient ..." test.
 
 A server that trusts the root CA has a local copy of the root CA certificate,
@@ -780,9 +780,9 @@ summarized as follows:
     "smtp_use_tls = yes".
 
   * When both hostname and next-hop destination lookups produce a result, the
-    more specific per-site policy (NONE, MUST, etc) overrides the less specific
-    one (MAY), and the more secure per-site policy (MUST, etc) overrides the
-    less secure one (NONE).
+    more specific per-site policy (NONE, MUST, etc.) overrides the less
+    specific one (MAY), and the more secure per-site policy (MUST, etc.)
+    overrides the less secure one (NONE).
 
   * After the per-site policy lookups are combined, the result generally
     overrides the global policy. The exception is the less specific M\bMA\bAY\bY per-
@@ -827,7 +827,7 @@ Example:
         example.org                 NONE
 
         # TLS should not be used with the host smtp.example.com.
-        smtp.example.com             NONE
+        [smtp.example.com]          NONE
 
 D\bDi\bis\bsc\bco\bov\bve\ber\bri\bin\bng\bg s\bse\ber\brv\bve\ber\brs\bs t\bth\bha\bat\bt s\bsu\bup\bpp\bpo\bor\brt\bt T\bTL\bLS\bS
 
@@ -862,9 +862,9 @@ Example:
 C\bCl\bli\bie\ben\bnt\bt-\b-s\bsi\bid\bde\be c\bci\bip\bph\bhe\ber\br c\bco\bon\bnt\btr\bro\bol\bls\bs
 
 To influence the Postfix SMTP client cipher selection scheme, you can give
-cipherlist string. A detailed description would go to far here; please refer to
-the OpenSSL documentation. If you don't know what to do with it, simply don't
-touch it and leave the (openssl-)compiled in default!
+cipherlist string. A detailed description would go too far here; please refer
+to the OpenSSL documentation. If you don't know what to do with it, simply
+don't touch it and leave the (openssl-)compiled in default!
 
 DO NOT USE " to enclose the string, specify just the string!!!
 
@@ -1071,7 +1071,7 @@ Please differentiate when possible between:
   * Problems in the TLS code: <postfix_tls@aet.tu-cottbus.de>
   * Problems in vanilla Postfix: <postfix-users@postfix.org>
 
-C\bCo\bom\bmp\bpa\bat\bti\bib\bbi\bil\bli\bit\bty\by w\bwi\bit\bth\bh P\bPo\bos\bst\btf\bfi\bix\bx <\b<2\b2.\b.2\b2 T\bTL\bLS\bS s\bsu\bup\bpp\bpo\bor\brt\bt
+C\bCo\bom\bmp\bpa\bat\bti\bib\bbi\bil\bli\bit\bty\by w\bwi\bit\bth\bh P\bPo\bos\bst\btf\bfi\bix\bx <\b< 2\b2.\b.2\b2 T\bTL\bLS\bS s\bsu\bup\bpp\bpo\bor\brt\bt
 
 Postfix version 2.2 TLS support is based on the Postfix/TLS patch by Lutz
 Ja"nicke, but differs in a few minor ways.
index 315d9fbf6319e2f1f2d5eb92e53881e9b5876c62..12ef62f3719e29e42711ed697146ff7f746d4331 100644 (file)
@@ -12,7 +12,7 @@ NOTE: By turning on TLS support in Postfix, you not only get the ability to
 encrypt mail and to authenticate remote SMTP clients or servers. You also turn
 on hundreds of thousands of lines of OpenSSL library code. Assuming that
 OpenSSL is written as carefully as Wietse's own code, every 1000 lines
-introduce one additional bug into Postfix.
+introduces one additional bug into Postfix.
 
 Topics covered in this document:
 
@@ -121,7 +121,7 @@ To verify the Postfix SMTP server certificate, the remote SMTP client must
 receive the issuing CA certificates via the TLS handshake or via public-key
 infrastructure. This means that the Postfix server public-key certificate file
 must include the server certificate first, then the issuing CA(s) (bottom-up
-order). The Postfix SMTP server certificate must be usable as SSL server
+order). The Postfix SMTP server certificate must be usable as an SSL server
 certificate and hence pass the "openssl verify -purpose sslserver ..." test.
 
 The examples that follow show how to create a server certificate file. We
@@ -178,7 +178,8 @@ and any additional issuer certificates. A single file can hold multiple (key,
 cert, [chain]) sequences, one per algorithm. It is typically simpler to keep
 the chain for each algorithm in its own file. Most users are likely to deploy
 just a single RSA chain, but with OpenSSL 1.1.1, it is possible to deploy up to
-five chains, one each for RSA, ECDSA, ED25519, ED448 and even the obsolete DSA.
+five chains, one each for RSA, ECDSA, ED25519, ED448, and even the obsolete
+DSA.
 
         # Postfix >= 3.4.  Preferred configuration interface.  Each file
         # starts with the private key, followed by the corresponding
@@ -554,8 +555,8 @@ their use in this context, though not recommended, is still likely safe.
 
 The permit_tls_all_clientcerts feature must be used with caution, because it
 can result in too many access permissions. Use this feature only if a special
-CA issues the client certificates, and only if this CA is listed as trusted CA.
-If other CAs are trusted, any owner of a valid client certificate would be
+CA issues the client certificates, and only if this CA is listed as a trusted
+CA. If other CAs are trusted, any owner of a valid client certificate would be
 authorized. The permit_tls_all_clientcerts feature can be practical for a
 specially created email relay server.
 
@@ -1404,8 +1405,8 @@ which certificate is presented.
 It is possible for the Postfix SMTP client to use the same key/certificate pair
 as the Postfix SMTP server. If a certificate is to be presented, it must be in
 "PEM" format. The private key must not be encrypted, meaning: it must be
-accessible without password. Both parts (certificate and private key) may be in
-the same file.
+accessible without a password. Both parts (certificate and private key) may be
+in the same file.
 
 With OpenSSL 1.1.1 and Postfix >= 3.4 it is also possible to configure Ed25519
 and Ed448 certificates. Rather than add two more pairs of key and certificate
@@ -1426,7 +1427,7 @@ user create the client.pem file with:
     # u\bum\bma\bas\bsk\bk 0\b07\b77\b7
     # c\bca\bat\bt c\bcl\bli\bie\ben\bnt\bt_\b_k\bke\bey\by.\b.p\bpe\bem\bm c\bcl\bli\bie\ben\bnt\bt_\b_c\bce\ber\brt\bt.\b.p\bpe\bem\bm i\bin\bnt\bte\ber\brm\bme\bed\bdi\bia\bat\bte\be_\b_C\bCA\bA.\b.p\bpe\bem\bm >\b> c\bch\bha\bai\bin\bn.\b.p\bpe\bem\bm
 
-A Postfix SMTP client certificate supplied here must be usable as SSL client
+A Postfix SMTP client certificate supplied here must be usable as an SSL client
 certificate and hence pass the "openssl verify -purpose sslclient ..." test.
 
 A server that trusts the root CA has a local copy of the root CA certificate,
@@ -1443,7 +1444,8 @@ and any additional issuer certificates. A single file can hold multiple (key,
 cert, [chain]) sequences, one per algorithm. It is typically simpler to keep
 the chain for each algorithm in its own file. Most users are likely to deploy
 at most a single RSA chain, but with OpenSSL 1.1.1, it is possible to deploy up
-five chains, one each for RSA, ECDSA, ED25519, ED448 and even the obsolete DSA.
+five chains, one each for RSA, ECDSA, ED25519, ED448, and even the obsolete
+DSA.
 
         # Postfix >= 3.4.  Preferred configuration interface.  Each file
         # starts with the private key, followed by the corresponding
@@ -1782,14 +1784,15 @@ v\bve\ber\bri\bif\bfy\by
     files.
 s\bse\bec\bcu\bur\bre\be
     Secure certificate verification. Mail is delivered only if the TLS
-    handshake succeeds, if the remote SMTP server certificate can be validated
-    (not expired or revoked, and signed by a trusted Certification Authority),
-    and if the server certificate name matches the optional "match" attribute
-    (or the main.cf smtp_tls_secure_cert_match parameter value when no optional
-    "match" attribute is specified). With Postfix >= 2.11 the "tafile"
-    attribute optionally modifies trust chain verification in the same manner
-    as the "smtp_tls_trust_anchor_file" parameter. The "tafile" attribute may
-    be specified multiple times to load multiple trust-anchor files.
+    handshake succeeds, and DNS forgery resistant remote SMTP certificate
+    verification succeeds (not expired or revoked, and signed by a trusted
+    Certification Authority), and if the server certificate name matches the
+    optional "match" attribute (or the main.cf smtp_tls_secure_cert_match
+    parameter value when no optional "match" attribute is specified). With
+    Postfix >= 2.11 the "tafile" attribute optionally modifies trust chain
+    verification in the same manner as the "smtp_tls_trust_anchor_file"
+    parameter. The "tafile" attribute may be specified multiple times to load
+    multiple trust-anchor files.
 Notes:
 
   * The "match" attribute is especially useful to verify TLS certificates for
@@ -2174,7 +2177,7 @@ authentication. This is sufficient for testing, and for exchanging email with
 sites that you have no trust relationship with. For real authentication you
 need also enable DNSSEC record signing for your domain and publish TLSA records
 and/or your Postfix public key certificate needs to be signed by a recognized
-Certification Authority. To authenticate the certificates of remote host you
+Certification Authority. To authenticate the certificates of remote host you
 need a DNSSEC-validating local resolver and to enable DANE authentication and/
 or configure the Postfix SMTP client with a list of public key certificates of
 Certification Authorities, but make sure to read about the limitations of the
@@ -2392,7 +2395,7 @@ P\bPr\bri\biv\bva\bat\bte\be C\bCe\ber\brt\bti\bif\bfi\bic\bca\bat\bti\bio\bon\bn A\bAu\but\bth\bho\bor\br
     Often servers that perform TLS client authentication will issue the
     required certificates signed by their own CA. If you configure the client
     certificate and key incorrectly, you will be unable to send mail to sites
-    that request client certificate, but don't require them from all clients.
+    that request client certificate, but don't require them from all clients.
 
         /etc/postfix/main.cf:
             smtp_tls_CAfile = /etc/postfix/cacert.pem
index c1176617a89154169f22b41b8ec568b701a26405..10801646c9a8260bd944b5ec3d410f058a0e4c8e 100644 (file)
@@ -285,9 +285,8 @@ than the default 20) simultaneous connections, especially if the gateway
 forwards to multiple MX hosts. When all MX hosts are up and accepting
 connections in a timely fashion, throughput will be high. If any MX host is
 down and completely unresponsive, the average connection latency rises to at
-least 1/N * $smtp_connection_timeout, if there are N MX hosts. This limits
-throughput to at most the destination concurrency * N /
-$smtp_connection_timeout.
+least 1/N * $smtp_connect_timeout, if there are N MX hosts. This limits
+throughput to at most the destination concurrency * N / $smtp_connect_timeout.
 
 For example, with a destination concurrency of 100 and 2 MX hosts, each host
 will handle up to 50 simultaneous connections. If one MX host is down and the
@@ -298,10 +297,10 @@ low as 5s or even 1s can be used to prevent congestion when one or more, but
 not all MX hosts are down.
 
 If necessary, set a higher transport_destination_concurrency_limit (in main.cf
-since this is a queue manager parameter) and a lower smtp_connection_timeout
-(with a "-o" override in master.cf since this parameter has no per-transport
-name) for the relay transport and any transports dedicated for specific high
-volume destinations.
+since this is a queue manager parameter) and a lower smtp_connect_timeout (with
+a "-o" override in master.cf since this parameter has no per-transport name)
+for the relay transport and any transports dedicated for specific high volume
+destinations.
 
 T\bTu\bun\bni\bin\bng\bg t\bth\bhe\be n\bnu\bum\bmb\bbe\ber\br o\bof\bf r\bre\bec\bci\bip\bpi\bie\ben\bnt\bts\bs p\bpe\ber\br d\bde\bel\bli\biv\bve\ber\bry\by
 
index 6f470eeb79e49480d99b97e7f504b6c5687f7645..e693a0ceb29e6b18f9c577901d3e07e804423ce8 100644 (file)
@@ -27,14 +27,14 @@ The following topics are covered:
 
 C\bCa\ban\bno\bon\bni\bic\bca\bal\bl v\bve\ber\brs\bsu\bus\bs h\bho\bos\bst\bte\bed\bd v\bve\ber\brs\bsu\bus\bs o\bot\bth\bhe\ber\br d\bdo\bom\bma\bai\bin\bns\bs
 
-Most Postfix systems are f\bfi\bin\bna\bal\bl d\bde\bes\bst\bti\bin\bna\bat\bti\bio\bon\bn for only a few domain names. These
-include the hostnames and [the IP addresses] of the machine that Postfix runs
-on, and sometimes also include the parent domain of the hostname. The remainder
-of this document will refer to these domains as the canonical domains. They are
-usually implemented with the Postfix local domain address class, as defined in
-the ADDRESS_CLASS_README file.
-
-Besides the canonical domains, Postfix can be configured to be f\bfi\bin\bna\bal\bl
+Most Postfix systems are the f\bfi\bin\bna\bal\bl d\bde\bes\bst\bti\bin\bna\bat\bti\bio\bon\bn for only a few domain names.
+These include the hostnames and [the IP addresses] of the machine that Postfix
+runs on, and sometimes also include the parent domain of the hostname. The
+remainder of this document will refer to these domains as the canonical
+domains. They are usually implemented with the Postfix local domain address
+class, as defined in the ADDRESS_CLASS_README file.
+
+Besides the canonical domains, Postfix can be configured to be the f\bfi\bin\bna\bal\bl
 d\bde\bes\bst\bti\bin\bna\bat\bti\bio\bon\bn for any number of additional domains. These domains are called
 hosted, because they are not directly associated with the name of the machine
 itself. Hosted domains are usually implemented with the virtual alias domain
@@ -49,8 +49,8 @@ implemented with the relay domain address class, as defined in the
 ADDRESS_CLASS_README file.
 
 Finally, Postfix can be configured as a transit host for sending mail across
-the internet. Obviously, Postfix is not final destination for such mail. This
-function is available only for authorized clients and/or users, and is
+the internet. Obviously, Postfix is not the final destination for such mail.
+This function is available only for authorized clients and/or users, and is
 implemented by the default domain address class, as defined in the
 ADDRESS_CLASS_README file.
 
index 93c93d5b2a42c569dd6266ec3a0e89b17c1e8fe9..6cf4354486cde7767005ef4978764783e1810cdc 100644 (file)
@@ -1,5 +1,5 @@
 - Walcir Fontanini <walcir@densis.fee.unicamp.br>
-  * tested on Solaris 2.5 and and reported missing "snprintf()"
+  * tested on Solaris 2.5 and reported missing "snprintf()"
     -> was fixed in pfixtls-0.1.2
   * contributed the script to add fingerprints
        contributed/fp.csh
index 62a529e6a849cc0607edad83eac19a8d7288a09b..1abe0ff15b773460338bb92fabd1201412217d88 100644 (file)
   - Updated configuration information:
     * As of OpenSSL 0.9.4, certificate chain verification is not sufficient,
       since the certificate purpose is not checked, so I recommend to add
-      all intermediate CAs the the list of CAs and stay with a verification
+      all intermediate CAs the list of CAs and stay with a verification
       depth of 1.
       Work is in progress for 0.9.5.
   - Stepped up to the just released new patchlevel postfix-19990906-pl09.
 
 1999/10/09
   - Set an absolut maximum length of 32 for the IDs used for session caching.
-    This matches the default in OpenSSL, but I don´t want to see surprises
+    This matches the default in OpenSSL, but I don't want to see surprises
     when somebody sometimes will run into a longer session id.
 
 1999/10/05     == Released 0.4.0 ==
     to computer sience students.
 
 1999/09/28
-  - I cannot use the mod_ssl way for session caching and I don´t want to
-    spend an extra "gcache" daemon as ApacheSSL does. So I follow Wietse´s
+  - I cannot use the mod_ssl way for session caching and I don't want to
+    spend an extra "gcache" daemon as ApacheSSL does. So I follow Wietse's
     idea realized for his mail queues and create hash level based subdirectory
     structures. The good thing: I can cannibalize the mail_queue code.
-    The bad thing: there is a path length of 100 chars fix coded in Wietse´s
+    The bad thing: there is a path length of 100 chars fix coded in Wietse's
     routines. It does hold for 32byte session ideas.
     Status: can save sessions to disk and recall them (server side).
 
   - Created new call backs for external session caching for the server side.
     In a first step, they can print out the session ids for the newly created
     session and when recalling a session.
-    As the OpenSSL documentation on this is pretty sparse, Ben Laurie´s
-    ApacheSSL code is very helpful, Ralph Engelschall´s Mod_SSL code for
+    As the OpenSSL documentation on this is pretty sparse, Ben Laurie's
+    ApacheSSL code is very helpful, Ralph Engelschall's Mod_SSL code for
     session caching is far more complicated.
 
 1999/09/23     == Released 0.3.10 ==
     SSL_CTX_set_session_id_context() call was missing. To find this, I
     had to trace through the OpenSSL library and when I finally found it
     in ssl/ssl_sess.c, there was an appropriate comment about this. I however
-    have to find out why I didn´t receive the appropriate error message...
+    have to find out why I didn't receive the appropriate error message...
   - This bug was hidden during the first developing stages, as the shutdown
     sequence was not working correct, so the session was not cached.
 
 1999/09/09     == Released 0.3.6 ==
 
 1999/09/09
-  - Added a missing Â´#ifdef HAS_SSL #endif´ in smtp_connect.c.
+  - Added a missing '#ifdef HAS_SSL #endif' in smtp_connect.c.
     Noted by Jeff Johnson <jeff@websitefactory.net>.
   - HINT:
     On 1999/09/06 a new "stable" version of postfix was released.
 1999/04/14
   - Ported from OpenSSL the BIO_callback functions to dump out the negotiation
     and transmission for debugging purposes. The functions are triggered
-    by the the new loglevels 3 and 4.
+    by the new loglevels 3 and 4.
   - Call SSL_free() to get rid of the SSL connection structure not used
     anymore.
 
index 701d0c7cdf085fea5e2fa8e40d86eb702256a6c3..6a817c4956d8602adfdb5ec2f61f1dc293cc20e8 100644 (file)
@@ -1,18 +1,22 @@
 Wish list:
 
-       Factor out the new get_nested_dict_name() function from
-       proxymap.c, make it a library function, and reuse it in
-       postconf_dbms.c.
+       Things to do before the stable release:
+
+       make typo-check, HTML validator check,
+       mantools/missing-proxy-read-maps, mantools/check-postlink.
 
-       Convert the proxymap protol into "server speaks first".
+       Disable -DSNAPSHOT and -DNONPROD in makedefs.
 
        Fix code that still uses "long" for data_size and data_offset,
        and that uses "%ld" in sscanf().
 
-       A smart query service for live Postfix tables that outputs JSON?
+       For consistent naming (tlsproxy_client_mumble <> smtp_tls_mumble),
+       rename tlsproxy_client_level to tlsproxy_client_security_level,
+       and tlsproxy_client_policy to tlsproxy_client_policy_maps.
+       This requires backwards-compatible defaults and documentation
+       updates.
 
-       proxy_read_maps needs a dedicated matcher that looks
-       inside pipemap:{}. Maybe steal some code from postconf.
+       A smart query service for live Postfix tables that outputs JSON?
 
        Add a pointer to
        http://mmogilvi.users.sourceforge.net/software/oauthbearer.html
@@ -124,13 +128,6 @@ Wish list:
        Replace ad-hoc code for pipe(8) flags handling, with
        infrastructure that was built for smtp(8).
 
-       Things to do before the stable release:
-
-       Spell-check, double-word check, HTML validator check,
-       mantools/missing-proxy-read-maps check.
-
-       Disable -DSNAPSHOT and -DNONPROD in makedefs.
-
        Move map descriptions from postconf(1) to DATABASE_README
        and point there. The text in DATABASE_README is less complete
        than that in postconf(1).
index 2ad88e1794b8637d63d2e7890e1dbe4da4734aca..366521601d2e4b3b981fe45c295b47a9dc7aa8f1 100755 (executable)
@@ -138,7 +138,7 @@ do {
        "The 's' option shows sender domain counts.\n".
        "The 'p' option shows address counts by for parent domains.\n".
        "Parent domains are shown with a leading '.' before the domain name.\n".
-       "Parent domains are only shown if the the domain is not a TLD, and at\n".
+       "Parent domains are only shown if the domain is not a TLD, and at\n".
        "least <min_subdomains> (default 5) subdomains are shown in the output.\n\n".
 
        "The bucket age ranges in units of <bucket_time> minutes are\n".
index 257339bfb07742c47d3e0aa93d687e805c4863a6..97892eb7393d337cb2775cb4866f073b80c45683 100644 (file)
@@ -31,7 +31,7 @@
 # 
 #        Alternatively,  the  table  can  be  provided  as  a regu-
 #        lar-expression map where patterns  are  given  as  regular
-#        expressions,  or  lookups  can  be  directed  to TCP-based
+#        expressions,  or  lookups  can  be directed to a TCP-based
 #        server. In those cases, the lookups are done in a slightly
 #        different way as described below under "REGULAR EXPRESSION
 #        TABLES" or "TCP-BASED TABLES".
 # 
 #        DEFER_IF_PERMIT optional text...
 #               Defer  the  request if some later restriction would
-#               result in a an explicit or implicit PERMIT  action.
+#               result in an explicit or  implicit  PERMIT  action.
 #               Reply  with "$access_map_defer_code 4.7.1  optional
 #               text..." when the optional text is specified,  oth-
 #               erwise reply with a generic error response message.
index 9881f4ef8bffca92b87f69fea5ef45d8b7776738..4957fcc4fc1b2e1de914d571bf5a6ffadf96a452 100644 (file)
@@ -29,7 +29,7 @@
 # 
 #        Alternatively,  the  table  can  be  provided  as  a regu-
 #        lar-expression map where patterns  are  given  as  regular
-#        expressions,  or  lookups  can  be  directed  to TCP-based
+#        expressions,  or  lookups  can  be directed to a TCP-based
 #        server. In those cases, the lookups are done in a slightly
 #        different way as described below under "REGULAR EXPRESSION
 #        TABLES" or "TCP-BASED TABLES".
 # 
 #        masquerade_exceptions (empty)
 #               Optional list of user names that are not  subjected
-#               to  address  masquerading,  even when their address
-#               matches $masquerade_domains.
+#               to  address masquerading, even when their addresses
+#               match $masquerade_domains.
 # 
 #        mydestination  ($myhostname,  localhost.$mydomain,  local-
 #        host)
index 9d293683a641d8df97f7bd477e48ab2b43e2c736..f371eb9a5c9ffe38a9590f779c9473d342982e31 100644 (file)
@@ -42,8 +42,8 @@
 # 
 #        Alternatively, the  table  can  be  provided  as  a  regu-
 #        lar-expression  map  where  patterns  are given as regular
-#        expressions, or  lookups  can  be  directed  to  TCP-based
-#        server.  In those case, the lookups are done in a slightly
+#        expressions, or lookups can be  directed  to  a  TCP-based
+#        server. In those cases, the lookups are done in a slightly
 #        different way as described below under "REGULAR EXPRESSION
 #        TABLES" or "TCP-BASED TABLES".
 # 
 #        This  section  describes how the table lookups change when
 #        lookups are directed to a TCP-based server. For a descrip-
 #        tion of the TCP client/server lookup protocol, see tcp_ta-
-#        ble(5).  This feature is not available up to and including
-#        Postfix version 2.4.
+#        ble(5).  This feature is  available  in  Postfix  2.5  and
+#        later.
 # 
 #        Each lookup operation uses the entire address once.  Thus,
 #        user@domain mail addresses are not broken  up  into  their
 #        The  text  below  provides  only  a parameter summary. See
 #        postconf(5) for more details including examples.
 # 
-#        smtp_generic_maps
-#               Address  mapping  lookup  table  for  envelope  and
-#               header  sender and recipient addresses while deliv-
-#               ering mail via SMTP.
+#        smtp_generic_maps (empty)
+#               Optional lookup tables that perform address rewrit-
+#               ing in the Postfix SMTP client, typically to trans-
+#               form a locally valid address into a globally  valid
+#               address when sending mail across the Internet.
 # 
-#        propagate_unmatched_extensions
-#               A list of address rewriting  or  forwarding  mecha-
-#               nisms  that propagate an address extension from the
-#               original address to the result.   Specify  zero  or
-#               more   of   canonical,   virtual,  alias,  forward,
-#               include, or generic.
+#        propagate_unmatched_extensions (canonical, virtual)
+#               What  address  lookup tables copy an address exten-
+#               sion from the lookup key to the lookup result.
 # 
 #        Other parameters of interest:
 # 
-#        inet_interfaces
-#               The network interface addresses  that  this  system
-#               receives mail on.  You need to stop and start Post-
-#               fix when this parameter changes.
-# 
-#        proxy_interfaces
-#               Other interfaces that this machine receives mail on
-#               by way of a proxy agent or network address transla-
-#               tor.
-# 
-#        mydestination
-#               List of domains that  this  mail  system  considers
-#               local.
-# 
-#        myorigin
-#               The domain that is appended to locally-posted mail.
-# 
-#        owner_request_special
-#               Give special treatment to owner-xxx and xxx-request
-#               addresses.
+#        inet_interfaces (all)
+#               The network interface addresses that this mail sys-
+#               tem receives mail on.
+# 
+#        proxy_interfaces (empty)
+#               The network interface addresses that this mail sys-
+#               tem receives mail on by way of a proxy  or  network
+#               address translation unit.
+# 
+#        mydestination  ($myhostname,  localhost.$mydomain,  local-
+#        host)
+#               The  list  of  domains  that  are delivered via the
+#               $local_transport mail delivery transport.
+# 
+#        myorigin ($myhostname)
+#               The domain name that locally-posted mail appears to
+#               come  from,  and that locally posted mail is deliv-
+#               ered to.
+# 
+#        owner_request_special (yes)
+#               Enable special treatment for owner-listname entries
+#               in the aliases(5) file, and don't split owner-list-
+#               name and listname-request address  localparts  when
+#               the recipient_delimiter is set to "-".
 # 
 # SEE ALSO
 #        postmap(1), Postfix lookup table manager
index 562e4dfc37868f3fffd8be2e7a14e3c762a89a0d..47de434638ddb338867d480353177314b89c4b08 100644 (file)
@@ -31,7 +31,7 @@
 #
 # The level below is what should be used with new (not upgrade) installs.
 #
-compatibility_level = 3.6
+compatibility_level = 3.7
 
 # SOFT BOUNCE
 #
@@ -251,11 +251,14 @@ unknown_local_recipient_reject_code = 550
 # You can specify the list of "trusted" network addresses by hand
 # or you can let Postfix do it for you (which is the default).
 #
-# By default (mynetworks_style = subnet), Postfix "trusts" SMTP
-# clients in the same IP subnetworks as the local machine.
-# On Linux, this works correctly only with interfaces specified
-# with the "ifconfig" command.
+# By default (mynetworks_style = host), Postfix "trusts" only
+# the local machine.
 # 
+# Specify "mynetworks_style = subnet" when Postfix should "trust"
+# SMTP clients in the same IP subnetworks as the local machine.
+# On Linux, this works correctly only with interfaces specified
+# with the "ifconfig" or "ip" command.
+#
 # Specify "mynetworks_style = class" when Postfix should "trust" SMTP
 # clients in the same IP class A/B/C networks as the local machine.
 # Don't do this with a dialup site - it would cause Postfix to "trust"
@@ -285,14 +288,16 @@ unknown_local_recipient_reject_code = 550
 #mynetworks = hash:/etc/postfix/network_table
 
 # The relay_domains parameter restricts what destinations this system will
-# relay mail to.  See the smtpd_recipient_restrictions description in
-# postconf(5) for detailed information.
+# relay mail to.  See the smtpd_relay_restrictions and
+# smtpd_recipient_restrictions descriptions in  postconf(5) for detailed
+# information.
 #
 # By default, Postfix relays mail
-# - from "trusted" clients (IP address matches $mynetworks) to any destination,
+# - from "trusted" clients (IP address matches $mynetworks, or is
+#   SASL authenticated) to any destination,
 # - from "untrusted" clients to destinations that match $relay_domains or
 #   subdomains thereof, except addresses with sender-specified routing.
-# The default relay_domains value is $mydestination.
+# The default relay_domains value is empty.
 # 
 # In addition to the above, the Postfix SMTP server by default accepts mail
 # that Postfix is final destination for:
@@ -312,7 +317,7 @@ unknown_local_recipient_reject_code = 550
 # list this system as their primary or backup MX host. See the
 # permit_mx_backup restriction description in postconf(5).
 #
-#relay_domains = $mydestination
+#relay_domains = 
 
 # INTERNET OR INTRANET
 
index 975266b8b4a590066b14f15d393fdfd55f37b5c8..2a7d99b9a97fefd369f4ef8cebed998340ef99ec 100644 (file)
 #      should not be in the command search path of any users.
 # .IP command_directory
 #      The directory for Postfix administrative commands. This
-#      directory should be in the command search path of adminstrative users.
+#      directory should be in the command search path of administrative users.
 # .IP queue_directory
 #      The directory for Postfix queues.
 # .IP data_directory
index 934228d1627f86f7195bd12380d7a5179eefe810..1b317554090ded4237cfa32d23e1cb6f2a1d0763 100644 (file)
@@ -16,7 +16,7 @@ umask 022
 #  daemon_directory            - From primary instance
 #  meta_directory              - From primary instance
 #  shlib_directory             - From primary instance
-#  config_directroy            - config_directory of target instance
+#  config_directory            - config_directory of target instance
 #  queue_directory             - queue_directory of target instance
 #  data_directory              - data_directory of target instance
 #
index e50edfd1842f59ea8f8590a2b31007422d1c590e..90f63ecf20954516d7107390ca8c24ead668ea64 100644 (file)
@@ -24,7 +24,7 @@
 # 
 #        Alternatively, the  table  can  be  provided  as  a  regu-
 #        lar-expression  map  where  patterns  are given as regular
-#        expressions, or  lookups  can  be  directed  to  TCP-based
+#        expressions, or lookups can be  directed  to  a  TCP-based
 #        server.  In those case, the lookups are done in a slightly
 #        different way as described below under "REGULAR EXPRESSION
 #        TABLES" or "TCP-BASED TABLES".
 #        description of regular expression lookup table syntax, see
 #        regexp_table(5) or pcre_table(5). For a description of the
 #        TCP client/server table lookup protocol, see tcp_table(5).
-#        This feature is not available up to and including  Postfix
-#        version 2.4.
+#        This feature is available in Postfix 2.5 and later.
 # 
-#        Each  pattern  is  a regular expression that is applied to
+#        Each pattern is a regular expression that  is  applied  to
 #        the entire address being looked up. Thus, user@domain mail
-#        addresses  are  not  broken up into their user and @domain
+#        addresses are not broken up into their  user  and  @domain
 #        constituent parts, nor is user+foo broken up into user and
 #        foo.
 # 
-#        Patterns  are applied in the order as specified in the ta-
-#        ble, until a pattern is  found  that  matches  the  search
+#        Patterns are applied in the order as specified in the  ta-
+#        ble,  until  a  pattern  is  found that matches the search
 #        string.
 # 
-#        Results  are  the  same as with indexed file lookups, with
-#        the additional feature that parenthesized substrings  from
+#        Results are the same as with indexed  file  lookups,  with
+#        the  additional feature that parenthesized substrings from
 #        the pattern can be interpolated as $1, $2 and so on.
 # 
 # TCP-BASED TABLES
-#        This  section  describes how the table lookups change when
+#        This section describes how the table lookups  change  when
 #        lookups are directed to a TCP-based server. For a descrip-
 #        tion of the TCP client/server lookup protocol, see tcp_ta-
-#        ble(5).  This feature is not available up to and including
-#        Postfix version 2.4.
+#        ble(5).   This  feature  is  available  in Postfix 2.5 and
+#        later.
 # 
 #        Each lookup operation uses the entire address once.  Thus,
-#        user@domain mail addresses are not broken  up  into  their
+#        user@domain  mail  addresses  are not broken up into their
 #        user and @domain constituent parts, nor is user+foo broken
 #        up into user and foo.
 # 
 #        Results are the same as with indexed file lookups.
 # 
 # BUGS
-#        The table format does not understand quoting  conventions.
+#        The  table format does not understand quoting conventions.
 # 
 # CONFIGURATION PARAMETERS
-#        The  following main.cf parameters are especially relevant.
-#        The text below provides  only  a  parameter  summary.  See
+#        The following main.cf parameters are especially  relevant.
+#        The  text  below  provides  only  a parameter summary. See
 #        postconf(5) for more details including examples.
 # 
-#        relocated_maps
-#               List of lookup tables for relocated users or sites.
+#        relocated_maps (empty)
+#               Optional lookup tables with new contact information
+#               for users or domains that no longer exist.
 # 
 #        Other parameters of interest:
 # 
-#        inet_interfaces
-#               The network interface addresses  that  this  system
-#               receives mail on.  You need to stop and start Post-
-#               fix when this parameter changes.
+#        inet_interfaces (all)
+#               The network interface addresses that this mail sys-
+#               tem receives mail on.
 # 
-#        mydestination
-#               List of domains that  this  mail  system  considers
-#               local.
+#        mydestination  ($myhostname,  localhost.$mydomain,  local-
+#        host)
+#               The list of domains  that  are  delivered  via  the
+#               $local_transport mail delivery transport.
 # 
-#        myorigin
-#               The domain that is appended to locally-posted mail.
+#        myorigin ($myhostname)
+#               The domain name that locally-posted mail appears to
+#               come from, and that locally posted mail  is  deliv-
+#               ered to.
 # 
-#        proxy_interfaces
-#               Other interfaces that this machine receives mail on
-#               by way of a proxy agent or network address transla-
-#               tor.
+#        proxy_interfaces (empty)
+#               The network interface addresses that this mail sys-
+#               tem receives mail on by way of a proxy  or  network
+#               address translation unit.
 # 
 # SEE ALSO
 #        trivial-rewrite(8), address resolver
 #        postconf(5), configuration parameters
 # 
 # README FILES
-#        Use "postconf readme_directory" or  "postconf  html_direc-
+#        Use  "postconf  readme_directory" or "postconf html_direc-
 #        tory" to locate this information.
 #        DATABASE_README, Postfix lookup table overview
 #        ADDRESS_REWRITING_README, address rewriting guide
 # 
 # LICENSE
-#        The  Secure  Mailer  license must be distributed with this
+#        The Secure Mailer license must be  distributed  with  this
 #        software.
 # 
 # AUTHOR(S)
index 1dcd787bc7bd1cb0dae6eecf86400cbcb8852c12..bad7739512c352ebf4b9d2f141d4991d939cb5a7 100644 (file)
@@ -61,7 +61,7 @@
 # 
 #        Alternatively,  the  table  can  be  provided  as  a regu-
 #        lar-expression map where patterns  are  given  as  regular
-#        expressions,  or  lookups  can  be  directed  to TCP-based
+#        expressions,  or  lookups  can  be directed to a TCP-based
 #        server. In those case, the lookups are done in a  slightly
 #        different way as described below under "REGULAR EXPRESSION
 #        TABLES" or "TCP-BASED TABLES".
index da9cd655cf5617bbdf476c058cf09153abaa0416..96390fee80e5962e1db383292caafdc690baefb1 100644 (file)
@@ -51,7 +51,7 @@
 # 
 #        Alternatively,  the  table  can  be  provided  as  a regu-
 #        lar-expression map where patterns  are  given  as  regular
-#        expressions,  or  lookups  can  be  directed  to TCP-based
+#        expressions,  or  lookups  can  be directed to a TCP-based
 #        server. In those case, the lookups are done in a  slightly
 #        different way as described below under "REGULAR EXPRESSION
 #        TABLES" or "TCP-BASED TABLES".
@@ -99,8 +99,8 @@
 #               tination,  or when it is listed in $inet_interfaces
 #               or $proxy_interfaces.
 # 
-#               This functionality overlaps with  functionality  of
-#               the  local  aliases(5)  database. The difference is
+#               This functionality overlaps with the  functionality
+#               of the local aliases(5) database. The difference is
 #               that virtual(5) mapping can be applied to non-local
 #               addresses.
 # 
 # 
 #        The  propagate_unmatched_extensions   parameter   controls
 #        whether  an  unmatched  address extension (+foo) is propa-
-#        gated to the result of table lookup.
+#        gated to the result of table lookup.
 # 
 # VIRTUAL ALIAS DOMAINS
 #        Besides virtual aliases, the virtual alias table can  also
 #        This  section  describes how the table lookups change when
 #        lookups are directed to a TCP-based server. For a descrip-
 #        tion of the TCP client/server lookup protocol, see tcp_ta-
-#        ble(5).  This feature is not available up to and including
-#        Postfix version 2.4.
+#        ble(5).  This feature is  available  in  Postfix  2.5  and
+#        later.
 # 
 #        Each lookup operation uses the entire address once.  Thus,
 #        user@domain mail addresses are not broken  up  into  their
 #        virtual_alias_maps ($virtual_maps)
 #               Optional lookup tables  that  alias  specific  mail
 #               addresses  or  domains  to  other  local  or remote
-#               address.
+#               addresses.
 # 
 #        virtual_alias_domains ($virtual_alias_maps)
-#               Postfix is final destination for the specified list
-#               of  virtual  alias  domains,  that  is, domains for
+#               Postfix is the final destination for the  specified
+#               list of virtual alias domains, that is, domains for
 #               which all addresses are  aliased  to  addresses  in
 #               other local or remote domains.
 # 
index a20b5096254215163c6bfe5c214758a53fb6a4f0..a2d83188ce5a5bd4a193d4e1270f8ab383b261af 100644 (file)
@@ -493,8 +493,8 @@ document. </p> </dd>
 Rewrite "user@host" to "user@host.$<a href="postconf.5.html#mydomain">mydomain</a>" </dt>
 
 <dd> <p> This feature is controlled by the boolean <a href="postconf.5.html#append_dot_mydomain">append_dot_mydomain</a>
-parameter (default: yes).  The purpose is to get consistent treatment
-of different forms of the same hostname. </p>
+parameter (default: Postfix â‰¥ 3.0: no, Postfix < 3.0: yes).  The purpose
+is to get consistent treatment of different forms of the same hostname. </p>
 
 <p> NOTE: Postfix versions 2.2 and later rewrite message headers
 from remote SMTP clients only if the client matches the
index 85effce3727309047395c747262d2132088c87fc..f4e26edde7c5be322776ddb769b240a69369cd0c 100644 (file)
@@ -302,7 +302,7 @@ many users configure their email addresses as <i>username@example.com</i>,
 messages with DSN turned on will trigger the REJECT action in the
 previous section. </p>
 
-<p> If you have such clients then you can to exclude their Message-ID
+<p> If you have such clients then you can exclude their Message-ID
 strings with the two "<tt>Message-ID:.* &lt;!&amp;!</tt>" patterns
 that are shown in the previous section.  Otherwise you will not be
 able to use the two backscatter rules to stop forged Message ID
@@ -382,7 +382,8 @@ above techniques to recognize forgeries.  </p>
 because there is a lot of variation in report formats.  The following
 is only a small example of message header patterns.  For a large
 collection of header and body patterns that recognize virus
-notification email, see <a href="http://www.dkuug.dk/keld/virus/">http://www.dkuug.dk/keld/virus/</a>
+notification email, see
+<a href="https://web.archive.org/web/20100317123907/http://std.dkuug.dk/keld/virus/">https://web.archive.org/web/20100317123907/http://std.dkuug.dk/keld/virus/</a>
 or <a href="http://www.t29.dk/antiantivirus.txt">http://www.t29.dk/antiantivirus.txt</a>.  </p>
 
 <blockquote>
index e206c04a6a89d28f92a479a6afae22ed5e144297..ccede706f06ac6f33a2be2f6d8214b8224992ff1 100644 (file)
@@ -264,7 +264,7 @@ clients that send mail from outside an authorized network block.
 This is explained in the <a href="SASL_README.html">SASL_README</a> and <a href="TLS_README.html">TLS_README</a> documents. </p>
 
 <p> IMPORTANT: If your machine is connected to a wide area network
-then the "<a href="postconf.5.html#mynetworks_style">mynetworks_style</a> = host" setting may be too friendly. </p>
+then the "<a href="postconf.5.html#mynetworks_style">mynetworks_style</a> = subnet" setting may be too friendly. </p>
 
 <p> Examples (specify only one of the following): </p>
 
@@ -286,13 +286,15 @@ parameter value.
 
 <ul>
 
-<li> <p> Specify "<a href="postconf.5.html#mynetworks_style">mynetworks_style</a> = host" when Postfix should
-forward mail from only the local machine. </p>
+<li> <p> Specify "<a href="postconf.5.html#mynetworks_style">mynetworks_style</a> = host" (the default when
+<a href="postconf.5.html#compatibility_level">compatibility_level</a> &ge; 2) when Postfix should forward mail from
+only the local machine. </p>
 
-<li> <p> Specify "<a href="postconf.5.html#mynetworks_style">mynetworks_style</a> = subnet" (the default) when
-Postfix should forward mail from SMTP clients in the same IP
-subnetworks as the local machine.  On Linux, this works correctly
-only with interfaces specified with the "ifconfig" command. </p>
+<li> <p> Specify "<a href="postconf.5.html#mynetworks_style">mynetworks_style</a> = subnet" (the default when
+<a href="postconf.5.html#compatibility_level">compatibility_level</a> &lt; 2) when Postfix should forward mail from
+SMTP clients in the same IP subnetworks as the local machine.
+On Linux, this works correctly only with interfaces specified
+with the "ifconfig" or "ip" command. </p>
 
 <li> <p> Specify "<a href="postconf.5.html#mynetworks_style">mynetworks_style</a> = class" when Postfix should
 forward mail from SMTP clients in the same IP class A/B/C networks
index 56532fc3082c4611315a78a0b262c0e29e72b3a6..3cc1daf83b088fc5013e099413229c9b8bcb243a 100644 (file)
@@ -170,7 +170,7 @@ then turn off Postfix's CHUNKING announcement as described above.
 <p> In <a href="https://tools.ietf.org/html/rfc4468">RFC 4468</a>, the authors write that a client may pipeline
 commands, and that after sending BURL LAST or BDAT LAST, a client
 must wait for the server's response. But as this text does not
-appear in <a href="https://tools.ietf.org/html/rfc3030">RFC 3030</a> which defines BDAT, is it a useless restriction
+appear in <a href="https://tools.ietf.org/html/rfc3030">RFC 3030</a> which defines BDAT, it is a useless restriction
 that Postfix will not enforce. </p>
 
 </body>
index 74d138d47787631ff679d14ef57fe79f455cb367..3cd3dec89ce3cf78d4b4a808c1935054057e1dba 100644 (file)
@@ -458,8 +458,8 @@ of duplication. </p>
 Postfix versions do not support the <a href="postconf.5.html#receive_override_options">receive_override_options</a> feature.
 </p>
 
-<p> If you are MX service provider and want to apply disable
-head/body checks for some domains, you can configure ONE Postfix
+<p> If you are an MX service provider and want to enable header/body
+checks only for some domains, you can configure ONE Postfix
 instance with multiple SMTP server IP addresses in <a href="master.5.html">master.cf</a>. Each
 address provides a different service. </p>
 
index 1748cc58f36a3b74c3f1422e00b0419ea3fc2016..39ee716728f3576883abfd11d17ef055c923b89e 100644 (file)
@@ -245,7 +245,7 @@ setting mynetworks_style=subnet</a> </h2>
 
 <p> The <a href="postconf.5.html#mynetworks_style">mynetworks_style</a> default value has changed from "subnet"
 to "host". This parameter is used to implement the "<a href="postconf.5.html#permit_mynetworks">permit_mynetworks</a>"
-feature. The change could in unexpected 'access denied' errors after
+feature. The change could cause unexpected 'access denied' errors after
 Postfix is updated from an older version. The backwards-compatibility
 safety net is designed to prevent such surprises. </p>
 
index d541fba284bb4ddb97db7d18057c1e762e9b008f..e18a05302f2d437e604f48bb4234e450bd9a2721 100644 (file)
@@ -178,7 +178,7 @@ bgcolor="#f0f0ff"> <a href="scache.8.html">scache(8)</a> </td> </tr>
 <p> The connection cache can be searched by destination domain name
 (the right-hand side of the recipient address) and by the IP address
 of the host at the other end of the connection. This allows Postfix
-to reuse a connection even when the remote host is mail server for
+to reuse a connection even when the remote host is mail server for
 domains with different names.  </p>
 
 <h2><a name="configuration">Connection cache configuration </a></h2>
index dab3bd22aced5f3f5a70f59680dd7a85a1e0e782..1305fdbe3ee798fff03e13519d0c57a210957a21 100644 (file)
@@ -98,7 +98,7 @@ lookup key exists.  Any non-empty lookup result value may be used
 here: the lookup result is not used. Examples
 are the <a href="postconf.5.html#local_recipient_maps">local_recipient_maps</a> that determine what local recipients
 Postfix accepts in mail from the network, the <a href="postconf.5.html#mydestination">mydestination</a> parameter
-that specifies what domains Postfix delivers locally, or the
+that specifies what domains Postfix delivers locally for, or the
 <a href="postconf.5.html#mynetworks">mynetworks</a> parameter that specifies the IP addresses of trusted
 clients or client networks.  Technically, these are lists, not
 tables. Despite the difference, Postfix lists are described here
@@ -326,7 +326,7 @@ also the <a href="DATABASE_README.html#types">static</a>: map type. </dd>
 
 <dt> <b>internal</b> </dt>
 
-<dd> A non-shared, in-memory hash table. Its content are lost when
+<dd> A non-shared, in-memory hash table. Its contents are lost when
 a process terminates. </dd>
 
 <dt> <b>lmdb</b> </dt>
index a4e8128a58d57026c5e5c3815b724847ac9a8250..a2cec547b196d46ddc57e03a26498ec7e9d691c7 100644 (file)
@@ -577,11 +577,11 @@ or 1000+ lines of <b>postconf</b> command output. </p>
 </ul>
 
 <li> <p> Better, provide output from the <b>postfinger</b> tool.
-This can be found at <a href="http://ftp.wl0.org/SOURCES/postfinger">http://ftp.wl0.org/SOURCES/postfinger</a>.  </p>
+This can be found at <a href="https://github.com/ford--prefect/postfinger">https://github.com/ford--prefect/postfinger</a>.  </p>
 
 <li> <p> If the problem is SASL related, consider including the
 output from the <b>saslfinger</b> tool. This can be found at
-<a href="http://postfix.state-of-mind.de/patrick.koetter/saslfinger/">http://postfix.state-of-mind.de/patrick.koetter/saslfinger/</a>. </p>
+<a href="https://packages.debian.org/search?keywords=sasl2-bin">https://packages.debian.org/search?keywords=sasl2-bin</a>. </p>
 
 <li> <p> If the problem is about too much mail in the queue, consider
 including output from the <b>qshape</b> tool, as described in the
index fd685bd406c9a791f88b1ac4c968184ce0190aab..4fa0a029bd23ccdcceb1b7fd5e2f9ec50accb7b8 100644 (file)
@@ -176,7 +176,7 @@ and is not recommended for now.  </p>
 
 <h3> EDH Server support </h3>
 
-<p> Postfix &ge; 2.2 support 1024-bit-prime EDH out of the box,
+<p> Postfix &ge; 2.2 supports 1024-bit-prime EDH out of the box,
 with no additional configuration, but you may want to override the
 default prime to be 2048 bits long, and you may want to regenerate
 your primes periodically. See the <a href="#quick-start">quick-start</a>
@@ -218,7 +218,7 @@ for the recommended configuration to work around this issue.  </p>
 
 <h3> EECDH Server support </h3>
 
-<p> Postfix &ge; 2.6 support NIST P-256 EECDH when built with OpenSSL
+<p> Postfix &ge; 2.6 supports NIST P-256 EECDH when built with OpenSSL
 &ge; 1.0.0.  When the remote SMTP client also supports EECDH and
 implements the P-256 curve, forward secrecy just works.  </p>
 
@@ -530,7 +530,7 @@ This pattern is likely to persist until some new key-exchange
 mechanism is invented that also supports forward secrecy.  </p>
 
 <p> The actual key length and raw algorithm key length 
-are generally the same with non-export ciphers, but may they
+are generally the same with non-export ciphers, but they may
 differ for the legacy export ciphers where the actual key 
 is artificially shortened. </p>
 
index 91a920d57d97978651b496e02aeb22d14cdd0aa8..2070e3467de43834d2fad67432bf197e42d7ef25 100644 (file)
@@ -534,7 +534,7 @@ built, with "make install" or "make upgrade". </p>
 </pre>
 </blockquote>
 
-<p> As with the command "make makefiles, the command "make
+<p> As with the command "make makefiles", the command "make
 install/upgrade name=value..." will replace the string MAIL_VERSION
 at the end of a configuration parameter value with the Postfix
 release version.  Do not try to specify something like $<a href="postconf.5.html#mail_version">mail_version</a>
@@ -795,7 +795,7 @@ $ make
 one or more non-default object libraries. Postfix 3.0 and later
 specify some of their database library dependencies with <a href="CDB_README.html">AUXLIBS_CDB</a>,
 <a href="LDAP_README.html">AUXLIBS_LDAP</a>, <a href="LMDB_README.html">AUXLIBS_LMDB</a>, <a href="MYSQL_README.html">AUXLIBS_MYSQL</a>, <a href="PCRE_README.html">AUXLIBS_PCRE</a>, <a href="PGSQL_README.html">AUXLIBS_PGSQL</a>,
-<a href="SDBM_README.html">AUXLIBS_SDBM</a>, and <a href="SQLITE_README.html">AUXLIBS_SQLITE</a>, respectively. </td> </tr>
+AUXLIBS_SDBM, and <a href="SQLITE_README.html">AUXLIBS_SQLITE</a>, respectively. </td> </tr>
 
 <tr> <td colspan="2"> CC=compiler_command</td> <td> Specifies a
 non-default compiler. On many systems, the default is <tt>gcc</tt>.
@@ -1240,7 +1240,7 @@ of: </p>
 
 <p> Follow the instructions in the "<a href="#mandatory">Mandatory
 configuration file edits</a>" in section 10, and review the "<a
-name="#hamlet">To chroot or not to chroot</a>" text in section
+href="#hamlet">To chroot or not to chroot</a>" text in section
 11. </p>
 
 <p> Start the Postfix system: </p>
@@ -1565,6 +1565,7 @@ following commands: </p>
 <pre>
 # newaliases
 # sendmail -bi
+# postalias /etc/aliases (pathname is system dependent!)
 </pre>
 </blockquote>
 
index c1211e9127ad84ed25b750fd1fb4941262a22196..acf24b9014cfa744dada1bdef4d0ff793193cd56 100644 (file)
@@ -153,7 +153,7 @@ setting looks like: </p>
 </blockquote>
 
 <p> If you did specify the <a href="postconf.5.html#mynetworks">mynetworks</a> parameter value in
-<a href="postconf.5.html">main.cf</a>, you need update the <a href="postconf.5.html#mynetworks">mynetworks</a> value to include
+<a href="postconf.5.html">main.cf</a>, you need to update the <a href="postconf.5.html#mynetworks">mynetworks</a> value to include
 the IPv6 networks the system is in. Be sure to specify IPv6 address
 information inside "<tt>[]</tt>", like this: </p>
 
index b4f938c132a396ece0b8b7680b31126af467f0a3..d019dba47e5bedbbed5222cfe9518b18b55e10d5 100644 (file)
@@ -533,7 +533,7 @@ query_filter = (&amp;(mailacceptinggeneralid=%s)(!(|(maildrop="*|*")(maildrop="*
 </pre>
 </blockquote>
 
-<li> <p> And for that matter, even for aliases, you may not want users able to
+<li> <p> And for that matter, even for aliases, you may not want users to be able to
   specify their maildrops as programs, includes, etc. This might be
   particularly pertinent on a "sealed" server where they don't have
   local UNIX accounts, but exist only in LDAP and Cyrus. You might allow
index b682fe9ab58c3a4a78ec0a5084fa3bcf7c7291a8..84d16e20657e40310cfbde6a7bae0614d5905598 100644 (file)
 <h2> Host lookup issues </h2>
 
 <p> By default Linux /etc/hosts lookups do not support multiple IP
-address per hostname. This causes warnings from the Postfix SMTP
+addresses per hostname. This causes warnings from the Postfix SMTP
 server that "hostname XXX does not resolve to address YYY", and is
 especially a problem with hosts that have both IPv4 and IPv6
-addresses.  To fix, turn on support for multiple IP addresses: </p>
+addresses.  To fix this, turn on support for multiple IP addresses: </p>
 
 <blockquote>
 <pre>
@@ -73,7 +73,7 @@ library routines.  See the <a href="DB_README.html">DB_README</a> file for furth
 
 <p> On RedHat Linux 7.1 and later <b>procmail</b> no longer has
 permission
-to write the mail spool directory. Workaround: </p>
+to write to the mail spool directory. Workaround: </p>
 
 <blockquote>
 <pre>
index ae267eec75be443bb03cd742782ed3fc6662c890..32e33677e45880a6ca52cef8087065374ff2a598 100644 (file)
@@ -129,7 +129,7 @@ program is configured with the <a href="postconf.5.html#maillog_file_compressor"
 
 <ul>
 
-<li> <p> This command will not rotate a logfile with pathname under
+<li> <p> This command will not rotate a logfile with pathname under
 the /dev directory, such as /dev/stdout. </p>
 
 <li> <p> This command does not (yet) remove old logfiles. </p>
@@ -146,7 +146,7 @@ the /dev directory, such as /dev/stdout. </p>
 in the background, as well as non-daemon programs for local mail
 submission or Postfix management.
 
-<li> <p> Logging to Postfix logfile or stdout requires the Postfix
+<li> <p> Logging to the Postfix logfile or stdout requires the Postfix
 <a href="postlogd.8.html">postlogd(8)</a> service. This ensures that simultaneous logging from
 different programs will not get mixed up. </p>
 
index fd658dcd932bdffc791de851194e7dccaaaf5d2b..1c0ecae3e6e40c410f1aa8745d15822c7de0572b 100644 (file)
@@ -309,7 +309,8 @@ from other Milter applications.  </p>
 <dt> <b>unix:</b><i>pathname</i> </dt> <dd><p>Connect to the local
 UNIX-domain server that is bound to the specified pathname. If the
 <a href="smtpd.8.html">smtpd(8)</a> or <a href="cleanup.8.html">cleanup(8)</a> process runs chrooted, an absolute pathname
-is interpreted relative to the Postfix queue directory.</p> </dd>
+is interpreted relative to the Postfix queue directory. On many
+systems, <b>local</b> is a synonym for <b>unix</b></p> </dd>
 
 <dt> <b> inet:</b><i>host</i><b>:</b><i>port</i> </dt> <dd> <p>
 Connect to the specified TCP port on the specified local or remote
@@ -758,7 +759,7 @@ transaction (for example; queue ID, sender, or recipient). </p>
 you may specify macro default values with the <a href="postconf.5.html#milter_macro_defaults">milter_macro_defaults</a>
 parameter. Specify zero or more <i>name=value</i> pairs separated by
 comma or whitespace; you may even specify macro names that Postfix does
-know about! </p>
+not know about! </p>
 
 <h2><a name="workarounds">Workarounds</a></h2>
 
index 76be367b5efa60e508f1ffabb6543b3db2076bf1..da8d801be1ce867d4b7bcb447d798ddcdb6d60c3 100644 (file)
@@ -259,7 +259,7 @@ EOF
 </pre>
 </blockquote>
 
-<p> The test message should be delivered the members of the "mtaadmin"
+<p> The test message should be delivered to the members of the "mtaadmin"
 address group (or whatever address group you choose) with the
 following headers: </p>
 
@@ -378,7 +378,7 @@ post-filter re-injection SMTP service. Typical additions include: </p>
     <a href="postconf.5.html#smtpd_relay_restrictions">smtpd_relay_restrictions</a> =
     <a href="postconf.5.html#smtpd_recipient_restrictions">smtpd_recipient_restrictions</a> = <a href="postconf.5.html#permit_mynetworks">permit_mynetworks</a>, reject
 
-    # Tolerate occasional high latency in the  content filter.
+    # Tolerate occasional high latency in the content filter.
     #
     <a href="postconf.5.html#smtpd_timeout">smtpd_timeout</a> = 1200s
 
@@ -637,7 +637,7 @@ of any users, including the $<a href="postconf.5.html#mail_owner">mail_owner</a>
 <li><p> The <a href="postconf.5.html">main.cf</a>, <a href="master.5.html">master.cf</a> (and other optional) configuration
 files in $<a href="postconf.5.html#config_directory">config_directory</a>. </p>
 
-<li> <p> The <a href="QSHAPE_README.html#maildrop_queue">maildrop</a>, incoming, active, deferred and <a href="QSHAPE_README.html#hold_queue">hold queues</a>
+<li> <p> The <a href="QSHAPE_README.html#maildrop_queue">maildrop</a>, <a href="QSHAPE_README.html#incoming_queue">incoming</a>, active, deferred and <a href="QSHAPE_README.html#hold_queue">hold queues</a>
 in $<a href="postconf.5.html#queue_directory">queue_directory</a> (which contains additional directories needed
 by Postfix, and which optionally doubles as a chroot jail for Postfix
 daemon processes). </p>
index 8ac3826e49cdb602acf8304fb3c5c3fcea088184..147802f0dd0aa328f14c02aaff8dac3f6de246ef 100644 (file)
@@ -46,8 +46,7 @@ There is no need to recompile Postfix. </p>
 which can be obtained from: </p>
 
 <blockquote>
-    <p> <a href="http://www.mysql.com/downloads/">http://www.mysql.com/downloads/</a> <br>
-    <a href="http://sourceforge.net/projects/mysql/">http://sourceforge.net/projects/mysql/</a> </p>
+    <p> <a href="http://www.mysql.com/downloads/">http://www.mysql.com/downloads/</a> </p>
 </blockquote>
 
 <p> In order to build Postfix with mysql map support, you will need to add
@@ -178,7 +177,7 @@ Marcus, IC Group, Inc.</li>
 
 <li> Liviu Daia with further refinements from Jose Luis Tallon and
 Victor Duchovni developed the common query, result_format, domain and
-expansion_limit interface for LDAP, MySQL and PosgreSQL.</li>
+expansion_limit interface for LDAP, MySQL and PostgreSQL.</li>
 
 </ul>
 
index 61969894dfe36cb847c1c40db00212f26c4a35b0..d26c6d6d8ad4731bcf2bd4e2214db6f1aa7959ce 100644 (file)
@@ -228,7 +228,8 @@ temporary allowlist is not used for SMTP client addresses
 that appear on the <i>permanent</i> access list. </p>
 
 <p> By default the temporary allowlist is not shared with other
-postscreen(8) daemons. See <a href="#temp_white_sharing"> Sharing
+<a href="postscreen.8.html">postscreen(8)</a> daemons. See
+<a href="#temp_white_sharing"> Sharing
 the temporary allowlist </a> below for alternatives. </p>
 
 <p> When the SMTP client address appears on the temporary
@@ -266,9 +267,9 @@ failure.  </p> </blockquote>
 <ul>
 
 <li> <p> First, configure the host to listen on both primary and
-backup MX addresses. Use the appropriate <tt>ifconfig</tt> command
-for the local operating system, or update the appropriate configuration
-files and "refresh" the network protocol stack. </p>
+backup MX addresses. Use the appropriate <tt>ifconfig</tt> or <tt>ip</tt>
+command for the local operating system, or update the appropriate
+configuration files and "refresh" the network protocol stack. </p>
 
 <p> <p> Second, configure Postfix to listen on the new IP address
 (this step is needed when you have specified <a href="postconf.5.html#inet_interfaces">inet_interfaces</a> in
@@ -310,7 +311,8 @@ interval before the "220 <i>text</i>..." server greeting, where
 <a href="postscreen.8.html">postscreen(8)</a> can run a number of tests in parallel. </p>
 
 <p> When a good client passes these tests, and no "<a
-href="#after_220">deep protocol tests</a>" are configured, postscreen(8)
+href="#after_220">deep protocol tests</a>"
+are configured, <a href="postscreen.8.html">postscreen(8)</a>
 adds the client to the temporary allowlist and hands off the "live"
 connection to a Postfix SMTP server process.  The client can then
 continue as if <a href="postscreen.8.html">postscreen(8)</a> never even existed (except of course
@@ -512,7 +514,8 @@ service, so that they never have to deal with <a href="postscreen.8.html">postsc
 receiver send one command and one response at a time.  Unlike the
 Postfix SMTP server, <a href="postscreen.8.html">postscreen(8)</a> does not announce support
 for ESMTP command pipelining.  Therefore, clients are not allowed
-to send multiple commands. postscreen(8)'s <a href="#after_220">deep
+to send multiple commands. <a href="postscreen.8.html">postscreen(8)</a>'s
+<a href="#after_220">deep
 protocol test</a> for this is disabled by default. </p>
 
 <p> With "<a href="postconf.5.html#postscreen_pipelining_enable">postscreen_pipelining_enable</a> = yes", <a href="postscreen.8.html">postscreen(8)</a> detects
@@ -546,7 +549,8 @@ after the 220 SMTP server greeting</a>" below. </p>
 of this is the usage of commands such as CONNECT and other non-SMTP
 commands. Just like the Postfix SMTP server's <a href="postconf.5.html#smtpd_forbidden_commands">smtpd_forbidden_commands</a>
 feature, <a href="postscreen.8.html">postscreen(8)</a> has an equivalent <a href="postconf.5.html#postscreen_forbidden_commands">postscreen_forbidden_commands</a>
-feature to block these clients. postscreen(8)'s <a href="#after_220">deep
+feature to block these clients. <a href="postscreen.8.html">postscreen(8)</a>'s
+<a href="#after_220">deep
 protocol test</a> for this is disabled by default.  </p>
 
 <p> With "<a href="postconf.5.html#postscreen_non_smtp_command_enable">postscreen_non_smtp_command_enable</a> = yes", <a href="postscreen.8.html">postscreen(8)</a>
@@ -583,7 +587,8 @@ tests fail after the 220 SMTP server greeting</a>" below. </p>
 <p> SMTP is a line-oriented protocol: lines have a limited length,
 and are terminated with &lt;CR&gt;&lt;LF&gt;. Lines ending in a
 "bare" &lt;LF&gt;, that is newline not preceded by carriage return,
-are not allowed in SMTP.  postscreen(8)'s <a href="#after_220">deep
+are not allowed in SMTP.  <a href="postscreen.8.html">postscreen(8)</a>'s
+<a href="#after_220">deep
 protocol test</a> for this is disabled by default.  </p>
 
 <p> With "<a href="postconf.5.html#postscreen_bare_newline_enable">postscreen_bare_newline_enable</a> = yes", <a href="postscreen.8.html">postscreen(8)</a>
@@ -902,14 +907,15 @@ Postfix version 2.8. </p>
 <li> <p> Some <a href="postscreen.8.html">postscreen(8)</a> configuration parameters implement
 stress-dependent behavior. This is supported only when the default
 value is stress-dependent (that is, "postconf -d <i>parametername</i>"
-output shows "<i>parametername</i> =
-${stress?<i>something</i>}${stress:<i>something</i>}").
+output shows
+"<i>parametername</i>&nbsp;=&nbsp;${stress?<i>something</i>}${stress:<i>something</i>}" or
+"<i>parametername</i>&nbsp;=&nbsp;${stress?{<i>something</i>}:{<i>something</i>}}").
 Other parameters always evaluate as if the stress value is the empty
 string. </p>
 
 <li> <p> See "<a href="#before_220">Tests before the 220 SMTP server
-greeting</a>" for details about the logging from these postscreen(8)
-tests. </p>
+greeting</a>" for details about the logging from these
+<a href="postscreen.8.html">postscreen(8)</a> tests. </p>
 
 <li> <p> If you run Postfix 2.6 or earlier you must stop and start
 the master daemon ("<tt>postfix stop; postfix start</tt>").  This
@@ -983,7 +989,8 @@ tests</a>", but these are more intrusive than the pregreet or DNSBL
 tests. </p>
 
 <p> When a good client passes the "<a href="#after_220">deep
-protocol tests</a>", postscreen(8) adds the client to the temporary
+protocol tests</a>",
+<a href="postscreen.8.html">postscreen(8)</a> adds the client to the temporary
 allowlist but it cannot hand off the "live" connection to a Postfix
 SMTP server process in the middle of the session. Instead, <a href="postscreen.8.html">postscreen(8)</a>
 defers mail delivery attempts with a 4XX status, logs the
index a21b80186fe4a5d1967ef099896f466e37595d81..e6f1321e87fa69422eb26a048e4c58bc58a5b059 100644 (file)
@@ -239,7 +239,8 @@ temporary allowlist is not used for SMTP client addresses
 that appear on the <i>permanent</i> access list. </p>
 
 <p> By default the temporary allowlist is not shared with other
-postscreen(8) daemons. See <a href="#temp_allow_sharing"> Sharing
+<a href="postscreen.8.html">postscreen(8)</a> daemons. See
+<a href="#temp_allow_sharing"> Sharing
 the temporary allowlist </a> below for alternatives. </p>
 
 <p> When the SMTP client address appears on the temporary
@@ -277,9 +278,9 @@ failure.  </p> </blockquote>
 <ul>
 
 <li> <p> First, configure the host to listen on both primary and
-backup MX addresses. Use the appropriate <tt>ifconfig</tt> command
-for the local operating system, or update the appropriate configuration
-files and "refresh" the network protocol stack. </p>
+backup MX addresses. Use the appropriate <tt>ifconfig</tt> or <tt>ip</tt>
+command for the local operating system, or update the appropriate
+configuration files and "refresh" the network protocol stack. </p>
 
 <p> <p> Second, configure Postfix to listen on the new IP address
 (this step is needed when you have specified <a href="postconf.5.html#inet_interfaces">inet_interfaces</a> in
@@ -324,7 +325,8 @@ interval before the "220 <i>text</i>..." server greeting, where
 <a href="postscreen.8.html">postscreen(8)</a> can run a number of tests in parallel. </p>
 
 <p> When a good client passes these tests, and no "<a
-href="#after_220">deep protocol tests</a>" are configured, postscreen(8)
+href="#after_220">deep protocol tests</a>"
+are configured, <a href="postscreen.8.html">postscreen(8)</a>
 adds the client to the temporary allowlist and hands off the "live"
 connection to a Postfix SMTP server process.  The client can then
 continue as if <a href="postscreen.8.html">postscreen(8)</a> never even existed (except of course
@@ -526,7 +528,8 @@ service, so that they never have to deal with <a href="postscreen.8.html">postsc
 receiver send one command and one response at a time.  Unlike the
 Postfix SMTP server, <a href="postscreen.8.html">postscreen(8)</a> does not announce support
 for ESMTP command pipelining.  Therefore, clients are not allowed
-to send multiple commands. postscreen(8)'s <a href="#after_220">deep
+to send multiple commands. <a href="postscreen.8.html">postscreen(8)</a>'s
+<a href="#after_220">deep
 protocol test</a> for this is disabled by default. </p>
 
 <p> With "<a href="postconf.5.html#postscreen_pipelining_enable">postscreen_pipelining_enable</a> = yes", <a href="postscreen.8.html">postscreen(8)</a> detects
@@ -560,7 +563,8 @@ after the 220 SMTP server greeting</a>" below. </p>
 of this is the usage of commands such as CONNECT and other non-SMTP
 commands. Just like the Postfix SMTP server's <a href="postconf.5.html#smtpd_forbidden_commands">smtpd_forbidden_commands</a>
 feature, <a href="postscreen.8.html">postscreen(8)</a> has an equivalent <a href="postconf.5.html#postscreen_forbidden_commands">postscreen_forbidden_commands</a>
-feature to block these clients. postscreen(8)'s <a href="#after_220">deep
+feature to block these clients. <a href="postscreen.8.html">postscreen(8)</a>'s
+<a href="#after_220">deep
 protocol test</a> for this is disabled by default.  </p>
 
 <p> With "<a href="postconf.5.html#postscreen_non_smtp_command_enable">postscreen_non_smtp_command_enable</a> = yes", <a href="postscreen.8.html">postscreen(8)</a>
@@ -597,7 +601,8 @@ tests fail after the 220 SMTP server greeting</a>" below. </p>
 <p> SMTP is a line-oriented protocol: lines have a limited length,
 and are terminated with &lt;CR&gt;&lt;LF&gt;. Lines ending in a
 "bare" &lt;LF&gt;, that is newline not preceded by carriage return,
-are not allowed in SMTP.  postscreen(8)'s <a href="#after_220">deep
+are not allowed in SMTP.  <a href="postscreen.8.html">postscreen(8)</a>'s
+<a href="#after_220">deep
 protocol test</a> for this is disabled by default.  </p>
 
 <p> With "<a href="postconf.5.html#postscreen_bare_newline_enable">postscreen_bare_newline_enable</a> = yes", <a href="postscreen.8.html">postscreen(8)</a>
@@ -916,14 +921,15 @@ Postfix version 2.8. </p>
 <li> <p> Some <a href="postscreen.8.html">postscreen(8)</a> configuration parameters implement
 stress-dependent behavior. This is supported only when the default
 value is stress-dependent (that is, "postconf -d <i>parametername</i>"
-output shows "<i>parametername</i> =
-${stress?<i>something</i>}${stress:<i>something</i>}").
+output shows
+"<i>parametername</i>&nbsp;=&nbsp;${stress?<i>something</i>}${stress:<i>something</i>}" or
+"<i>parametername</i>&nbsp;=&nbsp;${stress?{<i>something</i>}:{<i>something</i>}}").
 Other parameters always evaluate as if the stress value is the empty
 string. </p>
 
 <li> <p> See "<a href="#before_220">Tests before the 220 SMTP server
-greeting</a>" for details about the logging from these postscreen(8)
-tests. </p>
+greeting</a>" for details about the logging from these
+<a href="postscreen.8.html">postscreen(8)</a> tests. </p>
 
 <li> <p> If you run Postfix 2.6 or earlier you must stop and start
 the master daemon ("<tt>postfix stop; postfix start</tt>").  This
@@ -997,7 +1003,8 @@ tests</a>", but these are more intrusive than the pregreet or DNSBL
 tests. </p>
 
 <p> When a good client passes the "<a href="#after_220">deep
-protocol tests</a>", postscreen(8) adds the client to the temporary
+protocol tests</a>",
+<a href="postscreen.8.html">postscreen(8)</a> adds the client to the temporary
 allowlist but it cannot hand off the "live" connection to a Postfix
 SMTP server process in the middle of the session. Instead, <a href="postscreen.8.html">postscreen(8)</a>
 defers mail delivery attempts with a 4XX status, logs the
index 06dd7c2dd634dc6acba354e0504382c63e6dea5e..6b763969f17f7c26aea0c982a1d8450c2f56a047 100644 (file)
@@ -120,11 +120,11 @@ minutes old and 12 older than 1280 minutes (1440 minutes in a day).
 <p> When the output is a terminal intermediate results showing the top 20
 domains (-n option) are displayed after every 1000 messages (-N option)
 and the final output also shows only the top 20 domains. This makes
-qshape useful even when the <a href="QSHAPE_README.html#deferred_queue">deferred queue</a> is very large and it may
-otherwise take prohibitively long to read the entire <a href="QSHAPE_README.html#deferred_queue">deferred queue</a>. </p>
+qshape useful even when the "<a href="QSHAPE_README.html#deferred_queue">deferred" queue</a> is very large and it may
+otherwise take prohibitively long to read the entire "<a href="QSHAPE_README.html#deferred_queue">deferred" queue</a>. </p>
 
 <p> By default, qshape shows statistics for the union of both the
-<a href="QSHAPE_README.html#incoming_queue">incoming</a> and <a href="QSHAPE_README.html#active_queue">active queues</a> which are the most relevant queues to
+"<a href="QSHAPE_README.html#incoming_queue">incoming"</a> and "<a href="QSHAPE_README.html#active_queue">active" queues</a> which are the most relevant queues to
 look at when analyzing performance. </p>
 
 <p> One can request an alternate list of queues: </p>
@@ -136,8 +136,8 @@ $ qshape incoming active deferred
 </pre>
 </blockquote>
 
-<p> this will show the age distribution of the <a href="QSHAPE_README.html#deferred_queue">deferred queue</a> or
-the union of the incoming active and <a href="QSHAPE_README.html#deferred_queue">deferred queues</a>. </p>
+<p> this will show the age distribution of the "<a href="QSHAPE_README.html#deferred_queue">deferred" queue</a> or
+the union of the "<a href="QSHAPE_README.html#incoming_queue">incoming"</a>, "<a href="QSHAPE_README.html#active_queue">active"</a> and "<a href="QSHAPE_README.html#deferred_queue">deferred" queues</a>. </p>
 
 <p> Command line options control the number of display "buckets",
 the age limit for the smallest bucket, display of parent domain
@@ -154,7 +154,7 @@ dominate the queue sender or recipient counts, approximately when
 a burst of mail started, and when it stopped. </p>
 
 <p> The problem destinations or sender domains appear near the top
-left corner of the output table. Remember that the <a href="QSHAPE_README.html#active_queue">active queue</a>
+left corner of the output table. Remember that the "<a href="QSHAPE_README.html#active_queue">active" queue</a>
 can accommodate up to 20000 ($<a href="postconf.5.html#qmgr_message_active_limit">qmgr_message_active_limit</a>) messages.
 To check whether this limit has been reached, use: </p>
 
@@ -164,11 +164,11 @@ $ qshape -s active       <i>(show sender statistics)</i>
 </pre>
 </blockquote>
 
-<p> If the total sender count is below 20000 the <a href="QSHAPE_README.html#active_queue">active queue</a> is
+<p> If the total sender count is below 20000 the "<a href="QSHAPE_README.html#active_queue">active" queue</a> is
 not yet saturated, any high volume sender domains show near the
 top of the output.
 
-<p> With <a href="qmgr.8.html">oqmgr(8)</a> the <a href="QSHAPE_README.html#active_queue">active queue</a> is also limited to at most 20000
+<p> With <a href="qmgr.8.html">oqmgr(8)</a> the "<a href="QSHAPE_README.html#active_queue">active" queue</a> is also limited to at most 20000
 recipient addresses ($<a href="postconf.5.html#qmgr_message_recipient_limit">qmgr_message_recipient_limit</a>). To check for
 exhaustion of this limit use: </p>
 
@@ -223,15 +223,15 @@ output.  </p>
 
 <h2><a name="healthy">Example 1: Healthy queue</a></h2>
 
-<p> When looking at just the <a href="QSHAPE_README.html#incoming_queue">incoming</a> and <a href="QSHAPE_README.html#active_queue">active queues</a>, under
-normal conditions (no congestion) the <a href="QSHAPE_README.html#incoming_queue">incoming</a> and <a href="QSHAPE_README.html#active_queue">active queues</a>
+<p> When looking at just the "<a href="QSHAPE_README.html#incoming_queue">incoming"</a> and "<a href="QSHAPE_README.html#active_queue">active" queues</a>, under
+normal conditions (no congestion) the "<a href="QSHAPE_README.html#incoming_queue">incoming"</a> and "<a href="QSHAPE_README.html#active_queue">active" queues</a>
 are nearly empty. Mail leaves the system almost as quickly as it
-comes in or is deferred without congestion in the <a href="QSHAPE_README.html#active_queue">active queue</a>.
+comes in or is deferred without congestion in the "<a href="QSHAPE_README.html#active_queue">active" queue</a>.
 </p>
 
 <blockquote>
 <pre>
-$ qshape        <i>(show <a href="QSHAPE_README.html#incoming_queue">incoming</a> and <a href="QSHAPE_README.html#active_queue">active queue</a> status)</i>
+$ qshape        <i>(show "<a href="QSHAPE_README.html#incoming_queue">incoming"</a> and "<a href="QSHAPE_README.html#active_queue">active" queue</a> status)</i>
 
                  T  5 10 20 40 80 160 320 640 1280 1280+
           TOTAL  5  0  0  0  1  0   0   0   1    1     2
@@ -239,9 +239,9 @@ $ qshape        <i>(show <a href="QSHAPE_README.html#incoming_queue">incoming</a
 </pre>
 </blockquote>
 
-<p> If one looks at the two queues separately, the <a href="QSHAPE_README.html#incoming_queue">incoming queue</a>
+<p> If one looks at the two queues separately, the "<a href="QSHAPE_README.html#incoming_queue">incoming" queue</a>
 is empty or perhaps briefly has one or two messages, while the
-<a href="QSHAPE_README.html#active_queue">active queue</a> holds more messages and for a somewhat longer time:
+"<a href="QSHAPE_README.html#active_queue">active" queue</a> holds more messages and for a somewhat longer time:
 </p>
 
 <blockquote>
@@ -266,7 +266,7 @@ dictionary attack bounces</a></h2>
 available for some of the <a href="VIRTUAL_README.html#canonical">hosted domains</a>. Dictionary attacks on
 the unvalidated domains result in bounce backscatter. The bounces
 dominate the queue, but with proper tuning they do not saturate the
-<a href="QSHAPE_README.html#incoming_queue">incoming</a> or <a href="QSHAPE_README.html#active_queue">active queues</a>. The high volume of deferred mail is not
+"<a href="QSHAPE_README.html#incoming_queue">incoming"</a> or "<a href="QSHAPE_README.html#active_queue">active" queues</a>. The high volume of deferred mail is not
 a direct cause for alarm. </p>
 
 <blockquote>
@@ -290,7 +290,7 @@ $ qshape deferred | head
 is the tail end of the time distribution, showing that short term
 arrival rates are moderate. Larger numbers and lower message ages
 are more indicative of current trouble. Old mail still going nowhere
-is largely harmless so long as the active and <a href="QSHAPE_README.html#incoming_queue">incoming queues</a> are
+is largely harmless so long as the "<a href="QSHAPE_README.html#active_queue">active"</a> and "<a href="QSHAPE_README.html#incoming_queue">incoming" queues</a> are
 short. We can also see that the groups.msn.com undeliverables are
 low rate steady stream rather than a concentrated dictionary attack
 that is now over. </p>
@@ -318,8 +318,9 @@ most of the messages are bounces. </p>
 queue</a></h2>
 
 <p> This example is taken from a Feb 2004 discussion on the Postfix
-Users list.  Congestion was reported with the active and incoming
-queues large and not shrinking despite very large delivery agent
+Users list.  Congestion was reported with the
+"<a href="QSHAPE_README.html#active_queue">active"</a> and "<a href="QSHAPE_README.html#incoming_queue">incoming" queues</a>
+large and not shrinking despite very large delivery agent
 process limits.  The thread is archived at:
 <a href="http://groups.google.com/groups?threadm=c0b7js$2r65$1@FreeBSD.csie.NCTU.edu.tw">http://groups.google.com/groups?threadm=c0b7js$2r65$1@FreeBSD.csie.NCTU.edu.tw</a>
 and
@@ -331,7 +332,7 @@ that all the messages were for just a few destinations: </p>
 
 <blockquote>
 <pre>
-$ qshape        <i>(show <a href="QSHAPE_README.html#incoming_queue">incoming</a> and <a href="QSHAPE_README.html#active_queue">active queue</a> status)</i>
+$ qshape        <i>(show "<a href="QSHAPE_README.html#incoming_queue">incoming"</a> and "<a href="QSHAPE_README.html#active_queue">active" queue</a> status)</i>
 
                            T   A   5  10  20  40  80 160 320 320+
                  TOTAL 11775 9996  0   0   1   1  42  94 221 1420
@@ -341,10 +342,10 @@ $ qshape        <i>(show <a href="QSHAPE_README.html#incoming_queue">incoming</a
 </pre>
 </blockquote>
 
-<p> The "A" column showed the count of messages in the <a href="QSHAPE_README.html#active_queue">active queue</a>,
-and the numbered columns showed totals for the <a href="QSHAPE_README.html#deferred_queue">deferred queue</a>. At
-10000 messages (Postfix 1.x <a href="QSHAPE_README.html#active_queue">active queue</a> size limit) the active
-queue is full. The incoming was growing rapidly. </p>
+<p> The "A" column showed the count of messages in the "<a href="QSHAPE_README.html#active_queue">active" queue</a>,
+and the numbered columns showed totals for the "<a href="QSHAPE_README.html#deferred_queue">deferred" queue</a>. At
+10000 messages (Postfix 1.x "<a href="QSHAPE_README.html#active_queue">active" queue</a> size limit) the "<a href="QSHAPE_README.html#active_queue">active" queue</a>
+is full. The "<a href="QSHAPE_README.html#incoming_queue">incoming" queue</a> was growing rapidly. </p>
 
 <p> With the trouble destinations clearly identified, the administrator
 quickly found and fixed the problem. It is substantially harder to
@@ -356,8 +357,8 @@ one message at a time. </p>
 <h2><a name="backlog">Example 4: High volume destination backlog</a></h2>
 
 <p> When a site you send a lot of email to is down or slow, mail
-messages will rapidly build up in the <a href="QSHAPE_README.html#deferred_queue">deferred queue</a>, or worse, in
-the <a href="QSHAPE_README.html#active_queue">active queue</a>. The qshape output will show large numbers for
+messages will rapidly build up in the "<a href="QSHAPE_README.html#deferred_queue">deferred" queue</a>, or worse, in
+the "<a href="QSHAPE_README.html#active_queue">active" queue</a>. The qshape output will show large numbers for
 the destination domain in all age buckets that overlap the starting
 time of the problem: </p>
 
@@ -373,13 +374,13 @@ $ qshape deferred | head
 </blockquote>
 
 <p> Here the "highvolume.com" destination is continuing to accumulate
-deferred mail. The <a href="QSHAPE_README.html#incoming_queue">incoming</a> and <a href="QSHAPE_README.html#active_queue">active queues</a> are fine, but the
-<a href="QSHAPE_README.html#deferred_queue">deferred queue</a> started growing some time between 1 and 2 hours ago
+deferred mail. The "<a href="QSHAPE_README.html#incoming_queue">incoming"</a> and "<a href="QSHAPE_README.html#active_queue">active" queues</a> are fine, but the
+"<a href="QSHAPE_README.html#deferred_queue">deferred" queue</a> started growing some time between 1 and 2 hours ago
 and continues to grow. </p>
 
 <p> If the high volume destination is not down, but is instead
-slow, one might see similar congestion in the <a href="QSHAPE_README.html#active_queue">active queue</a>. Active
-queue congestion is a greater cause for alarm; one might need to
+slow, one might see similar congestion in the "<a href="QSHAPE_README.html#active_queue">active" queue</a>.
+"<a href="QSHAPE_README.html#active_queue">Active" queue</a> congestion is a greater cause for alarm; one might need to
 take measures to ensure that the mail is deferred instead or even
 add an <a href="access.5.html">access(5)</a> rule asking the sender to try again later. </p>
 
@@ -616,7 +617,7 @@ submission rate or perhaps excessive CPU consumption in the <a href="cleanup.8.h
 service due to excessive <a href="postconf.5.html#body_checks">body_checks</a>, or (Postfix &ge; 2.3) high latency
 milters. </p>
 
-<p> Note, that once the <a href="QSHAPE_README.html#active_queue">active queue</a> is full, the cleanup service
+<p> Note, that once the "<a href="QSHAPE_README.html#active_queue">active" queue</a> is full, the cleanup service
 will attempt to slow down message injection by pausing $<a href="postconf.5.html#in_flow_delay">in_flow_delay</a>
 for each message. In this case "<a href="QSHAPE_README.html#maildrop_queue">maildrop" queue</a> congestion may be
 a consequence of congestion downstream, rather than a problem in
@@ -643,7 +644,7 @@ size of the "<a href="QSHAPE_README.html#maildrop_queue">maildrop" queue</a>. </
 <p> The administrator can define "smtpd" <a href="access.5.html">access(5)</a> policies, or
 <a href="cleanup.8.html">cleanup(8)</a> header/body checks that cause messages to be automatically
 diverted from normal processing and placed indefinitely in the
-"<a href="QSHAPE_README.html#hold_queue">hold" queue</a>. Messages placed in the "hold" queue stay there until
+"<a href="QSHAPE_README.html#hold_queue">hold" queue</a>. Messages placed in the "<a href="QSHAPE_README.html#hold_queue">hold" queue</a> stay there until
 the administrator intervenes. No periodic delivery attempts are
 made for messages in the "<a href="QSHAPE_README.html#hold_queue">hold" queue</a>. The <a href="postsuper.1.html">postsuper(1)</a> command
 can be used to manually release messages into the "<a href="QSHAPE_README.html#deferred_queue">deferred" queue</a>.
@@ -651,8 +652,8 @@ can be used to manually release messages into the "<a href="QSHAPE_README.html#d
 
 <p> Messages can potentially stay in the "<a href="QSHAPE_README.html#hold_queue">hold" queue</a> longer than
 $<a href="postconf.5.html#maximal_queue_lifetime">maximal_queue_lifetime</a>. If such "old" messages need to be released from
-the "<a href="QSHAPE_README.html#hold_queue">hold" queue</a>, they should typically be moved into the "maildrop"
-queue using "postsuper -r", so that the message gets a new timestamp and
+the "<a href="QSHAPE_README.html#hold_queue">hold" queue</a>, they should typically be moved into the "<a href="QSHAPE_README.html#maildrop_queue">maildrop" queue</a>
+using "postsuper -r", so that the message gets a new timestamp and
 is given more than one opportunity to be delivered.  Messages that are
 "young" can be moved directly into the "<a href="QSHAPE_README.html#deferred_queue">deferred" queue</a> using
 "postsuper -H". </p>
@@ -672,21 +673,21 @@ notifies the queue manager of new mail arrival. The queue manager
 ignores incomplete queue files whose mode is 0600, as these are
 still being written by cleanup.  </p>
 
-<p> The queue manager scans the <a href="QSHAPE_README.html#incoming_queue">incoming queue</a> bringing any new
-mail into the "<a href="QSHAPE_README.html#active_queue">active" queue</a> if the active queue resource limits
-have not been exceeded. By default, the <a href="QSHAPE_README.html#active_queue">active queue</a> accommodates
-at most 20000 messages. Once the <a href="QSHAPE_README.html#active_queue">active queue</a> message limit is
-reached, the queue manager stops scanning the incoming (and deferred,
-see below) queue.  </p>
+<p> The queue manager scans the "<a href="QSHAPE_README.html#incoming_queue">incoming" queue</a> bringing any new
+mail into the "<a href="QSHAPE_README.html#active_queue">active" queue</a> if the "<a href="QSHAPE_README.html#active_queue">active" queue</a> resource limits
+have not been exceeded. By default, the "<a href="QSHAPE_README.html#active_queue">active" queue</a> accommodates
+at most 20000 messages. Once the "<a href="QSHAPE_README.html#active_queue">active" queue</a> message limit is
+reached, the queue manager stops scanning the "<a href="QSHAPE_README.html#incoming_queue">incoming" queue</a>
+(and the "<a href="QSHAPE_README.html#deferred_queue">deferred" queue</a>, see below).  </p>
 
-<p> Under normal conditions the <a href="QSHAPE_README.html#incoming_queue">incoming queue</a> is nearly empty (has
+<p> Under normal conditions the "<a href="QSHAPE_README.html#incoming_queue">incoming" queue</a> is nearly empty (has
 only mode 0600 files), with the queue manager able to import new
-messages into the <a href="QSHAPE_README.html#active_queue">active queue</a> as soon as they become available.
+messages into the "<a href="QSHAPE_README.html#active_queue">active" queue</a> as soon as they become available.
 </p>
 
-<p> The <a href="QSHAPE_README.html#incoming_queue">incoming queue</a> grows when the message input rate spikes
+<p> The "<a href="QSHAPE_README.html#incoming_queue">incoming" queue</a> grows when the message input rate spikes
 above the rate at which the queue manager can import messages into
-the <a href="QSHAPE_README.html#active_queue">active queue</a>. The main factors slowing down the queue manager
+the "<a href="QSHAPE_README.html#active_queue">active" queue</a>. The main factors slowing down the queue manager
 are disk I/O and lookup queries to the trivial-rewrite service. If the queue
 manager is routinely not keeping up, consider not using "slow"
 lookup services (MySQL, LDAP, ...) for transport lookups or speeding
@@ -712,8 +713,8 @@ to 1 message per second, but is not strong enough to deflect an
 excessive input rate from many sources at the same time.  </p>
 
 <p> If a server is being hammered from multiple directions, consider
-raising the <a href="postconf.5.html#in_flow_delay">in_flow_delay</a> to 10 seconds, but only if the incoming
-queue is growing even while the <a href="QSHAPE_README.html#active_queue">active queue</a> is not full and the
+raising the <a href="postconf.5.html#in_flow_delay">in_flow_delay</a> to 10 seconds, but only if the "<a href="QSHAPE_README.html#incoming_queue">incoming" queue</a>
+is growing even while the "<a href="QSHAPE_README.html#active_queue">active" queue</a> is not full and the
 trivial-rewrite service is using a fast transport lookup mechanism.
 </p>
 
@@ -723,8 +724,8 @@ trivial-rewrite service is using a fast transport lookup mechanism.
 ensure fast and fair delivery of mail to all destinations within
 designated resource limits.  </p>
 
-<p> The <a href="QSHAPE_README.html#active_queue">active queue</a> is somewhat analogous to an operating system's
-process run queue. Messages in the <a href="QSHAPE_README.html#active_queue">active queue</a> are ready to be
+<p> The "<a href="QSHAPE_README.html#active_queue">active" queue</a> is somewhat analogous to an operating system's
+process run queue. Messages in the "<a href="QSHAPE_README.html#active_queue">active" queue</a> are ready to be
 sent (runnable), but are not necessarily in the process of being
 sent (running).  </p>
 
@@ -732,15 +733,14 @@ sent (running).  </p>
 as a directory on disk, the real "<a href="QSHAPE_README.html#active_queue">active" queue</a> is a set of data
 structures in the memory of the queue manager process.  </p>
 
-<p> Messages in the "<a href="QSHAPE_README.html#maildrop_queue">maildrop"</a>, "<a href="QSHAPE_README.html#hold_queue">hold"</a>, "<a href="QSHAPE_README.html#incoming_queue">incoming"</a> and "deferred"
-queues (see below) do not occupy memory; they are safely stored on
+<p> Messages in the "<a href="QSHAPE_README.html#maildrop_queue">maildrop"</a>, "<a href="QSHAPE_README.html#hold_queue">hold"</a>, "<a href="QSHAPE_README.html#incoming_queue">incoming"</a> and "<a href="QSHAPE_README.html#deferred_queue">deferred" queues</a>
+(see below) do not occupy memory; they are safely stored on
 disk waiting for their turn to be processed. The envelope information
 for messages in the "<a href="QSHAPE_README.html#active_queue">active" queue</a> is managed in memory, allowing
 the queue manager to do global scheduling, allocating available
-delivery agent processes to an appropriate message in the active
-queue.  </p>
+delivery agent processes to an appropriate message in the "<a href="QSHAPE_README.html#active_queue">active" queue</a>.  </p>
 
-<p> Within the <a href="QSHAPE_README.html#active_queue">active queue</a>, (multi-recipient) messages are broken
+<p> Within the "<a href="QSHAPE_README.html#active_queue">active" queue</a>, (multi-recipient) messages are broken
 up into groups of recipients that share the same transport/nexthop
 combination; the group size is capped by the transport's recipient
 concurrency limit.  </p>
@@ -756,15 +756,15 @@ concurrency limits. Per-recipient limits are appropriate when
 performing final delivery to mailboxes rather than when relaying
 to a remote server.  </p>
 
-<p> Congestion occurs in the <a href="QSHAPE_README.html#active_queue">active queue</a> when one or more destinations
+<p> Congestion occurs in the "<a href="QSHAPE_README.html#active_queue">active" queue</a> when one or more destinations
 drain slower than the corresponding message input rate. </p>
 
-<p> Input into the <a href="QSHAPE_README.html#active_queue">active queue</a> comes both from new mail in the "incoming"
-queue, and retries of mail in the "<a href="QSHAPE_README.html#deferred_queue">deferred" queue</a>. Should the "deferred"
-queue get really large, retries of old mail can dominate the arrival
+<p> Input into the "<a href="QSHAPE_README.html#active_queue">active" queue</a> comes both from new mail in the "<a href="QSHAPE_README.html#incoming_queue">incoming" queue</a>,
+and retries of mail in the "<a href="QSHAPE_README.html#deferred_queue">deferred" queue</a>. Should the "<a href="QSHAPE_README.html#deferred_queue">deferred" queue</a>
+get really large, retries of old mail can dominate the arrival
 rate of new mail. Systems with more CPU, faster disks and more network
-bandwidth can deal with larger <a href="QSHAPE_README.html#deferred_queue">deferred queues</a>, but as a rule of thumb
-the <a href="QSHAPE_README.html#deferred_queue">deferred queue</a> scales to somewhere between 100,000 and 1,000,000
+bandwidth can deal with larger "<a href="QSHAPE_README.html#deferred_queue">deferred" queues</a>, but as a rule of thumb
+the "<a href="QSHAPE_README.html#deferred_queue">deferred" queue</a> scales to somewhere between 100,000 and 1,000,000
 messages with good performance unlikely above that "limit". Systems with
 queues this large should typically stop accepting new mail, or put the
 backlog "on hold" until the underlying issue is fixed (provided that
@@ -773,12 +773,12 @@ there is enough capacity to handle just the new mail). </p>
 <p> When a destination is down for some time, the queue manager will
 mark it dead, and immediately defer all mail for the destination without
 trying to assign it to a delivery agent. In this case the messages
-will quickly leave the <a href="QSHAPE_README.html#active_queue">active queue</a> and end up in the <a href="QSHAPE_README.html#deferred_queue">deferred queue</a>
+will quickly leave the "<a href="QSHAPE_README.html#active_queue">active" queue</a> and end up in the "<a href="QSHAPE_README.html#deferred_queue">deferred" queue</a>
 (with Postfix &lt; 2.4, this is done directly by the queue manager,
 with Postfix &ge; 2.4 this is done via the "retry" delivery agent). </p>
 
 <p> When the destination is instead simply slow, or there is a problem
-causing an excessive arrival rate the <a href="QSHAPE_README.html#active_queue">active queue</a> will grow and will
+causing an excessive arrival rate the "<a href="QSHAPE_README.html#active_queue">active" queue</a> will grow and will
 become dominated by mail to the congested destination.  </p>
 
 <p> The only way to reduce congestion is to either reduce the input
@@ -818,7 +818,7 @@ throughput falls to just over 1 message per second. </p>
 <p> The best way to avoid bottlenecks when one or more MX hosts is
 non-responsive is to use connection caching. Connection caching was
 introduced with Postfix 2.2 and is by default enabled on demand for
-destinations with a backlog of mail in the <a href="QSHAPE_README.html#active_queue">active queue</a>. When connection
+destinations with a backlog of mail in the "<a href="QSHAPE_README.html#active_queue">active" queue</a>. When connection
 caching is in effect for a particular destination, established connections
 are re-used to send additional messages, this reduces the number of
 connections made per message delivery and maintains good throughput even
@@ -849,20 +849,20 @@ transport allocates a separate delivery agent pool to these destinations
 and allows separate tuning of timeouts and concurrency limits. </p>
 
 <p> Another common cause of congestion is unwarranted flushing of the
-entire <a href="QSHAPE_README.html#deferred_queue">deferred queue</a>. The deferred queue holds messages that are likely
+entire "<a href="QSHAPE_README.html#deferred_queue">deferred" queue</a>. The "<a href="QSHAPE_README.html#deferred_queue">deferred" queue</a> holds messages that are likely
 to fail to be delivered and are also likely to be slow to fail delivery
-(time out). As a result the most common reaction to a large <a href="QSHAPE_README.html#deferred_queue">deferred queue</a>
+(time out). As a result the most common reaction to a large "<a href="QSHAPE_README.html#deferred_queue">deferred" queue</a>
 (flush it!) is more than likely counter-productive, and typically makes
-the congestion worse. Do not flush the <a href="QSHAPE_README.html#deferred_queue">deferred queue</a> unless you expect
+the congestion worse. Do not flush the "<a href="QSHAPE_README.html#deferred_queue">deferred" queue</a> unless you expect
 that most of its content has recently become deliverable (e.g. <a href="postconf.5.html#relayhost">relayhost</a>
 back up after an outage)!  </p>
 
 <p> Note that whenever the queue manager is restarted, there may
-already be messages in the <a href="QSHAPE_README.html#active_queue">active queue</a> directory, but the "real"
-<a href="QSHAPE_README.html#active_queue">active queue</a> in memory is empty. In order to recover the in-memory
-state, the queue manager moves all the <a href="QSHAPE_README.html#active_queue">active queue</a> messages
-back into the <a href="QSHAPE_README.html#incoming_queue">incoming queue</a>, and then uses its normal incoming
-queue scan to refill the <a href="QSHAPE_README.html#active_queue">active queue</a>. The process of moving all
+already be messages in the "<a href="QSHAPE_README.html#active_queue">active" queue</a> directory, but the "real"
+"<a href="QSHAPE_README.html#active_queue">active" queue</a> in memory is empty. In order to recover the in-memory
+state, the queue manager moves all the "<a href="QSHAPE_README.html#active_queue">active" queue</a> messages
+back into the "<a href="QSHAPE_README.html#incoming_queue">incoming" queue</a>, and then uses its normal "<a href="QSHAPE_README.html#incoming_queue">incoming" queue</a>
+scan to refill the "<a href="QSHAPE_README.html#active_queue">active" queue</a>. The process of moving all
 the messages back and forth, redoing transport table (<a href="trivial-rewrite.8.html">trivial-rewrite(8)</a>
 resolve service) lookups, and re-importing the messages back into
 memory is expensive. At all costs, avoid frequent restarts of the
@@ -872,20 +872,20 @@ queue manager (e.g. via frequent execution of "postfix reload").  </p>
 
 <p> When all the deliverable recipients for a message are delivered,
 and for some recipients delivery failed for a transient reason (it
-might succeed later), the message is placed in the <a href="QSHAPE_README.html#deferred_queue">deferred queue</a>.
+might succeed later), the message is placed in the "<a href="QSHAPE_README.html#deferred_queue">deferred" queue</a>.
 </p>
 
-<p> The queue manager scans the <a href="QSHAPE_README.html#deferred_queue">deferred queue</a> periodically. The scan
-interval is controlled by the <a href="postconf.5.html#queue_run_delay">queue_run_delay</a> parameter.  While a deferred
-queue scan is in progress, if an <a href="QSHAPE_README.html#incoming_queue">incoming queue</a> scan is also in progress
-(ideally these are brief since the <a href="QSHAPE_README.html#incoming_queue">incoming queue</a> should be short), the
-queue manager alternates between looking for messages in the "incoming"
-queue and in the "<a href="QSHAPE_README.html#deferred_queue">deferred" queue</a>. This "round-robin" strategy prevents
-starvation of either the <a href="QSHAPE_README.html#incoming_queue">incoming</a> or the <a href="QSHAPE_README.html#deferred_queue">deferred queues</a>.  </p>
-
-<p> Each <a href="QSHAPE_README.html#deferred_queue">deferred queue</a> scan only brings a fraction of the deferred
-queue back into the <a href="QSHAPE_README.html#active_queue">active queue</a> for a retry. This is because each
-message in the <a href="QSHAPE_README.html#deferred_queue">deferred queue</a> is assigned a "cool-off" time when
+<p> The queue manager scans the "<a href="QSHAPE_README.html#deferred_queue">deferred" queue</a> periodically. The scan
+interval is controlled by the <a href="postconf.5.html#queue_run_delay">queue_run_delay</a> parameter.  While a "<a href="QSHAPE_README.html#deferred_queue">deferred" queue</a>
+scan is in progress, if an "<a href="QSHAPE_README.html#incoming_queue">incoming" queue</a> scan is also in progress
+(ideally these are brief since the "<a href="QSHAPE_README.html#incoming_queue">incoming" queue</a> should be short), the
+queue manager alternates between looking for messages in the "<a href="QSHAPE_README.html#incoming_queue">incoming" queue</a>
+and in the "<a href="QSHAPE_README.html#deferred_queue">deferred" queue</a>. This "round-robin" strategy prevents
+starvation of either the "<a href="QSHAPE_README.html#incoming_queue">incoming"</a> or the "<a href="QSHAPE_README.html#deferred_queue">deferred" queues</a>.  </p>
+
+<p> Each "<a href="QSHAPE_README.html#deferred_queue">deferred" queue</a> scan only brings a fraction of the "<a href="QSHAPE_README.html#deferred_queue">deferred" queue</a>
+back into the "<a href="QSHAPE_README.html#active_queue">active" queue</a> for a retry. This is because each
+message in the "<a href="QSHAPE_README.html#deferred_queue">deferred" queue</a> is assigned a "cool-off" time when
 it is deferred.  This is done by time-warping the modification
 time of the queue file into the future. The queue file is not
 eligible for a retry if its modification time is not yet reached.
@@ -897,36 +897,36 @@ the message's age in the queue, and adjusting up or down to lie
 within the limits. This means that young messages are initially
 retried more often than old messages.  </p>
 
-<p> If a high volume site routinely has large <a href="QSHAPE_README.html#deferred_queue">deferred queues</a>, it
+<p> If a high volume site routinely has large "<a href="QSHAPE_README.html#deferred_queue">deferred" queues</a>, it
 may be useful to adjust the <a href="postconf.5.html#queue_run_delay">queue_run_delay</a>, <a href="postconf.5.html#minimal_backoff_time">minimal_backoff_time</a> and
 <a href="postconf.5.html#maximal_backoff_time">maximal_backoff_time</a> to provide short enough delays on first failure
 (Postfix &ge; 2.4 has a sensibly low minimal backoff time by default),
 with perhaps longer delays after multiple failures, to reduce the
 retransmission rate of old messages and thereby reduce the quantity
-of previously deferred mail in the <a href="QSHAPE_README.html#active_queue">active queue</a>.  If you want a really
+of previously deferred mail in the "<a href="QSHAPE_README.html#active_queue">active" queue</a>.  If you want a really
 low <a href="postconf.5.html#minimal_backoff_time">minimal_backoff_time</a>, you may also want to lower <a href="postconf.5.html#queue_run_delay">queue_run_delay</a>,
 but understand that more frequent scans will increase the demand for
 disk I/O. </p>
 
-<p> One common cause of large <a href="QSHAPE_README.html#deferred_queue">deferred queues</a> is failure to validate
+<p> One common cause of large "<a href="QSHAPE_README.html#deferred_queue">deferred" queues</a> is failure to validate
 recipients at the SMTP input stage. Since spammers routinely launch
 dictionary attacks from unrepliable sender addresses, the bounces
-for invalid recipient addresses clog the <a href="QSHAPE_README.html#deferred_queue">deferred queue</a> (and at high
-volumes proportionally clog the <a href="QSHAPE_README.html#active_queue">active queue</a>). Recipient validation
+for invalid recipient addresses clog the "<a href="QSHAPE_README.html#deferred_queue">deferred" queue</a> (and at high
+volumes proportionally clog the "<a href="QSHAPE_README.html#active_queue">active" queue</a>). Recipient validation
 is strongly recommended through use of the <a href="postconf.5.html#local_recipient_maps">local_recipient_maps</a> and
 <a href="postconf.5.html#relay_recipient_maps">relay_recipient_maps</a> parameters. Even when bounces drain quickly they
 inundate innocent victims of forgery with unwanted email. To avoid
 this, do not accept mail for invalid recipients. </p>
 
 <p> When a host with lots of deferred mail is down for some time,
-it is possible for the entire <a href="QSHAPE_README.html#deferred_queue">deferred queue</a> to reach its retry
-time simultaneously. This can lead to a very full <a href="QSHAPE_README.html#active_queue">active queue</a> once
+it is possible for the entire "<a href="QSHAPE_README.html#deferred_queue">deferred" queue</a> to reach its retry
+time simultaneously. This can lead to a very full "<a href="QSHAPE_README.html#active_queue">active" queue</a> once
 the host comes back up. The phenomenon can repeat approximately
 every <a href="postconf.5.html#maximal_backoff_time">maximal_backoff_time</a> seconds if the messages are again deferred
 after a brief burst of congestion. Perhaps, a future Postfix release
 will add a random offset to the retry time (or use a combination
-of strategies) to reduce the odds of repeated complete deferred
-queue flushes.  </p>
+of strategies) to reduce the odds of repeated complete "<a href="QSHAPE_README.html#deferred_queue">deferred" queue</a>
+flushes.  </p>
 
 <h2><a name="credits">Credits</a></h2>
 
index c074c8c21d0a19e19fb7e4c565b1577f32f9eaba..eeaad444612878c2eddee78b9947fc5a69aef813 100644 (file)
@@ -960,9 +960,9 @@ file entries: </p>
 
 <dt>ldapdb_uri</dt>
 
-<dd> <p> Specify either <code>ldapi://</code> for to connect over
+<dd> <p> Specify either <code><a href="ldap_table.5.html">ldapi</a>://</code> to connect over
 a UNIX-domain socket, <code><a href="ldap_table.5.html">ldap</a>://</code> for an unencrypted TCP
-connection or <code>ldaps://</code> for an encrypted TCP connection.
+connection, or <code><a href="ldap_table.5.html">ldaps</a>://</code> for an encrypted TCP connection.
 </p> </dd>
 
 <dt>ldapdb_id</dt>
@@ -1809,14 +1809,14 @@ resort.  </p>
 tables into one single MySQL database, and configure different
 Postfix queries to extract the appropriate information. </p>
 
-<li> <p> Specify dbm instead of hash if your system uses dbm files
-instead of db files. To find out what lookup tables Postfix supports,
-use the command "postconf -m". </p>
+<li> <p> Specify <b>dbm</b> instead of <b>hash</b> if your system uses
+<b>dbm</b> files instead of <b>db</b> files. To find out what lookup
+tables Postfix supports, use the command "<b>postconf -m</b>". </p>
 
-<li> <p> Execute the command "postmap /etc/postfix/sasl_passwd"
+<li> <p> Execute the command "<b>postmap /etc/postfix/sasl_passwd</b>"
 whenever you change the sasl_passwd table. </p>
 
-<li> <p> Execute the command "postmap /etc/postfix/sender_relay"
+<li> <p> Execute the command "<b>postmap /etc/postfix/sender_relay</b>"
 whenever you change the sender_relay table. </p>
 
 </ul>
@@ -2047,7 +2047,7 @@ necessary; it just makes Postfix configuration a little more
 convenient because you don't have to specify the SASL plug-in type
 in the Postfix <a href="postconf.5.html">main.cf</a> file (but this may cause surprises when you
 switch to a later Postfix version that is built with the default
-SASL type of <code>sasl</code>). </p>
+SASL type of <code>cyrus</code>). </p>
 
 </li>
 
@@ -2188,7 +2188,7 @@ it unless you are forced to. The makers of Cyrus SASL write: </p>
 
 <blockquote> <i> This library is being deprecated and applications
 should transition to using the SASLv2 library</i> (source: <a
-href="http://cyrusimap.web.cmu.edu/downloads.html">Project Cyrus:
+href="http://www.cyrusimap.org/download.html">Project Cyrus:
 Downloads</a>). </blockquote>
 
 <p> If you still need to set it up, here's a quick rundown: </p>
index ac92754b2483ac8321bd1d3322ba069f0ed3eb7b..f303f33fa26d8ca563bec4672a19b7f57c837f8a 100644 (file)
@@ -720,7 +720,7 @@ nqmgr </a> </h3>
 <p>
 
 Let's start by recapitulating the structures and terms used when
-referring to queue manager and how it operates. Many of these are
+referring to the queue manager and how it operates. Many of these are
 partially described elsewhere, but it is nice to have a coherent
 overview in one place:
 
@@ -745,7 +745,7 @@ it shall talk to) and jobs (referencing the messages it shall
 deliver). </p>
 
 <li> <p> Each transport queue (not to be confused with the on-disk
-<a href="QSHAPE_README.html#active_queue">active queue</a> or <a href="QSHAPE_README.html#incoming_queue">incoming queue</a>) groups everything what is going be
+"<a href="QSHAPE_README.html#active_queue">active" queue</a> or "<a href="QSHAPE_README.html#incoming_queue">incoming" queue</a>) groups everything what is going be
 delivered to given destination (aka nexthop) by its transport.  Each
 queue belongs to one transport, so each destination may be referred
 to by several queues, one for each transport.  Each queue maintains
@@ -795,7 +795,7 @@ up the message </a> </h3>
 
 <p>
 
-Whenever <tt>nqmgr</tt> moves a queue file into the <a href="QSHAPE_README.html#active_queue">active queue</a>,
+Whenever <tt>nqmgr</tt> moves a queue file into the "<a href="QSHAPE_README.html#active_queue">active" queue</a>,
 the following happens: It reads all necessary information from the
 queue file as <tt>oqmgr</tt> does, and also reads as many recipients
 as possible - more on that later, for now let's just pretend it
@@ -809,7 +809,7 @@ Then it resolves the recipients as <tt>oqmgr</tt> does, which
 means obtaining (address, nexthop, transport) triple for each
 recipient. For each triple, it finds the transport; if it does not
 exist yet, it instantiates it (unless it's dead). Within the
-transport, it finds the destination queue for given nexthop; if it
+transport, it finds the destination queue for the given nexthop; if it
 does not exist yet, it instantiates it (unless it's dead). The
 triple is then bound to given destination queue. This happens in
 qmgr_resolve() and is basically the same as in <tt>oqmgr</tt>.
@@ -826,9 +826,10 @@ the bound destination queue within this jobs context; if it does
 not exist yet, it instantiates it.  Finally, it stores the address
 from the resolved triple to the recipient entry which is appended
 to both the queue entry list and the peer entry list. The addresses
-for same nexthop are batched in the entries up to recipient_concurrency
-limit for that transport. This happens in qmgr_assign() and apart
-from that it operates with job and peer structures it is basically the
+for the same nexthop are batched in the entries up to the
+<a href="postconf.5.html#transport_destination_recipient_limit"><i>transport</i>_destination_recipient_limit</a> for that transport.
+This happens in qmgr_message_assign(), and apart
+from that it operates with job and peer structures, it is basically the
 same as in <tt>oqmgr</tt>.
 
 </p>
@@ -845,9 +846,9 @@ time is important as we will see shortly.
 
 <p>
 
-[Now you should have pretty good idea what is the state of the
-<tt>nqmgr</tt> after couple of messages was picked up, what is the
-relation between all those job, peer, queue and entry structures.]
+[Now you should have a pretty good idea what the state of the
+<tt>nqmgr</tt> is after a couple of messages were picked up, and what the
+relation is between all those job, peer, queue and entry structures.]
 
 </p>
 
@@ -894,7 +895,8 @@ was picked up by the <tt>nqmgr</tt>. So by default we get the
 top-level round-robin transport, and within each transport we get
 the FIFO message delivery. The round-robin of the peers by the
 destination is perhaps of little importance in most real-life cases
-(unless the recipient_concurrency limit is reached, in one job there
+(unless the <a href="postconf.5.html#transport_destination_recipient_limit"><i>transport</i>_destination_recipient_limit</a> is reached,
+in one job there
 is only one peer structure for each destination), but theoretically
 it makes sure that even within single jobs, destinations are treated
 fairly.
@@ -986,11 +988,11 @@ mail followed by two two-recipient mails?
 
 The simple answer would be to use delivery sequence <tt>12121313</tt>.
 But the problem is that this does not scale well. Imagine you have
-mail with thousand recipients followed by mail with hundred recipients.
+mail with a thousand recipients followed by mail with a hundred recipients.
 It is tempting to suggest the  delivery sequence like <tt>121212....</tt>,
 but alas! Imagine there arrives another mail with say ten recipients.
 But there are no free slots anymore, so it can't slip by, not even
-if it had just only one recipients.  It will be stuck until the
+if it had only one recipient.  It will be stuck until the
 hundred-recipient mail is delivered, which really sucks.
 
 </p>
@@ -998,7 +1000,7 @@ hundred-recipient mail is delivered, which really sucks.
 <p>
 
 So, it becomes obvious that while inflating the message to get
-free slots is great idea, one has to be really careful of how the
+free slots is great idea, one has to be really careful of how the
 free slots are assigned, otherwise one might corner himself. So,
 how does <tt>nqmgr</tt> really use the free slots?
 
@@ -1032,7 +1034,7 @@ thousand recipient mail?
 
 <p>
 
-Well, despite it looks so at the first glance, another trick will
+Well, despite the fact that it looks so at the first glance, another trick will
 allow us to answer "no, we are not!". If we had said that we will
 inflate the delivery time twice at maximum, and then we consider
 every other slot as a free slot, then we would overinflate in case
@@ -1056,7 +1058,7 @@ transport has a <a href="postconf.5.html#transport_delivery_slot_cost"><i>transp
 defaults to <a href="postconf.5.html#default_delivery_slot_cost">default_delivery_slot_cost</a> parameter which is set to 5
 by default. This is the k from the paragraph above. Each time k
 entries of the job are selected for delivery, this counter is
-incremented by one. Once there are some slots accumulated, job which
+incremented by one. Once there are some slots accumulated, job which
 requires no more than that number of slots to be fully delivered
 can preempt this job.
 
@@ -1066,7 +1068,7 @@ can preempt this job.
 
 [Well, the truth is, the counter is incremented every time an entry
 is selected and it is divided by k when it is used.
-But for the understanding it's good enough to use
+But to understand, it's good enough to use
 the above approximation of the truth.]
 
 </p>
@@ -1083,7 +1085,7 @@ and when does all this exactly happen?
 <p>
 
 The answer for the first part is simple. The job whose entry was
-selected the last time is so called current job. Normally, it is
+selected the last time is the so called current job. Normally, it is
 the first job on the scheduler's job list, but destination concurrency
 limits may change this as we will see later. It is always only the
 current job which may get preempted.
@@ -1092,7 +1094,7 @@ current job which may get preempted.
 
 <p>
 
-Now for the second part. The current job has certain amount of
+Now for the second part. The current job has certain amount of
 recipient entries, and as such may accumulate at maximum some amount
 of available delivery slots. It might have already accumulated some,
 and perhaps even already used some when it was preempted before
@@ -1111,8 +1113,8 @@ That is, the older the job is, the more we should try to deliver
 it in order to get best message delivery rates. These rates are of
 course subject to how many recipients the message has, therefore
 the division by the recipient (entry) count. No one shall be surprised
-that message with n recipients takes n times longer to deliver than
-message with one recipient.
+that message with n recipients takes n times longer to deliver than
+message with one recipient.
 
 </p>
 
@@ -1124,9 +1126,9 @@ delivered within the number of slots the current job already
 accumulated? Why do we need to estimate how much it has yet to
 accumulate? If you found out the answer, congratulate yourself. If
 we did it this simple way, we would always choose the candidate
-with least recipient entries. If there were enough single recipient
+with the fewest recipient entries. If there were enough single recipient
 mails coming in, they would always slip by the bulk mail as soon
-as possible, and the two and more recipients mail would never get
+as possible, and the two or more recipients mail would never get
 a chance, no matter how long they have been sitting around in the
 job list.
 
@@ -1134,7 +1136,7 @@ job list.
 
 <p>
 
-This candidate selection has interesting implication - that when
+This candidate selection has an interesting implication - that when
 we choose the best candidate for preemption (this is done in
 qmgr_choose_candidate()), it may happen that we may not use it for
 preemption immediately. This leads to an answer to the last part
@@ -1148,12 +1150,12 @@ The preemption attempt happens every time next transport's recipient
 entry is to be chosen for delivery. To avoid needless overhead, the
 preemption is not attempted if the current job could never accumulate
 more than <a href="postconf.5.html#transport_minimum_delivery_slots"><i>transport</i>_minimum_delivery_slots</a> (defaults to
-<a href="postconf.5.html#default_minimum_delivery_slots">default_minimum_delivery_slots</a> which defaults to 3). If there is
+<a href="postconf.5.html#default_minimum_delivery_slots">default_minimum_delivery_slots</a> which defaults to 3). If there are
 already enough accumulated slots to preempt the current job by the
 chosen best candidate, it is done immediately. This basically means
 that the candidate is moved in front of the current job on the
 scheduler's job list and decreasing the accumulated slot counter
-by the amount used by the candidate. If there is not enough slots...
+by the amount used by the candidate. If there are not enough slots...
 well, I could say that nothing happens and the another preemption
 is attempted the next time. But that's not the complete truth.
 
@@ -1164,13 +1166,13 @@ is attempted the next time. But that's not the complete truth.
 The truth is that it turns out that it is not really necessary to
 wait until the jobs counter accumulates all the delivery slots in
 advance. Say we have ten-recipient mail followed by two two-recipient
-mails. If the preemption happened when enough delivery slot accumulate
+mails. If the preemption happened when enough delivery slots accumulate
 (assuming slot cost 2), the delivery sequence becomes
 <tt>11112211113311</tt>. Now what would we get if we would wait
 only for 50% of the necessary slots to accumulate and we promise
 we would wait for the remaining 50% later, after we get back
-to the preempted job? If we use such slot loan, the delivery sequence
-becomes <tt>11221111331111</tt>. As we can see, it makes it no
+to the preempted job? If we use such slot loan, the delivery sequence
+becomes <tt>11221111331111</tt>. As we can see, it makes it not
 considerably worse for the delivery of the ten-recipient mail, but
 it allows the small messages to be delivered sooner.
 
@@ -1192,15 +1194,15 @@ accumulated so far.
 
 <p>
 
-And it pretty much concludes this chapter.
+And that pretty much concludes this chapter.
 
 </p>
 
 <p>
 
 [Now you should have a feeling that you pretty much understand the
-scheduler and the preemption, or at least that you will have it
-after you read the last chapter couple more times. You shall clearly
+scheduler and the preemption, or at least that you will have
+after you read the last chapter couple more times. You shall clearly
 see the job list and the preemption happening at its head, in ideal
 delivery conditions. The feeling of understanding shall last until
 you start wondering what happens if some of the jobs are blocked,
@@ -1226,17 +1228,17 @@ selected by the scheduler?
 
 <p>
 
-From user's point of view it is all simple. If some of the peers
+From the user's point of view it is all simple. If some of the peers
 of a job can't be selected, those peers are simply skipped by the
 entry selection algorithm (the pseudo-code described before) and
 only the selectable ones are used. If none of the peers may be
 selected, the job is declared a "blocker job". Blocker jobs are
 skipped by the entry selection algorithm and they are also excluded
-from the candidates for preemption of current job. Thus the scheduler
+from the candidates for preemption of the current job. Thus the scheduler
 effectively behaves as if the blocker jobs didn't exist on the job
 list at all. As soon as at least one of the peers of a blocker job
 becomes unblocked (that is, the delivery agent handling the delivery
-of the recipient entry for given destination successfully finishes),
+of the recipient entry for the given destination successfully finishes),
 the job's blocker status is removed and the job again participates
 in all further scheduler actions normally.
 
@@ -1298,8 +1300,8 @@ this change because of blockers?
 
 <p>
 
-The answer is: a lot. Any job may become blocker job at any time,
-and also become normal job again at any time. This has several
+The answer is: a lot. Any job may become blocker job at any time,
+and also become normal job again at any time. This has several
 important implications:
 
 </p>
@@ -1320,7 +1322,7 @@ unblocked and is completed... You get the idea.
 <p>
 
 [Interesting side note: even when jobs are delivered out of order,
-from single destination's point of view the jobs are still delivered
+from single destination's point of view the jobs are still delivered
 in the expected order (that is, FIFO unless there was some preemption
 involved). This is because whenever a destination queue becomes
 unblocked (the destination limit allows selection of more recipient
@@ -1371,7 +1373,7 @@ huh?
 <p>
 
 If I illustrate the relations after the above mentioned examples
-(but those in point 1)), the situation would look like this:
+(but those in point 1), the situation would look like this:
 
 </p>
 
@@ -1398,8 +1400,8 @@ Now how does <tt>nqmgr</tt> deal with all these complicated relations?
 <p>
 
 Well, it maintains them all as described, but fortunately, all these
-relations are necessary only for purposes of proper counting of
-available delivery slots. For purposes of ordering the jobs for
+relations are necessary only for the purpose of proper counting of
+available delivery slots. For the purpose of ordering the jobs for
 entry selection, the original rule still applies: "the job preempting
 the current job is moved in front of the current job on the job
 list". So for entry selection purposes, the job relations remain
@@ -1428,8 +1430,8 @@ are simply ignored.
 
 <p>
 
-[By now, you should have a feeling that there is more things going
-under the hood than you ever wanted to know. You decide that
+[By now, you should have a feeling that there are more things going
+on under the hood than you ever wanted to know. You decide that
 forgetting about this chapter is the best you can do for the sake
 of your mind's health and you basically stick with the idea how the
 scheduler works in ideal conditions, when there are no blockers,
@@ -1443,11 +1445,11 @@ limits </a> </h3>
 <p>
 
 When discussing the <tt>nqmgr</tt> scheduler, we have so far assumed
-that all recipients of all messages in the <a href="QSHAPE_README.html#active_queue">active queue</a> are completely
-read into the memory. This is simply not true. There is an upper
+that all recipients of all messages in the "<a href="QSHAPE_README.html#active_queue">active" queue</a> are completely
+read into memory. This is simply not true. There is an upper
 bound on the amount of memory the <tt>nqmgr</tt> may use, and
 therefore it must impose some limits on the information it may store
-in the memory at any given time.
+in memory at any given time.
 
 </p>
 
@@ -1456,11 +1458,11 @@ in the memory at any given time.
 First of all, not all messages may be read in-core at once. At any
 time, only <a href="postconf.5.html#qmgr_message_active_limit">qmgr_message_active_limit</a> messages may be read in-core
 at maximum. When read into memory, the messages are picked from the
-<a href="QSHAPE_README.html#incoming_queue">incoming</a> and deferred message queues and moved to the <a href="QSHAPE_README.html#active_queue">active queue</a>
-(incoming having priority), so if there is more than
-<a href="postconf.5.html#qmgr_message_active_limit">qmgr_message_active_limit</a> messages queued in the <a href="QSHAPE_README.html#active_queue">active queue</a>, the
-rest will have to wait until (some of) the messages in the active
-queue are completely delivered (or deferred).
+"<a href="QSHAPE_README.html#incoming_queue">incoming"</a> and "<a href="QSHAPE_README.html#deferred_queue">deferred" queues</a> and moved to the "<a href="QSHAPE_README.html#active_queue">active" queue</a>
+(incoming having priority), so if there are more than
+<a href="postconf.5.html#qmgr_message_active_limit">qmgr_message_active_limit</a> messages queued in the "<a href="QSHAPE_README.html#active_queue">active" queue</a>, the
+rest will have to wait until (some of) the messages in the "<a href="QSHAPE_README.html#active_queue">active" queue</a>
+are completely delivered (or deferred).
 
 </p>
 
@@ -1468,11 +1470,11 @@ queue are completely delivered (or deferred).
 
 Even with the limited amount of in-core messages, there is another
 limit which must be imposed in order to avoid memory exhaustion.
-Each message may contain huge amount of recipients (tens or hundreds
+Each message may contain a huge number of recipients (tens or hundreds
 of thousands are not uncommon), so if <tt>nqmgr</tt> read all
-recipients of all messages in the <a href="QSHAPE_README.html#active_queue">active queue</a>, it may easily run
+recipients of all messages in the "<a href="QSHAPE_README.html#active_queue">active" queue</a>, it may easily run
 out of memory. Therefore there must be some upper bound on the
-amount of message recipients which are read into the memory at the
+amount of message recipients which are read into memory at the
 same time.
 
 </p>
@@ -1490,8 +1492,8 @@ affects the <tt>nqmgr</tt> and its scheduler.
 The message limit is straightforward - it just limits the size of
 the
 lookahead the <tt>nqmgr</tt>'s scheduler has when choosing which
-message can preempt the current one. Messages not in the active
-queue simply are not considered at all.
+message can preempt the current one. Messages not in the "<a href="QSHAPE_README.html#active_queue">active" queue</a>
+are simply not considered at all.
 
 </p>
 
@@ -1517,12 +1519,12 @@ of recipient entries. With unread recipients, it is not clear how
 many recipient entries there will be, as they are subject to
 per-destination grouping. It is not even clear to what transports
 (and thus jobs) the recipients will be assigned. And with messages
-coming from the <a href="QSHAPE_README.html#deferred_queue">deferred queue</a>, it is not even clear how many unread
+coming from the "<a href="QSHAPE_README.html#deferred_queue">deferred" queue</a>, it is not even clear how many unread
 recipients are still to be delivered. This all means that the
 scheduler must use only estimates of how many recipients entries
 there will be.  Fortunately, it is possible to estimate the minimum
 and maximum correctly, so the scheduler can always err on the safe
-side.  Obviously, the better the estimates, the better results, so
+side.  Obviously, the better the estimates, the better the results, so
 it is best when we are able to read all recipients in-core and turn
 the estimates into exact counts, or at least try to read as many
 as possible to make the estimates as accurate as possible.
@@ -1552,9 +1554,9 @@ it achieve it?
 <p>
 
 Perhaps the easiest solution would be to say that each message may
-have at maximum X recipients stored in-core, but such solution would
+have at maximum X recipients stored in-core, but such solution would
 be poor for several reasons. With reasonable <a href="postconf.5.html#qmgr_message_active_limit">qmgr_message_active_limit</a>
-values, the X would have to be quite low to maintain reasonable
+values, the X would have to be quite low to maintain reasonable
 memory footprint. And with low X lots of things would not work well.
 The <tt>nqmgr</tt> would have problems to use the
 <a href="postconf.5.html#transport_destination_recipient_limit"><i>transport</i>_destination_recipient_limit</a> efficiently. The
@@ -1568,11 +1570,11 @@ again.
 <p>
 
 Therefore it seems reasonable to have a solution which does not use
-a limit imposed on per-message basis, but which maintains a pool
+a limit imposed on per-message basis, but which maintains a pool
 of available recipient slots, which can be shared among all messages
 in the most efficient manner. And as we do not want separate
 transports to compete for resources whenever possible, it seems
-appropriate to maintain such recipient pool for each transport
+appropriate to maintain such recipient pool for each transport
 separately. This is the general idea, now how does it work in
 practice?
 
@@ -1580,13 +1582,13 @@ practice?
 
 <p>
 
-First we have to solve little chicken-and-egg problem. If we want
+First we have to solve little chicken-and-egg problem. If we want
 to use the per-transport recipient pools, we first need to know to
-what transport(s) is the message assigned. But we will find that
-out only after we read in the recipients first. So it is obvious
+what transport(s) the message is assigned. But we will find that
+out only after we first read in the recipients. So it is obvious
 that we first have to read in some recipients, use them to find out
-to what transports is the message to be assigned, and only after
-that we can use the per-transport recipient pools.
+to what transports the message is to be assigned, and only after
+that can we use the per-transport recipient pools.
 
 </p>
 
@@ -1595,12 +1597,12 @@ that we can use the per-transport recipient pools.
 Now how many recipients shall we read for the first time? This is
 what <a href="postconf.5.html#qmgr_message_recipient_minimum">qmgr_message_recipient_minimum</a> and <a href="postconf.5.html#qmgr_message_recipient_limit">qmgr_message_recipient_limit</a>
 values control. The <a href="postconf.5.html#qmgr_message_recipient_minimum">qmgr_message_recipient_minimum</a> value specifies
-how many recipients of each message we will read for the first time,
+how many recipients of each message we will read the first time,
 no matter what.  It is necessary to read at least one recipient
 before we can assign the message to a transport and create the first
 job. However, reading only <a href="postconf.5.html#qmgr_message_recipient_minimum">qmgr_message_recipient_minimum</a> recipients
 even if there are only few messages with few recipients in-core would
-be wasteful. Therefore if there is less than <a href="postconf.5.html#qmgr_message_recipient_limit">qmgr_message_recipient_limit</a>
+be wasteful. Therefore if there are fewer than <a href="postconf.5.html#qmgr_message_recipient_limit">qmgr_message_recipient_limit</a>
 recipients in-core so far, the first batch of recipients may be
 larger than <a href="postconf.5.html#qmgr_message_recipient_minimum">qmgr_message_recipient_minimum</a> - as large as is required
 to reach the <a href="postconf.5.html#qmgr_message_recipient_limit">qmgr_message_recipient_limit</a> limit.
@@ -1624,10 +1626,10 @@ recipient slots of all jobs of the message permits (plus the
 
 <p>
 
-For example, if a message has three jobs, first with 1 recipient
-still in-core and 4 recipient slots, second with 5 recipient in-core
-and 5 recipient slots, and third with 2 recipients in-core and 0
-recipient slots, it has 1+5+2=7 recipients in-core and 4+5+0=9 jobs'
+For example, if a message has three jobs, the first with 1 recipient
+still in-core and 4 recipient slots, the second with 5 recipients in-core
+and 5 recipient slots, and the third with 2 recipients in-core and 0
+recipient slots, it has 1+5+2=8 recipients in-core and 4+5+0=9 jobs'
 recipients slots in total. This means that we could immediately
 read 2+<a href="postconf.5.html#qmgr_message_recipient_minimum">qmgr_message_recipient_minimum</a> more recipients of that message
 in core.
@@ -1675,9 +1677,9 @@ More specifically, each time a job is created and appended to the
 job list, it gets all unused recipient slots from its transport's
 pool. It keeps them until all recipients of its message are read.
 When this happens, all unused recipient slots are transferred to
-the next job (which is now in fact now first such job) on the job
+the next job (which is now in fact the first such job) on the job
 list which still has some recipients unread, or eventually back to
-the transport pool if there is no such job. Such transfer then also
+the transport pool if there is no such job. Such transfer then also
 happens whenever a recipient entry of that job is delivered.
 
 </p>
@@ -1685,10 +1687,10 @@ happens whenever a recipient entry of that job is delivered.
 <p>
 
 There is also a scenario when a job is not appended to the end of
-the job list (for example it was created as a result of second or
+the job list (for example it was created as a result of second or
 later recipient batch). Then it works exactly as above, except that
 if it was put in front of the first unread job (that is, the job
-of a message which still has some unread recipients in queue file),
+of a message which still has some unread recipients in the queue file),
 that job is first forced to return all of its unused recipient slots
 to the transport pool.
 
@@ -1705,21 +1707,21 @@ as they still have recipients in-core (the maximum is there because
 of the sponsoring mentioned before) and the jobs after this job get
 nothing from the transport recipient pool (unless they got something
 before and then the first unread job was created and enqueued in
-front of them later - in such case the also get at maximum as many
+front of them later - in such a case, they also get at maximum as many
 slots as they have recipients in-core).
 
 </p>
 
 <p>
 
-Things work fine in such state for most of the time, because the
-current job is either completely read in-core or has as much recipient
+Things work fine in such state for most of the time, because the
+current job is either completely read in-core or has as many recipient
 slots as there are, but there is one situation which we still have
 to take care of specially.  Imagine if the current job is preempted
 by some unread job from the job list and there are no more recipient
 slots available, so this new current job could read only batches
 of <a href="postconf.5.html#qmgr_message_recipient_minimum">qmgr_message_recipient_minimum</a> recipients at a time. This would
-really degrade performance. For this reason, each transport has
+really degrade performance. For this reason, each transport has an
 extra pool of <a href="postconf.5.html#transport_extra_recipient_limit"><i>transport</i>_extra_recipient_limit</a> recipient
 slots, dedicated exactly for this situation. Each time an unread
 job preempts the current job, it gets half of the remaining recipient
@@ -1730,7 +1732,7 @@ slots from the normal pool and this extra pool.
 <p>
 
 And that's it. It sure does sound pretty complicated, but fortunately
-most people don't really have to care how exactly it works as long
+most people don't really have to care exactly how it works as long
 as it works.  Perhaps the only important things to know for most
 people are the following upper bound formulas:
 
@@ -1783,7 +1785,7 @@ where the sum is over all used transports.
 <p>
 
 And this terribly complicated chapter concludes the documentation
-of <tt>nqmgr</tt> scheduler.
+of the <tt>nqmgr</tt> scheduler.
 
 </p>
 
@@ -1793,7 +1795,7 @@ of <tt>nqmgr</tt> scheduler.
 inside out. In practice, you still hope that you will never have
 to really understand the last or last two chapters completely, and
 fortunately most people really won't. Understanding how the scheduler
-works in ideal conditions is more than good enough for vast majority
+works in ideal conditions is more than good enough for the vast majority
 of users.]
 
 </p>
index 53aa66d1d711fd825d7e25518004378e9722b766..478d153ecc81d8b518a608a50cc240b3deebb292 100644 (file)
@@ -218,8 +218,9 @@ some restriction produces a result of PERMIT, REJECT or DEFER (try
 again later).  The end of each list is equivalent to a PERMIT result.
 By placing a PERMIT restriction before a REJECT restriction you
 can make exceptions for specific clients or users. This is called
-allowlisting; the fourth example above allows mail from local
-networks but otherwise rejects mail to arbitrary destinations. </p>
+allowlisting; the <a href="postconf.5.html#smtpd_relay_restrictions">smtpd_relay_restrictions</a> example above allows mail from local
+networks, and from SASL authenticated clients, but otherwise rejects mail
+to arbitrary destinations. </p>
 
 <p> The table below summarizes the purpose of each SMTP access
 restriction list. All lists use the exact same syntax; they differ
index bc58dd45c2bd51a7f02163d43d2012bf481e77f5..3f74fc59f336fccc53db47a22e42c4c731a7ec92 100644 (file)
@@ -24,14 +24,14 @@ block or accept mail at specific SMTP protocol stages. In addition,
 the Postfix SMTP server can delegate decisions to an external policy
 server (Postfix 2.1 and later). </p>
 
-<p> With this policy delegation mechanism, a simple <a href="#greylist">
-greylist </a> policy can be implemented with only a dozen lines of
+<p> With this policy delegation mechanism, a simple
+<a href="#greylist">greylist</a> policy can be implemented with only a dozen lines of
 Perl, as is shown at the end of this document. A complete example
 can be found in the Postfix source code, in the directory
 examples/smtpd-policy. </p>
 
 <p> Another example of policy delegation is the SPF policy server
-at https://web.archive.org/web/20190221142057/<a href="http://www.openspf.org/Software">http://www.openspf.org/Software</a>.  </p>
+at <a href="https://web.archive.org/web/20190221142057/http://www.openspf.org/Software">https://web.archive.org/web/20190221142057/http://www.openspf.org/Software</a>.  </p>
 
 <p> Policy delegation is now the preferred method for adding policies
 to Postfix. It's much easier to develop a new feature in few lines
@@ -269,7 +269,7 @@ a TCP socket at 127.0.0.1 port 9998. The second example specifies
 an absolute pathname of a UNIX-domain socket. The third example
 specifies a pathname relative to the Postfix queue directory; use
 this for policy servers that are spawned by the Postfix master
-daemon. </p>
+daemon. On many systems, "local" is a synonym for "unix".</p>
 
 <p> To create a policy service that listens on a UNIX-domain socket
 called "policy", and that runs under control of the Postfix <a href="spawn.8.html">spawn(8)</a>
@@ -316,7 +316,7 @@ open relay. </p>
 
 <li> <p> Line 11: this increases the time that a policy server
 process may run to 3600 seconds.  The default time limit of 1000
-seconds is too short; the policy daemon needs to run long as the
+seconds is too short; the policy daemon needs to run as long as the
 SMTP server process that talks to it.
 See the <a href="spawn.8.html">spawn(8)</a> manpage for more information about the
 <a href="postconf.5.html#transport_time_limit"><i>transport</i>_time_limit</a> parameter.  </p>
@@ -565,7 +565,7 @@ each request and reply. </p>
 
 <li> <p> Line 6: this increases the time that a greylist server
 process may run to 3600 seconds.  The default time limit of 1000
-seconds is too short; the greylist daemon needs to run long as the
+seconds is too short; the greylist daemon needs to run as long as the
 SMTP server process that talks to it.
 See the <a href="spawn.8.html">spawn(8)</a> manpage for more information about the
 <a href="postconf.5.html#transport_time_limit"><i>transport</i>_time_limit</a> parameter.  </p>
@@ -615,7 +615,7 @@ client/server configuration</a>" section above.  </p>
 domains that often appear in forged email.  At some point
 in cyberspace/time a list of frequently
 forged MAIL FROM domains could be found at
-<a href="http://www.monkeys.com/anti-spam/filtering/sender-domain-validate.in">http://www.monkeys.com/anti-spam/filtering/sender-domain-validate.in</a>.
+<a href="https://web.archive.org/web/20080526153208/http://www.monkeys.com/anti-spam/filtering/sender-domain-validate.in">https://web.archive.org/web/20080526153208/http://www.monkeys.com/anti-spam/filtering/sender-domain-validate.in</a>.
 
 <blockquote>
 <pre>
index ab9a18e57a2678a0fac50f71deb20e51f95619d5..9e90ed1033ae85f529e00caaf742ed1d0a805c0c 100644 (file)
@@ -199,8 +199,9 @@ usual. </p>
 <p> The content filter itself is not described here. You can use
 any filter that is SMTP enabled. For non-SMTP capable content
 filtering software, Bennett Todd's SMTP proxy implements a nice
-Perl-based framework. See: <a href="http://bent.latency.net/smtpprox/">http://bent.latency.net/smtpprox/</a> or
-https://github.com/jnorell/smtpprox.</p>
+Perl-based framework. See:
+<a href="https://web.archive.org/web/20151022025756/http://bent.latency.net/smtpprox/">https://web.archive.org/web/20151022025756/http://bent.latency.net/smtpprox/</a>
+or <a href="https://github.com/jnorell/smtpprox/">https://github.com/jnorell/smtpprox/</a> </p>
 
 <blockquote>
 
@@ -351,8 +352,8 @@ the top of the <a href="master.5.html">master.cf</a> file: </p>
 
 <p> By default, the filter has 100 seconds to do its work. If it
 takes longer then Postfix gives up and reports an error to the
-remote SMTP client. You can increase this time limit (see configuration
-parameter section below) but doing so is pointless because you
+remote SMTP client. You can increase this time limit (see the <a href="#parameters">"Configuration
+parameters"</a> section below) but doing so is pointless because you
 can't control when the remote SMTP client times out. </p>
 
 <h2><a name="parameters">Configuration parameters</a></h2>
index 9bcbdf5981a7a5f85ed045b9899a8459f0cfe5ad..4f37c9c75e268f614cac04eab2ec10fd379d2bd9 100644 (file)
@@ -244,7 +244,7 @@ turned on (<a href="postconf.5.html#smtputf8_enable">smtputf8_enable</a> = yes).
 
 <p> For compatibility with pre-SMTPUTF8 environments, Postfix does
 not automatically set the "SMTPUTF8 requested" flag on messages
-from non-SMTPUTF8 clients that contain an UTF-8 header value or
+from non-SMTPUTF8 clients that contain a UTF-8 header value or
 UTF-8 address localpart. This would make such messages undeliverable
 to non-SMTPUTF8 servers, and could be a barrier to SMTPUTF8 adoption.
 </p>
index f6f879a6ca7d6650a129d893be848d1b9f5e6915..2d86167dcb081aa1c6ce74aa89ab8974956ab423 100644 (file)
@@ -117,7 +117,7 @@ send mail between users on the same machine. </p>
 
 <p> The following example presents additional configuration. You
 need to combine this with basic configuration information as
-discussed the first half of this document. </p>
+discussed in the first half of this document. </p>
 
 <blockquote>
 <pre>
@@ -165,7 +165,7 @@ address of their own.</p>
 
 <p> The following example presents additional configuration. You
 need to combine this with basic configuration information as
-discussed the first half of this document. </p>
+discussed in the first half of this document. </p>
 
 <blockquote>
 <pre>
@@ -400,14 +400,14 @@ resort.  </p>
 tables into one single MySQL database, and configure different
 Postfix queries to extract the appropriate information. </p>
 
-<li> <p> Specify dbm instead of hash if your system uses dbm files
-instead of db files. To find out what lookup tables Postfix supports,
-use the command "postconf -m". </p>
+<li> <p> Specify <b>dbm</b> instead of <b>hash</b> if your system uses
+<b>dbm</b> files instead of <b>db</b> files. To find out what lookup
+tables Postfix supports, use the command "<b>postconf -m</b>". </p>
 
-<li> <p> Execute the command "postmap /etc/postfix/sasl_passwd"
+<li> <p> Execute the command "<b>postmap /etc/postfix/sasl_passwd</b>"
 whenever you change the sasl_passwd table. </p>
 
-<li> <p> Execute the command "postmap /etc/postfix/sender_relay"
+<li> <p> Execute the command "<b>postmap /etc/postfix/sender_relay</b>"
 whenever you change the sender_relay table. </p>
 
 </ul>
index f850d50a7f87579b196e9ca71b80f36f19add352..bc91e5fdcb3bf2fe69a685efa3b66a49b8b85a95 100644 (file)
@@ -98,12 +98,6 @@ dbpath = /some/path/to/sqlite_database
 query = SELECT forw_addr FROM mxaliases WHERE alias='%s' AND status='paid'
 </pre>
 
-<h2>Additional notes</h2>
-
-<p> The SQLite configuration interface setup allows for multiple
-sqlite databases: you can use one for a virtual table, one for an
-access table, and one for an aliases table if you want. </p>
-
 <h2>Credits</h2>
 
 <p> SQLite support was added with Postfix version 2.8. </p>
index 4fa268161225261fa05fdb0ce0473f0192649e7d..ee076f61fca93f614a4fd7244f655678163a7749 100644 (file)
@@ -168,7 +168,7 @@ at their default settings. </p>
 
 <p> First we present the non-mailhost configuration, because it is
 the simpler one. This machine sends mail as "user@example.com" and
-is final destination for "user@hostname.example.com". </p>
+is the final destination for "user@hostname.example.com". </p>
 
 <blockquote>
 <pre>
@@ -198,7 +198,7 @@ a firewall</a>". </p>
 </ul>
 
 <p> Next we present the mailhost configuration.  This machine sends
-mail as "user@example.com" and is final destination for
+mail as "user@example.com" and is the final destination for
 "user@hostname.example.com" as well as "user@example.com". </p>
 
 <blockquote>
@@ -341,7 +341,7 @@ All the mail to these two accounts is forwarded to an inside address.
 only address literals matching $<a href="postconf.5.html#inet_interfaces">inet_interfaces</a> or $<a href="postconf.5.html#proxy_interfaces">proxy_interfaces</a>
 are deemed local.  So "localpart@[a.d.d.r]" can be matched as simply
 "localpart" in <a href="canonical.5.html">canonical(5)</a> and <a href="virtual.5.html">virtual(5)</a>. This avoids the need to
-specify firewall IP addresses into Postfix configuration files. </p>
+specify firewall IP addresses in Postfix configuration files. </p>
 
 </ul>
 
@@ -478,7 +478,7 @@ out what Postfix version you have, execute the command "<b>postconf
 
 <p> The following example presents additional configuration. You
 need to combine this with basic configuration information as
-discussed the first half of this document. </p>
+discussed in the first half of this document. </p>
 
 <blockquote>
 <pre>
@@ -526,7 +526,7 @@ you edit the transport table. </p>
 <h2><a name="backup">Configuring Postfix as primary or backup MX host for a remote site</a></h2>
 
 <p> This section presents additional configuration. You need to
-combine this with basic configuration information as discussed the
+combine this with basic configuration information as discussed in the
 first half of this document. </p>
 
 <p> When your system is SECONDARY MX host for a remote site this
@@ -642,7 +642,7 @@ of the time. For dialup connections that are up 24x7, see the <a
 href="#local_network">local area network</a> section above.  </p>
 
 <p> This section presents additional configuration. You need to
-combine this with basic configuration information as discussed the
+combine this with basic configuration information as discussed in the
 first half of this document. </p>
 
 <p> If you do not have your own hostname and IP address (usually
@@ -749,7 +749,7 @@ send mail between users on the same machine. </p>
 
 <p> The following example presents additional configuration. You
 need to combine this with basic configuration information as
-discussed the first half of this document. </p>
+discussed in the first half of this document. </p>
 
 <blockquote>
 <pre>
@@ -797,7 +797,7 @@ address of their own.</p>
 
 <p> The following example presents additional configuration. You
 need to combine this with basic configuration information as
-discussed the first half of this document. </p>
+discussed in the first half of this document. </p>
 
 <blockquote>
 <pre>
index 0036b28d229ae8dcc25dd636252a064fd45bfba6..bc2afb8366ce0e34e547e54eaf02dab0386f4187 100644 (file)
@@ -543,7 +543,7 @@ services that accept remote connections. </p>
 <p> The <a href="postscreen.8.html">postscreen(8)</a> daemon, introduced with Postfix 2.8, provides
 additional protection against mail server overload. One <a href="postscreen.8.html">postscreen(8)</a>
 process handles multiple inbound SMTP connections, and decides which
-clients may to talk to a Postfix SMTP server process.  By keeping
+clients may talk to a Postfix SMTP server process.  By keeping
 spambots away, <a href="postscreen.8.html">postscreen(8)</a> leaves more SMTP server processes
 available for legitimate clients, and delays the onset of server
 overload conditions. </p>
index e36ad4e1e9d1dc66cfca4e6aedc7aa4951274c13..1d8a8ae8d41bbc8ab36603ebde99480f840bad48 100644 (file)
@@ -35,7 +35,7 @@ SMTP mail or with SASL authentication.
 <p> Postfix version 2.2 introduces support for TLS as described in
 <a href="https://tools.ietf.org/html/rfc3207">RFC 3207</a>.  TLS Support for older Postfix versions was available as
 an add-on patch.  The section "<a href="#compat">Compatibility with
-Postfix < 2.2 TLS support</a>" below discusses the differences
+Postfix &lt; 2.2 TLS support</a>" below discusses the differences
 between these implementations.  </p>
 
 <p> Topics covered in this document: </p>
@@ -54,7 +54,7 @@ between these implementations.  </p>
 
 <li><a href="#problems"> Reporting problems </a>
 
-<li><a href="#compat">Compatibility with Postfix < 2.2 TLS support</a>
+<li><a href="#compat">Compatibility with Postfix &lt; 2.2 TLS support</a>
 
 <li><a href="#credits"> Credits </a>
 
@@ -225,7 +225,7 @@ key configuration </a> </h3>
 <p> In order to use TLS, the Postfix SMTP server needs a certificate
 and a private key. Both must be in "pem" format. The private key
 must not be encrypted, meaning:  the key must be accessible without
-password.  Both certificate and private key may be in the same
+password.  Both certificate and private key may be in the same
 file.  </p>
 
 <p> Both RSA and DSA certificates are supported. Typically you will
@@ -253,7 +253,7 @@ CA".  Create the server.pem file with: </p>
 </blockquote>
 
 <p> A Postfix SMTP server certificate supplied here must be usable
-as SSL server certificate and hence pass the "openssl verify -purpose
+as an SSL server certificate and hence pass the "openssl verify -purpose
 sslserver ..." test. </p>
 
 <p> A client that trusts the root CA has a local copy of the root
@@ -616,7 +616,7 @@ as a key for the specified <a href="access.5.html">access(5)</a> table. </p> </d
 <p> The <a href="postconf.5.html#permit_tls_all_clientcerts">permit_tls_all_clientcerts</a> feature must be used with caution,
 because it can result in too many access permissions.  Use this
 feature only if a special CA issues the client certificates, and
-only if this CA is listed as trusted CA. If other CAs are trusted,
+only if this CA is listed as trusted CA. If other CAs are trusted,
 any owner of a valid client certificate would be authorized.
 The <a href="postconf.5.html#permit_tls_all_clientcerts">permit_tls_all_clientcerts</a> feature can be practical for a
 specially created email relay server.  </p>
@@ -663,7 +663,7 @@ the user or host.</p>
 
 <p> To influence the Postfix SMTP server cipher selection scheme,
 you can give cipherlist string.  A detailed description would go
-to far here; please refer to the OpenSSL documentation.  If you
+too far here; please refer to the OpenSSL documentation.  If you
 don't know what to do with it, simply don't touch it and leave the
 (openssl-)compiled in default! </p>
 
@@ -778,7 +778,7 @@ certificate is presented.  </p>
 key/certificate pair as the Postfix SMTP server.  If a certificate
 is to be presented, it must be in "pem" format. The private key
 must not be encrypted, meaning: it must be accessible without
-password. Both parts (certificate and private key) may be in the
+password. Both parts (certificate and private key) may be in the
 same file. </p>
 
 <p> In order for remote SMTP servers to verify the Postfix SMTP
@@ -798,7 +798,7 @@ Create the client.pem file with: </p>
 </blockquote>
 
 <p> A Postfix SMTP client certificate supplied here must be usable
-as SSL client certificate and hence pass the "openssl verify -purpose
+as an SSL client certificate and hence pass the "openssl verify -purpose
 sslclient ..." test. </p>
 
 <p> A server that trusts the root CA has a local copy of the root
@@ -1156,9 +1156,9 @@ policy is based on <a href="postconf.5.html#smtp_use_tls">smtp_use_tls</a>, <a h
 "<a href="postconf.5.html#smtp_tls_enforce_peername">smtp_tls_enforce_peername</a> = yes" imply "<a href="postconf.5.html#smtp_use_tls">smtp_use_tls</a> = yes". </p>
 
 <li> <p> When both hostname and next-hop destination lookups produce
-a result, the more specific per-site policy (NONE, MUST, etc)
+a result, the more specific per-site policy (NONE, MUST, etc.)
 overrides the less specific one (MAY), and the more secure per-site
-policy (MUST, etc) overrides the less secure one (NONE).  </p>
+policy (MUST, etc.) overrides the less secure one (NONE).  </p>
 
 <li> <p> After the per-site policy lookups are combined, the result
 generally overrides the global policy. The exception is the less
@@ -1215,7 +1215,7 @@ verification. This feature requires Postfix 2.2.9 or later.  </p>
     example.org                 NONE
 
     # TLS should not be used with the host <i>smtp.example.com</i>.
-    smtp.example.com             NONE
+    [smtp.example.com]          NONE
 </pre>
 </blockquote>
 
@@ -1266,7 +1266,7 @@ special CA which then issues the actual certificate...) </p>
 
 <p> To influence the Postfix SMTP client cipher selection scheme,
 you can give cipherlist string.  A detailed description would go
-to far here; please refer to the OpenSSL documentation.  If you
+too far here; please refer to the OpenSSL documentation.  If you
 don't know what to do with it, simply don't touch it and leave the
 (openssl-)compiled in default! </p>
 
@@ -1539,7 +1539,7 @@ Patches, when possible, are greatly appreciated too. </p>
 
 </ul>
 
-<h2><a name="compat">Compatibility with Postfix <2.2 TLS support</a></h2>
+<h2><a name="compat">Compatibility with Postfix &lt; 2.2 TLS support</a></h2>
 
 <p> Postfix version 2.2 TLS support is based on the Postfix/TLS
 patch by Lutz J&auml;nicke, but differs in a few minor ways. </p>
index 249dd29ca25422ee8caf3cdf56b679def26674d7..7f950aba381926668e3452c1795e711f676b4a84 100644 (file)
@@ -29,7 +29,7 @@ SMTP mail or with SASL authentication. </p>
 the ability to encrypt mail and to authenticate remote SMTP clients
 or servers.  You also turn on hundreds of thousands of lines of
 OpenSSL library code.  Assuming that OpenSSL is written as carefully
-as Wietse's own code, every 1000 lines introduce one additional bug
+as Wietse's own code, every 1000 lines introduces one additional bug
 into Postfix.  </p>
 
 <p> Topics covered in this document: </p>
@@ -201,7 +201,7 @@ client must receive the issuing CA certificates via the TLS handshake
 or via public-key infrastructure. This means that the Postfix server
 public-key certificate file must include the server certificate
 first, then the issuing CA(s) (bottom-up order). The Postfix SMTP
-server certificate must be usable as SSL server certificate and
+server certificate must be usable as an SSL server certificate and
 hence pass the "<tt>openssl verify -purpose sslserver ...</tt>" test.
 </p>
 
@@ -280,7 +280,7 @@ single file can hold multiple <i>(key, cert, [chain])</i> sequences, one
 per algorithm.  It is typically simpler to keep the chain for each
 algorithm in its own file.  Most users are likely to deploy just a
 single RSA chain, but with OpenSSL 1.1.1, it is possible to deploy up to
-five chains, one each for RSA, ECDSA, ED25519, ED448 and even the
+five chains, one each for RSA, ECDSA, ED25519, ED448, and even the
 obsolete DSA. </p>
 
 <blockquote>
@@ -795,7 +795,7 @@ context, though not recommended, is still likely safe.  </p>
 <p> The <a href="postconf.5.html#permit_tls_all_clientcerts">permit_tls_all_clientcerts</a> feature must be used with caution,
 because it can result in too many access permissions.  Use this
 feature only if a special CA issues the client certificates, and
-only if this CA is listed as trusted CA. If other CAs are trusted,
+only if this CA is listed as trusted CA. If other CAs are trusted,
 any owner of a valid client certificate would be authorized.
 The <a href="postconf.5.html#permit_tls_all_clientcerts">permit_tls_all_clientcerts</a> feature can be practical for a
 specially created email relay server.  </p>
@@ -1863,7 +1863,7 @@ cipher used determines which certificate is presented. </p>
 key/certificate pair as the Postfix SMTP server.  If a certificate
 is to be presented, it must be in "PEM" format. The private key
 must not be encrypted, meaning: it must be accessible without
-password. Both parts (certificate and private key) may be in the
+password. Both parts (certificate and private key) may be in the
 same file. </p>
 
 <p> With OpenSSL 1.1.1 and Postfix &ge; 3.4 it is also possible to
@@ -1892,7 +1892,7 @@ As the "root" super-user create the client.pem file with: </p>
 </blockquote>
 
 <p> A Postfix SMTP client certificate supplied here must be usable
-as SSL client certificate and hence pass the "openssl verify -purpose
+as an SSL client certificate and hence pass the "openssl verify -purpose
 sslclient ..." test. </p>
 
 <p> A server that trusts the root CA has a local copy of the root
@@ -1911,7 +1911,7 @@ single file can hold multiple <i>(key, cert, [chain])</i> sequences, one
 per algorithm.  It is typically simpler to keep the chain for each
 algorithm in its own file.  Most users are likely to deploy at most a
 single RSA chain, but with OpenSSL 1.1.1, it is possible to deploy up
-five chains, one each for RSA, ECDSA, ED25519, ED448 and even the
+five chains, one each for RSA, ECDSA, ED25519, ED448, and even the
 obsolete DSA. </p>
 
 <blockquote>
@@ -2332,10 +2332,10 @@ files.  </dd>
 
 <dt><b>secure</b></dt> <dd><a href="#client_tls_secure">Secure certificate
 verification.</a> Mail is delivered only if the TLS handshake succeeds,
-if the remote SMTP server certificate can be validated (not expired
-or revoked, and signed by a trusted Certification Authority), and if the
-server certificate name matches the optional "match" attribute (or the
-<a href="postconf.5.html">main.cf</a> <a href="postconf.5.html#smtp_tls_secure_cert_match">smtp_tls_secure_cert_match</a> parameter value when no optional
+and DNS forgery resistant remote SMTP certificate verification succeeds
+(not expired or revoked, and signed by a trusted Certification Authority),
+and if the server certificate name matches the optional "match" attribute
+(or the <a href="postconf.5.html">main.cf</a> <a href="postconf.5.html#smtp_tls_secure_cert_match">smtp_tls_secure_cert_match</a> parameter value when no optional
 "match" attribute is specified).  With Postfix &ge; 2.11 the "tafile"
 attribute optionally modifies trust chain verification in the same manner
 as the "<a href="postconf.5.html#smtp_tls_trust_anchor_file">smtp_tls_trust_anchor_file</a>" parameter.  The "tafile" attribute
@@ -2841,7 +2841,7 @@ for exchanging email with sites that you have no trust relationship
 with.  For real authentication you need also enable DNSSEC record
 signing for your domain and publish TLSA records and/or your Postfix
 public key certificate needs to be signed by a recognized Certification
-Authority.  To authenticate the certificates of remote host you
+Authority.  To authenticate the certificates of remote host you
 need a DNSSEC-validating local resolver and to enable <a
 href="#client_tls_dane">DANE</a> authentication and/or configure
 the Postfix SMTP client with a list of public key certificates of
@@ -3112,7 +3112,7 @@ client certificates, unless there are servers which authenticate your mail
 submission via client certificates. Often servers that perform TLS client
 authentication will issue the required certificates signed by their own
 CA. If you configure the client certificate and key incorrectly, you
-will be unable to send mail to sites that request client certificate,
+will be unable to send mail to sites that request client certificate,
 but don't require them from all clients. </p>
 
 <blockquote>
index 5377ffff2c1184bb9e8f67d4e6d6888cbd0e32c9..164ef3ce73de3ee5b40261740fba39fa6c9ceebe 100644 (file)
@@ -409,9 +409,9 @@ especially if the gateway forwards to multiple MX hosts. When all
 MX hosts are up and accepting connections in a timely fashion,
 throughput will be high.  If any MX host is down and completely
 unresponsive, the average connection latency rises to at least 1/N
-* $smtp_connection_timeout, if there are N MX hosts. This limits
+* $<a href="postconf.5.html#smtp_connect_timeout">smtp_connect_timeout</a>, if there are N MX hosts. This limits
 throughput to at most the destination concurrency * N /
-$smtp_connection_timeout. </p>
+$<a href="postconf.5.html#smtp_connect_timeout">smtp_connect_timeout</a>. </p>
 
 <p> For example, with a destination concurrency of 100 and 2 MX
 hosts, each host will handle up to 50 simultaneous connections. If
@@ -422,9 +422,9 @@ multiple MX hosts need a lower connection timeout, values as low
 as 5s or even 1s can be used to prevent congestion when one or
 more, but not all MX hosts are down. </p>
 
-<p> If necessary, set a higher transport_destination_concurrency_limit
+<p> If necessary, set a higher <a href="postconf.5.html#transport_destination_concurrency_limit"><i>transport</i>_destination_concurrency_limit</a>
 (in <a href="postconf.5.html">main.cf</a> since this is a queue manager parameter) and a lower
-smtp_connection_timeout (with a "-o" override in <a href="master.5.html">master.cf</a> since
+<a href="postconf.5.html#smtp_connect_timeout">smtp_connect_timeout</a> (with a "-o" override in <a href="master.5.html">master.cf</a> since
 this parameter has no per-transport name) for the relay transport
 and any transports dedicated for specific high volume destinations.
 </p>
index bebcee0958cab6cc313e95bdff647a3b33d44036..ffc02e007421506bc94f81222b7e9b07c441dd1f 100644 (file)
@@ -62,7 +62,7 @@ domains, non-UNIX accounts</a>
 <h2><a name="canonical">Canonical versus hosted versus 
 other domains</a></h2>
 
-<p>Most Postfix systems are <b>final destination</b> for only a
+<p>Most Postfix systems are the <b>final destination</b> for only a
 few domain names.  These include the hostnames and [the IP addresses]
 of the machine that Postfix runs on, and sometimes also include
 the parent domain of the hostname.  The remainder of this document
@@ -71,7 +71,7 @@ usually implemented with the Postfix <a href="ADDRESS_CLASS_README.html#local_do
 as defined in the <a href="ADDRESS_CLASS_README.html">ADDRESS_CLASS_README</a> file.</p>
 
 <p> Besides the <a href="VIRTUAL_README.html#canonical">canonical domains</a>, Postfix can be configured to be
-<b>final destination</b> for any number of additional domains.
+the <b>final destination</b> for any number of additional domains.
 These domains are called hosted, because they are not directly
 associated with the name of the machine itself. Hosted domains are
 usually implemented with the <a href="ADDRESS_CLASS_README.html#virtual_alias_class">virtual alias domain</a> address class
@@ -87,7 +87,7 @@ MX host becomes available. This function is implemented with the
 file.  </p>
 
 <p> Finally, Postfix can be configured as a transit host for sending
-mail across the internet. Obviously, Postfix is not final destination
+mail across the internet. Obviously, Postfix is not the final destination
 for such mail. This function is available only for authorized
 clients and/or users, and is implemented by the <a href="ADDRESS_CLASS_README.html#default_domain_class">default domain</a>
 address class, as defined in the <a href="ADDRESS_CLASS_README.html">ADDRESS_CLASS_README</a> file. </p>
index 605db661e9d6df855ff6ad71665c9d246af004dd..cfbec47dd529cda1785b699ce07027f20c3d4ce0 100644 (file)
@@ -34,8 +34,8 @@ ACCESS(5)                                                            ACCESS(5)
 
        Alternatively, the table can be provided as  a  regular-expression  map
        where  patterns  are  given  as  regular expressions, or lookups can be
-       directed to TCP-based server. In those cases, the lookups are done in a
-       slightly  different  way  as  described below under "REGULAR EXPRESSION
+       directed to a TCP-based server. In those cases, the lookups are done in
+       a  slightly  different way as described below under "REGULAR EXPRESSION
        TABLES" or "TCP-BASED TABLES".
 
 <b>CASE FOLDING</b>
@@ -213,7 +213,7 @@ ACCESS(5)                                                            ACCESS(5)
               This feature is available in Postfix 2.1 and later.
 
        <b>DEFER_IF_PERMIT</b> <i>optional text...</i>
-              Defer the request if some later restriction would result in a an
+              Defer  the  request if some later restriction would result in an
               explicit   or    implicit    PERMIT    action.     Reply    with
               "<b>$<a href="postconf.5.html#access_map_defer_code">access_map_defer_code</a>   4.7.1</b>    <i>optional  text...</i>"  when  the
               optional text is specified, otherwise reply with a generic error
index 5421e49e74acf083dfde2f8972dd84b5548e54c8..a2768453dfe0a21a1c59f04c43ce31ce1900b213 100644 (file)
@@ -162,7 +162,7 @@ BOUNCE(8)                                                            BOUNCE(8)
 
        Available in Postfix 3.7 and later:
 
-       <b>header_from_format (standard)</b>
+       <b><a href="postconf.5.html#header_from_format">header_from_format</a> (standard)</b>
               The format of the Postfix-generated <b>From:</b> header.
 
 <b>FILES</b>
index 224dfd8ce135a2cd6d1535070d7236630a85c4ef..5899a0024ce02df7a4808071362a25ed9ccf6c40 100644 (file)
@@ -33,8 +33,8 @@ CANONICAL(5)                                                      CANONICAL(5)
 
        Alternatively,  the  table  can be provided as a regular-expression map
        where patterns are given as regular  expressions,  or  lookups  can  be
-       directed to TCP-based server. In those cases, the lookups are done in a
-       slightly different way as described  below  under  "REGULAR  EXPRESSION
+       directed to a TCP-based server. In those cases, the lookups are done in
+       a slightly different way as described below under  "REGULAR  EXPRESSION
        TABLES" or "TCP-BASED TABLES".
 
        By  default  the  <a href="canonical.5.html"><b>canonical</b>(5)</a>  mapping  affects  both  message  header
@@ -234,7 +234,7 @@ CANONICAL(5)                                                      CANONICAL(5)
 
        <b><a href="postconf.5.html#masquerade_exceptions">masquerade_exceptions</a> (empty)</b>
               Optional  list  of  user names that are not subjected to address
-              masquerading,  even  when  their   address   matches   $<a href="postconf.5.html#masquerade_domains">masquer</a>-
+              masquerading,  even  when  their   addresses   match   $<a href="postconf.5.html#masquerade_domains">masquer</a>-
               <a href="postconf.5.html#masquerade_domains">ade_domains</a>.
 
        <b><a href="postconf.5.html#mydestination">mydestination</a> ($<a href="postconf.5.html#myhostname">myhostname</a>, localhost.$<a href="postconf.5.html#mydomain">mydomain</a>, localhost)</b>
index cd90384c8b5ddc228fdedd9ea009076e1e2ee191..7cad83ca0e6f951de49f81ca9bde341b58240aa2 100644 (file)
@@ -118,6 +118,9 @@ CIDR_TABLE(5)                                                    CIDR_TABLE(5)
 
        Postfix parses the result as if it is a file in /etc/postfix.
 
+       Note: if a rule contains <b>$</b>, specify <b>$$</b> to keep Postfix from  trying  to
+       do <i>$name</i> expansion as it evaluates a parameter value.
+
 <b>EXAMPLE SMTPD ACCESS MAP</b>
        /etc/postfix/<a href="postconf.5.html">main.cf</a>:
            <a href="postconf.5.html#smtpd_client_restrictions">smtpd_client_restrictions</a> = ... <a href="cidr_table.5.html">cidr</a>:/etc/postfix/client.cidr ...
index 026cf26abc98b73d237f6674b18f3502041567d4..994c8a817820c5ec5acc27c495fd9d2b77bca718 100644 (file)
@@ -117,7 +117,7 @@ CLEANUP(8)                                                          CLEANUP(8)
               after  applying  <a href="header_checks.5.html"><b>header_checks</b>(5)</a>  and  before  invoking  Milter
               applications.
 
-       <b>header_from_format (standard)</b>
+       <b><a href="postconf.5.html#header_from_format">header_from_format</a> (standard)</b>
               The format of the Postfix-generated <b>From:</b> header.
 
 <b>BUILT-IN CONTENT FILTERING CONTROLS</b>
index 5421e49e74acf083dfde2f8972dd84b5548e54c8..a2768453dfe0a21a1c59f04c43ce31ce1900b213 100644 (file)
@@ -162,7 +162,7 @@ BOUNCE(8)                                                            BOUNCE(8)
 
        Available in Postfix 3.7 and later:
 
-       <b>header_from_format (standard)</b>
+       <b><a href="postconf.5.html#header_from_format">header_from_format</a> (standard)</b>
               The format of the Postfix-generated <b>From:</b> header.
 
 <b>FILES</b>
index a2243ac73016608ec99a5c960593084a551fb065..304fd431eb2b3b84328d488b64a06b93840143af 100644 (file)
@@ -43,8 +43,8 @@ GENERIC(5)                                                          GENERIC(5)
 
        Alternatively,  the  table  can be provided as a regular-expression map
        where patterns are given as regular  expressions,  or  lookups  can  be
-       directed  to TCP-based server. In those case, the lookups are done in a
-       slightly different way as described  below  under  "REGULAR  EXPRESSION
+       directed to a TCP-based server. In those cases, the lookups are done in
+       a slightly different way as described below under  "REGULAR  EXPRESSION
        TABLES" or "TCP-BASED TABLES".
 
 <b>CASE FOLDING</b>
@@ -130,8 +130,8 @@ GENERIC(5)                                                          GENERIC(5)
 <b>TCP-BASED TABLES</b>
        This  section  describes  how the table lookups change when lookups are
        directed  to  a  TCP-based  server.  For  a  description  of  the   TCP
-       client/server  lookup  protocol, see <a href="tcp_table.5.html"><b>tcp_table</b>(5)</a>.  This feature is not
-       available up to and including Postfix version 2.4.
+       client/server  lookup  protocol,  see  <a href="tcp_table.5.html"><b>tcp_table</b>(5)</a>.   This  feature is
+       available in Postfix 2.5 and later.
 
        Each lookup operation uses the entire address once.  Thus,  <i>user@domain</i>
        mail  addresses  are  not  broken  up  into their <i>user</i> and <i>@domain</i> con-
@@ -168,35 +168,39 @@ GENERIC(5)                                                          GENERIC(5)
        below  provides  only  a  parameter  summary.  See <a href="postconf.5.html"><b>postconf</b>(5)</a> for more
        details including examples.
 
-       <b><a href="postconf.5.html#smtp_generic_maps">smtp_generic_maps</a></b>
-              Address mapping lookup table for envelope and header sender  and
-              recipient addresses while delivering mail via SMTP.
+       <b><a href="postconf.5.html#smtp_generic_maps">smtp_generic_maps</a> (empty)</b>
+              Optional lookup tables that perform  address  rewriting  in  the
+              Postfix  SMTP  client,  typically  to  transform a locally valid
+              address into a globally valid address when sending  mail  across
+              the Internet.
 
-       <b><a href="postconf.5.html#propagate_unmatched_extensions">propagate_unmatched_extensions</a></b>
-              A list of address rewriting or forwarding mechanisms that propa-
-              gate an address extension  from  the  original  address  to  the
-              result.  Specify zero or more of <b>canonical</b>, <b>virtual</b>, <b>alias</b>, <b>for-</b>
-              <b>ward</b>, <b>include</b>, or <b>generic</b>.
+       <b><a href="postconf.5.html#propagate_unmatched_extensions">propagate_unmatched_extensions</a> (canonical, virtual)</b>
+              What  address  lookup  tables copy an address extension from the
+              lookup key to the lookup result.
 
        Other parameters of interest:
 
-       <b><a href="postconf.5.html#inet_interfaces">inet_interfaces</a></b>
-              The network interface addresses that this system  receives  mail
-              on.   You  need  to  stop  and start Postfix when this parameter
-              changes.
+       <b><a href="postconf.5.html#inet_interfaces">inet_interfaces</a> (all)</b>
+              The network interface addresses that this mail  system  receives
+              mail on.
 
-       <b><a href="postconf.5.html#proxy_interfaces">proxy_interfaces</a></b>
-              Other interfaces that this machine receives mail on by way of  a
-              proxy agent or network address translator.
+       <b><a href="postconf.5.html#proxy_interfaces">proxy_interfaces</a> (empty)</b>
+              The  network  interface addresses that this mail system receives
+              mail on by way of a proxy or network address translation unit.
 
-       <b><a href="postconf.5.html#mydestination">mydestination</a></b>
-              List of domains that this mail system considers local.
+       <b><a href="postconf.5.html#mydestination">mydestination</a> ($<a href="postconf.5.html#myhostname">myhostname</a>, localhost.$<a href="postconf.5.html#mydomain">mydomain</a>, localhost)</b>
+              The list of domains that are delivered via the  $<a href="postconf.5.html#local_transport">local_transport</a>
+              mail delivery transport.
 
-       <b><a href="postconf.5.html#myorigin">myorigin</a></b>
-              The domain that is appended to locally-posted mail.
+       <b><a href="postconf.5.html#myorigin">myorigin</a> ($<a href="postconf.5.html#myhostname">myhostname</a>)</b>
+              The  domain  name that locally-posted mail appears to come from,
+              and that locally posted mail is delivered to.
 
-       <b><a href="postconf.5.html#owner_request_special">owner_request_special</a></b>
-              Give special treatment to <b>owner-</b><i>xxx</i> and <i>xxx</i><b>-request</b> addresses.
+       <b><a href="postconf.5.html#owner_request_special">owner_request_special</a> (yes)</b>
+              Enable special  treatment  for  owner-<i>listname</i>  entries  in  the
+              <a href="aliases.5.html"><b>aliases</b>(5)</a>  file,  and  don't  split  owner-<i>listname</i>  and  <i>list-</i>
+              <i>name</i>-request address localparts when the <a href="postconf.5.html#recipient_delimiter">recipient_delimiter</a>  is
+              set to "-".
 
 <b>SEE ALSO</b>
        <a href="postmap.1.html">postmap(1)</a>, Postfix lookup table manager
index 9ca15f4b69c2bc5fdf0ff2d9805d22b3dc3b82dc..d35f5e1be05bdf304d0995a056696aacd599915b 100644 (file)
@@ -88,8 +88,8 @@ LDAP_TABLE(5)                                                    LDAP_TABLE(5)
               (the last one provided that OpenLDAP was compiled  with  support
               for SSL):
 
-                  server_host = ldapi://%2Fsome%2Fpath
-                              ldaps://ldap.example.com:636
+                  server_host = <a href="ldap_table.5.html">ldapi</a>://%2Fsome%2Fpath
+                              <a href="ldap_table.5.html">ldaps</a>://ldap.example.com:636
 
        <b>server_port (default: 389)</b>
               The port the LDAP server listens on, e.g.
@@ -129,20 +129,21 @@ LDAP_TABLE(5)                                                    LDAP_TABLE(5)
               <b>%[SUD]</b> For the <b>search_base</b> parameter, the upper-case equivalents
                      of  the  above  expansions  behave  identically  to their
                      lower-case counter-parts. With the <b>result_format</b>  parame-
-                     ter  (previously called <b>result_filter</b> see the COMPATIBIL-
-                     ITY section and below), they expand to the  corresponding
-                     components of input key rather than the result value.
+                     ter  (previously called <b>result_filter</b> see the OTHER OBSO-
+                     LETE FEATURES section and below), they expand to the cor-
+                     responding components of input key rather than the result
+                     value.
 
-              <b>%[1-9]</b> The  patterns  %1,  %2, ... %9 are replaced by the corre-
-                     sponding most significant component of  the  input  key's
-                     domain.  If  the input key is <i>user@mail.example.com</i>, then
+              <b>%[1-9]</b> The patterns %1, %2, ... %9 are replaced  by  the  corre-
+                     sponding  most  significant  component of the input key's
+                     domain. If the input key is  <i>user@mail.example.com</i>,  then
                      %1 is <b>com</b>, %2 is <b>example</b> and %3 is <b>mail</b>. If the input key
-                     is  unqualified or does not have enough domain components
+                     is unqualified or does not have enough domain  components
                      to satisfy all the specified patterns, the search is sup-
                      pressed and returns no results.
 
        <b>query_filter (default: mailacceptinggeneralid=%s)</b>
-              The  <a href="https://tools.ietf.org/html/rfc2254">RFC2254</a>  filter used to search the directory, where <b>%s</b> is a
+              The <a href="https://tools.ietf.org/html/rfc2254">RFC2254</a> filter used to search the directory, where <b>%s</b>  is  a
               substitute for the address Postfix is trying to resolve, e.g.
 
                   query_filter = (&amp;(mail=%s)(paid_up=true))
@@ -152,27 +153,28 @@ LDAP_TABLE(5)                                                    LDAP_TABLE(5)
               <b>%%</b>     This is replaced by a literal '%' character. (Postfix 2.2
                      and later).
 
-              <b>%s</b>     This  is  replaced by the input key.  <a href="https://tools.ietf.org/html/rfc2254">RFC 2254</a> quoting is
-                     used to make sure that the input key does not  add  unex-
+              <b>%s</b>     This is replaced by the input key.  <a href="https://tools.ietf.org/html/rfc2254">RFC 2254</a>  quoting  is
+                     used  to  make sure that the input key does not add unex-
                      pected metacharacters.
 
               <b>%u</b>     When the input key is an address of the form user@domain,
                      <b>%u</b> is replaced by the (<a href="https://tools.ietf.org/html/rfc2254">RFC 2254</a>) quoted local part of the
-                     address.   Otherwise, <b>%u</b> is replaced by the entire search
-                     string.  If the localpart is empty, the  search  is  sup-
+                     address.  Otherwise, <b>%u</b> is replaced by the entire  search
+                     string.   If  the  localpart is empty, the search is sup-
                      pressed and returns no results.
 
               <b>%d</b>     When the input key is an address of the form user@domain,
-                     <b>%d</b> is replaced by the (<a href="https://tools.ietf.org/html/rfc2254">RFC 2254</a>) quoted  domain  part  of
-                     the  address.   Otherwise,  the  search is suppressed and
+                     <b>%d</b>  is  replaced  by the (<a href="https://tools.ietf.org/html/rfc2254">RFC 2254</a>) quoted domain part of
+                     the address.  Otherwise, the  search  is  suppressed  and
                      returns no results.
 
               <b>%[SUD]</b> The upper-case equivalents of the above expansions behave
-                     in   the  <b>query_filter</b>  parameter  identically  to  their
-                     lower-case counter-parts. With the <b>result_format</b>  parame-
-                     ter  (previously called <b>result_filter</b> see the COMPATIBIL-
-                     ITY section and below), they expand to the  corresponding
-                     components of input key rather than the result value.
+                     in  the  <b>query_filter</b>  parameter  identically  to   their
+                     lower-case  counter-parts. With the <b>result_format</b> parame-
+                     ter (previously called <b>result_filter</b> see the OTHER  OBSO-
+                     LETE FEATURES section and below), they expand to the cor-
+                     responding components of input key rather than the result
+                     value.
 
                      The  above  %S,  %U  and %D expansions are available with
                      Postfix 2.2 and later.
@@ -249,9 +251,9 @@ LDAP_TABLE(5)                                                    LDAP_TABLE(5)
               NOTE: DO NOT put quotes around the result format!
 
        <b>domain (default: no domain list)</b>
-              This is a list of domain names, paths to files, or dictionaries.
-              When  specified,  only  fully  qualified  search  keys  with   a
-              *non-empty*  localpart  and  a  matching domain are eligible for
+              This  is a list of domain names, paths to files, or "<a href="DATABASE_README.html">type:table</a>"
+              databases. When specified, only fully qualified search keys with
+              a  *non-empty*  localpart and a matching domain are eligible for
               lookup:  'user'  lookups,  bare  domain  lookups  and  "@domain"
               lookups  are  not  performed.  This can significantly reduce the
               query load on the LDAP server.
@@ -522,7 +524,7 @@ LDAP_TABLE(5)                                                    LDAP_TABLE(5)
        LDAP  SSL  service  can  be  requested  by  using a LDAP SSL URL in the
        server_host parameter:
 
-           server_host = ldaps://ldap.example.com:636
+           server_host = <a href="ldap_table.5.html">ldaps</a>://ldap.example.com:636
 
        STARTTLS can be turned on with the start_tls parameter:
 
index 5491c4ec222932e8797d5f39777763753fb5afa1..98d8879ceea6a7b4f36bc2b6d8e37d4a398f4a06 100644 (file)
@@ -392,7 +392,7 @@ SMTP(8)                                                                SMTP(8)
               DATA    requests,    when    deadlines    are    enabled    with
               <a href="postconf.5.html#smtp_per_request_deadline">smtp_per_request_deadline</a>.
 
-       <b>header_from_format (standard)</b>
+       <b><a href="postconf.5.html#header_from_format">header_from_format</a> (standard)</b>
               The format of the Postfix-generated <b>From:</b> header.
 
 <b>MIME PROCESSING CONTROLS</b>
@@ -837,13 +837,13 @@ SMTP(8)                                                                SMTP(8)
 
        Implemented in the <a href="qmgr.8.html">qmgr(8)</a> daemon:
 
-       <b>transport_destination_concurrency_limit   ($<a href="postconf.5.html#default_destination_concurrency_limit">default_destination_concur</a>-</b>
+       <b><a href="postconf.5.html#transport_destination_concurrency_limit">transport_destination_concurrency_limit</a>   ($<a href="postconf.5.html#default_destination_concurrency_limit">default_destination_concur</a>-</b>
        <b><a href="postconf.5.html#default_destination_concurrency_limit">rency_limit</a>)</b>
-              A  transport-specific  override for the default_destination_con-
-              currency_limit parameter value, where <i>transport</i> is the <a href="master.5.html">master.cf</a>
+              A  transport-specific  override for the <a href="postconf.5.html#default_destination_concurrency_limit">default_destination_con</a>-
+              <a href="postconf.5.html#default_destination_concurrency_limit">currency_limit</a> parameter value, where <i>transport</i> is the <a href="master.5.html">master.cf</a>
               name of the message delivery transport.
 
-       <b>transport_destination_recipient_limit     ($<a href="postconf.5.html#default_destination_recipient_limit">default_destination_recipi</a>-</b>
+       <b><a href="postconf.5.html#transport_destination_recipient_limit">transport_destination_recipient_limit</a>     ($<a href="postconf.5.html#default_destination_recipient_limit">default_destination_recipi</a>-</b>
        <b><a href="postconf.5.html#default_destination_recipient_limit">ent_limit</a>)</b>
               A transport-specific override for the <a href="postconf.5.html#default_destination_recipient_limit">default_destination_recip</a>-
               <a href="postconf.5.html#default_destination_recipient_limit">ient_limit</a> parameter value, where  <i>transport</i>  is  the  <a href="master.5.html">master.cf</a>
index bcc0a032c0676778f92a5e6ef0cd7471ab0e8975..8c237db35fa24b0d214ecb39cd8947ebcf2c3f0d 100644 (file)
@@ -51,11 +51,15 @@ LOCAL(8)                                                              LOCAL(8)
        shell), <b>$recipient</b> (complete recipient address), <b>$extension</b>  (recipient
        address  extension), <b>$domain</b> (recipient domain), <b>$local</b> (entire recipi-
        ent   address   localpart)   and   <b>$<a href="postconf.5.html#recipient_delimiter">recipient_delimiter</a>.</b>   The    forms
-       <i>${name?value}</i>  and  <i>${name:value}</i>  expand  conditionally  to <i>value</i> when
-       <i>$name</i> is (is not) defined.  Characters that may have special meaning to
-       the  shell  or  file  system  are replaced by underscores.  The list of
-       acceptable characters is specified  with  the  <b><a href="postconf.5.html#forward_expansion_filter">forward_expansion_filter</a></b>
-       configuration parameter.
+       <i>${name?value}</i> and <i>${name?{value}}</i> (Postfix 3.0 and later) expand condi-
+       tionally to <i>value</i> when <i>$name</i> is defined, and  the  forms  <i>${name:value}</i>
+       <i>${name:{value}}</i>  (Postfix  3.0 and later) expand conditionally to <i>value</i>
+       when <i>$name</i> is not defined.  The form <i>${name?{value1}:{value2}}</i> (Postfix
+       3.0  and  later) expands conditionally to <i>value1</i> when <i>$name</i> is defined,
+       or <i>value2</i> otherwise. Characters that may have special  meaning  to  the
+       shell or file system are replaced with underscores. The list of accept-
+       able characters is specified with the <b><a href="postconf.5.html#forward_expansion_filter">forward_expansion_filter</a></b> configu-
+       ration parameter.
 
        An  alias  or ~/.<b>forward</b> file may list any combination of external com-
        mands, destination file names, <b>:include:</b> directives, or mail addresses.
@@ -141,11 +145,15 @@ LOCAL(8)                                                              LOCAL(8)
        <b>$shell</b>  (recipient  shell),  <b>$recipient</b>  (complete  recipient address),
        <b>$extension</b> (recipient address extension), <b>$domain</b>  (recipient  domain),
        <b>$local</b>  (entire  recipient address localpart) and <b>$<a href="postconf.5.html#recipient_delimiter">recipient_delimiter</a>.</b>
-       The forms <i>${name?value}</i> and <i>${name:value}</i> expand conditionally to <i>value</i>
-       when <i>$name</i> is (is not) defined.  Characters that may have special mean-
-       ing to the shell or file system are replaced by underscores.  The  list
-       of   acceptable  characters  is  specified  with  the  <b><a href="postconf.5.html#execution_directory_expansion_filter">execution_direc</a>-</b>
-       <b><a href="postconf.5.html#execution_directory_expansion_filter">tory_expansion_filter</a></b> configuration parameter.
+       The forms <i>${name?value}</i> and <i>${name?{value}}</i>  (Postfix  3.0  and  later)
+       expand  conditionally  to  <i>value</i>  when  <i>$name</i> is defined, and the forms
+       <i>${name:value}</i> and <i>${name:{value}}</i> (Postfix 3.0 and later) expand condi-
+       tionally   to   <i>value</i>   when   <i>$name</i>   is   not   defined.    The  form
+       <i>${name?{value1}:{value2}}</i> (Postfix 3.0 and later) expands conditionally
+       to  <i>value1</i>  when <i>$name</i> is defined, or <i>value2</i> otherwise. Characters that
+       may have special meaning to the shell or file system are replaced  with
+       underscores.  The  list  of acceptable characters is specified with the
+       <b><a href="postconf.5.html#execution_directory_expansion_filter">execution_directory_expansion_filter</a></b> configuration parameter.
 
        The command is executed directly  where  possible.  Assistance  by  the
        shell  (<b>/bin/sh</b> on UNIX systems) is used only when the command contains
@@ -166,7 +174,7 @@ LOCAL(8)                                                              LOCAL(8)
 
        A  limited  amount of message context is exported via environment vari-
        ables. Characters that may  have  special  meaning  to  the  shell  are
-       replaced  by  underscores.  The list of acceptable characters is speci-
+       replaced with underscores.  The list of acceptable characters is speci-
        fied with the <b><a href="postconf.5.html#command_expansion_filter">command_expansion_filter</a></b> configuration parameter.
 
        <b>SHELL</b>  The recipient user's login shell.
@@ -421,7 +429,7 @@ LOCAL(8)                                                              LOCAL(8)
 
        <b><a href="postconf.5.html#command_execution_directory">command_execution_directory</a> (empty)</b>
               The <a href="local.8.html"><b>local</b>(8)</a> delivery agent working directory  for  delivery  to
-              external command.
+              external commands.
 
 <b>MAILBOX LOCKING CONTROLS</b>
        <b><a href="postconf.5.html#deliver_lock_attempts">deliver_lock_attempts</a> (20)</b>
@@ -480,7 +488,7 @@ LOCAL(8)                                                              LOCAL(8)
 
        <b><a href="postconf.5.html#default_privs">default_privs</a> (nobody)</b>
               The  default  rights  used  by  the  <a href="local.8.html"><b>local</b>(8)</a> delivery agent for
-              delivery to external file or command.
+              delivery to an external file or command.
 
        <b><a href="postconf.5.html#forward_expansion_filter">forward_expansion_filter</a> (see 'postconf -d' output)</b>
               Restrict the characters that the <a href="local.8.html"><b>local</b>(8)</a> delivery agent  allows
@@ -521,7 +529,7 @@ LOCAL(8)                                                              LOCAL(8)
 
        <b><a href="postconf.5.html#local_command_shell">local_command_shell</a> (empty)</b>
               Optional shell program for <a href="local.8.html"><b>local</b>(8)</a> delivery to non-Postfix com-
-              mand.
+              mands.
 
        <b><a href="postconf.5.html#max_idle">max_idle</a> (100s)</b>
               The  maximum  amount of time that an idle Postfix daemon process
index 482b227d4ecc3aa8210f5014f86a77f5b9236a7b..eb99f16cb0a121ad7f021baf50f8d5f8ac9444cc 100644 (file)
@@ -442,7 +442,7 @@ SENDMAIL(1)                                                        SENDMAIL(1)
               headers of mail that is still queued.
 
        <b><a href="postconf.5.html#import_environment">import_environment</a> (see 'postconf -d' output)</b>
-              The  list  of  environment  parameters that a privileged Postfix
+              The  list  of  environment  variables  that a privileged Postfix
               process will  import  from  a  non-Postfix  parent  process,  or
               name=value environment overrides.
 
index 008787d1939e1952e0de841d70d23e8f21e5d232..46c9a9a1d87548144f0cb363c76014b0bb9a7ecb 100644 (file)
@@ -34,7 +34,7 @@ MAKEDEFS(1)                                                        MAKEDEFS(1)
               Specifies  one or more non-default object libraries. Postfix 3.0
               and later specify some of their  database  library  dependencies
               with  <a href="CDB_README.html">AUXLIBS_CDB</a>,  <a href="LDAP_README.html">AUXLIBS_LDAP</a>,  <a href="LMDB_README.html">AUXLIBS_LMDB</a>,  <a href="MYSQL_README.html">AUXLIBS_MYSQL</a>,
-              <a href="PCRE_README.html">AUXLIBS_PCRE</a>, <a href="PGSQL_README.html">AUXLIBS_PGSQL</a>, <a href="SDBM_README.html">AUXLIBS_SDBM</a>,  and  <a href="SQLITE_README.html">AUXLIBS_SQLITE</a>,
+              <a href="PCRE_README.html">AUXLIBS_PCRE</a>, <a href="PGSQL_README.html">AUXLIBS_PGSQL</a>, AUXLIBS_SDBM,  and  <a href="SQLITE_README.html">AUXLIBS_SQLITE</a>,
               respectively.
 
        <b>CC=</b><i>compiler</i><b>_</b><i>command</i>
index b3a5fd7ec1de0d51bfd62b88a37737583c94eedd..1b924267a261734598256e957b0ab641b32fde19 100644 (file)
@@ -135,7 +135,7 @@ MASTER(5)                                                            MASTER(5)
               The  <a href="local.8.html"><b>local</b>(8)</a>, <a href="pipe.8.html"><b>pipe</b>(8)</a>, <a href="spawn.8.html"><b>spawn</b>(8)</a>, and <a href="virtual.8.html"><b>virtual</b>(8)</a> daemons require
               privileges.
 
-       <b>Chroot (default: Postfix</b> &gt;<b>= 3.0: n, Postfix</b> &lt;<b>3.0: y)</b>
+       <b>Chroot (default: Postfix</b> &gt;<b>= 3.0: n, Postfix</b> &lt; <b>3.0: y)</b>
               Whether or not the service  runs  chrooted  to  the  mail  queue
               directory (pathname is controlled by the <b><a href="postconf.5.html#queue_directory">queue_directory</a></b> config-
               uration variable in the <a href="postconf.5.html">main.cf</a> file).
index a45a6a4de612633f92f538f30dfbf44872502721..a196c1ddc0ed3b177c6dcae579855ea72810700d 100644 (file)
@@ -21,7 +21,7 @@ MYSQL_TABLE(5)                                                  MYSQL_TABLE(5)
        Alternatively, lookup tables can be specified as MySQL  databases.   In
        order  to use MySQL lookups, define a MySQL source as a lookup table in
        <a href="postconf.5.html">main.cf</a>, for example:
-           <a href="postconf.5.html#alias_maps">alias_maps</a> = <a href="mysql_table.5.html">mysql</a>:/etc/mysql-aliases.cf
+           <a href="postconf.5.html#alias_maps">alias_maps</a> = <a href="mysql_table.5.html">mysql</a>:/etc/postfix/mysql-aliases.cf
 
        The file /etc/postfix/mysql-aliases.cf has the same format as the Post-
        fix <a href="postconf.5.html">main.cf</a> file, and can specify the parameters described below.
@@ -43,7 +43,8 @@ MYSQL_TABLE(5)                                                  MYSQL_TABLE(5)
 <b>MYSQL PARAMETERS</b>
        <b>hosts</b>  The hosts that Postfix will try to connect to  and  query  from.
               Specify <i>unix:</i> for UNIX domain sockets, <i>inet:</i> for TCP connections
-              (default).  Example:
+              (default).  Examples:
+                  hosts = inet:host1.some.domain inet:host2.some.domain:port
                   hosts = host1.some.domain host2.some.domain:port
                   hosts = unix:/file/name
 
@@ -176,9 +177,9 @@ MYSQL_TABLE(5)                                                  MYSQL_TABLE(5)
               NOTE: DO NOT put quotes around the result format!
 
        <b>domain (default: no domain list)</b>
-              This is a list of domain names, paths to files, or dictionaries.
-              When   specified,  only  fully  qualified  search  keys  with  a
-              *non-empty* localpart and a matching  domain  are  eligible  for
+              This is a list of domain names, paths to files, or  "<a href="DATABASE_README.html">type:table</a>"
+              databases. When specified, only fully qualified search keys with
+              a *non-empty* localpart and a matching domain are  eligible  for
               lookup:  'user'  lookups,  bare  domain  lookups  and  "@domain"
               lookups are not performed. This  can  significantly  reduce  the
               query load on the MySQL server.
index 482b227d4ecc3aa8210f5014f86a77f5b9236a7b..eb99f16cb0a121ad7f021baf50f8d5f8ac9444cc 100644 (file)
@@ -442,7 +442,7 @@ SENDMAIL(1)                                                        SENDMAIL(1)
               headers of mail that is still queued.
 
        <b><a href="postconf.5.html#import_environment">import_environment</a> (see 'postconf -d' output)</b>
-              The  list  of  environment  parameters that a privileged Postfix
+              The  list  of  environment  variables  that a privileged Postfix
               process will  import  from  a  non-Postfix  parent  process,  or
               name=value environment overrides.
 
index f17b3edb86819023e4f22993c225c7391d3f1165..89a200bf11fa2f9c7eec07345709141be654a81c 100644 (file)
@@ -21,7 +21,7 @@ PGSQL_TABLE(5)                                                  PGSQL_TABLE(5)
        Alternatively, lookup tables can be specified as PostgreSQL  databases.
        In  order  to  use  PostgreSQL lookups, define a PostgreSQL source as a
        lookup table in <a href="postconf.5.html">main.cf</a>, for example:
-           <a href="postconf.5.html#alias_maps">alias_maps</a> = <a href="pgsql_table.5.html">pgsql</a>:/etc/pgsql-aliases.cf
+           <a href="postconf.5.html#alias_maps">alias_maps</a> = <a href="pgsql_table.5.html">pgsql</a>:/etc/postfix/pgsql-aliases.cf
 
        The file /etc/postfix/pgsql-aliases.cf has the same format as the Post-
        fix <a href="postconf.5.html">main.cf</a> file, and can specify the parameters described below.
@@ -48,6 +48,7 @@ PGSQL_TABLE(5)                                                  PGSQL_TABLE(5)
               prefixes are accepted and ignored for  backwards  compatibility.
               Examples:
                   hosts = postgresql://username@example.com/tablename?sslmode=require
+                  hosts = inet:host1.some.domain inet:host2.some.domain:port
                   hosts = host1.some.domain host2.some.domain:port
                   hosts = unix:/file/name
 
@@ -118,7 +119,7 @@ PGSQL_TABLE(5)                                                  PGSQL_TABLE(5)
               <b>select_function</b>, <b>query</b>, <b>select_field</b>, ...
 
               With Postfix 2.2 the <b>query</b> parameter has highest precedence, see
-              COMPATIBILITY above.
+              OBSOLETE QUERY INTERFACES below.
 
               NOTE: DO NOT put quotes around the <b>query</b> parameter.
 
@@ -167,9 +168,9 @@ PGSQL_TABLE(5)                                                  PGSQL_TABLE(5)
               NOTE: DO NOT put quotes around the result format!
 
        <b>domain (default: no domain list)</b>
-              This is a list of domain names, paths to files, or dictionaries.
-              When   specified,  only  fully  qualified  search  keys  with  a
-              *non-empty* localpart and a matching  domain  are  eligible  for
+              This is a list of domain names, paths to files, or  "<a href="DATABASE_README.html">type:table</a>"
+              databases. When specified, only fully qualified search keys with
+              a *non-empty* localpart and a matching domain are  eligible  for
               lookup:  'user'  lookups,  bare  domain  lookups  and  "@domain"
               lookups are not performed. This  can  significantly  reduce  the
               query load on the PostgreSQL server.
index ddcccb4693e82e0a8e4d243969bbc9186ca5f731..b2be997375f073917e76d7b95ddd4e2bbc8526bc 100644 (file)
@@ -169,47 +169,49 @@ PIPE(8)                                                                PIPE(8)
               as an argument by itself:
 
                   <i>Right</i>: command -f $sender -- $recipient
+              NOTE: DO NOT put quotes around the command, $sender, or $recipi-
+              ent.
 
               This feature is available as of Postfix 2.3.
 
        <b>size</b>=<i>size</i><b>_</b><i>limit</i> (optional)
-              Don't  deliver  messages that exceed this size limit (in bytes);
+              Don't deliver messages that exceed this size limit  (in  bytes);
               return them to the sender instead.
 
        <b>user</b>=<i>username</i> (required)
 
        <b>user</b>=<i>username</i>:<i>groupname</i>
-              Execute the external command with the user ID and  group  ID  of
-              the  specified  <i>username</i>.   The software refuses to execute com-
-              mands with root privileges, or with the privileges of  the  mail
+              Execute  the  external  command with the user ID and group ID of
+              the specified <i>username</i>.  The software refuses  to  execute  com-
+              mands  with  root privileges, or with the privileges of the mail
               system owner. If <i>groupname</i> is specified, the corresponding group
               ID is used instead of the group ID of <i>username</i>.
 
        <b>argv</b>=<i>command</i>... (required)
-              The command to be executed. This must be specified as  the  last
+              The  command  to be executed. This must be specified as the last
               command attribute.  The command is executed directly, i.e. with-
-              out interpretation of shell meta characters by a  shell  command
+              out  interpretation  of shell meta characters by a shell command
               interpreter.
 
               Specify "{" and "}" around command arguments that contain white-
-              space (Postfix 3.0 and later). Whitespace after the opening  "{"
+              space  (Postfix 3.0 and later). Whitespace after the opening "{"
               and before the closing "}" is ignored.
 
-              In  the command argument vector, the following macros are recog-
+              In the command argument vector, the following macros are  recog-
               nized and replaced with corresponding information from the Post-
               fix queue manager delivery request.
 
-              In  addition to the form ${<i>name</i>}, the forms $<i>name</i> and the depre-
+              In addition to the form ${<i>name</i>}, the forms $<i>name</i> and the  depre-
               cated form $(<i>name</i>) are also recognized.  Specify <b>$$</b> where a sin-
               gle <b>$</b> is wanted.
 
               <b>${client_address}</b>
-                     This  macro expands to the remote client network address.
+                     This macro expands to the remote client network  address.
 
                      This feature is available as of Postfix 2.2.
 
               <b>${client_helo}</b>
-                     This macro expands to  the  remote  client  HELO  command
+                     This  macro  expands  to  the  remote client HELO command
                      parameter.
 
                      This feature is available as of Postfix 2.2.
@@ -220,7 +222,7 @@ PIPE(8)                                                                PIPE(8)
                      This feature is available as of Postfix 2.2.
 
               <b>${client_port}</b>
-                     This  macro expands to the remote client TCP port number.
+                     This macro expands to the remote client TCP port  number.
 
                      This feature is available as of Postfix 2.5.
 
@@ -231,7 +233,7 @@ PIPE(8)                                                                PIPE(8)
 
               <b>${domain}</b>
                      This macro expands to the domain portion of the recipient
-                     address.   For  example,  with an address <i>user+foo@domain</i>
+                     address.  For example, with  an  address  <i>user+foo@domain</i>
                      the domain is <i>domain</i>.
 
                      This information is modified by the <b>h</b> flag for case fold-
@@ -240,12 +242,12 @@ PIPE(8)                                                                PIPE(8)
                      This feature is available as of Postfix 2.5.
 
               <b>${extension}</b>
-                     This  macro  expands to the extension part of a recipient
-                     address.  For example, with  an  address  <i>user+foo@domain</i>
+                     This macro expands to the extension part of  a  recipient
+                     address.   For  example,  with an address <i>user+foo@domain</i>
                      the extension is <i>foo</i>.
 
-                     A   command-line   argument  that  contains  <b>${extension}</b>
-                     expands into as many command-line arguments as there  are
+                     A  command-line  argument  that   contains   <b>${extension}</b>
+                     expands  into as many command-line arguments as there are
                      recipients.
 
                      This information is modified by the <b>u</b> flag for case fold-
@@ -253,11 +255,11 @@ PIPE(8)                                                                PIPE(8)
 
               <b>${mailbox}</b>
                      This macro expands to the complete local part of a recip-
-                     ient    address.     For   example,   with   an   address
+                     ient   address.    For   example,   with    an    address
                      <i>user+foo@domain</i> the mailbox is <i>user+foo</i>.
 
-                     A command-line argument that contains <b>${mailbox}</b>  expands
-                     to  as  many  command-line arguments as there are recipi-
+                     A  command-line argument that contains <b>${mailbox}</b> expands
+                     to as many command-line arguments as  there  are  recipi-
                      ents.
 
                      This information is modified by the <b>u</b> flag for case fold-
@@ -270,11 +272,11 @@ PIPE(8)                                                                PIPE(8)
                      ing.
 
               <b>${original_recipient}</b>
-                     This macro expands  to  the  complete  recipient  address
+                     This  macro  expands  to  the  complete recipient address
                      before any address rewriting or aliasing.
 
-                     A  command-line argument that contains <b>${original_recipi-</b>
-                     <b>ent}</b> expands to as many command-line arguments  as  there
+                     A command-line argument that contains  <b>${original_recipi-</b>
+                     <b>ent}</b>  expands  to as many command-line arguments as there
                      are recipients.
 
                      This information is modified by the <b>hqu</b> flags for quoting
@@ -290,8 +292,8 @@ PIPE(8)                                                                PIPE(8)
               <b>${recipient}</b>
                      This macro expands to the complete recipient address.
 
-                     A  command-line  argument  that   contains   <b>${recipient}</b>
-                     expands  to  as  many command-line arguments as there are
+                     A   command-line   argument  that  contains  <b>${recipient}</b>
+                     expands to as many command-line arguments  as  there  are
                      recipients.
 
                      This information is modified by the <b>hqu</b> flags for quoting
@@ -299,13 +301,13 @@ PIPE(8)                                                                PIPE(8)
 
               <b>${sasl_method}</b>
                      This macro expands to the name of the SASL authentication
-                     mechanism in the  AUTH  command  when  the  Postfix  SMTP
+                     mechanism  in  the  AUTH  command  when  the Postfix SMTP
                      server received the message.
 
                      This feature is available as of Postfix 2.2.
 
               <b>${sasl_sender}</b>
-                     This  macro  expands  to  the  SASL sender name (i.e. the
+                     This macro expands to the  SASL  sender  name  (i.e.  the
                      original submitter as per <a href="https://tools.ietf.org/html/rfc4954">RFC 4954</a>) in the MAIL FROM com-
                      mand when the Postfix SMTP server received the message.
 
@@ -318,25 +320,25 @@ PIPE(8)                                                                PIPE(8)
                      This feature is available as of Postfix 2.2.
 
               <b>${sender}</b>
-                     This macro expands to the  envelope  sender  address.  By
-                     default,  the  null sender address expands to MAILER-DAE-
-                     MON; this can be changed with the <b>null_sender</b>  attribute,
+                     This  macro  expands  to  the envelope sender address. By
+                     default, the null sender address expands  to  MAILER-DAE-
+                     MON;  this can be changed with the <b>null_sender</b> attribute,
                      as described above.
 
                      This information is modified by the <b>q</b> flag for quoting.
 
               <b>${size}</b>
                      This macro expands to Postfix's idea of the message size,
-                     which is an approximation of the size of the  message  as
+                     which  is  an approximation of the size of the message as
                      delivered.
 
               <b>${user}</b>
-                     This  macro  expands  to the username part of a recipient
-                     address.  For example, with  an  address  <i>user+foo@domain</i>
+                     This macro expands to the username part  of  a  recipient
+                     address.   For  example,  with an address <i>user+foo@domain</i>
                      the username part is <i>user</i>.
 
-                     A  command-line  argument  that  contains <b>${user}</b> expands
-                     into as many command-line arguments as there are  recipi-
+                     A command-line argument  that  contains  <b>${user}</b>  expands
+                     into  as many command-line arguments as there are recipi-
                      ents.
 
                      This information is modified by the <b>u</b> flag for case fold-
@@ -346,87 +348,87 @@ PIPE(8)                                                                PIPE(8)
        <a href="https://tools.ietf.org/html/rfc3463">RFC 3463</a> (Enhanced status codes)
 
 <b>DIAGNOSTICS</b>
-       Command exit status  codes  are  expected  to  follow  the  conventions
+       Command  exit  status  codes  are  expected  to  follow the conventions
        defined in &lt;<b>sysexits.h</b>&gt;.  Exit status 0 means normal successful comple-
        tion.
 
        In the case of a non-zero exit status, a limited amount of command out-
-       put  is  logged,  and reported in a delivery status notification.  When
-       the output begins with a 4.X.X or 5.X.X enhanced status code, the  sta-
-       tus  code  takes precedence over the non-zero exit status (Postfix ver-
+       put is logged, and reported in a delivery  status  notification.   When
+       the  output begins with a 4.X.X or 5.X.X enhanced status code, the sta-
+       tus code takes precedence over the non-zero exit status  (Postfix  ver-
        sion 2.3 and later).
 
-       After successful delivery (zero exit status) a limited amount  of  com-
-       mand  output is logged, and reported in "success" delivery status noti-
+       After  successful  delivery (zero exit status) a limited amount of com-
+       mand output is logged, and reported in "success" delivery status  noti-
        fications (Postfix 3.0 and later).  This command output is not examined
        for the presence of an enhanced status code.
 
-       Problems  and  transactions  are  logged  to <b>syslogd</b>(8) or <a href="postlogd.8.html"><b>postlogd</b>(8)</a>.
-       Corrupted message files are marked so that the queue manager  can  move
+       Problems and transactions are  logged  to  <b>syslogd</b>(8)  or  <a href="postlogd.8.html"><b>postlogd</b>(8)</a>.
+       Corrupted  message  files are marked so that the queue manager can move
        them to the <b>corrupt</b> queue for further inspection.
 
 <b>SECURITY</b>
-       This  program needs a dual personality 1) to access the private Postfix
-       queue and IPC mechanisms, and 2) to execute external  commands  as  the
+       This program needs a dual personality 1) to access the private  Postfix
+       queue  and  IPC  mechanisms, and 2) to execute external commands as the
        specified user. It is therefore security sensitive.
 
 <b>CONFIGURATION PARAMETERS</b>
        Changes to <a href="postconf.5.html"><b>main.cf</b></a> are picked up automatically as <a href="pipe.8.html"><b>pipe</b>(8)</a> processes run
-       for only a limited amount of time. Use the command "<b>postfix reload</b>"  to
+       for  only a limited amount of time. Use the command "<b>postfix reload</b>" to
        speed up a change.
 
-       The  text  below provides only a parameter summary. See <a href="postconf.5.html"><b>postconf</b>(5)</a> for
+       The text below provides only a parameter summary. See  <a href="postconf.5.html"><b>postconf</b>(5)</a>  for
        more details including examples.
 
 <b>RESOURCE AND RATE CONTROLS</b>
        In the text below, <i>transport</i> is the first field in a <a href="master.5.html"><b>master.cf</b></a> entry.
 
-       <b>transport_time_limit ($<a href="postconf.5.html#command_time_limit">command_time_limit</a>)</b>
+       <b><a href="postconf.5.html#transport_time_limit">transport_time_limit</a> ($<a href="postconf.5.html#command_time_limit">command_time_limit</a>)</b>
               A transport-specific override for the <a href="postconf.5.html#command_time_limit">command_time_limit</a> parame-
-              ter  value, where <i>transport</i> is the <a href="master.5.html">master.cf</a> name of the message
+              ter value, where <i>transport</i> is the <a href="master.5.html">master.cf</a> name of the  message
               delivery transport.
 
        Implemented in the <a href="qmgr.8.html">qmgr(8)</a> daemon:
 
-       <b>transport_destination_concurrency_limit   ($<a href="postconf.5.html#default_destination_concurrency_limit">default_destination_concur</a>-</b>
+       <b><a href="postconf.5.html#transport_destination_concurrency_limit">transport_destination_concurrency_limit</a>   ($<a href="postconf.5.html#default_destination_concurrency_limit">default_destination_concur</a>-</b>
        <b><a href="postconf.5.html#default_destination_concurrency_limit">rency_limit</a>)</b>
-              A transport-specific override for  the  default_destination_con-
-              currency_limit parameter value, where <i>transport</i> is the <a href="master.5.html">master.cf</a>
+              A  transport-specific  override for the <a href="postconf.5.html#default_destination_concurrency_limit">default_destination_con</a>-
+              <a href="postconf.5.html#default_destination_concurrency_limit">currency_limit</a> parameter value, where <i>transport</i> is the <a href="master.5.html">master.cf</a>
               name of the message delivery transport.
 
-       <b>transport_destination_recipient_limit     ($<a href="postconf.5.html#default_destination_recipient_limit">default_destination_recipi</a>-</b>
+       <b><a href="postconf.5.html#transport_destination_recipient_limit">transport_destination_recipient_limit</a>     ($<a href="postconf.5.html#default_destination_recipient_limit">default_destination_recipi</a>-</b>
        <b><a href="postconf.5.html#default_destination_recipient_limit">ent_limit</a>)</b>
               A transport-specific override for the <a href="postconf.5.html#default_destination_recipient_limit">default_destination_recip</a>-
-              <a href="postconf.5.html#default_destination_recipient_limit">ient_limit</a>  parameter  value,  where  <i>transport</i> is the <a href="master.5.html">master.cf</a>
+              <a href="postconf.5.html#default_destination_recipient_limit">ient_limit</a> parameter value, where  <i>transport</i>  is  the  <a href="master.5.html">master.cf</a>
               name of the message delivery transport.
 
 <b>MISCELLANEOUS CONTROLS</b>
        <b><a href="postconf.5.html#config_directory">config_directory</a> (see 'postconf -d' output)</b>
-              The default location of the Postfix <a href="postconf.5.html">main.cf</a> and  <a href="master.5.html">master.cf</a>  con-
+              The  default  location of the Postfix <a href="postconf.5.html">main.cf</a> and <a href="master.5.html">master.cf</a> con-
               figuration files.
 
        <b><a href="postconf.5.html#daemon_timeout">daemon_timeout</a> (18000s)</b>
-              How  much  time  a  Postfix  daemon process may take to handle a
+              How much time a Postfix daemon process  may  take  to  handle  a
               request before it is terminated by a built-in watchdog timer.
 
        <b><a href="postconf.5.html#delay_logging_resolution_limit">delay_logging_resolution_limit</a> (2)</b>
-              The maximal number of digits after the decimal point  when  log-
+              The  maximal  number of digits after the decimal point when log-
               ging sub-second delay values.
 
        <b><a href="postconf.5.html#export_environment">export_environment</a> (see 'postconf -d' output)</b>
-              The  list  of  environment variables that a Postfix process will
+              The list of environment variables that a  Postfix  process  will
               export to non-Postfix processes.
 
        <b><a href="postconf.5.html#ipc_timeout">ipc_timeout</a> (3600s)</b>
-              The time limit for sending  or  receiving  information  over  an
+              The  time  limit  for  sending  or receiving information over an
               internal communication channel.
 
        <b><a href="postconf.5.html#mail_owner">mail_owner</a> (postfix)</b>
-              The  UNIX  system  account  that owns the Postfix queue and most
+              The UNIX system account that owns the  Postfix  queue  and  most
               Postfix daemon processes.
 
        <b><a href="postconf.5.html#max_idle">max_idle</a> (100s)</b>
-              The maximum amount of time that an idle Postfix  daemon  process
+              The  maximum  amount of time that an idle Postfix daemon process
               waits for an incoming connection before terminating voluntarily.
 
        <b><a href="postconf.5.html#max_use">max_use</a> (100)</b>
@@ -443,28 +445,28 @@ PIPE(8)                                                                PIPE(8)
               The location of the Postfix top-level queue directory.
 
        <b><a href="postconf.5.html#recipient_delimiter">recipient_delimiter</a> (empty)</b>
-              The  set of characters that can separate an email address local-
+              The set of characters that can separate an email address  local-
               part, user name, or a .forward file name from its extension.
 
        <b><a href="postconf.5.html#syslog_facility">syslog_facility</a> (mail)</b>
               The syslog facility of Postfix logging.
 
        <b><a href="postconf.5.html#syslog_name">syslog_name</a> (see 'postconf -d' output)</b>
-              A prefix that  is  prepended  to  the  process  name  in  syslog
+              A  prefix  that  is  prepended  to  the  process  name in syslog
               records, so that, for example, "smtpd" becomes "prefix/smtpd".
 
        Available in Postfix version 3.0 and later:
 
        <b><a href="postconf.5.html#pipe_delivery_status_filter">pipe_delivery_status_filter</a> ($<a href="postconf.5.html#default_delivery_status_filter">default_delivery_status_filter</a>)</b>
-              Optional  filter  for  the  <a href="pipe.8.html"><b>pipe</b>(8)</a> delivery agent to change the
+              Optional filter for the <a href="pipe.8.html"><b>pipe</b>(8)</a> delivery  agent  to  change  the
               delivery status code or explanatory text of successful or unsuc-
               cessful deliveries.
 
        Available in Postfix version 3.3 and later:
 
        <b><a href="postconf.5.html#enable_original_recipient">enable_original_recipient</a> (yes)</b>
-              Enable  support  for  the  original  recipient  address after an
-              address is rewritten to a different address  (for  example  with
+              Enable support for  the  original  recipient  address  after  an
+              address  is  rewritten  to a different address (for example with
               aliasing or with canonical mapping).
 
        <b><a href="postconf.5.html#service_name">service_name</a> (read-only)</b>
@@ -473,7 +475,7 @@ PIPE(8)                                                                PIPE(8)
        Available in Postfix 3.5 and later:
 
        <b><a href="postconf.5.html#info_log_address_format">info_log_address_format</a> (external)</b>
-              The  email  address  form that will be used in non-debug logging
+              The email address form that will be used  in  non-debug  logging
               (info, warning, etc.).
 
 <b>SEE ALSO</b>
index 60dc43640957f2a94ad15409e5e05e3d642ce560..f1c612c055be62fd793ac7584293ed4bc226dbd0 100644 (file)
@@ -17,7 +17,7 @@ POSTALIAS(1)                                                      POSTALIAS(1)
        The  <a href="postalias.1.html"><b>postalias</b>(1)</a>  command creates or queries one or more Postfix alias
        databases, or updates an existing one. The input and output  file  for-
        mats  are  expected  to  be compatible with Sendmail version 8, and are
-       expected to be suitable for the use as NIS alias maps.
+       expected to be suitable for use as NIS alias maps.
 
        If the result files do not exist they will be  created  with  the  same
        group and other read permissions as their source file.
@@ -198,13 +198,13 @@ POSTALIAS(1)                                                      POSTALIAS(1)
               and <a href="postmap.1.html"><b>postmap</b>(1)</a> commands.
 
        <b><a href="postconf.5.html#import_environment">import_environment</a> (see 'postconf -d' output)</b>
-              The  list  of  environment  parameters that a privileged Postfix
+              The  list  of  environment  variables  that a privileged Postfix
               process will  import  from  a  non-Postfix  parent  process,  or
               name=value environment overrides.
 
        <b><a href="postconf.5.html#smtputf8_enable">smtputf8_enable</a> (yes)</b>
               Enable  preliminary SMTPUTF8 support for the protocols described
-              in <a href="https://tools.ietf.org/html/rfc6531">RFC 6531</a>..6533.
+              in <a href="https://tools.ietf.org/html/rfc6531">RFC 6531</a>, <a href="https://tools.ietf.org/html/rfc6532">RFC 6532</a>, and <a href="https://tools.ietf.org/html/rfc6533">RFC 6533</a>.
 
        <b><a href="postconf.5.html#syslog_facility">syslog_facility</a> (mail)</b>
               The syslog facility of Postfix logging.
index 6b769b49110da8e4e54d70cd049a8c2dd0e76240..813755e17f6edb9c683ffd696b0e70bd3028300b 100644 (file)
@@ -143,7 +143,7 @@ POSTCONF(1)                                                        POSTCONF(1)
               or  more  service fields with new values as specified with "<i>ser-</i>
               <i>vice/type/field=value</i>" on the  <a href="postconf.1.html"><b>postconf</b>(1)</a>  command  line.  Cur-
               rently,  the  "command" field contains the command name and com-
-              mand arguments.  this may change in the near future, so that the
+              mand arguments.  This may change in the near future, so that the
               "command" field contains only the command name, and a new "argu-
               ments" pseudofield contains the command arguments.
 
@@ -157,7 +157,8 @@ POSTCONF(1)                                                        POSTCONF(1)
               whitespace on the <a href="postconf.1.html"><b>postconf</b>(1)</a> command line.
 
               The  <b>-e</b>  option is no longer needed with Postfix version 2.8 and
-              later.
+              later, as it is assumed whenever a value is specified (empty  or
+              non-empty).
 
        <b>-f</b>     Fold long lines when printing <a href="postconf.5.html"><b>main.cf</b></a> or <a href="master.5.html"><b>master.cf</b></a> configuration
               file entries, for human readability.
@@ -165,58 +166,58 @@ POSTCONF(1)                                                        POSTCONF(1)
               This feature is available with Postfix 2.9 and later.
 
        <b>-F</b>     Show <a href="master.5.html"><b>master.cf</b></a> per-entry field settings (by default all services
-              and all fields), formatted  as  "<i>service/type/field=value</i>",  one
+              and  all  fields),  formatted as "<i>service/type/field=value</i>", one
               per line. Specify <b>-Ff</b> to fold long lines.
 
-              Specify  one or more "<i>service/type/field</i>" instances on the <a href="postconf.1.html"><b>post-</b></a>
-              <a href="postconf.1.html"><b>conf</b>(1)</a> command line to limit the output to fields of  interest.
-              Trailing  parameter name or service type fields that are omitted
+              Specify one or more "<i>service/type/field</i>" instances on the  <a href="postconf.1.html"><b>post-</b></a>
+              <a href="postconf.1.html"><b>conf</b>(1)</a>  command line to limit the output to fields of interest.
+              Trailing parameter name or service type fields that are  omitted
               will be handled as "*" wildcard fields.
 
               This feature is available with Postfix 2.11 and later.
 
-       <b>-h</b>     Show parameter or attribute values without the "<i>name</i> =  "  label
+       <b>-h</b>     Show  parameter  or attribute values without the "<i>name</i> = " label
               that normally precedes the value.
 
-       <b>-H</b>     Show  parameter  or  attribute names without the " = <i>value</i>" that
+       <b>-H</b>     Show parameter or attribute names without the "  =  <i>value</i>"  that
               normally follows the name.
 
               This feature is available with Postfix 3.1 and later.
 
-       <b>-l</b>     List the names of all supported mailbox locking methods.   Post-
+       <b>-l</b>     List  the names of all supported mailbox locking methods.  Post-
               fix supports the following methods:
 
-              <b>flock</b>  A  kernel-based  advisory  locking method for local files
+              <b>flock</b>  A kernel-based advisory locking method  for  local  files
                      only.  This locking method is available on systems with a
                      BSD compatible library.
 
-              <b>fcntl</b>  A  kernel-based  advisory  locking  method  for local and
+              <b>fcntl</b>  A kernel-based advisory  locking  method  for  local  and
                      remote files.
 
               <b>dotlock</b>
                      An application-level locking method. An application locks
-                     a  file  named  <i>filename</i>  by  creating a file named <i>file-</i>
+                     a file named <i>filename</i> by  creating  a  file  named  <i>file-</i>
                      <i>name</i><b>.lock</b>.  The application is expected to remove its own
-                     lock  file,  as  well  as stale lock files that were left
+                     lock file, as well as stale lock  files  that  were  left
                      behind after abnormal program termination.
 
-       <b>-m</b>     List the names of all supported lookup table types.  In  Postfix
-              configuration  files,  lookup tables are specified as <i>type</i><b>:</b><i>name</i>,
+       <b>-m</b>     List  the  names of all supported lookup table types. In Postfix
+              configuration files, lookup tables are specified  as  <i>type</i><b>:</b><i>name</i>,
               where <i>type</i> is one of the types listed below. The table <i>name</i> syn-
-              tax  depends  on the lookup table type as described in the <a href="DATABASE_README.html">DATA</a>-
+              tax depends on the lookup table type as described in  the  <a href="DATABASE_README.html">DATA</a>-
               <a href="DATABASE_README.html">BASE_README</a> document.
 
-              <b>btree</b>  A sorted, balanced tree structure.  Available on  systems
+              <b>btree</b>  A  sorted, balanced tree structure.  Available on systems
                      with support for Berkeley DB databases.
 
-              <b>cdb</b>    A  read-optimized structure with no support for incremen-
-                     tal updates.  Available on systems with support  for  CDB
+              <b>cdb</b>    A read-optimized structure with no support for  incremen-
+                     tal  updates.   Available on systems with support for CDB
                      databases.
 
                      This feature is available with Postfix 2.2 and later.
 
               <b>cidr</b>   A   table   that   associates   values   with   Classless
-                     Inter-Domain Routing (CIDR) patterns. This  is  described
+                     Inter-Domain  Routing  (CIDR) patterns. This is described
                      in <a href="cidr_table.5.html"><b>cidr_table</b>(5)</a>.
 
                      This feature is available with Postfix 2.2 and later.
@@ -226,12 +227,12 @@ POSTCONF(1)                                                        POSTCONF(1)
 
               <b>environ</b>
                      The UNIX process environment array. The lookup key is the
-                     environment  variable  name;  the  table name is ignored.
+                     environment variable name; the  table  name  is  ignored.
                      Originally implemented for testing, someone may find this
                      useful someday.
 
-              <b>fail</b>   A  table that reliably fails all requests. The lookup ta-
-                     ble name is used for logging. This table exists  to  sim-
+              <b>fail</b>   A table that reliably fails all requests. The lookup  ta-
+                     ble  name  is used for logging. This table exists to sim-
                      plify Postfix error tests.
 
                      This feature is available with Postfix 2.9 and later.
@@ -240,23 +241,23 @@ POSTCONF(1)                                                        POSTCONF(1)
                      tems with support for Berkeley DB databases.
 
               <b>inline</b> (read-only)
-                     A non-shared, in-memory lookup table. Example:  "<b><a href="DATABASE_README.html#types">inline</a>:{</b>
-                     <i>key</i><b>=</b><i>value</i><b>,  {</b>  <i>key</i>  <b>=</b>  <i>text with whitespace or comma</i> <b>}}</b>".
-                     Key-value pairs are separated  by  whitespace  or  comma;
-                     with  a key-value pair inside "<b>{}</b>", whitespace is ignored
-                     after the opening "<b>{</b>", around the  "<b>=</b>"  between  key  and
-                     value,  and  before the closing "<b>}</b>". Inline tables elimi-
-                     nate the need to create a database file for  just  a  few
+                     A  non-shared, in-memory lookup table. Example: "<b><a href="DATABASE_README.html#types">inline</a>:{</b>
+                     <i>key</i><b>=</b><i>value</i><b>, {</b> <i>key</i> <b>=</b> <i>text with  whitespace  or  comma</i>  <b>}}</b>".
+                     Key-value  pairs  are  separated  by whitespace or comma;
+                     with a key-value pair inside "<b>{}</b>", whitespace is  ignored
+                     after  the  opening  "<b>{</b>",  around the "<b>=</b>" between key and
+                     value, and before the closing "<b>}</b>". Inline  tables  elimi-
+                     nate  the  need  to create a database file for just a few
                      fixed elements.  See also the <i><a href="DATABASE_README.html#types">static</a>:</i> map type.
 
                      This feature is available with Postfix 3.0 and later.
 
               <b>internal</b>
-                     A  non-shared, in-memory hash table. Its content are lost
+                     A non-shared, in-memory hash table. Its content are  lost
                      when a process terminates.
 
-              <b>lmdb</b>   OpenLDAP  LMDB  database  (a  memory-mapped,   persistent
-                     file).   Available on systems with support for LMDB data-
+              <b>lmdb</b>   OpenLDAP   LMDB  database  (a  memory-mapped,  persistent
+                     file).  Available on systems with support for LMDB  data-
                      bases.  This is described in <a href="lmdb_table.5.html"><b>lmdb_table</b>(5)</a>.
 
                      This feature is available with Postfix 2.11 and later.
@@ -265,57 +266,57 @@ POSTCONF(1)                                                        POSTCONF(1)
                      LDAP database client. This is described in <a href="ldap_table.5.html"><b>ldap_table</b>(5)</a>.
 
               <b>memcache</b>
-                     Memcache  database  client.  This  is  described  in <a href="memcache_table.5.html"><b>mem-</b></a>
+                     Memcache database  client.  This  is  described  in  <a href="memcache_table.5.html"><b>mem-</b></a>
                      <a href="memcache_table.5.html"><b>cache_table</b>(5)</a>.
 
                      This feature is available with Postfix 2.9 and later.
 
               <b>mysql</b> (read-only)
                      MySQL database client.  Available on systems with support
-                     for  MySQL  databases.   This  is  described in <a href="mysql_table.5.html"><b>mysql_ta-</b></a>
+                     for MySQL databases.   This  is  described  in  <a href="mysql_table.5.html"><b>mysql_ta-</b></a>
                      <a href="mysql_table.5.html"><b>ble</b>(5)</a>.
 
               <b>pcre</b> (read-only)
-                     A lookup table based on Perl Compatible  Regular  Expres-
+                     A  lookup  table based on Perl Compatible Regular Expres-
                      sions.  The file format is described in <a href="pcre_table.5.html"><b>pcre_table</b>(5)</a>.
 
               <b>pgsql</b> (read-only)
-                     PostgreSQL   database   client.   This  is  described  in
+                     PostgreSQL  database  client.  This   is   described   in
                      <a href="pgsql_table.5.html"><b>pgsql_table</b>(5)</a>.
 
                      This feature is available with Postfix 2.1 and later.
 
               <b>pipemap</b> (read-only)
-                     A lookup table that  constructs  a  pipeline  of  tables.
-                     Example:  "<b><a href="DATABASE_README.html#types">pipemap</a>:{</b><i>type</i><b>_</b><i>1:name</i><b>_</b><i>1,  ..., type</i><b>_</b><i>n:name</i><b>_</b><i>n</i><b>}</b>".
-                     Each "<a href="DATABASE_README.html#types">pipemap</a>:" query is given to the first table.   Each
+                     A  lookup  table  that  constructs  a pipeline of tables.
+                     Example: "<b><a href="DATABASE_README.html#types">pipemap</a>:{</b><i>type</i><b>_</b><i>1:name</i><b>_</b><i>1,  ...,  type</i><b>_</b><i>n:name</i><b>_</b><i>n</i><b>}</b>".
+                     Each  "<a href="DATABASE_README.html#types">pipemap</a>:" query is given to the first table.  Each
                      lookup result becomes the query for the next table in the
-                     pipeline, and the last table produces the  final  result.
-                     When  any  table  lookup produces no result, the pipeline
-                     produces no result. The first and last characters of  the
+                     pipeline,  and  the last table produces the final result.
+                     When any table lookup produces no  result,  the  pipeline
+                     produces  no result. The first and last characters of the
                      "<a href="DATABASE_README.html#types">pipemap</a>:" table name must be "<b>{</b>" and "<b>}</b>".  Within these,
                      individual maps are separated with comma or whitespace.
 
                      This feature is available with Postfix 3.0 and later.
 
-              <b>proxy</b>  Postfix <a href="proxymap.8.html"><b>proxymap</b>(8)</a> client for shared access  to  Postfix
+              <b>proxy</b>  Postfix  <a href="proxymap.8.html"><b>proxymap</b>(8)</a>  client for shared access to Postfix
                      databases. The table name syntax is <i>type</i><b>:</b><i>name</i>.
 
                      This feature is available with Postfix 2.0 and later.
 
               <b>randmap</b> (read-only)
-                     An  in-memory table that performs random selection. Exam-
+                     An in-memory table that performs random selection.  Exam-
                      ple:  "<b><a href="DATABASE_README.html#types">randmap</a>:{</b><i>result</i><b>_</b><i>1,  ...,  result</i><b>_</b><i>n</i><b>}</b>".  Each  table
                      query returns a random choice from the specified results.
-                     The first and last characters  of  the  "<a href="DATABASE_README.html#types">randmap</a>:"  table
-                     name  must  be  "<b>{</b>"  and  "<b>}</b>".   Within these, individual
+                     The  first  and  last  characters of the "<a href="DATABASE_README.html#types">randmap</a>:" table
+                     name must be  "<b>{</b>"  and  "<b>}</b>".   Within  these,  individual
                      results are separated with comma or whitespace. To give a
                      specific result more weight, specify it multiple times.
 
                      This feature is available with Postfix 3.0 and later.
 
               <b>regexp</b> (read-only)
-                     A  lookup  table  based  on regular expressions. The file
+                     A lookup table based on  regular  expressions.  The  file
                      format is described in <a href="regexp_table.5.html"><b>regexp_table</b>(5)</a>.
 
               <b>sdbm</b>   An indexed file type based on hashing.  Available on sys-
@@ -324,9 +325,9 @@ POSTCONF(1)                                                        POSTCONF(1)
                      This feature is available with Postfix 2.2 and later.
 
               <b>socketmap</b> (read-only)
-                     Sendmail-style   socketmap  client.  The  table  name  is
-                     <b>inet</b>:<i>host</i>:<i>port</i>:<i>name</i> for a TCP/IP  server,  or  <b>unix</b>:<i>path-</i>
-                     <i>name</i>:<i>name</i>  for a UNIX-domain server. This is described in
+                     Sendmail-style  socketmap  client.  The  table  name   is
+                     <b>inet</b>:<i>host</i>:<i>port</i>:<i>name</i>  for  a  TCP/IP server, or <b>unix</b>:<i>path-</i>
+                     <i>name</i>:<i>name</i> for a UNIX-domain server. This is described  in
                      <a href="socketmap_table.5.html"><b>socketmap_table</b>(5)</a>.
 
                      This feature is available with Postfix 2.10 and later.
@@ -337,11 +338,11 @@ POSTCONF(1)                                                        POSTCONF(1)
                      This feature is available with Postfix 2.8 and later.
 
               <b>static</b> (read-only)
-                     A table that always returns its name  as  lookup  result.
+                     A  table  that  always returns its name as lookup result.
                      For example, <b><a href="DATABASE_README.html#types">static</a>:foobar</b> always returns the string <b>foo-</b>
-                     <b>bar</b> as lookup result. Specify "<b><a href="DATABASE_README.html#types">static</a>:{</b> <i>text with  white-</i>
-                     <i>space</i>  <b>}</b>"  when the result contains whitespace; this form
-                     ignores whitespace after the opening "<b>{</b>" and  before  the
+                     <b>bar</b>  as lookup result. Specify "<b><a href="DATABASE_README.html#types">static</a>:{</b> <i>text with white-</i>
+                     <i>space</i> <b>}</b>" when the result contains whitespace;  this  form
+                     ignores  whitespace  after the opening "<b>{</b>" and before the
                      closing "<b>}</b>". See also the <i><a href="DATABASE_README.html#types">inline</a>:</i> map.
 
                      The form "<b><a href="DATABASE_README.html#types">static</a>:{</b><i>text</i><b>}</b> is available with Postfix 3.0 and
@@ -351,65 +352,68 @@ POSTCONF(1)                                                        POSTCONF(1)
                      TCP/IP client. The protocol is described in <a href="tcp_table.5.html"><b>tcp_table</b>(5)</a>.
 
               <b>texthash</b> (read-only)
-                     Produces  similar results as <a href="DATABASE_README.html#types">hash</a>: files, except that you
-                     don't need to run the <a href="postmap.1.html"><b>postmap</b>(1)</a> command before  you  can
-                     use  the  file, and that it does not detect changes after
+                     Produces similar results as <a href="DATABASE_README.html#types">hash</a>: files, except that  you
+                     don't  need  to run the <a href="postmap.1.html"><b>postmap</b>(1)</a> command before you can
+                     use the file, and that it does not detect  changes  after
                      the file is read.
 
                      This feature is available with Postfix 2.8 and later.
 
               <b>unionmap</b> (read-only)
-                     A table that sends each query to multiple  lookup  tables
-                     and  that  concatenates  all  found results, separated by
+                     A  table  that sends each query to multiple lookup tables
+                     and that concatenates all  found  results,  separated  by
                      comma.  The table name syntax is the same as for <b>pipemap</b>.
 
                      This feature is available with Postfix 3.0 and later.
 
               <b>unix</b> (read-only)
-                     A  limited  view of the UNIX authentication database. The
+                     A limited view of the UNIX authentication  database.  The
                      following tables are implemented:
 
                      <b>unix:passwd.byname</b>
-                            The table is the UNIX password database.  The  key
-                            is  a  login  name.  The result is a password file
+                            The  table  is the UNIX password database. The key
+                            is a login name.  The result is  a  password  file
                             entry in <b>passwd</b>(5) format.
 
                      <b>unix:group.byname</b>
                             The table is the UNIX group database. The key is a
-                            group  name.   The result is a group file entry in
+                            group name.  The result is a group file  entry  in
                             <b>group</b>(5) format.
 
-              Other table types may exist depending on how Postfix was  built.
+              Other  table types may exist depending on how Postfix was built.
 
-       <b>-M</b>     Show  <a href="master.5.html"><b>master.cf</b></a>  file contents instead of <a href="postconf.5.html"><b>main.cf</b></a> file contents.
+       <b>-M</b>     Show <a href="master.5.html"><b>master.cf</b></a> file contents instead of <a href="postconf.5.html"><b>main.cf</b></a>  file  contents.
               Specify <b>-Mf</b> to fold long lines for human readability.
 
               Specify zero or more arguments, each with a <i>service-name</i> or <i>ser-</i>
-              <i>vice-name/service-type</i>  pair,  where  <i>service-name</i>  is the first
-              field of a <a href="master.5.html">master.cf</a> entry and <i>service-type</i>  is  one  of  (<b>inet</b>,
+              <i>vice-name/service-type</i> pair, where  <i>service-name</i>  is  the  first
+              field  of  a  <a href="master.5.html">master.cf</a>  entry and <i>service-type</i> is one of (<b>inet</b>,
               <b>unix</b>, <b>fifo</b>, or <b>pass</b>).
 
-              If  <i>service-name</i> or <i>service-name/service-type</i> is specified, only
-              the matching <a href="master.5.html">master.cf</a> entries  will  be  output.  For  example,
-              "<b>postconf  -Mf  smtp</b>" will output all services named "smtp", and
-              "<b>postconf -Mf smtp/inet</b>" will output only the smtp service  that
-              listens  on  the network.  Trailing service type fields that are
+              If <i>service-name</i> or <i>service-name/service-type</i> is specified,  only
+              the  matching  <a href="master.5.html">master.cf</a>  entries  will  be output. For example,
+              "<b>postconf -Mf smtp</b>" will output all services named  "smtp",  and
+              "<b>postconf  -Mf smtp/inet</b>" will output only the smtp service that
+              listens on the network.  Trailing service type fields  that  are
               omitted will be handled as "*" wildcard fields.
 
               This feature is available with Postfix 2.9 and later. The syntax
-              was  changed  from  "<i>name.type</i>" to "<i>name/type</i>", and "*" wildcard
+              was changed from "<i>name.type</i>" to "<i>name/type</i>",  and  "*"  wildcard
               support was added with Postfix 2.11.
 
        <b>-n</b>     Show only configuration parameters that have explicit <i>name=value</i>
-              settings  in  <a href="postconf.5.html"><b>main.cf</b></a>.  Specify <b>-nf</b> to fold long lines for human
-              readability (Postfix 2.9 and later). To show settings that  dif-
+              settings in <a href="postconf.5.html"><b>main.cf</b></a>.  Specify <b>-nf</b> to fold long lines  for  human
+              readability  (Postfix 2.9 and later). To show settings that dif-
               fer from built-in defaults only, use the following bash syntax:
-                  comm -23 &lt;(postconf -n) &lt;(postconf -d)
+                  LANG=C comm -23 &lt;(postconf -n) &lt;(postconf -d)
               Replace  "-23"  with  "-12"  to  show  settings  that  duplicate
               built-in defaults.
 
        <b>-o</b> <i>name=value</i>
-              Override <a href="postconf.5.html"><b>main.cf</b></a> parameter settings.
+              Override  <a href="postconf.5.html"><b>main.cf</b></a>  parameter  settings.   This  lets you see the
+              effect changing a parameter would have when it is used in  other
+              configuration parameters, e.g.:
+                  postconf -x -o stress=yes
 
               This feature is available with Postfix 2.10 and later.
 
@@ -417,38 +421,38 @@ POSTCONF(1)                                                        POSTCONF(1)
 
               This feature is available with Postfix 2.11 and later.
 
-       <b>-P</b>     Show <a href="master.5.html"><b>master.cf</b></a> service parameter settings (by default  all  ser-
-              vices  and  all  parameters), formatted as "<i>service/type/parame-</i>
+       <b>-P</b>     Show  <a href="master.5.html"><b>master.cf</b></a>  service parameter settings (by default all ser-
+              vices and all parameters),  formatted  as  "<i>service/type/parame-</i>
               <i>ter=value</i>", one per line.  Specify <b>-Pf</b> to fold long lines.
 
-              Specify one or more "<i>service/type/parameter</i>"  instances  on  the
-              <a href="postconf.1.html"><b>postconf</b>(1)</a>  command  line  to limit the output to parameters of
-              interest.  Trailing parameter name or service type  fields  that
+              Specify  one  or  more "<i>service/type/parameter</i>" instances on the
+              <a href="postconf.1.html"><b>postconf</b>(1)</a> command line to limit the output  to  parameters  of
+              interest.   Trailing  parameter name or service type fields that
               are omitted will be handled as "*" wildcard fields.
 
               This feature is available with Postfix 2.11 and later.
 
        <b>-t</b> [<i>template</i><b>_</b><i>file</i>]
-              Display  the templates for text that appears at the beginning of
-              delivery status notification (DSN) messages,  without  expanding
+              Display the templates for text that appears at the beginning  of
+              delivery  status  notification (DSN) messages, without expanding
               $<b>name</b> expressions.
 
-              To  override the <b><a href="postconf.5.html#bounce_template_file">bounce_template_file</a></b> parameter setting, specify
-              a template file name at the end of  the  "<b>postconf  -t</b>"  command
-              line.  Specify  an empty file name to display built-in templates
+              To override the <b><a href="postconf.5.html#bounce_template_file">bounce_template_file</a></b> parameter setting,  specify
+              a  template  file  name  at the end of the "<b>postconf -t</b>" command
+              line. Specify an empty file name to display  built-in  templates
               (in shell language: "").
 
               This feature is available with Postfix 2.3 and later.
 
        <b>-T</b> <i>mode</i>
-              If Postfix is compiled without TLS support, the <b>-T</b>  option  pro-
-              duces  no  output.   Otherwise, if an invalid <i>mode</i> is specified,
-              the <b>-T</b> option reports an error and exits with a non-zero  status
+              If  Postfix  is compiled without TLS support, the <b>-T</b> option pro-
+              duces no output.  Otherwise, if an invalid  <i>mode</i>  is  specified,
+              the  <b>-T</b> option reports an error and exits with a non-zero status
               code. The valid modes are:
 
               <b>compile-version</b>
                      Output the OpenSSL version that Postfix was compiled with
-                     (i.e. the OpenSSL version in a header file).  The  output
+                     (i.e.  the  OpenSSL version in a header file). The output
                      format is the same as with the command "<b>openssl version</b>".
 
               <b>run-version</b>
@@ -456,40 +460,40 @@ POSTCONF(1)                                                        POSTCONF(1)
                      runtime (i.e. the OpenSSL version in a shared library).
 
               <b>public-key-algorithms</b>
-                     Output  the  lower-case names of the supported public-key
+                     Output the lower-case names of the  supported  public-key
                      algorithms, one per-line.
 
               This feature is available with Postfix 3.1 and later.
 
-       <b>-v</b>     Enable verbose  logging  for  debugging  purposes.  Multiple  <b>-v</b>
+       <b>-v</b>     Enable  verbose  logging  for  debugging  purposes.  Multiple <b>-v</b>
               options make the software increasingly verbose.
 
-       <b>-x</b>     Expand  <i>$name</i>  in  <a href="postconf.5.html"><b>main.cf</b></a>  or  <a href="master.5.html"><b>master.cf</b></a>  parameter values. The
+       <b>-x</b>     Expand <i>$name</i> in  <a href="postconf.5.html"><b>main.cf</b></a>  or  <a href="master.5.html"><b>master.cf</b></a>  parameter  values.  The
               expansion is recursive.
 
               This feature is available with Postfix 2.10 and later.
 
-       <b>-X</b>     Edit the <a href="postconf.5.html"><b>main.cf</b></a> configuration file, and remove  the  parameters
+       <b>-X</b>     Edit  the  <a href="postconf.5.html"><b>main.cf</b></a> configuration file, and remove the parameters
               named on the <a href="postconf.1.html"><b>postconf</b>(1)</a> command line.  Specify a list of param-
               eter names, not "<i>name=value</i>" pairs.
 
-              With <b>-M</b>, edit the <a href="master.5.html"><b>master.cf</b></a> configuration file, and  remove  one
-              or  more service entries as specified with "<i>service/type</i>" on the
+              With  <b>-M</b>,  edit the <a href="master.5.html"><b>master.cf</b></a> configuration file, and remove one
+              or more service entries as specified with "<i>service/type</i>" on  the
               <a href="postconf.1.html"><b>postconf</b>(1)</a> command line.
 
-              With <b>-P</b>, edit the <a href="master.5.html"><b>master.cf</b></a> configuration file, and  remove  one
+              With  <b>-P</b>,  edit the <a href="master.5.html"><b>master.cf</b></a> configuration file, and remove one
               or more service parameter settings (-o parameter=value settings)
-              as specified with "<i>service/type/parameter</i>"  on  the  <a href="postconf.1.html"><b>postconf</b>(1)</a>
+              as  specified  with  "<i>service/type/parameter</i>" on the <a href="postconf.1.html"><b>postconf</b>(1)</a>
               command line.
 
               In all cases the file is copied to a temporary file then renamed
               into place.  Specify quotes to protect special characters on the
               <a href="postconf.1.html"><b>postconf</b>(1)</a> command line.
 
-              There  is  no  <a href="postconf.1.html"><b>postconf</b>(1)</a> command to perform the reverse opera-
+              There is no <a href="postconf.1.html"><b>postconf</b>(1)</a> command to perform  the  reverse  opera-
               tion.
 
-              This feature is available with Postfix 2.10 and later.   Support
+              This  feature is available with Postfix 2.10 and later.  Support
               for -M and -P was added with Postfix 2.11.
 
        <b>-#</b>     Edit the <a href="postconf.5.html"><b>main.cf</b></a> configuration file, and comment out the parame-
@@ -497,18 +501,18 @@ POSTCONF(1)                                                        POSTCONF(1)
               eters revert to their default values.  Specify a list of parame-
               ter names, not "<i>name=value</i>" pairs.
 
-              With <b>-M</b>, edit the <a href="master.5.html"><b>master.cf</b></a> configuration file, and comment  out
-              one  or more service entries as specified with "<i>service/type</i>" on
+              With  <b>-M</b>, edit the <a href="master.5.html"><b>master.cf</b></a> configuration file, and comment out
+              one or more service entries as specified with "<i>service/type</i>"  on
               the <a href="postconf.1.html"><b>postconf</b>(1)</a> command line.
 
               In all cases the file is copied to a temporary file then renamed
               into place.  Specify quotes to protect special characters on the
               <a href="postconf.1.html"><b>postconf</b>(1)</a> command line.
 
-              There is no <a href="postconf.1.html"><b>postconf</b>(1)</a> command to perform  the  reverse  opera-
+              There  is  no  <a href="postconf.1.html"><b>postconf</b>(1)</a> command to perform the reverse opera-
               tion.
 
-              This  feature  is  available with Postfix 2.6 and later. Support
+              This feature is available with Postfix 2.6  and  later.  Support
               for -M was added with Postfix 2.11.
 
 <b>DIAGNOSTICS</b>
@@ -519,18 +523,18 @@ POSTCONF(1)                                                        POSTCONF(1)
               Directory with Postfix configuration files.
 
 <b>CONFIGURATION PARAMETERS</b>
-       The following <a href="postconf.5.html"><b>main.cf</b></a> parameters are especially relevant to  this  pro-
+       The  following  <a href="postconf.5.html"><b>main.cf</b></a> parameters are especially relevant to this pro-
        gram.
 
-       The  text  below provides only a parameter summary. See <a href="postconf.5.html"><b>postconf</b>(5)</a> for
+       The text below provides only a parameter summary. See  <a href="postconf.5.html"><b>postconf</b>(5)</a>  for
        more details including examples.
 
        <b><a href="postconf.5.html#config_directory">config_directory</a> (see 'postconf -d' output)</b>
-              The default location of the Postfix <a href="postconf.5.html">main.cf</a> and  <a href="master.5.html">master.cf</a>  con-
+              The  default  location of the Postfix <a href="postconf.5.html">main.cf</a> and <a href="master.5.html">master.cf</a> con-
               figuration files.
 
        <b><a href="postconf.5.html#bounce_template_file">bounce_template_file</a> (empty)</b>
-              Pathname  of a configuration file with bounce message templates.
+              Pathname of a configuration file with bounce message  templates.
 
 <b>FILES</b>
        /etc/postfix/<a href="postconf.5.html">main.cf</a>, Postfix configuration parameters
index 73dca5ce6ed29f82fc28a777235c1ba74adf5424..65171852f824bb562634f9564e1f33b0152de1fd 100644 (file)
@@ -163,8 +163,10 @@ logged as "partial" when the daemon terminates early after "<b>postfix
 reload</b>", "<b>postfix stop</b>", or no requests for $<a href="postconf.5.html#max_idle">max_idle</a>
 seconds. </p>
 
-<p> Time units: s (seconds), m (minutes), h (hours), d (days), w
-(weeks). </p>
+<p> Specify a non-negative time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is h (hours).  </p>
 
 <p> This feature is available in Postfix 2.7. </p>
 
@@ -219,7 +221,7 @@ stop</b>". This is the default with Postfix version 2.6 and earlier.
 
 <p>
 Specify a location in a file system that will not fill up. If the
-database becomes corrupted, the world comes to an end. To recover
+database becomes corrupted, the world comes to an end. To recover,
 delete (NOT: truncate) the file and do "<b>postfix reload</b>".
 </p>
 
@@ -271,9 +273,10 @@ The time after which a failed probe expires from the address
 verification cache.
 </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is d (days).  </p>
 
 <p>
 This feature is available in Postfix 2.1 and later.
@@ -290,9 +293,10 @@ The time after which a failed address verification probe needs to
 be refreshed.
 </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is h (hours).  </p>
 
 <p>
 This feature is available in Postfix 2.1 and later.
@@ -367,9 +371,10 @@ verification request in progress.
 The default polling delay is 3 seconds.
 </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 <p>
 This feature is available in Postfix 2.1 and later.
@@ -386,9 +391,10 @@ The time after which a successful probe expires from the address
 verification cache.
 </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is d (days).  </p>
 
 <p>
 This feature is available in Postfix 2.1 and later.
@@ -406,9 +412,10 @@ to be refreshed.  The address verification status is not updated
 when the probe fails (optimistic caching).
 </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is d (days).  </p>
 
 <p>
 This feature is available in Postfix 2.1 and later.
@@ -519,12 +526,14 @@ caused such addresses to end up on spammer mailing lists, and has
 resulted in wasted network and processing resources.  </p>
 
 <p> To enable time-dependent probe sender addresses, specify a
-non-zero time value (an integral value plus an optional one-letter
-suffix that specifies the time unit).  Specify a value of at least
-several hours, to avoid problems with senders that use greylisting.
-Avoid nice TTL values, to make the result less predictable.  Time
-units are: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-</p>
+non-zero time value. Specify a value of at least several hours,
+to avoid problems with senders that use greylisting. Avoid nice
+TTL values, to make the result less predictable.  </p>
+
+<p> Specify a non-negative time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 <p> This feature is available in Postfix 2.9 and later.  </p>
 
@@ -863,10 +872,10 @@ frequency of updates, the <a href="anvil.8.html">anvil(8)</a> server uses volati
 only. Thus, information is lost whenever the process terminates.
 </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 
 </DD>
@@ -879,13 +888,13 @@ How frequently the <a href="anvil.8.html">anvil(8)</a> connection and rate limit
 logs peak usage information.
 </p>
 
-<p>
-This feature is available in Postfix 2.2 and later.
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 <p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
+This feature is available in Postfix 2.2 and later.
 </p>
 
 
@@ -971,10 +980,10 @@ How long the <a href="postkick.1.html">postkick(1)</a> command waits for a reque
 Postfix daemon process input buffer before giving up.
 </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 <p>
 This feature is available in Postfix 2.1 and later.
@@ -1274,10 +1283,10 @@ with a temporary error, and the time in the queue has reached the
 as for regular mail.
 </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is d (days).
-</p>
+<p> Specify a non-negative time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is d (days).  </p>
 
 <p>
 Specify 0 when mail delivery should be tried only once.
@@ -1338,7 +1347,7 @@ message size exceeds a local or remote MTA's message size limit.
 
 <p> Pathname of a configuration file with bounce message templates.
 These override the built-in templates of delivery status notification
-(DSN) messages for undeliverable mail, for delayed mail, successful
+(DSN) messages for undeliverable mail, delayed mail, successful
 delivery, or delivery verification. The <a href="bounce.5.html">bounce(5)</a> manual page
 describes how to edit and test template files.  </p>
 
@@ -1474,7 +1483,7 @@ The location of all postfix administrative commands.
 (default: empty)</b></DT><DD>
 
 <p> The <a href="local.8.html">local(8)</a> delivery agent working directory for delivery to
-external command.  Failure to change directory causes the delivery
+external commands.  Failure to change directory causes the delivery
 to be deferred. </p>
 
 <p> The <a href="postconf.5.html#command_execution_directory">command_execution_directory</a> value is not subject to Postfix
@@ -1523,12 +1532,21 @@ address extension delimiter (Postfix 2.10 and earlier). </dd>
 
 <dt><b>${name?value}</b></dt>
 
+<dt><b>${name?{value}}</b> (Postfix &ge; 3.0)</dt>
+
 <dd>Expands to <i>value</i> when <i>$name</i> is non-empty. </dd>
 
 <dt><b>${name:value}</b></dt>
 
+<dt><b>${name:{value}}</b> (Postfix &ge; 3.0)</dt>
+
 <dd>Expands to <i>value</i> when <i>$name</i> is empty. </dd>
 
+<dt><b>${name?{value1}:{value2}}</b> (Postfix &ge; 3.0)</dt>
+
+<dd>Expands to <i>value1</i> when <i>$name</i> is non-empty,
+<i>value2</i> otherwise. </dd>
+
 </dl>
 
 <p>
@@ -1821,10 +1839,10 @@ limited to 13 over the lifetime of a daemon process. </p>
 <p> How much time a Postfix daemon process may take to handle a
 request before it is terminated by a built-in watchdog timer.  </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 
 </DD>
@@ -1953,7 +1971,7 @@ for each message. One message can be preempted by another one when
 the other message can be delivered using no more delivery slots
 (i.e., invocations of delivery agents) than the current message
 counter has accumulated (or will eventually accumulate - see about
-slot loans below). This parameter controls how often is the counter
+slot loans below). This parameter controls how often the counter is
 incremented - it happens after each <a href="postconf.5.html#default_delivery_slot_cost">default_delivery_slot_cost</a>
 recipients have been delivered.
 </p>
@@ -2005,8 +2023,8 @@ settings.
 This parameter speeds up the moment when a message preemption can
 happen. Instead of waiting until the full amount of delivery slots
 required is available, the preemption can happen when
-transport_delivery_slot_discount percent of the required amount
-plus transport_delivery_slot_loan still remains to be accumulated.
+<a href="postconf.5.html#transport_delivery_slot_discount"><i>transport</i>_delivery_slot_discount</a> percent of the required amount
+plus <a href="postconf.5.html#transport_delivery_slot_loan"><i>transport</i>_delivery_slot_loan</a> still remains to be accumulated.
 Note that the full amount will still have to be accumulated before
 another preemption can take place later.
 </p>
@@ -2031,8 +2049,8 @@ settings.
 This parameter speeds up the moment when a message preemption can
 happen. Instead of waiting until the full amount of delivery slots
 required is available, the preemption can happen when
-transport_delivery_slot_discount percent of the required amount
-plus transport_delivery_slot_loan still remains to be accumulated.
+<a href="postconf.5.html#transport_delivery_slot_discount">transport_delivery_slot_discount</a> percent of the required amount
+plus <a href="postconf.5.html#transport_delivery_slot_loan">transport_delivery_slot_loan</a> still remains to be accumulated.
 Note that the full amount will still have to be accumulated before
 another preemption can take place later.
 </p>
@@ -2174,7 +2192,7 @@ is compatible with earlier Postfix versions. </p>
 The default maximal number of parallel deliveries to the same
 destination.  This is the default limit for delivery via the <a href="lmtp.8.html">lmtp(8)</a>,
 <a href="pipe.8.html">pipe(8)</a>, <a href="smtp.8.html">smtp(8)</a> and <a href="virtual.8.html">virtual(8)</a> delivery agents.
-With per-destination recipient limit &gt; 1, a destination is a domain,
+With per-destination recipient limit &gt; 1, a destination is a domain,
 otherwise it is a recipient.
 </p>
 
@@ -2394,7 +2412,7 @@ The default value for the extra per-transport limit imposed on the
 number of in-memory recipients.  This extra recipient space is
 reserved for the cases when the Postfix queue manager's scheduler
 preempts one message with another and suddenly needs some extra
-recipients slots for the chosen message in order to avoid performance
+recipient slots for the chosen message in order to avoid performance
 degradation.
 </p>
 
@@ -2444,7 +2462,7 @@ name of the message delivery transport.
 
 <p>
 The default rights used by the <a href="local.8.html">local(8)</a> delivery agent for delivery
-to external file or command.  These rights are used when delivery
+to an external file or command.  These rights are used when delivery
 is requested from an <a href="aliases.5.html">aliases(5)</a> file that is owned by <b>root</b>, or
 when delivery is done on behalf of <b>root</b>. <b>DO NOT SPECIFY A
 PRIVILEGED USER OR THE POSTFIX OWNER</b>.
@@ -2558,13 +2576,22 @@ name, or an email address whose domain was denylisted). </dd>
 
 <dd>The sender address localpart or &lt;&gt; in case of the null address. </dd>
 
-<dt><b>${name?text}</b></dt>
+<dt><b>${name?value}</b></dt>
+
+<dt><b>${name?{value}}</b> (Postfix &ge; 3.0)</dt>
+
+<dd>Expands to <i>value</i> when <i>$name</i> is non-empty. </dd>
+
+<dt><b>${name:value}</b></dt>
+
+<dt><b>${name:{value}}</b> (Postfix &ge; 3.0)</dt>
 
-<dd>Expands to `text' if $name is not empty. </dd>
+<dd>Expands to <i>value</i> when <i>$name</i> is empty. </dd>
 
-<dt><b>${name:text}</b></dt>
+<dt><b>${name?{value1}:{value2}}</b> (Postfix &ge; 3.0)</dt>
 
-<dd>Expands to `text' if $name is empty. </dd>
+<dd>Expands to <i>value1</i> when <i>$name</i> is non-empty,
+<i>value2</i> otherwise. </dd>
 
 </dl>
 
@@ -2616,10 +2643,10 @@ name of the message delivery transport.
 (default: 5s)</b></DT><DD>
 
 <p>
-The default per-transport maximum delay between recipients refills.
-When not all message recipients fit into the memory at once, keep loading
+The default per-transport maximum delay between refilling recipients.
+When not all message recipients fit into memory at once, keep loading
 more of them at least once every this many seconds.  This is used to
-make sure the recipients are refilled in timely manner even when
+make sure the recipients are refilled in timely manner even when
 $<a href="postconf.5.html#default_recipient_refill_limit">default_recipient_refill_limit</a> is too high for too slow deliveries.
 </p>
 
@@ -2638,7 +2665,7 @@ name of the message delivery transport.
 
 <p>
 The default per-transport limit on the number of recipients refilled at
-once.  When not all message recipients fit into the memory at once, keep
+once.  When not all message recipients fit into memory at once, keep
 loading more of them in batches of at least this many at a time.  See also
 $<a href="postconf.5.html#default_recipient_refill_delay">default_recipient_refill_delay</a>, which may result in recipient batches
 lower than this when this limit is too high for too slow deliveries.
@@ -2732,8 +2759,9 @@ unit). </p>
 
 <p> The two default VERP delimiter characters. These are used when
 no explicit delimiters are specified with the SMTP XVERP command
-or with the "<b>sendmail -V</b>" command-line option. Specify
-characters that are allowed by the <a href="postconf.5.html#verp_delimiter_filter">verp_delimiter_filter</a> setting.
+or with the "<b>sendmail -XV</b>" command-line option (Postfix 2.2
+and earlier: <b>-V</b>). Specify characters that are allowed by the
+<a href="postconf.5.html#verp_delimiter_filter">verp_delimiter_filter</a> setting.
 </p>
 
 <p>
@@ -2780,7 +2808,7 @@ This feature is available in Postfix 2.0 and later.
 <p>
 The names of message delivery transports that should not deliver mail
 unless someone issues "<b>sendmail -q</b>" or equivalent. Specify zero
-or more names of mail delivery transports names that appear in the
+or more mail delivery transport names that appear in the
 first field of <a href="master.5.html">master.cf</a>.
 </p>
 
@@ -2801,7 +2829,7 @@ Example:
 <p> The maximal number of digits after the decimal point when logging
 sub-second delay values.  Specify a number in the range 0..6.  </p>
 
-<p> Large delay values are rounded off to an integral number seconds;
+<p> Large delay values are rounded off to an integral number of seconds;
 delay values below the <a href="postconf.5.html#delay_logging_resolution_limit">delay_logging_resolution_limit</a> are logged
 as "0", and delay values under 100s are logged with at most two-digit
 precision.  </p>
@@ -2886,10 +2914,10 @@ The time between attempts to acquire an exclusive lock on a mailbox
 file or <a href="bounce.8.html">bounce(8)</a> logfile.
 </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 
 </DD>
@@ -3654,8 +3682,10 @@ This feature is available in Postfix 2.0 and later.
 
 <p> The delay between attempts to fork() a child process.  </p>
 
-<p> Time units: s (seconds), m (minutes), h (hours), d (days), w
-(weeks).  The default time unit is s (seconds).  </p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 
 </DD>
@@ -3724,12 +3754,21 @@ address extension delimiter (Postfix 2.10 and earlier). </dd>
 
 <dt><b>${name?value}</b></dt>
 
+<dt><b>${name?{value}}</b> (Postfix &ge; 3.0)</dt>
+
 <dd>Expands to <i>value</i> when <i>$name</i> is non-empty. </dd>
 
 <dt><b>${name:value}</b></dt>
 
+<dt><b>${name:{value}}</b> (Postfix &ge; 3.0)</dt>
+
 <dd>Expands to <i>value</i> when <i>$name</i> is empty. </dd>
 
+<dt><b>${name?{value1}:{value2}}</b> (Postfix &ge; 3.0)</dt>
+
+<dd>Expands to <i>value1</i> when <i>$name</i> is non-empty,
+<i>value2</i> otherwise. </dd>
+
 </dl>
 
 <p>
@@ -3844,7 +3883,7 @@ message headers, as specified in the <a href="header_checks.5.html">header_check
 
 <p> The format of the Postfix-generated <b>From:</b> header. This
 setting affects the appearance of 'full name' information when a
-local program such as /bin/mail submits a message without From:
+local program such as /bin/mail submits a message without From:
 header through the Postfix <a href="sendmail.1.html">sendmail(1)</a> command. </p>
 
 <p> Specify one of the following: </p>
@@ -3983,11 +4022,11 @@ mis-delivery of mail.
 <DT><b><a name="import_environment">import_environment</a>
 (default: see "postconf -d" output)</b></DT><DD>
 
-<p> The list of environment parameters that a privileged Postfix
+<p> The list of environment variables that a privileged Postfix
 process will import from a non-Postfix parent process, or name=value
 environment overrides.  Unprivileged utilities will enforce the
 name=value overrides, but otherwise will not change their process
-environment.  Examples of relevant parameters: </p>
+environment.  Examples of relevant environment variables: </p>
 
 <dl>
 
@@ -4012,7 +4051,7 @@ environment.  Examples of relevant parameters: </p>
 
 <p> Specify a list of names and/or name=value pairs, separated by
 whitespace or comma. Specify "{ name=value }" to protect whitespace
-or comma in parameter values (whitespace after the opening "{" and
+or comma in environment variable values (whitespace after the opening "{" and
 before the closing "}"
 is ignored). The form name=value is supported with Postfix version
 2.1 and later; the use of {} is supported with Postfix 3.0 and
@@ -4280,10 +4319,10 @@ example, by the Postfix address resolving and rewriting clients.
 
 <p> With Postfix 2.4 the default value was reduced from 100s to 5s. </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 
 </DD>
@@ -4298,10 +4337,10 @@ situations. If the time limit is exceeded the software aborts with a
 fatal error.
 </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 
 </DD>
@@ -4317,10 +4356,10 @@ after reaching their client limit.  This is used, for example, by
 the Postfix address resolving and rewriting clients.
 </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 <p>
 This feature is available in Postfix 2.1 and later.
@@ -4507,7 +4546,7 @@ command.
 
 <p>
 Most of these limitations have been with the Postfix
-connection cache that is shared among multiple LMTP client
+connection cache that is shared among multiple LMTP client
 programs.
 </p>
 
@@ -4533,10 +4572,10 @@ zero (use the operating system built-in time limit).  When no
 connection can be made within the deadline, the LMTP client tries
 the next address on the mail exchanger list.  </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-negative time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 <p>
 Example:
@@ -4613,10 +4652,10 @@ and for receiving the remote LMTP server response.  When no response
 is received within the deadline, a warning is logged that the mail
 may be delivered multiple times.  </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 
 </DD>
@@ -4630,10 +4669,10 @@ and
 for receiving the remote LMTP server response.
 </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 
 </DD>
@@ -4648,10 +4687,10 @@ When the connection stalls for more than $<a href="postconf.5.html#lmtp_data_xfe
 the LMTP client terminates the transfer.
 </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 
 </DD>
@@ -4854,7 +4893,7 @@ The hostname to send in the LMTP LHLO command.
 
 <p>
 The default value is the machine hostname.  Specify a hostname or
-[ip.add.re.ss].
+[ip.add.re.ss] or [ip:v6:add:re::ss].
 </p>
 
 <p>
@@ -4908,10 +4947,10 @@ The Postfix LMTP client time limit for sending the MAIL FROM command,
 and for receiving the remote LMTP server response.
 </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 
 </DD>
@@ -5045,10 +5084,10 @@ The Postfix LMTP client time limit for sending the QUIT command,
 and for receiving the remote LMTP server response.
 </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 
 </DD>
@@ -5083,10 +5122,10 @@ The Postfix LMTP client time limit for sending the RCPT TO command,
 and for receiving the remote LMTP server response.
 </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 
 </DD>
@@ -5111,10 +5150,10 @@ sends RSET in
 order to finish a recipient address probe, or to verify that a
 cached connection is still alive.  </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 
 </DD>
@@ -5223,7 +5262,7 @@ active attacks. </dd>
 <dt><b>nodictionary</b></dt>
 
 <dd>Disallow authentication methods that are vulnerable to passive
-dictionary attack. </dd>
+dictionary attacks. </dd>
 
 <dt><b>noanonymous</b></dt>
 
@@ -5296,7 +5335,7 @@ Send an XFORWARD command to the remote LMTP server when the LMTP LHLO
 server response announces XFORWARD support.  This allows an <a href="lmtp.8.html">lmtp(8)</a>
 delivery agent, used for content filter message injection, to
 forward the name, address, protocol and HELO name of the original
-client to the content filter and downstream queuing LMTP server.
+client to the content filter and downstream LMTP server.
 Before you change the value to yes, it is best to make sure that
 your content filter supports this command.
 </p>
@@ -5762,10 +5801,10 @@ In case of problems the client does NOT try the next address on
 the mail exchanger list.
 </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 <p>
 This feature is available in Postfix 2.1 and later.
@@ -5778,7 +5817,7 @@ This feature is available in Postfix 2.1 and later.
 (default: empty)</b></DT><DD>
 
 <p>
-Optional shell program for <a href="local.8.html">local(8)</a> delivery to non-Postfix command.
+Optional shell program for <a href="local.8.html">local(8)</a> delivery to non-Postfix commands.
 By default, non-Postfix commands are executed directly; commands
 are given to the default shell (typically, /bin/sh) only when they
 contain shell meta characters or shell built-in commands.
@@ -6006,14 +6045,14 @@ match. </dd>
     # send mail as themselves. Use "uid:" followed by the numerical
     # UID when the UID has no entry in the UNIX password file.
     <a href="postconf.5.html#local_login_sender_maps">local_login_sender_maps</a> =
-        <a href="DATABASE_README.html#types">inline</a>:{ { root = *}, { postfix = * } },
+        <a href="DATABASE_README.html#types">inline</a>:{ { root = * }, { postfix = * } },
         <a href="pcre_table.5.html">pcre</a>:/etc/postfix/login_senders
 </pre>
 
 <pre>
 /etc/postfix/login_senders:
    # Allow both the bare username and the user@domain forms.
-    /(.+)/ $1 $1@example.com/
+    /(.+)/ $1 $1@example.com
 </pre>
 
 <p> This feature is available in Postfix 3.6 and later. </p>
@@ -6170,11 +6209,20 @@ address extension delimiter (Postfix 2.10 and earlier). </dd>
 
 <dt><b>${name?value}</b></dt>
 
-<dd>Expands to <i>value</i> when <i>$name</i> has a non-empty value. </dd>
+<dt><b>${name?{value}}</b> (Postfix &ge; 3.0)</dt>
+
+<dd>Expands to <i>value</i> when <i>$name</i> is non-empty. </dd>
 
 <dt><b>${name:value}</b></dt>
 
-<dd>Expands to <i>value</i> when <i>$name</i> has an empty value. </dd>
+<dt><b>${name:{value}}</b> (Postfix &ge; 3.0)</dt>
+
+<dd>Expands to <i>value</i> when <i>$name</i> is empty. </dd>
+
+<dt><b>${name?{value1}:{value2}}</b> (Postfix &ge; 3.0)</dt>
+
+<dd>Expands to <i>value1</i> when <i>$name</i> is non-empty,
+<i>value2</i> otherwise. </dd>
 
 </dl>
 
@@ -6478,7 +6526,9 @@ Note: the default setting of this parameter is system dependent.
 file, or zero (no limit).  In fact, this limits the size of any
 file that is written to upon local delivery, including files written
 by external commands that are executed by the <a href="local.8.html">local(8)</a> delivery
-agent.  </p>
+agent. The value cannot exceed LONG_MAX (typically, a 32-bit or
+64-bit signed integer).
+</p>
 
 <p>
 This limit must not be smaller than the message size limit.
@@ -6809,10 +6859,10 @@ is ignored by the Postfix queue manager and by other long-lived
 Postfix daemon processes.
 </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 
 </DD>
@@ -6840,10 +6890,10 @@ The maximal time between attempts to deliver a deferred message.
 <p> This parameter should be set to a value greater than or equal
 to $<a href="postconf.5.html#minimal_backoff_time">minimal_backoff_time</a>. See also $<a href="postconf.5.html#queue_run_delay">queue_run_delay</a>.  </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 
 </DD>
@@ -6857,10 +6907,10 @@ temporary error, and the time in the queue has reached the
 <a href="postconf.5.html#maximal_queue_lifetime">maximal_queue_lifetime</a> limit.
 </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is d (days).
-</p>
+<p> Specify a non-negative time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is d (days).  </p>
 
 <p>
 Specify 0 when mail delivery should be tried only once.
@@ -6916,6 +6966,8 @@ and <a href="postconf.5.html#body_checks">body_checks</a>.  </p>
 
 <p>
 The maximal size in bytes of a message, including envelope information.
+The value cannot exceed LONG_MAX (typically, a 32-bit or 64-bit
+signed integer).
 </p>
 
 <p> Note: be careful when making changes.  Excessively small values
@@ -6980,10 +7032,9 @@ command line.  </p>
 filter) application, and for receiving the response.  </p>
 
 <p> Specify a non-zero time value (an integral value plus an optional
-one-letter suffix that specifies the time unit). </p>
-
-<p> Time units: s (seconds), m (minutes), h (hours), d (days), w
-(weeks). The default time unit is s (seconds). </p>
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 <p> This feature is available in Postfix 2.3 and later. </p>
 
@@ -7009,10 +7060,9 @@ for a list of available macro names and their meanings. </p>
 application, and for negotiating protocol options. </p>
 
 <p> Specify a non-zero time value (an integral value plus an optional
-one-letter suffix that specifies the time unit). </p>
-
-<p> Time units: s (seconds), m (minutes), h (hours), d (days), w
-(weeks). The default time unit is s (seconds). </p>
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 <p> This feature is available in Postfix 2.3 and later. </p>
 
@@ -7026,10 +7076,9 @@ one-letter suffix that specifies the time unit). </p>
 filter) application, and for receiving the response.  </p>
 
 <p> Specify a non-zero time value (an integral value plus an optional
-one-letter suffix that specifies the time unit). </p>
-
-<p> Time units: s (seconds), m (minutes), h (hours), d (days), w
-(weeks). The default time unit is s (seconds). </p>
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 <p> This feature is available in Postfix 2.3 and later. </p>
 
@@ -7165,7 +7214,7 @@ values for arbitrary macros that Postfix may send to Milter
 applications.  These defaults are used when there is no corresponding
 information from the message delivery context. </p>
 
-<p> Specify <i>name=value</i> or <i>{name}=value</i> pairs separated
+<p> Specify <i>name=value</i> or <i>{name=value}</i> pairs separated
 by comma or whitespace.  Enclose a pair in "{}" when a value contains
 comma or whitespace (this form ignores whitespace after the enclosing
 "{", around the "=", and before the enclosing "}"). </p>
@@ -7326,10 +7375,10 @@ kept in the short-term, in-memory, destination status cache.
 <p> This parameter should be set greater than or equal to
 $<a href="postconf.5.html#queue_run_delay">queue_run_delay</a>. See also $<a href="postconf.5.html#maximal_backoff_time">maximal_backoff_time</a>.  </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 
 </DD>
@@ -7587,7 +7636,7 @@ block from the list. The form "!/file/name" is supported only
 in Postfix version 2.4 and later. </p>
 
 <p> Note 1: Pattern matching of domain names is controlled by the
-or absence of "<a href="postconf.5.html#mynetworks">mynetworks</a>" in the <a href="postconf.5.html#parent_domain_matches_subdomains">parent_domain_matches_subdomains</a>
+presence or absence of "<a href="postconf.5.html#mynetworks">mynetworks</a>" in the <a href="postconf.5.html#parent_domain_matches_subdomains">parent_domain_matches_subdomains</a>
 parameter value.  </p>
 
 <p> Note 2: IP version 6 address information must be specified inside
@@ -7624,7 +7673,7 @@ This is the list of trusted networks for relay access control etc.
 <li><p>Specify "<a href="postconf.5.html#mynetworks_style">mynetworks_style</a> = subnet" when Postfix
 should "trust" remote SMTP clients in the same IP subnetworks as the local
 machine.  On Linux, this works correctly only with interfaces
-specified with the "ifconfig" command. </p>
+specified with the "ifconfig" or "ip" command. </p>
 
 <li><p>Specify "<a href="postconf.5.html#mynetworks_style">mynetworks_style</a> = class" when Postfix should
 "trust" remote SMTP clients in the same IP class A/B/C networks as the
@@ -7708,7 +7757,7 @@ or <a href="postconf.5.html#reject_non_fqdn_recipient">reject_non_fqdn_recipient
 does not arrive via the Postfix <a href="smtpd.8.html">smtpd(8)</a> server. This includes local
 submission via the <a href="sendmail.1.html">sendmail(1)</a> command line, new mail that arrives
 via the Postfix <a href="qmqpd.8.html">qmqpd(8)</a> server, and old mail that is re-injected
-into the queue with "postsuper -r".  Specify space or comma as
+into the queue with "postsuper -r".  Specify space or comma as a
 separator. See the <a href="MILTER_README.html">MILTER_README</a> document for details.  </p>
 
 <p> This feature is available in Postfix 2.3 and later. </p>
@@ -7899,7 +7948,7 @@ you really want to match subdomains.
 
 <dd>
 <a href="postconf.5.html#qmqpd_authorized_clients">qmqpd_authorized_clients</a>,
-smtpd_access_maps,
+<a href="SMTPD_ACCESS_README.html">smtpd_access_maps</a>,
 </dd>
 
 <dt> Postfix version 2.8 and later </dt>
@@ -7998,7 +8047,8 @@ cannot be set under 10s. </p>
 
 <p> Specify a non-zero time value (an integral value plus an optional
 one-letter suffix that specifies the time unit).  Time units: s
-(seconds), m (minutes), h (hours), d (days), w (weeks).  </p>
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 <p> This feature is available in Postfix 3.4 and later.  </p>
 
@@ -8176,7 +8226,7 @@ return.  Specify one of the following: </p>
 <dt> <b>ignore</b> </dt>
 
 <dd> Ignore the failure of this test. Allow other tests to complete.
-Do <i>not</i> repeat this test before some the result from some
+Do <i>not</i> repeat this test before the result from some
 other test expires.
 This option is useful for testing and collecting statistics
 without blocking mail permanently. </dd>
@@ -8225,7 +8275,8 @@ before it can talk to a real Postfix SMTP server. </p>
 
 <p> Specify a non-zero time value (an integral value plus an optional
 one-letter suffix that specifies the time unit).  Time units: s
-(seconds), m (minutes), h (hours), d (days), w (weeks).  </p>
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is d (days).  </p>
 
 <p> This feature is available in Postfix 2.8.  </p>
 
@@ -8257,8 +8308,10 @@ logged as "partial" when the daemon terminates early after "<b>postfix
 reload</b>", "<b>postfix stop</b>", or no requests for $<a href="postconf.5.html#max_idle">max_idle</a>
 seconds. </p>
 
-<p> Time units: s (seconds), m (minutes), h (hours), d (days), w
-(weeks).  </p>
+<p> Specify a non-negative time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is h (hours).  </p>
 
 <p> This feature is available in Postfix 2.8. </p>
 
@@ -8290,8 +8343,10 @@ from being logged as "NEW" just because their cache entry expired
 an hour ago. It also prevents the cache from filling up with clients
 that passed some deep protocol test once and never came back. </p>
 
-<p> Time units: s (seconds), m (minutes), h (hours), d (days), w
-(weeks).  </p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is d (days).  </p>
 
 <p> This feature is available in Postfix 2.8. </p>
 
@@ -8492,7 +8547,8 @@ it would be smaller than <a href="postconf.5.html#postscreen_dnsbl_min_ttl">post
 
 <p> Specify a non-zero time value (an integral value plus an optional
 one-letter suffix that specifies the time unit).  Time units: s
-(seconds), m (minutes), h (hours), d (days), w (weeks).  </p>
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is h (hours).  </p>
 
 <p> This feature is available in Postfix 3.1. The default setting
 is backwards-compatible with older Postfix versions. </p>
@@ -8511,7 +8567,8 @@ it would be larger than <a href="postconf.5.html#postscreen_dnsbl_max_ttl">posts
 
 <p> Specify a non-zero time value (an integral value plus an optional
 one-letter suffix that specifies the time unit).  Time units: s
-(seconds), m (minutes), h (hours), d (days), w (weeks).  </p>
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 <p> This feature is available in Postfix 3.1. </p>
 
@@ -8521,7 +8578,7 @@ one-letter suffix that specifies the time unit).  Time units: s
 <DT><b><a name="postscreen_dnsbl_reply_map">postscreen_dnsbl_reply_map</a>
 (default: empty)</b></DT><DD>
 
-<p> A mapping from actual DNSBL domain name which includes a secret
+<p> A mapping from an actual DNSBL domain name which includes a secret
 password, to the DNSBL domain name that postscreen will reply with
 when it rejects mail.  When no mapping is found, the actual DNSBL
 domain will be used. </p>
@@ -8630,6 +8687,11 @@ parameter. </p>
 the timeouts in the <a href="dnsblog.8.html">dnsblog(8)</a> daemon which are defined by system
 resolver(3) routines. </p>
 
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
+
 <p> This feature is available in Postfix 3.0.  </p>
 
 
@@ -8644,7 +8706,8 @@ IP address is required to pass that test again.  </p>
 
 <p> Specify a non-zero time value (an integral value plus an optional
 one-letter suffix that specifies the time unit).  Time units: s
-(seconds), m (minutes), h (hours), d (days), w (weeks).  </p>
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is h (hours).  </p>
 
 <p> This feature is available in Postfix 2.8-3.0. It was
 replaced by <a href="postconf.5.html#postscreen_dnsbl_max_ttl">postscreen_dnsbl_max_ttl</a> in Postfix 3.1.  </p>
@@ -8762,7 +8825,8 @@ a good client can immediately talk to a real Postfix SMTP server. </p>
 
 <p> Specify a non-zero time value (an integral value plus an optional
 one-letter suffix that specifies the time unit).  Time units: s
-(seconds), m (minutes), h (hours), d (days), w (weeks).  </p>
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is d (days).  </p>
 
 <p> This feature is available in Postfix 2.8. </p>
 
@@ -8778,10 +8842,9 @@ lookup results to arrive (default: up to 2 seconds under stress,
 up to 6 seconds otherwise).  <p>
 
 <p> Specify a non-zero time value (an integral value plus an optional
-one-letter suffix that specifies the time unit).  </p>
-
-<p> Time units: s (seconds), m (minutes), h (hours), d (days), w
-(weeks).  </p>
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 <p> This feature is available in Postfix 2.8. </p>
 
@@ -8811,7 +8874,7 @@ parameter.  Specify one of the following: </p>
 <dt> <b>ignore</b> </dt>
 
 <dd> Ignore the failure of this test. Allow other tests to complete.
-Do <i>not</i> repeat this test before some the result from some
+Do <i>not</i> repeat this test before the result from some
 other test expires.
 This option is useful for testing and collecting statistics
 without blocking mail permanently. </dd>
@@ -8859,7 +8922,8 @@ before it can talk to a real Postfix SMTP server. </p>
 
 <p> Specify a non-zero time value (an integral value plus an optional
 one-letter suffix that specifies the time unit).  Time units: s
-(seconds), m (minutes), h (hours), d (days), w (weeks).  </p>
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is d (days).  </p>
 
 <p> This feature is available in Postfix 2.8.  </p>
 
@@ -8879,7 +8943,7 @@ the server to respond.  Specify one of the following: </p>
 <dt> <b>ignore</b> </dt>
 
 <dd> Ignore the failure of this test. Allow other tests to complete.
-Do <i>not</i> repeat this test before some the result from some
+Do <i>not</i> repeat this test before the result from some
 other test expires.
 This option is useful for testing and collecting statistics
 without blocking mail permanently. </dd>
@@ -8926,7 +8990,8 @@ before it can talk to a real Postfix SMTP server. </p>
 
 <p> Specify a non-zero time value (an integral value plus an optional
 one-letter suffix that specifies the time unit).  Time units: s
-(seconds), m (minutes), h (hours), d (days), w (weeks).  </p>
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is d (days).  </p>
 
 <p> This feature is available in Postfix 2.8.  </p>
 
@@ -9047,7 +9112,8 @@ set under 10s.  </p>
 
 <p> Specify a non-zero time value (an integral value plus an optional
 one-letter suffix that specifies the time unit).  Time units: s
-(seconds), m (minutes), h (hours), d (days), w (weeks).  </p>
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 <p> This feature is available in Postfix 2.8.  </p>
 
@@ -9261,6 +9327,11 @@ The minimal delay between warnings that a specific destination is
 clogging up the Postfix <a href="QSHAPE_README.html#active_queue">active queue</a>. Specify 0 to disable.
 </p>
 
+<p> Specify a non-negative time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
+
 <p>
 This feature is enabled with the <a href="postconf.5.html#helpful_warnings">helpful_warnings</a> parameter.
 </p>
@@ -9279,10 +9350,10 @@ This feature is available in Postfix 2.0 and later.
 a request before it is terminated by a built-in watchdog timer.
 </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 <p> This feature is available in Postfix 2.8 and later.  </p>
 
@@ -9314,10 +9385,10 @@ over an internal communication channel.  The purpose is to break
 out of deadlock situations. If the time limit is exceeded the
 software either retries or aborts the operation. </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 <p> This feature is available in Postfix 2.8 and later.  </p>
 
@@ -9422,10 +9493,10 @@ reply to the remote QMQP client. The purpose is to slow down confused
 or malicious clients.
 </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-negative time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 
 </DD>
@@ -9439,10 +9510,10 @@ If a read or write operation blocks for more than $<a href="postconf.5.html#qmqp
 seconds the Postfix QMQP server gives up and disconnects.
 </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 
 </DD>
@@ -9510,10 +9581,10 @@ prior to Postfix 2.4 the default value was 1000s.
 <p> This parameter should be set less than or equal to
 $<a href="postconf.5.html#minimal_backoff_time">minimal_backoff_time</a>. See also $<a href="postconf.5.html#maximal_backoff_time">maximal_backoff_time</a>.  </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 
 </DD>
@@ -9755,7 +9826,7 @@ the <a href="postconf.5.html#recipient_delimiter">recipient_delimiter</a> set. T
 may then be used to generate an extended .forward file name. This
 implementation recognizes one delimiter character and one extension
 per email address localpart or email address. With Postfix 2.10 and
-earler, the <a href="postconf.5.html#recipient_delimiter">recipient_delimiter</a> specifies a single character. </p>
+earlier, the <a href="postconf.5.html#recipient_delimiter">recipient_delimiter</a> specifies a single character. </p>
 
 <p> See <a href="canonical.5.html">canonical(5)</a>, <a href="local.8.html">local(8)</a>, <a href="relocated.5.html">relocated(5)</a> and <a href="virtual.5.html">virtual(5)</a> for the
 effects of <a href="postconf.5.html#recipient_delimiter">recipient_delimiter</a> on lookups in aliases, canonical,
@@ -9965,7 +10036,7 @@ and then floods innocent people with undeliverable mail.  Technically,
 tables
 listed with $<a href="postconf.5.html#relay_recipient_maps">relay_recipient_maps</a> are used as lists: Postfix needs
 to know only if a lookup string is found or not, but it does not
-use the result from table lookup.  </p>
+use the result from the table lookup.  </p>
 
 <p>
 Specify zero or more "type:name" lookup tables, separated by
@@ -10576,10 +10647,10 @@ How long the Postfix <a href="master.8.html">master(8)</a> waits before forking
 appears to be malfunctioning.
 </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 
 </DD>
@@ -10911,10 +10982,10 @@ disable the time limit (i.e. use whatever timeout is implemented by
 the operating system).
 </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-negative time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 
 </DD>
@@ -11071,10 +11142,10 @@ When no response is received within the deadline, a warning is
 logged that the mail may be delivered multiple times.
 </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 
 </DD>
@@ -11550,10 +11621,10 @@ The Postfix SMTP client time limit for sending the HELO or EHLO command,
 and for receiving the initial remote SMTP server response.
 </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 
 </DD>
@@ -11625,10 +11696,10 @@ The Postfix SMTP client time limit for sending the MAIL FROM command,
 and for receiving the remote SMTP server response.
 </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 
 </DD>
@@ -11779,10 +11850,15 @@ How long the Postfix SMTP client pauses before sending
 </p>
 
 <p>
-Choosing a too short time makes this workaround ineffective when
+Choosing too short a time makes this workaround ineffective when
 sending large messages over slow network connections.
 </p>
 
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
+
 
 </DD>
 
@@ -11813,6 +11889,11 @@ turns on the PIX firewall "&lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;"
 bug workaround for delivery through firewalls with "smtp fixup"
 mode turned on.  </p>
 
+<p> Specify a non-negative time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
+
 <p>
 By default, the workaround is turned off for mail that is queued
 for less than 500 seconds. In other words, the workaround is normally
@@ -11864,10 +11945,10 @@ The Postfix SMTP client time limit for sending the QUIT command,
 and for receiving the remote SMTP server response.
 </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 
 </DD>
@@ -11925,10 +12006,10 @@ The Postfix SMTP client time limit for sending the SMTP RCPT TO
 command, and for receiving the remote SMTP server response.
 </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 
 </DD>
@@ -11995,6 +12076,11 @@ sends RSET in
 order to finish a recipient address probe, or to verify that a
 cached session is still usable.  </p>
 
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
+
 <p> This feature is available in Postfix 2.1 and later.  </p>
 
 
@@ -12009,7 +12095,7 @@ password. Each table (key, value) pair contains a server name, a
 username and password, and the full server response. This information
 is stored when a remote SMTP server rejects an authentication attempt
 with a 535 reply code.  As long as the <a href="postconf.5.html#smtp_sasl_password_maps">smtp_sasl_password_maps</a>
-information does no change, and as long as the <a href="postconf.5.html#smtp_sasl_auth_cache_name">smtp_sasl_auth_cache_name</a>
+information does not change, and as long as the <a href="postconf.5.html#smtp_sasl_auth_cache_name">smtp_sasl_auth_cache_name</a>
 information does not expire (see <a href="postconf.5.html#smtp_sasl_auth_cache_time">smtp_sasl_auth_cache_time</a>) the
 Postfix SMTP client avoids SASL authentication attempts with the
 same server, username and password, and instead bounces or defers
@@ -12047,6 +12133,11 @@ passwords, and requires that Postfix is compiled with TLS support.
 <p> The maximal age of an <a href="postconf.5.html#smtp_sasl_auth_cache_name">smtp_sasl_auth_cache_name</a> entry before it
 is removed. </p>
 
+<p> Specify a non-negative time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is d (days).  </p>
+
 <p> This feature is available in Postfix 2.5 and later. </p>
 
 
@@ -12376,6 +12467,11 @@ Do not wait for the response to the SMTP QUIT command.
 <p> Time limit for Postfix SMTP client write and read operations
 during TLS startup and shutdown handshake procedures. </p>
 
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
+
 <p> This feature is available in Postfix 2.2 and later.  </p>
 
 
@@ -12576,7 +12672,7 @@ key. </p>
 <p> The file or files must contain at most one key of each type.  If,
 for example, two or more RSA keys and corresponding chains are listed,
 depending on the version of OpenSSL either only the last one will be
-used or an configuration error may be detected.  Note that while
+used or a configuration error may be detected.  Note that while
 "Ed25519" and "Ed448" are considered separate algorithms, the various
 ECDSA curves (typically one of prime256v1, secp384r1 or secp521r1) are
 considered as different parameters of a single "ECDSA" algorithm, so it
@@ -12782,7 +12878,7 @@ With earlier Postfix versions the default setting was always "dane".
 compromise SMTP transport security by returning forged MX records,
 such attacks are "tamper-evident" since any forged MX hostnames
 will be recorded in the mail logs.  Attackers who place a high value
-staying hidden may be deterred from forging MX records. </p>
+on staying hidden may be deterred from forging MX records. </p>
 
 <p>
 This feature is available in Postfix 3.1 and later. The <b>may</b>
@@ -12886,7 +12982,7 @@ for MTA clients are not specified. </p>
 checking. This setting has no effect on sessions that are controlled
 via the <a href="postconf.5.html#smtp_tls_per_site">smtp_tls_per_site</a> table.  </p>
 
-<p> Disabling the hostname verification can make sense in closed
+<p> Disabling the hostname verification can make sense in closed
 environment where special CAs are created.  If not used carefully,
 this option opens the danger of a "man-in-the-middle" attack (the
 CommonName of this attacker will be logged). </p>
@@ -12919,7 +13015,7 @@ case only ciphers matching <b>all</b> the properties are excluded. </p>
 </pre>
 </blockquote>
 
-<p> The first setting, disables anonymous ciphers. The next setting
+<p> The first setting disables anonymous ciphers. The next setting
 disables ciphers that use the MD5 digest algorithm or the (single) DES
 encryption algorithm. The next setting disables ciphers that use MD5 and
 DES together.  The next setting disables the two ciphers "AES256-SHA"
@@ -13035,7 +13131,7 @@ $ openssl x509 -noout -fingerprint -<i>digest</i> -in <i>certfile</i>.pem
 </pre>
 </blockquote>
 
-<p> The text to the right of "=" sign is the desired fingerprint.
+<p> The text to the right of the "=" sign is the desired fingerprint.
 For example: </p>
 
 <blockquote>
@@ -13067,7 +13163,7 @@ $ openssl x509 -in cert.pem -noout -pubkey |
 </blockquote>
 
 <p> The Postfix SMTP server and client log the peer (leaf) certificate
-fingerprint and public key fingerprint when the TLS loglevel is 2 or
+fingerprint and the public key fingerprint when the TLS loglevel is 2 or
 higher. </p>
 
 <p> This feature is available in Postfix 2.5 and later. </p>
@@ -13137,10 +13233,10 @@ log trust-chain verification errors.  </dd>
 
 <dt> </dt> <dd> 2 Also log levels during TLS negotiation.  </dd>
 
-<dt> </dt> <dd> 3 Also log hexadecimal and ASCII dump of TLS negotiation
-process.  </dd>
+<dt> </dt> <dd> 3 Also log the hexadecimal and ASCII dump of the
+TLS negotiation process.  </dd>
 
-<dt> </dt> <dd> 4 Also log hexadecimal and ASCII dump of complete
+<dt> </dt> <dd> 4 Also log the hexadecimal and ASCII dump of complete
 transmission after STARTTLS. </dd>
 
 </dl>
@@ -13170,19 +13266,19 @@ on a per-destination basis. </p>
 <dt><b>export</b></dt>
 <dd> Enable "EXPORT" grade or better OpenSSL ciphers.  The underlying
 cipherlist is specified via the <a href="postconf.5.html#tls_export_cipherlist">tls_export_cipherlist</a> configuration
-parameter, which you are strongly encouraged to not change.  This
+parameter, which you are strongly encouraged not to change.  This
 choice is insecure and SHOULD NOT be used.  </dd>
 
 <dt><b>low</b></dt>
 <dd> Enable "LOW" grade or better OpenSSL ciphers.  The underlying
 cipherlist is specified via the <a href="postconf.5.html#tls_low_cipherlist">tls_low_cipherlist</a> configuration
-parameter, which you are strongly encouraged to not change.  This
+parameter, which you are strongly encouraged not to change.  This
 choice is insecure and SHOULD NOT be used.  </dd>
 
 <dt><b>medium</b></dt>
 <dd> Enable "MEDIUM" grade or better OpenSSL ciphers.
 The underlying cipherlist is specified via the <a href="postconf.5.html#tls_medium_cipherlist">tls_medium_cipherlist</a>
-configuration parameter, which you are strongly encouraged to not change.
+configuration parameter, which you are strongly encouraged not to change.
 </dd>
 
 <dt><b>high</b></dt>
@@ -13191,7 +13287,7 @@ be appropriate when all mandatory TLS destinations (e.g. when all
 mail is routed to a suitably capable <a href="postconf.5.html#relayhost">relayhost</a>) support at least one
 "HIGH" grade cipher. The underlying cipherlist is specified via the
 <a href="postconf.5.html#tls_high_cipherlist">tls_high_cipherlist</a> configuration parameter, which you are strongly
-encouraged to not change. </dd>
+encouraged not to change. </dd>
 
 <dt><b>null</b></dt>
 <dd> Enable only the "NULL" OpenSSL ciphers, these provide authentication
@@ -13200,7 +13296,7 @@ that all servers are prepared to use NULL ciphers (not normally enabled
 in TLS servers). A plausible use-case is an LMTP server listening on a
 UNIX-domain socket that is configured to support "NULL" ciphers. The
 underlying cipherlist is specified via the <a href="postconf.5.html#tls_null_cipherlist">tls_null_cipherlist</a>
-configuration parameter, which you are strongly encouraged to not
+configuration parameter, which you are strongly encouraged not to
 change. </dd>
 
 </dl>
@@ -13287,7 +13383,7 @@ yet support a symbolic name for that protocol version. </p>
 <p> With Postfix &lt; 3.6 there is no support for a minimum or maximum
 version, and the protocol range is configured via protocol exclusions.
 To require at least TLS 1.0, set "<a href="postconf.5.html#smtp_tls_mandatory_protocols">smtp_tls_mandatory_protocols</a> = !SSLv2,
-!SSLv3". Listing the protocols to include, rather than protocols to
+!SSLv3". Listing the protocols to include, rather than the protocols to
 exclude, is supported, but not recommended.  The exclusion syntax more
 accurately matches the underlying OpenSSL interface.  </p>
 
@@ -13302,7 +13398,7 @@ disables all versions above that higher version.  Thus, for example: </p>
 </pre>
 </blockquote>
 
-<p> also disables any protocols version higher than TLSv1.1 leaving
+<p> also disables any protocol versions higher than TLSv1.1 leaving
 only "TLSv1" enabled.  </p>
 
 <p> Support for "TLSv1.3" was introduced in OpenSSL 1.1.1.  Disabling
@@ -13311,7 +13407,7 @@ releases &ge; 3.0.14, 3.1.10, 3.2.7 and 3.3.2).  </p>
 
 <p> While the vast majority of SMTP servers with DANE TLSA records now
 support at least TLS 1.2, a few still only support TLS 1.0.  If you use
-"dane" or "dane-only" it is best to not disable TLSv1, except perhaps
+"dane" or "dane-only" it is best not to disable TLSv1, except perhaps
 via the policy table for destinations which you are sure will support
 "TLSv1.2".  </p>
 
@@ -13354,8 +13450,8 @@ postfix/smtp[pid]:  Host offered STARTTLS: [name.of.host]
 <p> Optional lookup tables with the Postfix SMTP client TLS usage
 policy by next-hop destination and by remote SMTP server hostname.
 When both lookups succeed, the more specific per-site policy (NONE,
-MUST, etc) overrides the less specific one (MAY), and the more secure
-per-site policy (MUST, etc) overrides the less secure one (NONE).
+MUST, etc.) overrides the less specific one (MAY), and the more secure
+per-site policy (MUST, etc.) overrides the less secure one (NONE).
 With Postfix 2.3 and later <a href="postconf.5.html#smtp_tls_per_site">smtp_tls_per_site</a> is strongly discouraged:
 use <a href="postconf.5.html#smtp_tls_policy_maps">smtp_tls_policy_maps</a> instead. </p>
 
@@ -13379,7 +13475,7 @@ lookup key, and overrides the global <a href="postconf.5.html#smtp_use_tls">smtp
 and <a href="postconf.5.html#smtp_tls_enforce_peername">smtp_tls_enforce_peername</a> settings. </dd>
 
 <dt> MAY </dt> <dd> Try to use TLS if the server announces support,
-otherwise use the unencrypted connection. This has less precedence
+otherwise use an unencrypted connection. This has less precedence
 than a more specific result (including <b>NONE</b>) from the alternate
 host or next-hop lookup key, and has less precedence than the more
 specific global "<a href="postconf.5.html#smtp_enforce_tls">smtp_enforce_tls</a> = yes" or "<a href="postconf.5.html#smtp_tls_enforce_peername">smtp_tls_enforce_peername</a>
@@ -13397,7 +13493,7 @@ or next-hop lookup key, and overrides the global <a href="postconf.5.html#smtp_u
 SMTP server hostname matches the information in the remote SMTP
 server certificate, and require that the remote SMTP server certificate
 was issued by a trusted CA. This overrides a less secure <b>NONE</b>
-and <b>MUST_NOPEERMATCH</b> or a less specific <b>MAY</b> lookup
+or <b>MUST_NOPEERMATCH</b> or a less specific <b>MAY</b> lookup
 result from the alternate host or next-hop lookup key, and overrides
 the global <a href="postconf.5.html#smtp_use_tls">smtp_use_tls</a>, <a href="postconf.5.html#smtp_enforce_tls">smtp_enforce_tls</a> and <a href="postconf.5.html#smtp_tls_enforce_peername">smtp_tls_enforce_peername</a>
 settings.  </dd>
@@ -13480,7 +13576,9 @@ attributes (available for opportunistic TLS with Postfix &ge; 2.6)
 and "connection_reuse" attribute (Postfix &ge; 3.4) override the
 "<a href="postconf.5.html#smtp_tls_ciphers">smtp_tls_ciphers</a>", "<a href="postconf.5.html#smtp_tls_exclude_ciphers">smtp_tls_exclude_ciphers</a>", "<a href="postconf.5.html#smtp_tls_protocols">smtp_tls_protocols</a>",
 and
-"<a href="postconf.5.html#smtp_tls_connection_reuse">smtp_tls_connection_reuse</a>" configuration parameters. When opportunistic
+"<a href="postconf.5.html#smtp_tls_connection_reuse">smtp_tls_connection_reuse</a>" configuration parameters. In the policy table,
+multiple ciphers, protocols or excluded ciphers must be separated by colons,
+as attribute values may not contain whitespace or commas. When opportunistic
 TLS handshakes fail, Postfix retries the connection with TLS disabled.
 This allows mail delivery to sites with non-interoperable TLS
 implementations.</dd>
@@ -13494,7 +13592,7 @@ optional "exclude" attribute (Postfix &ge; 2.6) overrides the <a href="postconf.
 <a href="postconf.5.html#smtp_tls_mandatory_exclude_ciphers">smtp_tls_mandatory_exclude_ciphers</a> parameter, and the optional
 "connection_reuse" attribute (Postfix &ge; 3.4) overrides the
 <a href="postconf.5.html">main.cf</a> <a href="postconf.5.html#smtp_tls_connection_reuse">smtp_tls_connection_reuse</a> parameter. In the policy table,
-multiple protocols or excluded ciphers must be separated by colons,
+multiple ciphers, protocols or excluded ciphers must be separated by colons,
 as attribute values may not contain whitespace or commas. </dd>
 
 <dt><b><a href="TLS_README.html#client_tls_dane">dane</a></b></dt>
@@ -13509,6 +13607,16 @@ server certificate must match the TLSA records.  <a href="https://tools.ietf.org
 TLS authentication and DNSSEC support is available with Postfix
 2.11 and later. The optional "connection_reuse" attribute (Postfix
 &ge; 3.4) overrides the <a href="postconf.5.html">main.cf</a> <a href="postconf.5.html#smtp_tls_connection_reuse">smtp_tls_connection_reuse</a> parameter.
+When the effective security level used is <a
+href="TLS_README.html#client_tls_may">may</a>, the optional "ciphers",
+"exclude", and "protocols" attributes (Postfix &ge; 2.6) override the
+"<a href="postconf.5.html#smtp_tls_ciphers">smtp_tls_ciphers</a>", "<a href="postconf.5.html#smtp_tls_exclude_ciphers">smtp_tls_exclude_ciphers</a>", and "<a href="postconf.5.html#smtp_tls_protocols">smtp_tls_protocols</a>"
+configuration parameters.
+When the effective security level used is <a
+href="TLS_README.html#client_tls_encrypt">encrypt</a>, the optional "ciphers",
+"exclude", and "protocols" attributes (Postfix &ge; 2.6) override the
+"<a href="postconf.5.html#smtp_tls_mandatory_ciphers">smtp_tls_mandatory_ciphers</a>", "<a href="postconf.5.html#smtp_tls_mandatory_exclude_ciphers">smtp_tls_mandatory_exclude_ciphers</a>", and
+"<a href="postconf.5.html#smtp_tls_mandatory_protocols">smtp_tls_mandatory_protocols</a>" configuration parameters.
 </dd>
 
 <dt><b><a href="TLS_README.html#client_tls_dane">dane-only</a></b></dt>
@@ -13518,8 +13626,11 @@ or none are usable, no connection is made to the server.  When
 usable TLSA records are obtained for the remote SMTP server, the
 server certificate must match the TLSA records.  <a href="https://tools.ietf.org/html/rfc7672">RFC 7672</a> (DANE) TLS
 authentication and DNSSEC support is available with Postfix 2.11
-and later. The optional "connection_reuse" attribute (Postfix &ge;
-3.4) overrides the <a href="postconf.5.html">main.cf</a> <a href="postconf.5.html#smtp_tls_connection_reuse">smtp_tls_connection_reuse</a> parameter.
+and later. The optional "ciphers", "exclude", and "protocols" attributes
+(Postfix &ge; 2.6) override the "<a href="postconf.5.html#smtp_tls_mandatory_ciphers">smtp_tls_mandatory_ciphers</a>",
+"<a href="postconf.5.html#smtp_tls_mandatory_exclude_ciphers">smtp_tls_mandatory_exclude_ciphers</a>", and "<a href="postconf.5.html#smtp_tls_mandatory_protocols">smtp_tls_mandatory_protocols</a>"
+configuration parameters. The optional "connection_reuse" attribute
+(Postfix &ge; 3.4) overrides the <a href="postconf.5.html">main.cf</a> <a href="postconf.5.html#smtp_tls_connection_reuse">smtp_tls_connection_reuse</a> parameter.
 </dd>
 
 <dt><b><a href="TLS_README.html#client_tls_fprint">fingerprint</a></b></dt>
@@ -13527,7 +13638,7 @@ and later. The optional "connection_reuse" attribute (Postfix &ge;
 verification. Available with Postfix 2.5 and later. At this security
 level, there are no trusted Certification Authorities. The certificate
 trust chain, expiration date, ... are not checked. Instead,
-the optional <b>match</b> attribute, or else the <a href="postconf.5.html">main.cf</a>
+the optional "match" attribute, or else the <a href="postconf.5.html">main.cf</a>
 <b><a href="postconf.5.html#smtp_tls_fingerprint_cert_match">smtp_tls_fingerprint_cert_match</a></b> parameter, lists the certificate
 fingerprints or the public key fingerprint (Postfix 2.9 and later)
 of the valid server certificate. The digest
@@ -13536,8 +13647,12 @@ algorithm used to calculate the fingerprint is selected by the
 be combined with a "|" delimiter in a single match attribute, or multiple
 match attributes can be employed. The ":" character is not used as a
 delimiter as it occurs between each pair of fingerprint (hexadecimal)
-digits. The optional "connection_reuse" attribute (Postfix &ge; 3.4)
-overrides the <a href="postconf.5.html">main.cf</a> <a href="postconf.5.html#smtp_tls_connection_reuse">smtp_tls_connection_reuse</a> parameter. </dd>
+digits. The optional "ciphers", "exclude", and "protocols" attributes
+(Postfix &ge; 2.6) override the "<a href="postconf.5.html#smtp_tls_mandatory_ciphers">smtp_tls_mandatory_ciphers</a>",
+"<a href="postconf.5.html#smtp_tls_mandatory_exclude_ciphers">smtp_tls_mandatory_exclude_ciphers</a>", and "<a href="postconf.5.html#smtp_tls_mandatory_protocols">smtp_tls_mandatory_protocols</a>"
+configuration parameters. The optional "connection_reuse" attribute
+(Postfix &ge; 3.4) overrides the <a href="postconf.5.html">main.cf</a> <a href="postconf.5.html#smtp_tls_connection_reuse">smtp_tls_connection_reuse</a>
+parameter. </dd>
 
 <dt><b><a href="TLS_README.html#client_tls_verify">verify</a></b></dt>
 <dd>Mandatory TLS verification.  At this security
@@ -13547,8 +13662,11 @@ unauthenticated DNS MX lookups.  The optional "match" attribute overrides
 the <a href="postconf.5.html">main.cf</a> <a href="postconf.5.html#smtp_tls_verify_cert_match">smtp_tls_verify_cert_match</a> parameter. In the policy table,
 multiple match patterns and strategies must be separated by colons.
 In practice explicit control over matching is more common with the
-"secure" policy, described below. The optional "connection_reuse"
-attribute (Postfix &ge; 3.4) overrides the <a href="postconf.5.html">main.cf</a>
+"secure" policy, described below. The optional "ciphers", "exclude",
+and "protocols" attributes (Postfix &ge; 2.6) override the
+"<a href="postconf.5.html#smtp_tls_mandatory_ciphers">smtp_tls_mandatory_ciphers</a>", "<a href="postconf.5.html#smtp_tls_mandatory_exclude_ciphers">smtp_tls_mandatory_exclude_ciphers</a>", and
+"<a href="postconf.5.html#smtp_tls_mandatory_protocols">smtp_tls_mandatory_protocols</a>" configuration parameters. The optional
+"connection_reuse" attribute (Postfix &ge; 3.4) overrides the <a href="postconf.5.html">main.cf</a>
 <a href="postconf.5.html#smtp_tls_connection_reuse">smtp_tls_connection_reuse</a> parameter. </dd>
 
 <dt><b><a href="TLS_README.html#client_tls_secure">secure</a></b></dt>
@@ -13557,18 +13675,21 @@ MX lookups, though potentially used to determine the candidate next-hop
 gateway IP addresses, are <b>not</b> trusted to be secure enough for TLS
 peername verification. Instead, the default name verified in the server
 certificate is obtained directly from the next-hop, or is explicitly
-specified via the optional <b>match</b> attribute which overrides the
+specified via the optional "match" attribute which overrides the
 <a href="postconf.5.html">main.cf</a> <a href="postconf.5.html#smtp_tls_secure_cert_match">smtp_tls_secure_cert_match</a> parameter. In the policy table,
 multiple match patterns and strategies must be separated by colons.
 The match attribute is most useful when multiple domains are supported by
-common server, the policy entries for additional domains specify matching
+a common server: the policy entries for additional domains specify matching
 rules for the primary domain certificate. While transport table overrides
-routing the secondary domains to the primary nexthop also allow secure
+that route the secondary domains to the primary nexthop also allow secure
 verification, they risk delivery to the wrong destination when domains
 change hands or are re-assigned to new gateways. With the "match"
 attribute approach, routing is not perturbed, and mail is deferred if
-verification of a new MX host fails. The optional "connection_reuse"
-attribute (Postfix &ge; 3.4) overrides the <a href="postconf.5.html">main.cf</a>
+verification of a new MX host fails. The optional "ciphers", "exclude",
+and "protocols" attributes (Postfix &ge; 2.6) override the
+"<a href="postconf.5.html#smtp_tls_mandatory_ciphers">smtp_tls_mandatory_ciphers</a>", "<a href="postconf.5.html#smtp_tls_mandatory_exclude_ciphers">smtp_tls_mandatory_exclude_ciphers</a>", and
+"<a href="postconf.5.html#smtp_tls_mandatory_protocols">smtp_tls_mandatory_protocols</a>" configuration parameters. The optional
+"connection_reuse" attribute (Postfix &ge; 3.4) overrides the <a href="postconf.5.html">main.cf</a>
 <a href="postconf.5.html#smtp_tls_connection_reuse">smtp_tls_connection_reuse</a> parameter. </dd>
 
 </dl>
@@ -13603,10 +13724,10 @@ Example:
         match=51:e9:af:2e:1e:40:1f:...:64:0a:30:35:2d:09:16:31:5a:eb:82:76
 </pre>
 
-<p> <b>Note:</b> The <b>hostname</b> strategy if listed in a non-default
-setting of <a href="postconf.5.html#smtp_tls_secure_cert_match">smtp_tls_secure_cert_match</a> or in the <b>match</b> attribute
-in the policy table can render the <b>secure</b> level vulnerable to
-DNS forgery. Do not use the <b>hostname</b> strategy for secure-channel
+<p> <b>Note:</b> The "hostname" strategy if listed in a non-default
+setting of <a href="postconf.5.html#smtp_tls_secure_cert_match">smtp_tls_secure_cert_match</a> or in the "match" attribute
+in the policy table can render the "secure" level vulnerable to
+DNS forgery. Do not use the "hostname" strategy for secure-channel
 configurations in environments where DNS security is not assured. </p>
 
 <p> This feature is available in Postfix 2.3 and later. </p>
@@ -13633,7 +13754,7 @@ use the "!" exclusion syntax, also described below.  </p>
 acceptable protocols is to set the lowest acceptable TLS protocol
 version and/or the highest acceptable TLS protocol version.  To set the
 lower bound include an element of the form: "&gt;=<i>version</i>" where
-<i>version</i> is either one of the TLS protocol names listed above,
+<i>version</i> is either one of the TLS protocol names listed above,
 or a hexadecimal number corresponding to the desired TLS protocol
 version (0301 for TLS 1.0, 0302 for TLS 1.1, etc.).  For the upper
 bound, use "&lt;=<i>version</i>".  There must be no whitespace between
@@ -13766,10 +13887,12 @@ example.net     secure match=example.com:.example.com
 <DT><b><a name="smtp_tls_security_level">smtp_tls_security_level</a>
 (default: empty)</b></DT><DD>
 
-<p> The default SMTP TLS security level for the Postfix SMTP client;
-when a non-empty value is specified, this overrides the obsolete
-parameters <a href="postconf.5.html#smtp_use_tls">smtp_use_tls</a>, <a href="postconf.5.html#smtp_enforce_tls">smtp_enforce_tls</a>, and <a href="postconf.5.html#smtp_tls_enforce_peername">smtp_tls_enforce_peername</a>.
-</p>
+<p> The default SMTP TLS security level for the Postfix SMTP client.
+When a non-empty value is specified, this overrides the obsolete
+parameters <a href="postconf.5.html#smtp_use_tls">smtp_use_tls</a>, <a href="postconf.5.html#smtp_enforce_tls">smtp_enforce_tls</a>, and <a href="postconf.5.html#smtp_tls_enforce_peername">smtp_tls_enforce_peername</a>;
+when no value is specified for <a href="postconf.5.html#smtp_tls_enforce_peername">smtp_tls_enforce_peername</a> or the obsolete
+parameters, the default SMTP TLS security level is
+<a href="TLS_README.html#client_tls_none">none</a>. </p>
 
 <p> Specify one of the following security levels: </p>
 
@@ -13881,7 +14004,7 @@ Examples:
 <pre>
 # Opportunistic TLS.
 <a href="postconf.5.html#smtp_tls_security_level">smtp_tls_security_level</a> = may
-# Do not tweak opportunistic ciphers or protocol unless it is essential
+# Do not tweak opportunistic ciphers or protocols unless it is essential
 # to do so (if a security vulnerability is found in the SSL library that
 # can be mitigated by disabling a particular protocol or raising the
 # cipher grade).
@@ -13972,7 +14095,7 @@ concurrent access.  The file is created if it does not exist. The <a href="smtp.
 daemon does not use this parameter directly, rather the cache is
 implemented indirectly in the <a href="tlsmgr.8.html">tlsmgr(8)</a> daemon. This means that
 per-smtp-instance <a href="master.5.html">master.cf</a> overrides of this parameter are not effective.
-Note, that each of the cache databases supported by <a href="tlsmgr.8.html">tlsmgr(8)</a> daemon:
+Note that each of the cache databases supported by <a href="tlsmgr.8.html">tlsmgr(8)</a> daemon:
 $<a href="postconf.5.html#smtpd_tls_session_cache_database">smtpd_tls_session_cache_database</a>, $<a href="postconf.5.html#smtp_tls_session_cache_database">smtp_tls_session_cache_database</a>
 (and with Postfix 2.3 and later $<a href="postconf.5.html#lmtp_tls_session_cache_database">lmtp_tls_session_cache_database</a>), needs to
 be stored separately. It is not at this time possible to store multiple
@@ -14012,6 +14135,11 @@ are not possible. </p>
 &le; 0, session caching is disabled.  If set to a positive value
 less than 2 minutes, the minimum value of 2 minutes is used instead.  </p>
 
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
+
 <p> This feature is available in Postfix 2.2 and later.  </p>
 
 
@@ -14152,7 +14280,7 @@ example.com     verify  match=hostname:nexthop
 (default: no)</b></DT><DD>
 
 <p> Request that the Postfix SMTP client connects using the
-legacy SMTPS protocol instead of using the STARTTLS command. </p>
+SUBMISSIONS/SMTPS protocol instead of using the STARTTLS command. </p>
 
 <p> This mode requires "<a href="postconf.5.html#smtp_tls_security_level">smtp_tls_security_level</a> = encrypt" or
 stronger. </p>
@@ -14201,10 +14329,10 @@ The Postfix SMTP client time limit for sending the XFORWARD command,
 and for receiving the remote SMTP server response.
 </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 <p>
 This feature is available in Postfix 2.1 and later.
@@ -14363,7 +14491,7 @@ with the <a href="postconf.5.html#anvil_rate_time_unit">anvil_rate_time_unit</a>
 </p>
 
 <p>
-By default, there is no limit on the number AUTH commands that a
+By default, there is no limit on the number of AUTH commands that a
 client may send.
 </p>
 
@@ -14642,7 +14770,7 @@ client network address information.
 
 <dd> By default use the remote SMTP client certificate fingerprint
 or the public key
-fingerprint (Postfix 2.9 and later) as lookup key for the specified
+fingerprint (Postfix 2.9 and later) as the lookup key for the specified
 <a href="access.5.html">access(5)</a> database; with Postfix version 2.2, also require that the
 remote SMTP client certificate is verified successfully.
 The fingerprint digest algorithm is configurable via the
@@ -14739,7 +14867,7 @@ This feature is available in Postfix 2.7 and later.  </dd>
 
 <dt><b><a name="check_sasl_access">check_sasl_access</a> <i><a href="DATABASE_README.html">type:table</a></i></b></dt>
 
-<dd> Use the remote SMTP client SASL user name as lookup key for
+<dd> Use the remote SMTP client SASL user name as the lookup key for
 the specified <a href="access.5.html">access(5)</a> database. The lookup key has the form
 "username@domainname" when the <a href="postconf.5.html#smtpd_sasl_local_domain">smtpd_sasl_local_domain</a> parameter
 value is non-empty.  Unlike the <a href="postconf.5.html#check_client_access">check_client_access</a> feature,
@@ -14766,7 +14894,7 @@ authenticated via the <a href="https://tools.ietf.org/html/rfc4954">RFC 4954</a>
 
 <dd> Permit the request when the remote SMTP client certificate is
 verified successfully.  This option must be used only if a special
-CA issues the certificates and only this CA is listed as trusted
+CA issues the certificates and only this CA is listed as trusted
 CA. Otherwise, clients with a third-party certificate would also
 be allowed to relay.  Specify "<a href="postconf.5.html#tls_append_default_CA">tls_append_default_CA</a> = no" when the
 trusted CA is specified with <a href="postconf.5.html#smtpd_tls_CAfile">smtpd_tls_CAfile</a> or <a href="postconf.5.html#smtpd_tls_CApath">smtpd_tls_CApath</a>,
@@ -15099,7 +15227,7 @@ feature: </p>
 <pre>
     # Append XVERP to MAIL FROM commands to request VERP-style delivery.
     # See <a href="VERP_README.html">VERP_README</a> for more information on how to use Postfix VERP.
-    /^(MAIL FROM:\s*&lt;listname@example\.com&gt;.*)/   $1 XVERP
+    /^(MAIL\s+FROM:\s*&lt;listname@example\.com&gt;.*)/   $1 XVERP
 </pre>
 
 <pre>
@@ -15316,10 +15444,17 @@ a client has made more than $<a href="postconf.5.html#smtpd_soft_error_limit">sm
 fewer than $<a href="postconf.5.html#smtpd_hard_error_limit">smtpd_hard_error_limit</a> errors, without delivering mail.
 </p>
 
-<p>With Postfix version 2.0 and earlier: the SMTP server delay before
-sending a reject (4xx or 5xx) response, when the client has made
-fewer than $<a href="postconf.5.html#smtpd_soft_error_limit">smtpd_soft_error_limit</a> errors without delivering
-mail. </p>
+<p>With Postfix version 2.0 and earlier: the SMTP server delay
+before sending a reject (4xx or 5xx) response, when the client has
+made fewer than $<a href="postconf.5.html#smtpd_soft_error_limit">smtpd_soft_error_limit</a> errors without delivering
+mail. When the client has made $<a href="postconf.5.html#smtpd_soft_error_limit">smtpd_soft_error_limit</a> or more errors,
+delay all responses with the larger of (number of errors) seconds
+or $<a href="postconf.5.html#smtpd_error_sleep_time">smtpd_error_sleep_time</a>. </p>
+
+<p> Specify a non-negative time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 
 </DD>
@@ -15438,9 +15573,10 @@ Support for inline regular expressions was added in Postfix version
 <p>
 The maximal number of errors a remote SMTP client is allowed to
 make without delivering mail. The Postfix SMTP server disconnects
-when the limit is exceeded. Normally the default limit is 20, but
+when the limit is reached. Normally the default limit is 20, but
 it changes under overload to just 1. With Postfix 2.5 and earlier,
 the SMTP server always allows up to 20 errors by default.
+Valid values are greater than zero.
 
 </p>
 
@@ -15882,6 +16018,11 @@ The time after which an idle SMTPD policy service connection is
 closed.
 </p>
 
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
+
 <p>
 This feature is available in Postfix 2.1 and later.
 </p>
@@ -15897,6 +16038,11 @@ The time after which an active SMTPD policy service connection is
 closed.
 </p>
 
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
+
 <p>
 This feature is available in Postfix 2.1 and later.
 </p>
@@ -15943,6 +16089,11 @@ This feature is available in Postfix 3.0 and later.
 <p> The delay between attempts to resend a failed SMTPD policy
 service request. Specify a value greater than zero. </p>
 
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
+
 <p> This feature is available in Postfix 3.0 and later. </p>
 
 
@@ -15956,6 +16107,11 @@ The time limit for connecting to, writing to, or receiving from a
 delegated SMTPD policy server.
 </p>
 
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
+
 <p>
 This feature is available in Postfix 2.1 and later.
 </p>
@@ -16000,7 +16156,7 @@ supposed to give the result to another Postfix SMTP server process.
 <p> Specify "host:port" or "inet:host:port" for a TCP endpoint, or
 "unix:pathname" for a UNIX-domain endpoint. The host can be specified
 as an IP address or as a symbolic name; no MX lookups are done.
-When no "host" or "host:"  are specified, the local machine is
+When no "host" or "host:" is specified, the local machine is
 assumed.  Pathname interpretation is relative to the Postfix queue
 directory.  </p>
 
@@ -16055,10 +16211,10 @@ generic error message while more detailed information is logged to
 the maillog file.
 </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 <p>
 This feature is available in Postfix 2.1 and later.
@@ -16182,7 +16338,7 @@ feature is available in Postfix 2.1 and later.  </dd>
 
 <ul>
 
-<li> Postfix is mail forwarder: the resolved RCPT TO domain matches
+<li> Postfix is mail forwarder: the resolved RCPT TO domain matches
 $<a href="postconf.5.html#relay_domains">relay_domains</a> or a subdomain thereof, and the address contains no
 sender-specified routing (user@elsewhere@domain),
 
@@ -16195,7 +16351,7 @@ contains no sender-specified routing (user@elsewhere@domain).
 
 <dt><b><a name="permit_mx_backup">permit_mx_backup</a></b></dt>
 
-<dd>Permit the request when the local mail system is backup MX for
+<dd>Permit the request when the local mail system is backup MX for
 the RCPT TO domain, or when the domain is an authorized destination
 (see <a href="postconf.5.html#permit_auth_destination">permit_auth_destination</a> for definition).
 
@@ -16208,7 +16364,7 @@ sender-specified routing information (example: user@elsewhere@domain).
 access is not restricted with <a href="postconf.5.html#permit_mx_backup_networks">permit_mx_backup_networks</a>.
 
 <li> Safety: as of Postfix version 2.3, <a href="postconf.5.html#permit_mx_backup">permit_mx_backup</a> no longer
-accepts the address when the local mail system is primary MX for
+accepts the address when the local mail system is primary MX for
 the recipient domain.  Exception: <a href="postconf.5.html#permit_mx_backup">permit_mx_backup</a> accepts the address
 when it specifies an authorized destination (see <a href="postconf.5.html#permit_auth_destination">permit_auth_destination</a>
 for definition).
@@ -16248,7 +16404,7 @@ in Postfix version 2.0 and later.</dd>
 
 <ul>
 
-<li> Postfix is mail forwarder: the resolved RCPT TO domain matches
+<li> Postfix is mail forwarder: the resolved RCPT TO domain matches
 $<a href="postconf.5.html#relay_domains">relay_domains</a> or a subdomain thereof, and contains no sender-specified
 routing (user@elsewhere@domain),
 
@@ -16294,7 +16450,7 @@ Address verification information is managed by the <a href="verify.8.html">verif
 see the <a href="ADDRESS_VERIFICATION_README.html">ADDRESS_VERIFICATION_README</a> file for details.  <br> The
 <a href="postconf.5.html#unverified_recipient_reject_code">unverified_recipient_reject_code</a> parameter specifies the numerical
 response code when an address is known to bounce (default: 450,
-change into 550 when you are confident that it is safe to do so).
+change ito 550 when you are confident that it is safe to do so).
 <br>The <a href="postconf.5.html#unverified_recipient_defer_code">unverified_recipient_defer_code</a> parameter specifies the
 numerical response code when an address probe failed due to a
 temporary problem (default: 450). <br> The
@@ -16571,6 +16727,8 @@ By default, the Postfix SMTP server accepts:
 
 <li> Mail from clients whose IP address matches $<a href="postconf.5.html#mynetworks">mynetworks</a>, or:
 
+<li> Mail from clients who are SASL authenticated, or:
+
 <li> Mail to remote destinations that match $<a href="postconf.5.html#relay_domains">relay_domains</a>, except
 for addresses that contain sender-specified routing
 (user@elsewhere@domain), or:
@@ -16723,7 +16881,7 @@ $<a href="postconf.5.html#mynetworks">mynetworks</a> to prevent Postfix from off
 <p>
 Specify a list of network/netmask patterns, separated by commas
 and/or whitespace. The mask specifies the number of bits in the
-network part of a host address. You can also "/file/name" or
+network part of a host address. You can also specify "/file/name" or
 "<a href="DATABASE_README.html">type:table</a>" patterns.  A "/file/name" pattern is replaced by its
 contents; a "<a href="DATABASE_README.html">type:table</a>" lookup table is matched when a table entry
 matches a lookup string (the lookup result is ignored).  Continue
@@ -17106,7 +17264,7 @@ Postfix version 2.1 and later. </dd>
 
 <dt><b><a name="reject_unknown_sender_domain">reject_unknown_sender_domain</a></b></dt>
 
-<dd>Reject the request when Postfix is not final destination for
+<dd>Reject the request when Postfix is not the final destination for
 the sender address, and the MAIL FROM domain has 1) no DNS MX and
 no DNS A
 record, or 2) a malformed MX record such as a record with
@@ -17200,11 +17358,18 @@ responses.
 
 <ul>
 
-<li><p>With Postfix version 2.1 and later, the Postfix SMTP server
-delays all responses by $<a href="postconf.5.html#smtpd_error_sleep_time">smtpd_error_sleep_time</a> seconds. </p>
+<li><p>With Postfix version 2.1 and later, when the error count
+is &gt; $<a href="postconf.5.html#smtpd_soft_error_limit">smtpd_soft_error_limit</a>, the Postfix SMTP server
+delays all responses by $<a href="postconf.5.html#smtpd_error_sleep_time">smtpd_error_sleep_time</a>. </p>
+
+<li><p>With Postfix versions 2.0 and earlier, when the error count
+is &gt; $<a href="postconf.5.html#smtpd_soft_error_limit">smtpd_soft_error_limit</a>, the Postfix SMTP server delays all
+responses by the larger of (number of errors) seconds or
+$<a href="postconf.5.html#smtpd_error_sleep_time">smtpd_error_sleep_time</a>. </p>
 
-<li><p>With Postfix versions 2.0 and earlier, the Postfix SMTP
-server delays all responses by (number of errors) seconds. </p>
+<li><p>With Postfix versions 2.0 and earlier, when the error count
+is &le; $<a href="postconf.5.html#smtpd_soft_error_limit">smtpd_soft_error_limit</a>, the Postfix SMTP server delays 4XX
+and 5XX responses by $<a href="postconf.5.html#smtpd_error_sleep_time">smtpd_error_sleep_time</a>. </p>
 
 </ul>
 
@@ -17219,6 +17384,11 @@ during TLS startup and shutdown handshake procedures. The current
 default value is stress-dependent. Before Postfix version 2.8, it
 was fixed at 300s. </p>
 
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
+
 <p> This feature is available in Postfix 2.2 and later.  </p>
 
 
@@ -17247,10 +17417,10 @@ Note: if you set SMTP time limits to very large values you may have
 to update the global <a href="postconf.5.html#ipc_timeout">ipc_timeout</a> parameter.
 </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 
 </DD>
@@ -17521,7 +17691,7 @@ key. </p>
 <p> The file or files must contain at most one key of each type.  If,
 for example, two or more RSA keys and corresponding chains are listed,
 depending on the version of OpenSSL either only the last one will be
-used or an configuration error may be detected.  Note that while
+used or a configuration error may be detected.  Note that while
 "Ed25519" and "Ed448" are considered separate algorithms, the various
 ECDSA curves (typically one of prime256v1, secp384r1 or secp521r1) are
 considered as different parameters of a single "ECDSA" algorithm, so it
@@ -17758,7 +17928,7 @@ Postfix uses ciphers with forward secrecy.  </p>
 <a href="postconf.5.html#smtpd_tls_dh1024_param_file">smtpd_tls_dh1024_param_file</a> = /etc/postfix/dh2048.pem
 </pre>
 
-<p>This feature is available with Postfix version 2.2.</p>
+<p>This feature is available in Postfix 2.2 and later.</p>
 
 
 </DD>
@@ -17784,7 +17954,8 @@ configuration parameter.  </p>
 <a href="postconf.5.html#smtpd_tls_dh512_param_file">smtpd_tls_dh512_param_file</a> = /etc/postfix/dh_512.pem
 </pre>
 
-<p>This feature is available with Postfix version 2.2.</p>
+<p>This feature is available in Postfix 2.2 and later,
+but is ignored in Postfix 3.6 and later.</p>
 
 
 </DD>
@@ -18094,13 +18265,13 @@ one "medium" or "high" grade cipher. </p>
 <dt><b>export</b></dt>
 <dd> Enable "EXPORT" grade or stronger OpenSSL ciphers.  The
 underlying cipherlist is specified via the <a href="postconf.5.html#tls_export_cipherlist">tls_export_cipherlist</a>
-configuration parameter, which you are strongly encouraged to not
+configuration parameter, which you are strongly encouraged not to
 change.  This choice is insecure and SHOULD NOT be used.  </dd>
 
 <dt><b>low</b></dt>
 <dd> Enable "LOW" grade or stronger OpenSSL ciphers. The underlying
 cipherlist is specified via the <a href="postconf.5.html#tls_low_cipherlist">tls_low_cipherlist</a> configuration
-parameter, which you are strongly encouraged to not change.  This
+parameter, which you are strongly encouraged not to change.  This
 choice is insecure and SHOULD NOT be used.  </dd>
 
 <dt><b>medium</b></dt>
@@ -18108,7 +18279,7 @@ choice is insecure and SHOULD NOT be used.  </dd>
 or longer symmetric bulk-encryption keys. This is the default minimum
 strength for mandatory TLS encryption. The underlying cipherlist is
 specified via the <a href="postconf.5.html#tls_medium_cipherlist">tls_medium_cipherlist</a> configuration parameter, which
-you are strongly encouraged to not change. </dd>
+you are strongly encouraged not to change. </dd>
 
 <dt><b>high</b></dt>
 <dd> Enable only "HIGH" grade OpenSSL ciphers. The
@@ -18122,7 +18293,7 @@ without encryption.  This setting is only appropriate in the rare
 case that all clients are prepared to use NULL ciphers (not normally
 enabled in TLS clients). The underlying cipherlist is specified via the
 <a href="postconf.5.html#tls_null_cipherlist">tls_null_cipherlist</a> configuration parameter, which you are strongly
-encouraged to not change. </dd>
+encouraged not to change. </dd>
 
 </dl>
 
@@ -18386,7 +18557,7 @@ concurrent access.  The file is created if it does not exist. The <a href="smtpd
 daemon does not use this parameter directly, rather the cache is
 implemented indirectly in the <a href="tlsmgr.8.html">tlsmgr(8)</a> daemon. This means that
 per-smtpd-instance <a href="master.5.html">master.cf</a> overrides of this parameter are not
-effective. Note, that each of the cache databases supported by <a href="tlsmgr.8.html">tlsmgr(8)</a>
+effective. Note that each of the cache databases supported by <a href="tlsmgr.8.html">tlsmgr(8)</a>
 daemon: $<a href="postconf.5.html#smtpd_tls_session_cache_database">smtpd_tls_session_cache_database</a>, $<a href="postconf.5.html#smtp_tls_session_cache_database">smtp_tls_session_cache_database</a>
 (and with Postfix 2.3 and later $<a href="postconf.5.html#lmtp_tls_session_cache_database">lmtp_tls_session_cache_database</a>), needs to be
 stored separately. It is not at this time possible to store multiple
@@ -18437,6 +18608,11 @@ value of 2 minutes is used instead.  TLS session tickets require
 an OpenSSL library (at least version 0.9.8h) that provides full
 support for this TLS extension. </p>
 
+<p> Specify a non-negative time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
+
 <p> This feature is available in Postfix 2.2 and later, and updated
 for TLS session ticket support in Postfix 2.11. </p>
 
@@ -18446,13 +18622,13 @@ for TLS session ticket support in Postfix 2.11. </p>
 <DT><b><a name="smtpd_tls_wrappermode">smtpd_tls_wrappermode</a>
 (default: no)</b></DT><DD>
 
-<p> Run the Postfix SMTP server in the non-standard "wrapper" mode,
+<p> Run the Postfix SMTP server in TLS "wrapper" mode,
 instead of using the STARTTLS command. </p>
 
 <p> If you want to support this service, enable a special port in
 <a href="master.5.html">master.cf</a>, and specify "-o <a href="postconf.5.html#smtpd_tls_wrappermode">smtpd_tls_wrappermode</a>=yes" on the SMTP
-server's command line. Port 465 (smtps) was once chosen for this
-purpose. </p>
+server's command line. Port 465 (submissions/smtps) is reserved for
+this purpose. </p>
 
 <p> This feature is available in Postfix 2.2 and later.  </p>
 
@@ -18483,6 +18659,11 @@ authentication in the proxy agent (Postfix 2.9 and later). <p>
 <p> The time limit for the proxy protocol specified with the
 <a href="postconf.5.html#smtpd_upstream_proxy_protocol">smtpd_upstream_proxy_protocol</a> parameter. </p>
 
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
+
 <p> This feature is available in Postfix 2.10 and later.  </p>
 
 
@@ -18570,8 +18751,8 @@ mail. </dd>
 (default: yes)</b></DT><DD>
 
 <p> Enable preliminary SMTPUTF8 support for the protocols described
-in <a href="https://tools.ietf.org/html/rfc6531">RFC 6531</a>..6533. This requires that Postfix is built to support
-these protocols. </p>
+in <a href="https://tools.ietf.org/html/rfc6531">RFC 6531</a>, <a href="https://tools.ietf.org/html/rfc6532">RFC 6532</a>, and <a href="https://tools.ietf.org/html/rfc6533">RFC 6533</a>. This requires that Postfix is
+built to support these protocols. </p>
 
 <p> This feature is available in Postfix 3.0 and later. </p>
 
@@ -18616,10 +18797,10 @@ The time after which a stale exclusive mailbox lockfile is removed.
 This is used for delivery to file or mailbox.
 </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 
 </DD>
@@ -18959,7 +19140,7 @@ ignored with a warning. </p>
 
 <p> Note: It is unwise to omit sha256 from the digest list.  This
 digest algorithm is the only mandatory to implement digest algorithm
-in <a href="https://tools.ietf.org/html/rfc6698">RFC 6698</a>, and many servers are expected publish TLSA records
+in <a href="https://tools.ietf.org/html/rfc6698">RFC 6698</a>, and many servers are expected to publish TLSA records
 with just sha256 digests.  Unless one of the standard digests is
 seriously compromised and servers have had ample time to update their
 TLSA records you should not omit any standard digests, just arrange
@@ -19077,7 +19258,7 @@ be using 0.9.6! </dd>
 SMTP client and server.  These curves are used by the Postfix SMTP
 server when "<a href="postconf.5.html#smtpd_tls_eecdh_grade">smtpd_tls_eecdh_grade</a> = auto".  The selected curves
 must be implemented by OpenSSL and be standardized for use in TLS
-(<a href="https://tools.ietf.org/html/rfc4492">RFC 4492</a> or its imminent successor).  It is unwise to list only
+(<a href="https://tools.ietf.org/html/rfc8422">RFC 8422</a>).  It is unwise to list only
 "bleeding-edge" curves supported by a small subset of clients.  The
 default list is suitable for most users. </p>
 
@@ -19107,10 +19288,10 @@ server when "<a href="postconf.5.html#smtpd_tls_eecdh_grade">smtpd_tls_eecdh_gra
 strong" means approximately 128-bit security based on best known
 attacks. The selected curve must be implemented by OpenSSL (as
 reported by ecparam(1) with the "-list_curves" option) and be one
-of the curves listed in Section 5.1.1 of <a href="https://tools.ietf.org/html/rfc4492">RFC 4492</a>. You should not
+of the curves listed in Section 5.1.1 of <a href="https://tools.ietf.org/html/rfc8422">RFC 8422</a>. You should not
 generally change this setting.  Remote SMTP client implementations
 must support this curve for EECDH key exchange to take place.  It
-is unwise to choose an "bleeding-edge" curve supported by only a
+is unwise to choose only "bleeding-edge" curves supported by only a
 small subset of clients.  </p>
 
 <p> The default "strong" curve is rated in NSA <a
@@ -19152,7 +19333,10 @@ This additional strength comes at a significant computational cost, most
 users should instead set "<a href="postconf.5.html#smtpd_tls_eecdh_grade">smtpd_tls_eecdh_grade</a> = strong".  The selected
 curve must be implemented by OpenSSL (as reported by ecparam(1) with the
 "-list_curves" option) and be one of the curves listed in Section 5.1.1
-of <a href="https://tools.ietf.org/html/rfc4492">RFC 4492</a>. You should not generally change this setting. </p>
+of <a href="https://tools.ietf.org/html/rfc8422">RFC 8422</a>. You should not generally change this setting.  Remote SMTP
+client implementations must support this curve for EECDH key exchange
+to take place.  It is unwise to choose only "bleeding-edge" curves
+supported by only a small subset of clients. </p>
 
 <p> This default "ultra" curve is rated in NSA <a
 href="https://web.archive.org/web/20160330034144/https://www.nsa.gov/ia/programs/suiteb_cryptography/">Suite
@@ -19185,7 +19369,7 @@ defines the meaning of the "export" setting in <a href="postconf.5.html#smtpd_tl
 releases before the middle of 2015 this is the default cipherlist
 for the opportunistic ("may") TLS client security level and also
 the default cipherlist for the SMTP server. You are strongly
-encouraged to not change this setting.  </p>
+encouraged not to change this setting.  </p>
 
 <p> This feature is available in Postfix 2.3 and later. </p>
 
@@ -19211,7 +19395,7 @@ later. </p>
 the meaning of the "high" setting in <a href="postconf.5.html#smtpd_tls_ciphers">smtpd_tls_ciphers</a>,
 <a href="postconf.5.html#smtpd_tls_mandatory_ciphers">smtpd_tls_mandatory_ciphers</a>, <a href="postconf.5.html#smtp_tls_ciphers">smtp_tls_ciphers</a>, <a href="postconf.5.html#smtp_tls_mandatory_ciphers">smtp_tls_mandatory_ciphers</a>,
 <a href="postconf.5.html#lmtp_tls_ciphers">lmtp_tls_ciphers</a>, and <a href="postconf.5.html#lmtp_tls_mandatory_ciphers">lmtp_tls_mandatory_ciphers</a>. You are strongly
-encouraged to not change this setting.  </p>
+encouraged not to change this setting.  </p>
 
 <p> This feature is available in Postfix 2.3 and later. </p>
 
@@ -19226,7 +19410,7 @@ encouraged to not change this setting.  </p>
 an incorrect algorithm. This parameter has no effect on the certificate
 fingerprint support that is available since Postfix 2.2. </p>
 
-<p> Specify "<a href="postconf.5.html#tls_legacy_public_key_fingerprint">tls_legacy_public_key_fingerprints</a> = yes" temporarily,
+<p> Specify "<a href="postconf.5.html#tls_legacy_public_key_fingerprints">tls_legacy_public_key_fingerprints</a> = yes" temporarily,
 pending a migration from configuration files with incorrect Postfix
 2.9.0..2.9.5 certificate public-key finger prints, to the correct
 fingerprints used by Postfix 2.9.6 and later.  To compute the correct
@@ -19244,7 +19428,7 @@ certificate public-key fingerprints, see <a href="TLS_README.html">TLS_README</a
 the meaning of the "low" setting in <a href="postconf.5.html#smtpd_tls_ciphers">smtpd_tls_ciphers</a>,
 <a href="postconf.5.html#smtpd_tls_mandatory_ciphers">smtpd_tls_mandatory_ciphers</a>, <a href="postconf.5.html#smtp_tls_ciphers">smtp_tls_ciphers</a>, <a href="postconf.5.html#smtp_tls_mandatory_ciphers">smtp_tls_mandatory_ciphers</a>,
 <a href="postconf.5.html#lmtp_tls_ciphers">lmtp_tls_ciphers</a>, and <a href="postconf.5.html#lmtp_tls_mandatory_ciphers">lmtp_tls_mandatory_ciphers</a>. You are strongly
-encouraged to not change this setting.  </p>
+encouraged not to change this setting.  </p>
 
 <p> This feature is available in Postfix 2.3 and later. </p>
 
@@ -19261,8 +19445,8 @@ defines the meaning of the "medium" setting in <a href="postconf.5.html#smtpd_tl
 default cipherlist for mandatory TLS encryption in the TLS client
 (with anonymous ciphers disabled when verifying server certificates).
 This is the default cipherlist for opportunistic TLS with Postfix
-releases after the middle of 2015.  You are strongly encouraged to
-not change this setting.  </p>
+releases after the middle of 2015.  You are strongly encouraged not
+to change this setting.  </p>
 
 <p> This feature is available in Postfix 2.3 and later. </p>
 
@@ -19274,8 +19458,8 @@ not change this setting.  </p>
 
 <p> The OpenSSL cipherlist for "NULL" grade ciphers that provide
 authentication without encryption. This defines the meaning of the "null"
-setting in smtpd_mandatory_tls_ciphers, <a href="postconf.5.html#smtp_tls_mandatory_ciphers">smtp_tls_mandatory_ciphers</a> and
-<a href="postconf.5.html#lmtp_tls_mandatory_ciphers">lmtp_tls_mandatory_ciphers</a>.  You are strongly encouraged to not
+setting in <a href="postconf.5.html#smtpd_tls_mandatory_ciphers">smtpd_tls_mandatory_ciphers</a>, <a href="postconf.5.html#smtp_tls_mandatory_ciphers">smtp_tls_mandatory_ciphers</a> and
+<a href="postconf.5.html#lmtp_tls_mandatory_ciphers">lmtp_tls_mandatory_ciphers</a>.  You are strongly encouraged not to
 change this setting. </p>
 
 <p> This feature is available in Postfix 2.3 and later. </p>
@@ -19353,6 +19537,11 @@ warning is logged. </p>
 the pseudo random number generator (PRNG) to the file specified
 with $<a href="postconf.5.html#tls_random_exchange_name">tls_random_exchange_name</a>.  </p>
 
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
+
 <p> This feature is available in Postfix 2.2 and later.  </p>
 
 
@@ -19366,6 +19555,11 @@ in-memory pseudo random number generator (PRNG) pool from external
 sources.  The actual time between re-seeding attempts is calculated
 using the PRNG, and is between 0 and the time specified.  </p>
 
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
+
 <p> This feature is available in Postfix 2.2 and later.  </p>
 
 
@@ -19381,7 +19575,7 @@ type must be prepended:  egd:/path/to/egd_socket for a source with
 EGD compatible socket interface, or dev:/path/to/device for a
 device file.  </p>
 
-<p> Note: on OpenBSD systems specify /dev/arandom when /dev/urandom
+<p> Note: on OpenBSD systems specify dev:/dev/arandom when dev:/dev/urandom
 gives timeout errors.  </p>
 
 <p> This feature is available in Postfix 2.2 and later.  </p>
@@ -19400,7 +19594,7 @@ server mode of <a href="tlsproxy.8.html">tlsproxy(8)</a>. </p>
 
 <p> When this parameter is non-empty, the Postfix SMTP server enables
 SNI extension processing, and logs SNI values that are invalid or
-don't match an entry in the the specified tables.  When an entry
+don't match an entry in the specified tables.  When an entry
 does match, the SNI name is logged as part of the connection summary
 at log levels 1 and higher.  </p>
 
@@ -19752,7 +19946,8 @@ to configure tlsproxy client keys and certificates is via the
 (default: $<a href="postconf.5.html#smtp_enforce_tls">smtp_enforce_tls</a>)</b></DT><DD>
 
 <p> Enforcement mode: require that SMTP servers use TLS encryption.
-See <a href="postconf.5.html#smtp_enforce_tls">smtp_enforce_tls</a> for further details. </p>
+See <a href="postconf.5.html#smtp_enforce_tls">smtp_enforce_tls</a> for further details. Use
+<a href="postconf.5.html#tlsproxy_client_security_level">tlsproxy_client_security_level</a> instead. </p>
 
 <p> This feature is available in Postfix 3.4 and later. </p>
 
@@ -19856,7 +20051,8 @@ client. See <a href="postconf.5.html#smtp_tls_security_level">smtp_tls_security_
 (default: $<a href="postconf.5.html#smtp_use_tls">smtp_use_tls</a>)</b></DT><DD>
 
 <p> Opportunistic mode: use TLS when a remote server announces TLS
-support. See <a href="postconf.5.html#smtp_use_tls">smtp_use_tls</a> for further details. </p>
+support. See <a href="postconf.5.html#smtp_use_tls">smtp_use_tls</a> for further details. Use
+<a href="postconf.5.html#tlsproxy_client_security_level">tlsproxy_client_security_level</a> instead. </p>
 
 <p> This feature is available in Postfix 3.4 and later. </p>
 
@@ -19868,7 +20064,7 @@ support. See <a href="postconf.5.html#smtp_use_tls">smtp_use_tls</a> for further
 
 <p> Mandatory TLS: announce STARTTLS support to remote SMTP clients, and
 require that clients use TLS encryption. See <a href="postconf.5.html#smtpd_enforce_tls">smtpd_enforce_tls</a> for
-further details. </p>
+further details. Use <a href="postconf.5.html#tlsproxy_tls_security_level">tlsproxy_tls_security_level</a> instead. </p>
 
 <p> This feature is available in Postfix 2.8 and later. </p>
 
@@ -20224,7 +20420,7 @@ shared by all three services, namely <a href="postconf.5.html#smtpd_tls_session_
 
 <p> Opportunistic TLS: announce STARTTLS support to remote SMTP clients,
 but do not require that clients use TLS encryption. See <a href="postconf.5.html#smtpd_use_tls">smtpd_use_tls</a>
-for further details. </p>
+for further details. Use <a href="postconf.5.html#tlsproxy_tls_security_level">tlsproxy_tls_security_level</a> instead. </p>
 
 <p> This feature is available in Postfix 2.8 and later. </p>
 
@@ -20243,7 +20439,8 @@ cannot be set under 10s.  </p>
 
 <p> Specify a non-zero time value (an integral value plus an optional
 one-letter suffix that specifies the time unit).  Time units: s
-(seconds), m (minutes), h (hours), d (days), w (weeks).  </p>
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 <p> This feature is available in Postfix 2.8 and later  </p>
 
@@ -20574,10 +20771,10 @@ The time between attempts by the Postfix queue manager to contact
 a malfunctioning message delivery transport.
 </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 
 </DD>
@@ -20589,6 +20786,11 @@ The default time unit is s (seconds).
 value, where <i>transport</i> is the <a href="master.5.html">master.cf</a> name of the message
 delivery transport. </p>
 
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
+
 <p> Note: <a href="postconf.5.html#transport_time_limit"><i>transport</i>_time_limit</a> parameters will not show up
 in "postconf" command output before Postfix version 2.9.  This
 limitation applies to many parameters whose name is a combination
@@ -20605,6 +20807,17 @@ of a <a href="master.5.html">master.cf</a> service name and a built-in suffix (i
 parameter value, where the initial <i>transport</i> in the parameter
 name is the <a href="master.5.html">master.cf</a> name of the message delivery transport. </p>
 
+<p> Specify a non-negative time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
+
+<p> Note: <a href="postconf.5.html#transport_transport_rate_delay"><i>transport</i>_transport_rate_delay</a> parameters will
+not show up in "postconf" command output before Postfix version
+2.9.  This limitation applies to many parameters whose name is a
+combination of a <a href="master.5.html">master.cf</a> service name and a built-in suffix (in
+this case: "_transport_rate_delay").  </p>
+
 
 </DD>
 
@@ -20618,10 +20831,10 @@ programs from getting stuck when the mail system is under heavy
 load.
 </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 
 </DD>
@@ -21005,7 +21218,7 @@ This feature is available in Postfix 3.0 and later.
 <DT><b><a name="virtual_alias_domains">virtual_alias_domains</a>
 (default: $<a href="postconf.5.html#virtual_alias_maps">virtual_alias_maps</a>)</b></DT><DD>
 
-<p> Postfix is final destination for the specified list of virtual
+<p> Postfix is the final destination for the specified list of virtual
 alias domains, that is, domains for which all addresses are aliased
 to addresses in other local or remote domains. The SMTP server
 validates recipient addresses with $<a href="postconf.5.html#virtual_alias_maps">virtual_alias_maps</a> and rejects
@@ -21029,7 +21242,7 @@ domain names).
 <p> Specify a list of host or domain names, "/file/name" or
 "<a href="DATABASE_README.html">type:table</a>" patterns, separated by commas and/or whitespace. A
 "/file/name" pattern is replaced by its contents; a "<a href="DATABASE_README.html">type:table</a>"
-lookup table is matched when a table entry matches a lookup string
+lookup table is matched when a table entry matches a host or domain name
 (the lookup result is ignored).  Continue long lines by starting
 the next line with whitespace. Specify "!pattern" to exclude a host
 or domain name from the list. The form "!/file/name" is supported
@@ -21071,7 +21284,7 @@ This feature is available in Postfix 2.1 and later.
 
 <p>
 Optional lookup tables that alias specific mail addresses or domains
-to other local or remote address.  The table format and lookups
+to other local or remote addresses.  The table format and lookups
 are documented in <a href="virtual.5.html">virtual(5)</a>. For an overview of Postfix address
 manipulations see the <a href="ADDRESS_REWRITING_README.html">ADDRESS_REWRITING_README</a> document.
 </p>
@@ -21237,7 +21450,7 @@ Example:
 <DT><b><a name="virtual_mailbox_domains">virtual_mailbox_domains</a>
 (default: $<a href="postconf.5.html#virtual_mailbox_maps">virtual_mailbox_maps</a>)</b></DT><DD>
 
-<p> Postfix is final destination for the specified list of domains;
+<p> Postfix is the final destination for the specified list of domains;
 mail is delivered via the $<a href="postconf.5.html#virtual_transport">virtual_transport</a> mail delivery transport.
 By default this is the Postfix <a href="virtual.8.html">virtual(8)</a> delivery agent.  The SMTP
 server validates recipient addresses with $<a href="postconf.5.html#virtual_mailbox_maps">virtual_mailbox_maps</a>
@@ -21320,6 +21533,13 @@ match any user in the specified domain that does not have a specific
 "user@domain.tld" entry.
 </p>
 
+<p>
+With the default "<a href="postconf.5.html#virtual_mailbox_domains">virtual_mailbox_domains</a> = $<a href="postconf.5.html#virtual_mailbox_maps">virtual_mailbox_maps</a>",
+lookup tables also need entries with a left-hand side of "domain.tld"
+to satisfy virtual_mailbox_domain lookups (the right-hand side is
+required but will not be used).
+</p>
+
 <p> The remainder of this text is specific to the <a href="virtual.8.html">virtual(8)</a> delivery
 agent.  It does not apply when mail is delivered with a different
 mail delivery program.  </p>
index 54aa8595bcf90568368c59fde4b71dc67add5bc2..6f674e6d6594c76b0509eb5f400830fe35152170 100644 (file)
@@ -84,6 +84,8 @@ the following convention:  </p>
 
 <li> <a href="postconf.1.html">postconf(1)</a>, Postfix configuration utility 
 
+<li> <a href="postdrop.1.html">postdrop(1)</a>, Postfix mail posting utility 
+
 <li> <a href="postfix.1.html">postfix(1)</a>, Postfix control program 
 
 <li> <a href="postfix-tls.1.html">postfix-tls(1)</a>, Postfix TLS management 
index 4541c47db422914ae0275e0374d483432db422a9..d69e1ece693c5a9dc3cb5500a33ab9861cb739fa 100644 (file)
@@ -246,7 +246,7 @@ POSTFIX(1)                                                          POSTFIX(1)
        Other configuration parameters:
 
        <b><a href="postconf.5.html#import_environment">import_environment</a> (see 'postconf -d' output)</b>
-              The  list  of  environment  parameters that a privileged Postfix
+              The  list  of  environment  variables  that a privileged Postfix
               process will  import  from  a  non-Postfix  parent  process,  or
               name=value environment overrides.
 
@@ -322,6 +322,7 @@ POSTFIX(1)                                                          POSTFIX(1)
        <a href="postalias.1.html">postalias(1)</a>, create/update/query alias database
        <a href="postcat.1.html">postcat(1)</a>, examine Postfix queue file
        <a href="postconf.1.html">postconf(1)</a>, Postfix configuration utility
+       <a href="postdrop.1.html">postdrop(1)</a>, Postfix mail posting utility
        <a href="postfix.1.html">postfix(1)</a>, Postfix control program
        <a href="postfix-tls.1.html">postfix-tls(1)</a>, Postfix TLS management
        <a href="postkick.1.html">postkick(1)</a>, trigger Postfix daemon
index db9fa28b211501ff94653367b318aaa52f9a5faa..aa5377b217640b3d5d82d6c8f91642a33b60fae0 100644 (file)
@@ -38,8 +38,10 @@ POSTMAP(1)                                                          POSTMAP(1)
               starts with whitespace continues a logical line.
 
        The  <i>key</i>  and  <i>value</i> are processed as is, except that surrounding white
-       space is stripped off. Whitespace in lookup keys  is  supported  as  of
-       Postfix 3.2.
+       space is stripped off. Whitespace in lookup keys is supported in  Post-
+       fix  3.2 and later, by surrounding the key with double quote characters
+       `"'. Within the double quotes, double quote `"' and backslash `\' char-
+       acters can be included by quoting them with a preceding backslash.
 
        When  the  <b>-F</b> option is given, the <i>value</i> must specify one or more file-
        names separated by comma and/or whitespace; <a href="postmap.1.html"><b>postmap</b>(1)</a> will concatenate
@@ -72,9 +74,9 @@ POSTMAP(1)                                                          POSTMAP(1)
               body-style lookup keys  for  attachment  MIME  headers  and  for
               attached message/* headers.
 
-              NOTE:  with  "<a href="postconf.5.html#smtputf8_enable">smtputf8_enable</a>  = yes", the <b>-b</b> option option dis-
-              ables UTF-8 syntax checks on  query  keys  and  lookup  results.
-              Specify the <b>-U</b> option to force UTF-8 syntax checks anyway.
+              NOTE: with "<a href="postconf.5.html#smtputf8_enable">smtputf8_enable</a> = yes", the <b>-b</b> option disables UTF-8
+              syntax checks on query keys and lookup results. Specify  the  <b>-U</b>
+              option to force UTF-8 syntax checks anyway.
 
               This feature is available in Postfix version 2.6 and later.
 
@@ -270,13 +272,13 @@ POSTMAP(1)                                                          POSTMAP(1)
               and <a href="postmap.1.html"><b>postmap</b>(1)</a> commands.
 
        <b><a href="postconf.5.html#import_environment">import_environment</a> (see 'postconf -d' output)</b>
-              The list of environment parameters  that  a  privileged  Postfix
+              The list of environment  variables  that  a  privileged  Postfix
               process  will  import  from  a  non-Postfix  parent  process, or
               name=value environment overrides.
 
        <b><a href="postconf.5.html#smtputf8_enable">smtputf8_enable</a> (yes)</b>
               Enable preliminary SMTPUTF8 support for the protocols  described
-              in <a href="https://tools.ietf.org/html/rfc6531">RFC 6531</a>..6533.
+              in <a href="https://tools.ietf.org/html/rfc6531">RFC 6531</a>, <a href="https://tools.ietf.org/html/rfc6532">RFC 6532</a>, and <a href="https://tools.ietf.org/html/rfc6533">RFC 6533</a>.
 
        <b><a href="postconf.5.html#syslog_facility">syslog_facility</a> (mail)</b>
               The syslog facility of Postfix logging.
index bb20536f2eb0cc28b4f0070c9c62fcb0a142c83c..6456b92197b4d82488acb815b0fed083fdebec34 100644 (file)
@@ -200,7 +200,7 @@ POSTMULTI(1)                                                      POSTMULTI(1)
                      default  values  for  the  private directories of the new
                      instance. The "<b>-G</b>  <i>group</i>"  option  may  be  specified  to
                      assign  the  instance  to  a  group,  otherwise,  the new
-                     instance is not a member of any groups.
+                     instance is not a member of any group.
 
                      The new instance <a href="postconf.5.html">main.cf</a> is the stock  <a href="postconf.5.html">main.cf</a>  with  the
                      parameters  that  specify  the  locations of shared files
@@ -222,66 +222,67 @@ POSTMULTI(1)                                                      POSTMULTI(1)
                                     <a href="postconf.5.html#data_directory">data_directory</a>=/my/data/dir
 
                      If  any  of  these pathnames is not supplied, the program
-                     attempts to generate the pathname by  taking  the  corre-
-                     sponding  primary instance pathname, and by replacing the
-                     last pathname component by the value of the <b>-I</b> option.
+                     attempts to generate the missing  pathname(s)  by  taking
+                     the  corresponding primary instance pathname, and replac-
+                     ing the last pathname component by the value  of  the  <b>-I</b>
+                     option.
 
-                     If the instance configuration directory  already  exists,
-                     and  contains  both  a <a href="postconf.5.html">main.cf</a> and <a href="master.5.html">master.cf</a> file, <b>create</b>
+                     If  the  instance configuration directory already exists,
+                     and contains both a <a href="postconf.5.html">main.cf</a> and  <a href="master.5.html">master.cf</a>  file,  <b>create</b>
                      will "import" the instance as-is. For existing instances,
                      <b>create</b> and <b>import</b> are identical.
 
-              <b>import</b> Import  an  existing  instance into the list of instances
+              <b>import</b> Import an existing instance into the  list  of  instances
                      managed by the <a href="postmulti.1.html"><b>postmulti</b>(1)</a> multi-instance manager.  This
-                     adds  the instance to the <a href="postconf.5.html#multi_instance_directories">multi_instance_directories</a> list
+                     adds the instance to the <a href="postconf.5.html#multi_instance_directories">multi_instance_directories</a>  list
                      of the primary instance.  If the "<b>-I</b> <i>name</i>" option is pro-
-                     vided  it  specifies the new name for the instance and is
-                     used to define a default location for the  instance  con-
-                     figuration  directory  (as  with  <b>create</b> above).  The "<b>-G</b>
-                     <i>group</i>" option may be used to assign  the  instance  to  a
-                     group.  Add  a "<b><a href="postconf.5.html#config_directory">config_directory</a>=</b><i>/path</i>" argument to over-
+                     vided it specifies the new name for the instance  and  is
+                     used  to  define a default location for the instance con-
+                     figuration directory (as with  <b>create</b>  above).   The  "<b>-G</b>
+                     <i>group</i>"  option  may  be  used to assign the instance to a
+                     group. Add a "<b><a href="postconf.5.html#config_directory">config_directory</a>=</b><i>/path</i>" argument  to  over-
                      ride a default pathname based on "<b>-I</b> <i>name</i>".
 
               <b>destroy</b>
-                     Destroy a secondary Postfix instance. To be  a  candidate
+                     Destroy  a  secondary Postfix instance. To be a candidate
                      for destruction an instance must be disabled, stopped and
-                     its queue must not  contain  any  messages.  Attempts  to
-                     destroy  the  primary  Postfix  instance  trigger a fatal
+                     its  queue  must  not  contain  any messages. Attempts to
+                     destroy the primary  Postfix  instance  trigger  a  fatal
                      error, without destroying the instance.
 
                      The instance is removed from the primary instance <a href="postconf.5.html">main.cf</a>
                      file's  <a href="postconf.5.html#alternate_config_directories">alternate_config_directories</a>  parameter  and  its
-                     data, queue and configuration directories are cleaned  of
-                     files  and directories created by the Postfix system. The
+                     data,  queue and configuration directories are cleaned of
+                     files and directories created by the Postfix system.  The
                      <a href="postconf.5.html">main.cf</a> and <a href="master.5.html">master.cf</a> files are removed from the configu-
-                     ration  directory  even  if they have been modified since
-                     initial creation. Finally,  the  instance  is  "deported"
+                     ration directory even if they have  been  modified  since
+                     initial  creation.  Finally,  the  instance is "deported"
                      from the list of managed instances.
 
-                     If  other  files are present in instance private directo-
+                     If other files are present in instance  private  directo-
                      ries, the directories may not be fully removed, a warning
                      is logged to alert the administrator. It is expected that
-                     an instance built using "fresh" directories via the  <b>cre-</b>
-                     <b>ate</b>  action  will  be fully removed by the <b>destroy</b> action
-                     (if first disabled). If the  instance  configuration  and
-                     queue  directories  are  populated  with additional files
-                     (access and rewriting tables, chroot jail content,  etc.)
+                     an  instance built using "fresh" directories via the <b>cre-</b>
+                     <b>ate</b> action will be fully removed by  the  <b>destroy</b>  action
+                     (if  first  disabled).  If the instance configuration and
+                     queue directories are  populated  with  additional  files
+                     (access  and rewriting tables, chroot jail content, etc.)
                      the instance directories will not be fully removed.
 
-                     The  <b>destroy</b>  action  triggers potentially dangerous file
-                     removal operations. Make sure the instance's data,  queue
-                     and  configuration  directories  are set correctly and do
+                     The <b>destroy</b> action triggers  potentially  dangerous  file
+                     removal  operations. Make sure the instance's data, queue
+                     and configuration directories are set  correctly  and  do
                      not contain any valuable files.
 
-              <b>deport</b> Deport a secondary instance  from  the  list  of  managed
+              <b>deport</b> Deport  a  secondary  instance  from  the list of managed
                      instances. This deletes the instance configuration direc-
-                     tory from the primary instance's  <a href="postconf.5.html#multi_instance_directories">multi_instance_directo</a>-
-                     <a href="postconf.5.html#multi_instance_directories">ries</a>  list, but does not remove any files or directories.
+                     tory  from the primary instance's <a href="postconf.5.html#multi_instance_directories">multi_instance_directo</a>-
+                     <a href="postconf.5.html#multi_instance_directories">ries</a> list, but does not remove any files or  directories.
 
-              <b>assign</b> Assign a new instance name or a new  group  name  to  the
-                     selected  instance.  Use "<b>-G -</b>" to specify "no group" and
-                     "<b>-I -</b>" to specify "no name".  If you choose  to  make  an
-                     instance  "nameless",  set  a suitable <a href="postconf.5.html#syslog_name">syslog_name</a> in the
+              <b>assign</b> Assign  a  new  instance  name or a new group name to the
+                     selected instance.  Use "<b>-G -</b>" to specify "no group"  and
+                     "<b>-I  -</b>"  to  specify "no name".  If you choose to make an
+                     instance "nameless", set a suitable  <a href="postconf.5.html#syslog_name">syslog_name</a>  in  the
                      corresponding <a href="postconf.5.html">main.cf</a> file.
 
               <b>enable</b> Mark the selected instance as enabled. This just sets the
@@ -289,18 +290,18 @@ POSTMULTI(1)                                                      POSTMULTI(1)
                      instance's <a href="postconf.5.html">main.cf</a> file.
 
               <b>disable</b>
-                     Mark the selected instance as disabled. This  means  that
-                     the  instance  will  not  be  started  etc. with "postfix
-                     start", "postmulti -p start" and so on. The instance  can
-                     still  be  started etc. with "postfix -c config-directory
+                     Mark  the  selected instance as disabled. This means that
+                     the instance will  not  be  started  etc.  with  "postfix
+                     start",  "postmulti -p start" and so on. The instance can
+                     still be started etc. with "postfix  -c  config-directory
                      start".
 
 <b>Other options</b>
-       <b>-v</b>     Enable verbose  logging  for  debugging  purposes.  Multiple  <b>-v</b>
+       <b>-v</b>     Enable  verbose  logging  for  debugging  purposes.  Multiple <b>-v</b>
               options make the software increasingly verbose.
 
 <b>ENVIRONMENT</b>
-       The  <a href="postmulti.1.html"><b>postmulti</b>(1)</a>  command  exports the following environment variables
+       The <a href="postmulti.1.html"><b>postmulti</b>(1)</a> command exports the  following  environment  variables
        before executing the requested <i>command</i> for a given instance:
 
        <b>MAIL_VERBOSE</b>
@@ -311,22 +312,22 @@ POSTMULTI(1)                                                      POSTMULTI(1)
 
 <b>CONFIGURATION PARAMETERS</b>
        <b><a href="postconf.5.html#config_directory">config_directory</a> (see 'postconf -d' output)</b>
-              The default location of the Postfix <a href="postconf.5.html">main.cf</a> and  <a href="master.5.html">master.cf</a>  con-
+              The  default  location of the Postfix <a href="postconf.5.html">main.cf</a> and <a href="master.5.html">master.cf</a> con-
               figuration files.
 
        <b><a href="postconf.5.html#daemon_directory">daemon_directory</a> (see 'postconf -d' output)</b>
               The directory with Postfix support programs and daemon programs.
 
        <b><a href="postconf.5.html#import_environment">import_environment</a> (see 'postconf -d' output)</b>
-              The list of environment parameters  that  a  privileged  Postfix
-              process  will  import  from  a  non-Postfix  parent  process, or
+              The  list  of  environment  variables  that a privileged Postfix
+              process will  import  from  a  non-Postfix  parent  process,  or
               name=value environment overrides.
 
        <b><a href="postconf.5.html#multi_instance_directories">multi_instance_directories</a> (empty)</b>
-              An optional list of non-default Postfix  configuration  directo-
-              ries;  these  directories belong to additional Postfix instances
-              that share the Postfix executable files and  documentation  with
-              the  default  Postfix  instance,  and that are started, stopped,
+              An  optional  list of non-default Postfix configuration directo-
+              ries; these directories belong to additional  Postfix  instances
+              that  share  the Postfix executable files and documentation with
+              the default Postfix instance, and  that  are  started,  stopped,
               etc., together with the default Postfix instance.
 
        <b><a href="postconf.5.html#multi_instance_group">multi_instance_group</a> (empty)</b>
@@ -336,40 +337,40 @@ POSTMULTI(1)                                                      POSTMULTI(1)
               The optional instance name of this Postfix instance.
 
        <b><a href="postconf.5.html#multi_instance_enable">multi_instance_enable</a> (no)</b>
-              Allow this Postfix instance to be started, stopped, etc.,  by  a
+              Allow  this  Postfix instance to be started, stopped, etc., by a
               multi-instance manager.
 
        <b><a href="postconf.5.html#postmulti_start_commands">postmulti_start_commands</a> (start)</b>
-              The  <a href="postfix.1.html"><b>postfix</b>(1)</a>  commands that the <a href="postmulti.1.html"><b>postmulti</b>(1)</a> instance manager
+              The <a href="postfix.1.html"><b>postfix</b>(1)</a> commands that the <a href="postmulti.1.html"><b>postmulti</b>(1)</a>  instance  manager
               treats as "start" commands.
 
        <b><a href="postconf.5.html#postmulti_stop_commands">postmulti_stop_commands</a> (see 'postconf -d' output)</b>
-              The <a href="postfix.1.html"><b>postfix</b>(1)</a> commands that the <a href="postmulti.1.html"><b>postmulti</b>(1)</a>  instance  manager
+              The  <a href="postfix.1.html"><b>postfix</b>(1)</a>  commands that the <a href="postmulti.1.html"><b>postmulti</b>(1)</a> instance manager
               treats as "stop" commands.
 
        <b><a href="postconf.5.html#postmulti_control_commands">postmulti_control_commands</a> (reload flush)</b>
-              The  <a href="postfix.1.html"><b>postfix</b>(1)</a>  commands that the <a href="postmulti.1.html"><b>postmulti</b>(1)</a> instance manager
+              The <a href="postfix.1.html"><b>postfix</b>(1)</a> commands that the <a href="postmulti.1.html"><b>postmulti</b>(1)</a>  instance  manager
               treats as "control" commands, that operate on running instances.
 
        <b><a href="postconf.5.html#syslog_facility">syslog_facility</a> (mail)</b>
               The syslog facility of Postfix logging.
 
        <b><a href="postconf.5.html#syslog_name">syslog_name</a> (see 'postconf -d' output)</b>
-              A  prefix  that  is  prepended  to  the  process  name in syslog
+              A prefix that  is  prepended  to  the  process  name  in  syslog
               records, so that, for example, "smtpd" becomes "prefix/smtpd".
 
        Available in Postfix 3.0 and later:
 
        <b><a href="postconf.5.html#meta_directory">meta_directory</a> (see 'postconf -d' output)</b>
-              The location of non-executable files that are shared among  mul-
-              tiple  Postfix instances, such as postfix-files, dynamicmaps.cf,
-              and the multi-instance template  files  <a href="postconf.5.html">main.cf</a>.proto  and  <a href="master.5.html">mas-
+              The  location of non-executable files that are shared among mul-
+              tiple Postfix instances, such as postfix-files,  dynamicmaps.cf,
+              and  the  multi-instance  template  files <a href="postconf.5.html">main.cf</a>.proto and <a href="master.5.html">mas-
               ter.cf</a>.proto.
 
        <b><a href="postconf.5.html#shlib_directory">shlib_directory</a> (see 'postconf -d' output)</b>
-              The  location  of Postfix dynamically-linked libraries (libpost-
-              fix-*.so), and the default location of Postfix database  plugins
-              (postfix-*.so)  that  have  a  relative  pathname  in the dynam-
+              The location of Postfix dynamically-linked  libraries  (libpost-
+              fix-*.so),  and the default location of Postfix database plugins
+              (postfix-*.so) that have  a  relative  pathname  in  the  dynam-
               icmaps.cf file.
 
 <b>FILES</b>
index 4520d14c8e205060409e8ec499f010702c74d080..401ad0726e0831a96a32a366ef2857d4b9dd2c35 100644 (file)
@@ -18,7 +18,7 @@ POSTTLS-FINGER(1)                                            POSTTLS-FINGER(1)
        TLS-related information about the server. With SMTP, the destination is
        a  domainname;  with LMTP it is either a domainname prefixed with <b>inet:</b>
        or a pathname prefixed with <b>unix:</b>.  If Postfix  is  built  without  TLS
-       support,  the  resulting  posttls-finger program has very limited func-
+       support, the resulting <a href="posttls-finger.1.html"><b>posttls-finger</b>(1)</a> program has very limited func-
        tionality, and only the <b>-a</b>, <b>-c</b>, <b>-h</b>, <b>-o</b>, <b>-S</b>, <b>-t</b>, <b>-T</b> and <b>-v</b>  options  are
        available.
 
@@ -83,9 +83,9 @@ POSTTLS-FINGER(1)                                            POSTTLS-FINGER(1)
 
        <b>-a</b> <i>family</i> (default: <b>any</b>)
               Address family preference: <b>ipv4</b>, <b>ipv6</b> or <b>any</b>.  When  using  <b>any</b>,
-              posttls-finger  will  randomly select one of the two as the more
-              preferred, and exhaust all MX preferences for the first  address
-              family before trying any addresses for the other.
+              <a href="posttls-finger.1.html"><b>posttls-finger</b>(1)</a>  will  randomly  select  one of the two as the
+              more preferred, and exhaust all MX  preferences  for  the  first
+              address family before trying any addresses for the other.
 
        <b>-A</b> <i>trust-anchor.pem</i> (default: none)
               A  list of PEM trust-anchor files that overrides CAfile and CAp-
@@ -109,7 +109,7 @@ POSTTLS-FINGER(1)                                            POSTTLS-FINGER(1)
               server fingerprints and matching against user provided  certifi-
               cate fingerprints (with DANE TLSA records the algorithm is spec-
               ified in the DNS).   In  Postfix  versions  prior  to  3.6,  the
-              default value was "sha1".
+              default value was "md5".
 
        <b>-f</b>     Lookup  the  associated  DANE TLSA RRset even when a hostname is
               not an alias and its address records lie in  an  unsigned  zone.
@@ -121,7 +121,7 @@ POSTTLS-FINGER(1)                                            POSTTLS-FINGER(1)
               trusted.
 
        <b>-g</b> <i>grade</i> (default: medium)
-              The  minimum  TLS  cipher  grade  used  by  posttls-finger.  See
+              The  minimum  TLS  cipher  grade used by <a href="posttls-finger.1.html"><b>posttls-finger</b>(1)</a>.  See
               <a href="postconf.5.html#smtp_tls_mandatory_ciphers">smtp_tls_mandatory_ciphers</a> for details.
 
        <b>-h</b> <i>host</i><b>_</b><i>lookup</i> (default: <b>dns</b>)
@@ -157,13 +157,13 @@ POSTTLS-FINGER(1)                                            POSTTLS-FINGER(1)
               allows you to test certificate or public-key fingerprint matches
               before you deploy them in the policy table.
 
-              Note, since <b>posttls-finger</b> does not actually deliver any  email,
-              the  <b>none</b>,  <b>may</b> and <b>encrypt</b> security levels are not very useful.
-              Since <b>may</b> and <b>encrypt</b> don't require peer certificates, they will
-              often  negotiate  anonymous TLS ciphersuites, so you won't learn
-              much about the remote SMTP server's certificates at these levels
-              if it also supports anonymous TLS (though you may learn that the
-              server supports anonymous TLS).
+              Note, since <a href="posttls-finger.1.html"><b>posttls-finger</b>(1)</a>  does  not  actually  deliver  any
+              email,  the  <b>none</b>,  <b>may</b> and <b>encrypt</b> security levels are not very
+              useful.  Since <b>may</b> and <b>encrypt</b> don't require peer  certificates,
+              they  will  often  negotiate  anonymous TLS ciphersuites, so you
+              won't learn much about the remote SMTP server's certificates  at
+              these  levels  if it also supports anonymous TLS (though you may
+              learn that the server supports anonymous TLS).
 
        <b>-L</b> <i>logopts</i> (default: <b>routine,certmatch</b>)
               Fine-grained TLS logging  options.  To  tune  the  TLS  features
@@ -247,7 +247,7 @@ POSTTLS-FINGER(1)                                            POSTTLS-FINGER(1)
               The  TLS policy for MX hosts with "secure" TLSA records when the
               nexthop destination security level is <b>dane</b>, but  the  MX  record
               was found via an "insecure" MX lookup.  See the <a href="postconf.5.html">main.cf</a> documen-
-              tation for smtp_tls_insecure_mx_policy for details.
+              tation for <a href="postconf.5.html#smtp_tls_dane_insecure_mx_policy">smtp_tls_dane_insecure_mx_policy</a> for details.
 
        <b>-o</b> <i>name=value</i>
               Specify zero or more times to override the value of the  <a href="postconf.5.html">main.cf</a>
@@ -256,8 +256,8 @@ POSTTLS-FINGER(1)                                            POSTTLS-FINGER(1)
               configure the SMTP EHLO name sent to the remote server.
 
        <b>-p</b> <i>protocols</i> (default: &gt;=TLSv1)
-              TLS  protocols that posttls-finger will exclude or include.  See
-              <a href="postconf.5.html#smtp_tls_mandatory_protocols">smtp_tls_mandatory_protocols</a> for details.
+              TLS  protocols  that  <a href="posttls-finger.1.html"><b>posttls-finger</b>(1)</a> will exclude or include.
+              See <a href="postconf.5.html#smtp_tls_mandatory_protocols">smtp_tls_mandatory_protocols</a> for details.
 
        <b>-P</b> <i>CApath/</i> (default: none)
               The OpenSSL CApath/  directory  (indexed  via  c_rehash(1))  for
@@ -293,11 +293,11 @@ POSTTLS-FINGER(1)                                            POSTTLS-FINGER(1)
        <b>-v</b>     Enable  verbose  Postfix  logging.   Specify  more  than once to
               increase the level of verbose logging.
 
-       <b>-w</b>     Enable outgoing TLS wrapper mode, or  SMTPS  support.   This  is
-              typically  provided  on  port 465 by servers that are compatible
-              with the ad-hoc SMTP in SSL protocol, rather than  the  standard
-              STARTTLS protocol.  The destination <i>domain</i>:<i>port</i> should of course
-              provide such a service.
+       <b>-w</b>     Enable outgoing TLS wrapper mode, or SUBMISSIONS/SMTPS  support.
+              This  is typically provided on port 465 by servers that are com-
+              patible with the SMTP-in-SSL protocol, rather than the  STARTTLS
+              protocol.   The  destination  <i>domain</i>:<i>port</i> must of course provide
+              such a service.
 
        <b>-X</b>     Enable <a href="tlsproxy.8.html"><b>tlsproxy</b>(8)</a> mode. This is an unsupported mode,  for  pro-
               gram development only.
index c74d47952c790ebc526ee47f2939ab105bcb1597..87db84b6520dac3b94299536d2a023f2a103c84a 100644 (file)
@@ -27,8 +27,8 @@ RELOCATED(5)                                                      RELOCATED(5)
 
        Alternatively,  the  table  can be provided as a regular-expression map
        where patterns are given as regular  expressions,  or  lookups  can  be
-       directed  to TCP-based server. In those case, the lookups are done in a
-       slightly different way as described  below  under  "REGULAR  EXPRESSION
+       directed  to a TCP-based server. In those case, the lookups are done in
+       a slightly different way as described below under  "REGULAR  EXPRESSION
        TABLES" or "TCP-BASED TABLES".
 
        Table lookups are case insensitive.
@@ -83,7 +83,7 @@ RELOCATED(5)                                                      RELOCATED(5)
        to a TCP-based server. For a description of regular  expression  lookup
        table  syntax,  see <a href="regexp_table.5.html"><b>regexp_table</b>(5)</a> or <a href="pcre_table.5.html"><b>pcre_table</b>(5)</a>. For a description
        of the TCP client/server table lookup protocol, see <a href="tcp_table.5.html"><b>tcp_table</b>(5)</a>.  This
-       feature is not available up to and including Postfix version 2.4.
+       feature is available in Postfix 2.5 and later.
 
        Each  pattern  is  a  regular  expression that is applied to the entire
        address being looked up. Thus, <i>user@domain</i> mail addresses are not  bro-
@@ -100,8 +100,8 @@ RELOCATED(5)                                                      RELOCATED(5)
 <b>TCP-BASED TABLES</b>
        This  section  describes  how the table lookups change when lookups are
        directed  to  a  TCP-based  server.  For  a  description  of  the   TCP
-       client/server  lookup  protocol, see <a href="tcp_table.5.html"><b>tcp_table</b>(5)</a>.  This feature is not
-       available up to and including Postfix version 2.4.
+       client/server  lookup  protocol,  see  <a href="tcp_table.5.html"><b>tcp_table</b>(5)</a>.   This  feature is
+       available in Postfix 2.5 and later.
 
        Each lookup operation uses the entire address once.  Thus,  <i>user@domain</i>
        mail  addresses  are  not  broken  up  into their <i>user</i> and <i>@domain</i> con-
@@ -117,25 +117,27 @@ RELOCATED(5)                                                      RELOCATED(5)
        below  provides  only  a  parameter  summary.  See <a href="postconf.5.html"><b>postconf</b>(5)</a> for more
        details including examples.
 
-       <b><a href="postconf.5.html#relocated_maps">relocated_maps</a></b>
-              List of lookup tables for relocated users or sites.
+       <b><a href="postconf.5.html#relocated_maps">relocated_maps</a> (empty)</b>
+              Optional lookup tables with new contact information for users or
+              domains that no longer exist.
 
        Other parameters of interest:
 
-       <b><a href="postconf.5.html#inet_interfaces">inet_interfaces</a></b>
-              The network interface addresses that this system  receives  mail
-              on.   You  need  to  stop  and start Postfix when this parameter
-              changes.
+       <b><a href="postconf.5.html#inet_interfaces">inet_interfaces</a> (all)</b>
+              The  network  interface addresses that this mail system receives
+              mail on.
 
-       <b><a href="postconf.5.html#mydestination">mydestination</a></b>
-              List of domains that this mail system considers local.
+       <b><a href="postconf.5.html#mydestination">mydestination</a> ($<a href="postconf.5.html#myhostname">myhostname</a>, localhost.$<a href="postconf.5.html#mydomain">mydomain</a>, localhost)</b>
+              The list of domains that are delivered via the  $<a href="postconf.5.html#local_transport">local_transport</a>
+              mail delivery transport.
 
-       <b><a href="postconf.5.html#myorigin">myorigin</a></b>
-              The domain that is appended to locally-posted mail.
+       <b><a href="postconf.5.html#myorigin">myorigin</a> ($<a href="postconf.5.html#myhostname">myhostname</a>)</b>
+              The  domain  name that locally-posted mail appears to come from,
+              and that locally posted mail is delivered to.
 
-       <b><a href="postconf.5.html#proxy_interfaces">proxy_interfaces</a></b>
-              Other interfaces that this machine receives mail on by way of  a
-              proxy agent or network address translator.
+       <b><a href="postconf.5.html#proxy_interfaces">proxy_interfaces</a> (empty)</b>
+              The network interface addresses that this mail  system  receives
+              mail on by way of a proxy or network address translation unit.
 
 <b>SEE ALSO</b>
        <a href="trivial-rewrite.8.html">trivial-rewrite(8)</a>, address resolver
index 482b227d4ecc3aa8210f5014f86a77f5b9236a7b..eb99f16cb0a121ad7f021baf50f8d5f8ac9444cc 100644 (file)
@@ -442,7 +442,7 @@ SENDMAIL(1)                                                        SENDMAIL(1)
               headers of mail that is still queued.
 
        <b><a href="postconf.5.html#import_environment">import_environment</a> (see 'postconf -d' output)</b>
-              The  list  of  environment  parameters that a privileged Postfix
+              The  list  of  environment  variables  that a privileged Postfix
               process will  import  from  a  non-Postfix  parent  process,  or
               name=value environment overrides.
 
index a3644f8a7a02218fb8155dffacde634f09afd09a..ed44dd4ba5cb14de70dd7e62f94c91ae6f9927f2 100644 (file)
@@ -213,8 +213,8 @@ SMTP-SINK(1)                                                      SMTP-SINK(1)
               Listen on the UNIX-domain socket at <i>pathname</i>.
 
        <i>backlog</i>
-              The  maximum length the queue of pending connections, as defined
-              by the <b>listen</b>(2) system call.
+              The  maximum  length  of  the  queue  of pending connections, as
+              defined by the <b>listen</b>(2) system call.
 
 <b>DUMP FILE FORMAT</b>
        Each dumped message contains a sequence of text lines, terminated  with
index 5491c4ec222932e8797d5f39777763753fb5afa1..98d8879ceea6a7b4f36bc2b6d8e37d4a398f4a06 100644 (file)
@@ -392,7 +392,7 @@ SMTP(8)                                                                SMTP(8)
               DATA    requests,    when    deadlines    are    enabled    with
               <a href="postconf.5.html#smtp_per_request_deadline">smtp_per_request_deadline</a>.
 
-       <b>header_from_format (standard)</b>
+       <b><a href="postconf.5.html#header_from_format">header_from_format</a> (standard)</b>
               The format of the Postfix-generated <b>From:</b> header.
 
 <b>MIME PROCESSING CONTROLS</b>
@@ -837,13 +837,13 @@ SMTP(8)                                                                SMTP(8)
 
        Implemented in the <a href="qmgr.8.html">qmgr(8)</a> daemon:
 
-       <b>transport_destination_concurrency_limit   ($<a href="postconf.5.html#default_destination_concurrency_limit">default_destination_concur</a>-</b>
+       <b><a href="postconf.5.html#transport_destination_concurrency_limit">transport_destination_concurrency_limit</a>   ($<a href="postconf.5.html#default_destination_concurrency_limit">default_destination_concur</a>-</b>
        <b><a href="postconf.5.html#default_destination_concurrency_limit">rency_limit</a>)</b>
-              A  transport-specific  override for the default_destination_con-
-              currency_limit parameter value, where <i>transport</i> is the <a href="master.5.html">master.cf</a>
+              A  transport-specific  override for the <a href="postconf.5.html#default_destination_concurrency_limit">default_destination_con</a>-
+              <a href="postconf.5.html#default_destination_concurrency_limit">currency_limit</a> parameter value, where <i>transport</i> is the <a href="master.5.html">master.cf</a>
               name of the message delivery transport.
 
-       <b>transport_destination_recipient_limit     ($<a href="postconf.5.html#default_destination_recipient_limit">default_destination_recipi</a>-</b>
+       <b><a href="postconf.5.html#transport_destination_recipient_limit">transport_destination_recipient_limit</a>     ($<a href="postconf.5.html#default_destination_recipient_limit">default_destination_recipi</a>-</b>
        <b><a href="postconf.5.html#default_destination_recipient_limit">ent_limit</a>)</b>
               A transport-specific override for the <a href="postconf.5.html#default_destination_recipient_limit">default_destination_recip</a>-
               <a href="postconf.5.html#default_destination_recipient_limit">ient_limit</a> parameter value, where  <i>transport</i>  is  the  <a href="master.5.html">master.cf</a>
index fbf1875cca119537da88b1a7c8c2cb40ea44dcbd..3e47a0eafd35173153d4de08d3b416258e95c9b2 100644 (file)
@@ -410,7 +410,7 @@ SMTPD(8)                                                              SMTPD(8)
 
        Available in Postfix version 2.11 and later:
 
-       <b>smtpd_sasl_service (smtp)</b>
+       <b><a href="postconf.5.html#smtpd_sasl_service">smtpd_sasl_service</a> (smtp)</b>
               The  service  name  that  is  passed to the SASL plug-in that is
               selected with <b><a href="postconf.5.html#smtpd_sasl_type">smtpd_sasl_type</a></b> and <b><a href="postconf.5.html#smtpd_sasl_path">smtpd_sasl_path</a></b>.
 
@@ -951,7 +951,7 @@ SMTPD(8)                                                              SMTPD(8)
               DATA   and  BDAT  requests,  when  deadlines  are  enabled  with
               <a href="postconf.5.html#smtpd_per_request_deadline">smtpd_per_request_deadline</a>.
 
-       <b>header_from_format (standard)</b>
+       <b><a href="postconf.5.html#header_from_format">header_from_format</a> (standard)</b>
               The format of the Postfix-generated <b>From:</b> header.
 
 <b>TARPIT CONTROLS</b>
index f2889fb9c32fca719b3f534e5bad356f86aee87c..a0fc22062083a26fd582572a081b1231eeb4a658 100644 (file)
@@ -71,7 +71,7 @@ SPAWN(8)                                                              SPAWN(8)
        <a href="master.5.html"><b>master.cf</b></a> file.
 
 <b>RESOURCE AND RATE CONTROL</b>
-       <b>transport_time_limit ($<a href="postconf.5.html#command_time_limit">command_time_limit</a>)</b>
+       <b><a href="postconf.5.html#transport_time_limit">transport_time_limit</a> ($<a href="postconf.5.html#command_time_limit">command_time_limit</a>)</b>
               A transport-specific override for the <a href="postconf.5.html#command_time_limit">command_time_limit</a> parame-
               ter value, where <i>transport</i> is the <a href="master.5.html">master.cf</a> name of the  message
               delivery transport.
index 6f34d3abcc200414c5919a3e627f26283e6924ca..308d1ccb756082b96622c7905e797fff70292ed3 100644 (file)
@@ -21,7 +21,7 @@ SQLITE_TABLE(5)                                                SQLITE_TABLE(5)
        Alternatively, lookup tables can be specified as SQLite databases.   In
        order  to use SQLite lookups, define an SQLite source as a lookup table
        in <a href="postconf.5.html">main.cf</a>, for example:
-           <a href="postconf.5.html#alias_maps">alias_maps</a> = <a href="sqlite_table.5.html">sqlite</a>:/etc/sqlite-aliases.cf
+           <a href="postconf.5.html#alias_maps">alias_maps</a> = <a href="sqlite_table.5.html">sqlite</a>:/etc/postfix/sqlite-aliases.cf
 
        The file /etc/postfix/sqlite-aliases.cf has  the  same  format  as  the
        Postfix <a href="postconf.5.html">main.cf</a> file, and can specify the parameters described below.
@@ -147,9 +147,9 @@ SQLITE_TABLE(5)                                                SQLITE_TABLE(5)
               NOTE: DO NOT put quotes around the result format!
 
        <b>domain (default: no domain list)</b>
-              This is a list of domain names, paths to files, or dictionaries.
-              When  specified,  only  fully  qualified  search  keys  with   a
-              *non-empty*  localpart  and  a  matching domain are eligible for
+              This  is a list of domain names, paths to files, or "<a href="DATABASE_README.html">type:table</a>"
+              databases. When specified, only fully qualified search keys with
+              a  *non-empty*  localpart and a matching domain are eligible for
               lookup:  'user'  lookups,  bare  domain  lookups  and  "@domain"
               lookups  are  not  performed.  This can significantly reduce the
               query load on the SQLite server.
index 6f5ad53ef47c46ce09ab627f40ca463dff223b3b..b78bed3708d1b24bca6feb2d88f360a363d140ef 100644 (file)
@@ -103,7 +103,7 @@ TLSPROXY(8)                                                        TLSPROXY(8)
 
        Available in Postfix version 2.9 and later:
 
-       <b><a href="postconf.5.html#tls_legacy_public_key_fingerprint">tls_legacy_public_key_fingerprints</a> (no)</b>
+       <b><a href="postconf.5.html#tls_legacy_public_key_fingerprints">tls_legacy_public_key_fingerprints</a> (no)</b>
               A  temporary  migration  aid for sites that use certificate <i>pub-</i>
               <i>lic-key</i> fingerprints with Postfix  2.9.0..2.9.5,  which  use  an
               incorrect algorithm.
@@ -355,6 +355,13 @@ TLSPROXY(8)                                                        TLSPROXY(8)
               Mandatory TLS: announce STARTTLS support to remote SMTP clients,
               and require that clients use TLS encryption.
 
+       <b><a href="postconf.5.html#tlsproxy_client_use_tls">tlsproxy_client_use_tls</a> ($<a href="postconf.5.html#smtp_use_tls">smtp_use_tls</a>)</b>
+              Opportunistic mode: use TLS when a remote server  announces  TLS
+              support.
+
+       <b><a href="postconf.5.html#tlsproxy_client_enforce_tls">tlsproxy_client_enforce_tls</a> ($<a href="postconf.5.html#smtp_enforce_tls">smtp_enforce_tls</a>)</b>
+              Enforcement  mode: require that SMTP servers use TLS encryption.
+
 <b>RESOURCE CONTROLS</b>
        <b><a href="postconf.5.html#tlsproxy_watchdog_timeout">tlsproxy_watchdog_timeout</a> (10s)</b>
               How much time a <a href="tlsproxy.8.html"><b>tlsproxy</b>(8)</a> process may take to process local or
index 5421e49e74acf083dfde2f8972dd84b5548e54c8..a2768453dfe0a21a1c59f04c43ce31ce1900b213 100644 (file)
@@ -162,7 +162,7 @@ BOUNCE(8)                                                            BOUNCE(8)
 
        Available in Postfix 3.7 and later:
 
-       <b>header_from_format (standard)</b>
+       <b><a href="postconf.5.html#header_from_format">header_from_format</a> (standard)</b>
               The format of the Postfix-generated <b>From:</b> header.
 
 <b>FILES</b>
index 25fb602b5a735efd27715dedd445a3fdb9ffba95..b38dba51da26337ba53dd825fdf3203ed31f69a0 100644 (file)
@@ -61,8 +61,8 @@ TRANSPORT(5)                                                      TRANSPORT(5)
 
        Alternatively,  the  table  can be provided as a regular-expression map
        where patterns are given as regular  expressions,  or  lookups  can  be
-       directed  to TCP-based server. In those case, the lookups are done in a
-       slightly different way as described  below  under  "REGULAR  EXPRESSION
+       directed  to a TCP-based server. In those case, the lookups are done in
+       a slightly different way as described below under  "REGULAR  EXPRESSION
        TABLES" or "TCP-BASED TABLES".
 
 <b>CASE FOLDING</b>
index 54cb125bb1960dfa9a800cc271b18c2a8efd5001..60638567c6b7804114e3a0ccc378830fa3b2cc86 100644 (file)
@@ -56,13 +56,13 @@ TRIVIAL-REWRITE(8)                                          TRIVIAL-REWRITE(8)
               Resolve the address for address verification purposes.
 
 <b>SERVER PROCESS MANAGEMENT</b>
-       The <a href="trivial-rewrite.8.html"><b>trivial-rewrite</b>(8)</a> servers run under control by the Postfix  master
-       server.   Each  server  can  handle  multiple simultaneous connections.
-       When all servers are busy while a client connects, the master creates a
-       new  server  process,  provided that the trivial-rewrite server process
-       limit is not exceeded.  Each trivial-rewrite  server  terminates  after
-       serving  at  least  <b>$<a href="postconf.5.html#max_use">max_use</a></b> clients of after <b>$<a href="postconf.5.html#max_idle">max_idle</a></b> seconds of idle
-       time.
+       The <a href="trivial-rewrite.8.html"><b>trivial-rewrite</b>(8)</a> servers run under control by  the  Postfix  <a href="master.8.html">mas-</a>
+       <a href="master.8.html">ter(8)</a>  server.   Each  server can handle multiple simultaneous connec-
+       tions.  When all servers are busy while a client connects,  the  master
+       creates  a new server process, provided that the trivial-rewrite server
+       process limit is not exceeded.  Each trivial-rewrite server  terminates
+       after  serving  at least <b>$<a href="postconf.5.html#max_use">max_use</a></b> clients of after <b>$<a href="postconf.5.html#max_idle">max_idle</a></b> seconds of
+       idle time.
 
 <b>STANDARDS</b>
        None. The command does not interact with the outside world.
index b2f42bab949f94081cc70dca697452c05ab053aa..27b1392853be6091e6ff27359c0a4efce61096aa 100644 (file)
@@ -50,8 +50,8 @@ VIRTUAL(5)                                                          VIRTUAL(5)
 
        Alternatively, the table can be provided as  a  regular-expression  map
        where  patterns  are  given  as  regular expressions, or lookups can be
-       directed to TCP-based server. In those case, the lookups are done in  a
-       slightly  different  way  as  described below under "REGULAR EXPRESSION
+       directed to a TCP-based server. In those case, the lookups are done  in
+       a  slightly  different way as described below under "REGULAR EXPRESSION
        TABLES" or "TCP-BASED TABLES".
 
 <b>CASE FOLDING</b>
@@ -92,7 +92,7 @@ VIRTUAL(5)                                                          VIRTUAL(5)
               $<b><a href="postconf.5.html#myorigin">myorigin</a></b>,  when <i>site</i> is listed in $<b><a href="postconf.5.html#mydestination">mydestination</a></b>, or when it is
               listed in $<b><a href="postconf.5.html#inet_interfaces">inet_interfaces</a></b> or $<b><a href="postconf.5.html#proxy_interfaces">proxy_interfaces</a></b>.
 
-              This functionality overlaps  with  functionality  of  the  local
+              This functionality overlaps with the functionality of the  local
               <i>aliases</i>(5)  database.  The difference is that <a href="virtual.5.html"><b>virtual</b>(5)</a> mapping
               can be applied to non-local addresses.
 
@@ -140,8 +140,8 @@ VIRTUAL(5)                                                          VIRTUAL(5)
        <i>user</i>@<i>domain</i>, <i>user+foo</i>, <i>user</i>, and @<i>domain</i>.
 
        The   <b><a href="postconf.5.html#propagate_unmatched_extensions">propagate_unmatched_extensions</a></b>   parameter  controls  whether  an
-       unmatched address extension (<i>+foo</i>) is propagated to the result of table
-       lookup.
+       unmatched address extension (<i>+foo</i>) is propagated to the result of a ta-
+       ble lookup.
 
 <b>VIRTUAL ALIAS DOMAINS</b>
        Besides  virtual  aliases,  the virtual alias table can also be used to
@@ -208,8 +208,8 @@ VIRTUAL(5)                                                          VIRTUAL(5)
 <b>TCP-BASED TABLES</b>
        This section describes how the table lookups change  when  lookups  are
        directed   to  a  TCP-based  server.  For  a  description  of  the  TCP
-       client/server lookup protocol, see <a href="tcp_table.5.html"><b>tcp_table</b>(5)</a>.  This feature  is  not
-       available up to and including Postfix version 2.4.
+       client/server lookup  protocol,  see  <a href="tcp_table.5.html"><b>tcp_table</b>(5)</a>.   This  feature  is
+       available in Postfix 2.5 and later.
 
        Each  lookup operation uses the entire address once.  Thus, <i>user@domain</i>
        mail addresses are not broken up  into  their  <i>user</i>  and  <i>@domain</i>  con-
@@ -227,11 +227,11 @@ VIRTUAL(5)                                                          VIRTUAL(5)
 
        <b><a href="postconf.5.html#virtual_alias_maps">virtual_alias_maps</a> ($<a href="postconf.5.html#virtual_maps">virtual_maps</a>)</b>
               Optional  lookup  tables  that  alias specific mail addresses or
-              domains to other local or remote address.
+              domains to other local or remote addresses.
 
        <b><a href="postconf.5.html#virtual_alias_domains">virtual_alias_domains</a> ($<a href="postconf.5.html#virtual_alias_maps">virtual_alias_maps</a>)</b>
-              Postfix is final destination for the specified list  of  virtual
-              alias  domains,  that  is,  domains  for which all addresses are
+              Postfix is the final destination for the specified list of  vir-
+              tual alias domains, that is, domains for which all addresses are
               aliased to addresses in other local or remote domains.
 
        <b><a href="postconf.5.html#propagate_unmatched_extensions">propagate_unmatched_extensions</a> (canonical, virtual)</b>
index 6de6dd6d7c38ff0b1dd531328d23cfbb6d6531a5..c02c3624bb5dbffc0e42e91008983cc83ae268f4 100644 (file)
@@ -122,8 +122,8 @@ VIRTUAL(8)                                                          VIRTUAL(8)
 
 <b>DIAGNOSTICS</b>
        Mail bounces when the recipient has no mailbox or when the recipient is
-       over  disk quota. In all other cases, mail for an existing recipient is
-       deferred and a warning is logged.
+       over  disk  quota.  In  all  other  problem cases, mail for an existing
+       recipient is deferred and a warning is logged.
 
        Problems and transactions are  logged  to  <b>syslogd</b>(8)  or  <a href="postlogd.8.html"><b>postlogd</b>(8)</a>.
        Corrupted  message  files are marked so that the queue manager can move
@@ -173,9 +173,9 @@ VIRTUAL(8)                                                          VIRTUAL(8)
        Available in Postfix version 2.0 and later:
 
        <b><a href="postconf.5.html#virtual_mailbox_domains">virtual_mailbox_domains</a> ($<a href="postconf.5.html#virtual_mailbox_maps">virtual_mailbox_maps</a>)</b>
-              Postfix  is final destination for the specified list of domains;
-              mail is  delivered  via  the  $<a href="postconf.5.html#virtual_transport">virtual_transport</a>  mail  delivery
-              transport.
+              Postfix  is  the  final  destination  for  the specified list of
+              domains; mail  is  delivered  via  the  $<a href="postconf.5.html#virtual_transport">virtual_transport</a>  mail
+              delivery transport.
 
        <b><a href="postconf.5.html#virtual_transport">virtual_transport</a> (virtual)</b>
               The default mail delivery transport and next-hop destination for
index 294454adf42aac7e2bb29d49817947c0f1202a57..2839f3a8a89b35a227d1135ffd34a75c26329876 100644 (file)
 #      New York, NY 10011, USA
 #--
 
+# By now all shells must have functions.
+
+error() {
+   # Alas, tput(1) is not portable so we can't use visual effects.
+   echo "ATTENTION:" 1>&2;
+   echo "ATTENTION:" $* 1>&2;
+   echo "ATTENTION:" 1>&2;
+   exit 1
+}
+
+# First, deal with unsupported usage.
+case "$LD_LIBRARY_PATH" in
+?*) error "Not supported: building with LD_LIBRARY_PATH";;
+esac
+
+env | grep '^AUXLIBS_' | while read line
+do
+    case  "$line" in
+*-lpostfix-*) error "Not supported: linking plugins with -lpostfix-*: $line";;
+    esac
+done || exit 1
+
 # Emit system-dependent Makefile macro definitions to standard output.
 
 echo "#----------------------------------------------------------------"
@@ -205,16 +227,6 @@ ARFL=rv
 # Ugly function to make our error message more visible among the
 # garbage that is output by some versions of make(1).
 
-# By now all shells must have functions.
-
-error() {
-   # Alas, tput(1) is not portable so we can't use visual effects.
-   echo "ATTENTION:" 1>&2;
-   echo "ATTENTION:" $* 1>&2;
-   echo "ATTENTION:" 1>&2;
-   exit 1
-}
-
 case $# in
  # Officially supported usage.
  0) SYSTEM=`(uname -s) 2>/dev/null`
@@ -472,10 +484,6 @@ case "$SYSTEM.$RELEASE" in
                CCARGS="$CCARGS -Dstrcasecmp=fix_strcasecmp \
                    -Dstrncasecmp=fix_strncasecmp"
                STRCASE="strcasecmp.o"
-               # Avoid common types of braindamage
-               case "$LD_LIBRARY_PATH" in
-               ?*) error "Don't set LD_LIBRARY_PATH";;
-               esac
                case "${CC}" in
                *" "*) ;;
                *ucb*) error "Don't use /usr/ucb/cc or ucblib";;
@@ -974,7 +982,7 @@ CCARGS="-I. -I../../include $CCARGS"
 # "make makefiles name=value...". The replacement depends on usage
 # context: the expanded release version in actual pathnames, or the
 # unexpanded ${mail_version} in configuration parameter values (both
-# main.cf and and built-in defaults).
+# main.cf and built-in defaults).
 
 # Helper function to determine DEF_MAIL_VERSION.
 
index 08ea13ddf7b073299f6e8607cbef8c734266011c..4c7f02bd162e8fde5c8556e63ac13ef306cb4d1c 100644 (file)
@@ -18,7 +18,7 @@ Postfix alias database maintenance
 The \fBpostalias\fR(1) command creates or queries one or more Postfix
 alias databases, or updates an existing one. The input and output
 file formats are expected to be compatible with Sendmail version 8,
-and are expected to be suitable for the use as NIS alias maps.
+and are expected to be suitable for use as NIS alias maps.
 
 If the result files do not exist they will be created with the
 same group and other read permissions as their source file.
@@ -202,12 +202,12 @@ hash or btree tables.
 The default database type for use in \fBnewaliases\fR(1), \fBpostalias\fR(1)
 and \fBpostmap\fR(1) commands.
 .IP "\fBimport_environment (see 'postconf -d' output)\fR"
-The list of environment parameters that a privileged Postfix
+The list of environment variables that a privileged Postfix
 process will import from a non\-Postfix parent process, or name=value
 environment overrides.
 .IP "\fBsmtputf8_enable (yes)\fR"
 Enable preliminary SMTPUTF8 support for the protocols described
-in RFC 6531..6533.
+in RFC 6531, RFC 6532, and RFC 6533.
 .IP "\fBsyslog_facility (mail)\fR"
 The syslog facility of Postfix logging.
 .IP "\fBsyslog_name (see 'postconf -d' output)\fR"
index 1fb951fdc941c4a71e3f178801a86ef8445a891b..e4224299e9e3587f2b8703419f75abd385af5717 100644 (file)
@@ -171,7 +171,7 @@ With \fB\-F\fR, edit the \fBmaster.cf\fR configuration file,
 and replace one or more service fields with new values as
 specified with "\fIservice/type/field=value\fR" on the
 \fBpostconf\fR(1) command line. Currently, the "command"
-field contains the command name and command arguments.  this
+field contains the command name and command arguments.  This
 may change in the near future, so that the "command" field
 contains only the command name, and a new "arguments"
 pseudofield contains the command arguments.
@@ -188,7 +188,8 @@ characters and whitespace on the \fBpostconf\fR(1) command
 line.
 
 The \fB\-e\fR option is no longer needed with Postfix version
-2.8 and later.
+2.8 and later, as it is assumed whenever a value is specified
+(empty or non\-empty).
 .IP \fB\-f\fR
 Fold long lines when printing \fBmain.cf\fR or \fBmaster.cf\fR
 configuration file entries, for human readability.
@@ -208,8 +209,8 @@ fields.
 
 This feature is available with Postfix 2.11 and later.
 .IP \fB\-h\fR
-Show parameter or attribute values without the "\fIname\fR
-= " label that normally precedes the value.
+Show parameter or attribute values without the "\fIname\fR = "
+label that normally precedes the value.
 .IP \fB\-H\fR
 Show parameter or attribute names without the " = \fIvalue\fR"
 that normally follows the name.
@@ -427,12 +428,17 @@ to fold long lines for human readability (Postfix 2.9 and
 later). To show settings that differ from built\-in defaults
 only, use the following bash syntax:
 .nf
-    comm \-23 <(postconf \-n) <(postconf \-d)
+    LANG=C comm \-23 <(postconf \-n) <(postconf \-d)
 .fi
 Replace "\-23" with "\-12" to show settings that duplicate
 built\-in defaults.
 .IP "\fB\-o \fIname=value\fR"
-Override \fBmain.cf\fR parameter settings.
+Override \fBmain.cf\fR parameter settings.  This lets you see
+the effect changing a parameter would have when it is used in
+other configuration parameters, e.g.:
+.nf
+    postconf \-x \-o stress=yes
+.fi
 
 This feature is available with Postfix 2.10 and later.
 .IP \fB\-p\fR
index 5f52e69fd53ca133e2cc9a9b3bcbc3be469d347b..21681de368c8d3751ebf08995721befa774f62e7 100644 (file)
@@ -222,7 +222,7 @@ The location of the OpenSSL command line program \fBopenssl\fR(1).
 .PP
 Other configuration parameters:
 .IP "\fBimport_environment (see 'postconf -d' output)\fR"
-The list of environment parameters that a privileged Postfix
+The list of environment variables that a privileged Postfix
 process will import from a non\-Postfix parent process, or name=value
 environment overrides.
 .IP "\fBsyslog_facility (mail)\fR"
@@ -294,6 +294,7 @@ Commands:
 postalias(1), create/update/query alias database
 postcat(1), examine Postfix queue file
 postconf(1), Postfix configuration utility
+postdrop(1), Postfix mail posting utility
 postfix(1), Postfix control program
 postfix\-tls(1), Postfix TLS management
 postkick(1), trigger Postfix daemon
index d086d6ca282f2ba66de8a2bbff431c6312e074c6..d2551e54e41c45ba083af2f2f05bd9c75977ffed 100644 (file)
@@ -46,7 +46,10 @@ starts with whitespace continues a logical line.
 .PP
 The \fIkey\fR and \fIvalue\fR are processed as is, except that
 surrounding white space is stripped off. Whitespace in lookup
-keys is supported as of Postfix 3.2.
+keys is supported in Postfix 3.2 and later, by surrounding the
+key with double quote characters `"'. Within the double quotes,
+double quote `"' and backslash `\\' characters can be included
+by quoting them with a preceding backslash.
 
 When the \fB\-F\fR option is given, the \fIvalue\fR must
 specify one or more filenames separated by comma and/or
@@ -88,8 +91,8 @@ generates no body\-style lookup keys for attachment MIME
 headers and for attached message/* headers.
 .sp
 NOTE: with "smtputf8_enable = yes", the \fB\-b\fR option
-option disables UTF\-8 syntax checks on query keys and
-lookup results. Specify the \fB\-U\fR option to force UTF\-8
+disables UTF\-8 syntax checks on query keys and lookup
+results. Specify the \fB\-U\fR option to force UTF\-8
 syntax checks anyway.
 .sp
 This feature is available in Postfix version 2.6 and later.
@@ -287,12 +290,12 @@ configuration files.
 The default database type for use in \fBnewaliases\fR(1), \fBpostalias\fR(1)
 and \fBpostmap\fR(1) commands.
 .IP "\fBimport_environment (see 'postconf -d' output)\fR"
-The list of environment parameters that a privileged Postfix
+The list of environment variables that a privileged Postfix
 process will import from a non\-Postfix parent process, or name=value
 environment overrides.
 .IP "\fBsmtputf8_enable (yes)\fR"
 Enable preliminary SMTPUTF8 support for the protocols described
-in RFC 6531..6533.
+in RFC 6531, RFC 6532, and RFC 6533.
 .IP "\fBsyslog_facility (mail)\fR"
 The syslog facility of Postfix logging.
 .IP "\fBsyslog_name (see 'postconf -d' output)\fR"
index ad04dea1e91cb80cc7490b4bc1268f1339949094..6db035ea196793fe1da5888dee41cc96ab988f81 100644 (file)
@@ -220,7 +220,7 @@ instance a short name that is used to construct default
 values for the private directories of the new instance. The
 "\fB\-G \fIgroup\fR" option may be specified to assign the
 instance to a group, otherwise, the new instance is not a
-member of any groups.
+member of any group.
 .sp
 The new instance main.cf is the stock main.cf with the
 parameters that specify the locations of shared files cloned
@@ -245,9 +245,9 @@ For example:
 .RE
 .IP
 If any of these pathnames is not supplied, the program
-attempts to generate the pathname by taking the corresponding
-primary instance pathname, and by replacing the last pathname
-component by the value of the \fB\-I\fR option.
+attempts to generate the missing pathname(s) by taking the
+corresponding primary instance pathname, and replacing the
+last pathname component by the value of the \fB\-I\fR option.
 .sp
 If the instance configuration directory already exists, and
 contains both a main.cf and master.cf file, \fBcreate\fR
@@ -342,7 +342,7 @@ configuration files.
 .IP "\fBdaemon_directory (see 'postconf -d' output)\fR"
 The directory with Postfix support programs and daemon programs.
 .IP "\fBimport_environment (see 'postconf -d' output)\fR"
-The list of environment parameters that a privileged Postfix
+The list of environment variables that a privileged Postfix
 process will import from a non\-Postfix parent process, or name=value
 environment overrides.
 .IP "\fBmulti_instance_directories (empty)\fR"
index 699ff8d536c57bc6194f3017b2a48887e721dd9c..54b72aba25a596e851c6fc0e1944b5995728fa60 100644 (file)
@@ -18,7 +18,7 @@ Probe the TLS properties of an ESMTP or LMTP server.
 and reports TLS\-related information about the server. With SMTP, the
 destination is a domainname; with LMTP it is either a domainname
 prefixed with \fBinet:\fR or a pathname prefixed with \fBunix:\fR.  If
-Postfix is built without TLS support, the resulting posttls\-finger
+Postfix is built without TLS support, the resulting \fBposttls\-finger\fR(1)
 program has very limited functionality, and only the \fB\-a\fR, \fB\-c\fR,
 \fB\-h\fR, \fB\-o\fR, \fB\-S\fR, \fB\-t\fR, \fB\-T\fR and \fB\-v\fR options
 are available.
@@ -84,9 +84,9 @@ SMTP. The default TCP port for LMTP is 24.
 Arguments:
 .IP "\fB\-a\fR \fIfamily\fR (default: \fBany\fR)"
 Address family preference: \fBipv4\fR, \fBipv6\fR or \fBany\fR.  When
-using \fBany\fR, posttls\-finger will randomly select one of the two as
-the more preferred, and exhaust all MX preferences for the first
-address family before trying any addresses for the other.
+using \fBany\fR, \fBposttls\-finger\fR(1) will randomly select one of
+the two as the more preferred, and exhaust all MX preferences for the
+first address family before trying any addresses for the other.
 .IP "\fB\-A\fR \fItrust\-anchor.pem\fR (default: none)"
 A list of PEM trust\-anchor files that overrides CAfile and CApath
 trust chain verification.  Specify the option multiple times to
@@ -107,7 +107,7 @@ The message digest algorithm to use for reporting remote SMTP server
 fingerprints and matching against user provided certificate
 fingerprints (with DANE TLSA records the algorithm is specified
 in the DNS).  In Postfix versions prior to 3.6, the default value
-was "sha1".
+was "md5".
 .IP "\fB\-f\fR"
 Lookup the associated DANE TLSA RRset even when a hostname is not an
 alias and its address records lie in an unsigned zone.  See
@@ -117,8 +117,8 @@ The PEM formatted CAfile for remote SMTP server certificate
 verification.  By default no CAfile is used and no public CAs
 are trusted.
 .IP "\fB\-g \fIgrade\fR (default: medium)"
-The minimum TLS cipher grade used by posttls\-finger.  See
-smtp_tls_mandatory_ciphers for details.
+The minimum TLS cipher grade used by \fBposttls\-finger\fR(1).
+See smtp_tls_mandatory_ciphers for details.
 .IP "\fB\-h \fIhost_lookup\fR (default: \fBdns\fR)"
 The hostname lookup methods used for the connection.  See the
 documentation of smtp_host_lookup for syntax and semantics.
@@ -148,7 +148,7 @@ TLSA records are found, or all the records found are unusable, the
 security level allows you to test certificate or public\-key
 fingerprint matches before you deploy them in the policy table.
 .IP
-Note, since \fBposttls\-finger\fR does not actually deliver any email,
+Note, since \fBposttls\-finger\fR(1) does not actually deliver any email,
 the \fBnone\fR, \fBmay\fR and \fBencrypt\fR security levels are not
 very useful.  Since \fBmay\fR and \fBencrypt\fR don't require peer
 certificates, they will often negotiate anonymous TLS ciphersuites,
@@ -224,14 +224,14 @@ response; with these servers there will never be more than
 The TLS policy for MX hosts with "secure" TLSA records when the
 nexthop destination security level is \fBdane\fR, but the MX
 record was found via an "insecure" MX lookup.  See the main.cf
-documentation for smtp_tls_insecure_mx_policy for details.
+documentation for smtp_tls_dane_insecure_mx_policy for details.
 .IP "\fB\-o \fIname=value\fR"
 Specify zero or more times to override the value of the main.cf
 parameter \fIname\fR with \fIvalue\fR.  Possible use\-cases include
 overriding the values of TLS library parameters, or "myhostname" to
 configure the SMTP EHLO name sent to the remote server.
 .IP "\fB\-p \fIprotocols\fR (default: >=TLSv1)"
-TLS protocols that posttls\-finger will exclude or include.  See
+TLS protocols that \fBposttls\-finger\fR(1) will exclude or include.  See
 smtp_tls_mandatory_protocols for details.
 .IP "\fB\-P \fICApath/\fR (default: none)"
 The OpenSSL CApath/ directory (indexed via c_rehash(1)) for remote
@@ -263,10 +263,10 @@ The SMTP/LMTP command timeout for EHLO/LHLO, STARTTLS and QUIT.
 Enable verbose Postfix logging.  Specify more than once to increase
 the level of verbose logging.
 .IP "\fB\-w\fR"
-Enable outgoing TLS wrapper mode, or SMTPS support.  This is typically
-provided on port 465 by servers that are compatible with the ad\-hoc
-SMTP in SSL protocol, rather than the standard STARTTLS protocol.
-The destination \fIdomain\fR:\fIport\fR should of course provide such
+Enable outgoing TLS wrapper mode, or SUBMISSIONS/SMTPS support.  This
+is typically provided on port 465 by servers that are compatible with
+the SMTP\-in\-SSL protocol, rather than the STARTTLS protocol.
+The destination \fIdomain\fR:\fIport\fR must of course provide such
 a service.
 .IP "\fB\-X\fR"
 Enable \fBtlsproxy\fR(8) mode. This is an unsupported mode,
index 3722a178732d852f3732ee2d0e08de80e31c448f..22affe63752119cb96d79a66ef1c7a5d340a7596 100644 (file)
@@ -87,7 +87,7 @@ Initialize alias database. See the \fBnewaliases\fR
 command above.
 .IP \fB\-bl\fR
 Go into daemon mode. To accept only local connections as
-with Sendmail\'s \fB\-bl\fR option, specify "\fBinet_interfaces
+with Sendmail's \fB\-bl\fR option, specify "\fBinet_interfaces
 = loopback\fR" in the Postfix \fBmain.cf\fR configuration
 file.
 .IP \fB\-bm\fR
@@ -146,7 +146,7 @@ parameter instead.
 Initialize alias database. See the \fBnewaliases\fR
 command above.
 .IP "\fB\-i\fR"
-When reading a message from standard input, don\'t treat a line
+When reading a message from standard input, don't treat a line
 with only a \fB.\fR character as the end of input.
 .IP "\fB\-L \fIlabel\fR (ignored)"
 The logging label. Use the \fBsyslog_name\fR configuration
@@ -176,7 +176,7 @@ configuration parameter in \fBmain.cf\fR instead.
 To send 8\-bit or binary content, use an appropriate MIME encapsulation
 and specify the appropriate \fB\-B\fR command\-line option.
 .IP "\fB\-oi\fR"
-When reading a message from standard input, don\'t treat a line
+When reading a message from standard input, don't treat a line
 with only a \fB.\fR character as the end of input.
 .IP "\fB\-om\fR (ignored)"
 The sender is never eliminated from alias etc. expansions.
@@ -431,7 +431,7 @@ and \fBpostmap\fR(1) commands.
 The time after which the sender receives a copy of the message
 headers of mail that is still queued.
 .IP "\fBimport_environment (see 'postconf -d' output)\fR"
-The list of environment parameters that a privileged Postfix
+The list of environment variables that a privileged Postfix
 process will import from a non\-Postfix parent process, or name=value
 environment overrides.
 .IP "\fBmail_owner (postfix)\fR"
index 32cecb74b2bb284435bfbf562de0a9cf2243805a..17bb89c0538a610d97d021feebd2e765b120eb9c 100644 (file)
@@ -197,7 +197,7 @@ specified in numeric or symbolic form.
 .IP \fBunix:\fR\fIpathname\fR
 Listen on the UNIX\-domain socket at \fIpathname\fR.
 .IP \fIbacklog\fR
-The maximum length the queue of pending connections,
+The maximum length of the queue of pending connections,
 as defined by the \fBlisten\fR(2) system call.
 .SH "DUMP FILE FORMAT"
 .na
index d1f7f92cba9540d435a90d9d316ad15906938db2..07725be38254dff9b8257f93a1d42007bac970a5 100644 (file)
@@ -35,7 +35,7 @@ or SQL, the same lookups are done as for ordinary indexed files.
 
 Alternatively, the table can be provided as a regular\-expression
 map where patterns are given as regular expressions, or lookups
-can be directed to TCP\-based server. In those cases, the lookups
+can be directed to TCP\-based server. In those cases, the lookups
 are done in a slightly different way as described below under
 "REGULAR EXPRESSION TABLES" or "TCP\-BASED TABLES".
 .SH "CASE FOLDING"
@@ -219,7 +219,7 @@ Prior to Postfix 2.6, the SMTP reply code is 450.
 .sp
 This feature is available in Postfix 2.1 and later.
 .IP "\fBDEFER_IF_PERMIT \fIoptional text...\fR
-Defer the request if some later restriction would result in a
+Defer the request if some later restriction would result in
 an explicit or implicit PERMIT action.
 Reply with "\fB$access_map_defer_code 4.7.1 \fI optional
 text...\fR" when the
index f467ad42cfd3da53677c335a30c18145d5e2ed7a..e9876643b4a55510948caef8dae20511b588762a 100644 (file)
@@ -33,7 +33,7 @@ or SQL, the same lookups are done as for ordinary indexed files.
 
 Alternatively, the table can be provided as a regular\-expression
 map where patterns are given as regular expressions, or lookups
-can be directed to TCP\-based server. In those cases, the lookups
+can be directed to TCP\-based server. In those cases, the lookups
 are done in a slightly different way as described below under
 "REGULAR EXPRESSION TABLES" or "TCP\-BASED TABLES".
 
@@ -250,7 +250,7 @@ Optional list of domains whose subdomain structure will be stripped
 off in email addresses.
 .IP "\fBmasquerade_exceptions (empty)\fR"
 Optional list of user names that are not subjected to address
-masquerading, even when their address matches $masquerade_domains.
+masquerading, even when their addresses match $masquerade_domains.
 .IP "\fBmydestination ($myhostname, localhost.$mydomain, localhost)\fR"
 The list of domains that are delivered via the $local_transport
 mail delivery transport.
index 2e182ee5be46fa30bcf9d75444fc5c970674f954..31ddfd46962e7500c0af7e0d3e510fd38bf80a1a 100644 (file)
@@ -138,6 +138,10 @@ in\-memory file:
 .fi
 
 Postfix parses the result as if it is a file in /etc/postfix.
+
+Note: if a rule contains \fB$\fR, specify \fB$$\fR to keep
+Postfix from trying to do \fI$name\fR expansion as it
+evaluates a parameter value.
 .SH "EXAMPLE SMTPD ACCESS MAP"
 .na
 .nf
index 7fc08623cad69d3505ab4857cdc25b2126a30f0d..6e891eb84b575248d0dd0a97e409585b6b5fffa9 100644 (file)
@@ -47,7 +47,7 @@ or SQL, the same lookups are done as for ordinary indexed files.
 
 Alternatively, the table can be provided as a regular\-expression
 map where patterns are given as regular expressions, or lookups
-can be directed to TCP\-based server. In those case, the lookups
+can be directed to a TCP\-based server. In those cases, the lookups
 are done in a slightly different way as described below under
 "REGULAR EXPRESSION TABLES" or "TCP\-BASED TABLES".
 .SH "CASE FOLDING"
@@ -154,7 +154,7 @@ pattern can be interpolated as \fB$1\fR, \fB$2\fR and so on.
 This section describes how the table lookups change when lookups
 are directed to a TCP\-based server. For a description of the TCP
 client/server lookup protocol, see \fBtcp_table\fR(5).
-This feature is not available up to and including Postfix version 2.4.
+This feature is available in Postfix 2.5 and later.
 
 Each lookup operation uses the entire address once.  Thus,
 \fIuser@domain\fR mail addresses are not broken up into their
@@ -204,29 +204,32 @@ The table format does not understand quoting conventions.
 The following \fBmain.cf\fR parameters are especially relevant.
 The text below provides only a parameter summary. See
 \fBpostconf\fR(5) for more details including examples.
-.IP \fBsmtp_generic_maps\fR
-Address mapping lookup table for envelope and header sender
-and recipient addresses while delivering mail via SMTP.
-.IP \fBpropagate_unmatched_extensions\fR
-A list of address rewriting or forwarding mechanisms that propagate
-an address extension from the original address to the result.
-Specify zero or more of \fBcanonical\fR, \fBvirtual\fR, \fBalias\fR,
-\fBforward\fR, \fBinclude\fR, or \fBgeneric\fR.
+.IP "\fBsmtp_generic_maps (empty)\fR"
+Optional lookup tables that perform address rewriting in the
+Postfix SMTP client, typically to transform a locally valid address into
+a globally valid address when sending mail across the Internet.
+.IP "\fBpropagate_unmatched_extensions (canonical, virtual)\fR"
+What address lookup tables copy an address extension from the lookup
+key to the lookup result.
 .PP
 Other parameters of interest:
-.IP \fBinet_interfaces\fR
-The network interface addresses that this system receives mail on.
-You need to stop and start Postfix when this parameter changes.
-.IP \fBproxy_interfaces\fR
-Other interfaces that this machine receives mail on by way of a
-proxy agent or network address translator.
-.IP \fBmydestination\fR
-List of domains that this mail system considers local.
-.IP \fBmyorigin\fR
-The domain that is appended to locally\-posted mail.
-.IP \fBowner_request_special\fR
-Give special treatment to \fBowner\-\fIxxx\fR and \fIxxx\fB\-request\fR
-addresses.
+.IP "\fBinet_interfaces (all)\fR"
+The network interface addresses that this mail system receives
+mail on.
+.IP "\fBproxy_interfaces (empty)\fR"
+The network interface addresses that this mail system receives mail
+on by way of a proxy or network address translation unit.
+.IP "\fBmydestination ($myhostname, localhost.$mydomain, localhost)\fR"
+The list of domains that are delivered via the $local_transport
+mail delivery transport.
+.IP "\fBmyorigin ($myhostname)\fR"
+The domain name that locally\-posted mail appears to come
+from, and that locally posted mail is delivered to.
+.IP "\fBowner_request_special (yes)\fR"
+Enable special treatment for owner\-\fIlistname\fR entries in the
+\fBaliases\fR(5) file, and don't split owner\-\fIlistname\fR and
+\fIlistname\fR\-request address localparts when the recipient_delimiter
+is set to "\-".
 .SH "SEE ALSO"
 .na
 .nf
index a3e95e81705b6985764a8c5490607942ecd0c2be..464f51795d77559f6a216c8b8d0e66835bbaf0af 100644 (file)
@@ -156,9 +156,9 @@ Otherwise, the search is suppressed and returns no results.
 For the \fBsearch_base\fR parameter, the upper\-case equivalents
 of the above expansions behave identically to their lower\-case
 counter\-parts. With the \fBresult_format\fR parameter (previously
-called \fBresult_filter\fR see the COMPATIBILITY section and below),
-they expand to the corresponding components of input key rather
-than the result value.
+called \fBresult_filter\fR see the OTHER OBSOLETE FEATURES section
+and below), they expand to the corresponding components of input
+key rather than the result value.
 .IP "\fB%[1\-9]\fR"
 The patterns %1, %2, ... %9 are replaced by the corresponding
 most significant component of the input key's domain. If the
@@ -199,9 +199,9 @@ Otherwise, the search is suppressed and returns no results.
 The upper\-case equivalents of the above expansions behave in the
 \fBquery_filter\fR parameter identically to their lower\-case
 counter\-parts. With the \fBresult_format\fR parameter (previously
-called \fBresult_filter\fR see the COMPATIBILITY section and below),
-they expand to the corresponding components of input key rather
-than the result value.
+called \fBresult_filter\fR see the OTHER OBSOLETE FEATURES section
+and below), they expand to the corresponding components of input
+key rather than the result value.
 .IP
 The above %S, %U and %D expansions are available with Postfix 2.2
 and later.
@@ -278,7 +278,7 @@ with old configuration files.
 NOTE: DO NOT put quotes around the result format!
 .IP "\fBdomain (default: no domain list)\fR"
 This is a list of domain names, paths to files, or
-dictionaries. When specified, only fully qualified search
+"type:table" databases. When specified, only fully qualified search
 keys with a *non\-empty* localpart and a matching domain
 are eligible for lookup: 'user' lookups, bare domain lookups
 and "@domain" lookups are not performed. This can significantly
index d17b1797ca7ff474214178bc95d44edfc2464928..48fd4fd4567f081496aec786c905dd250f29eedc 100644 (file)
@@ -135,7 +135,7 @@ main.cf file).
 .sp
 The \fBlocal\fR(8), \fBpipe\fR(8), \fBspawn\fR(8), and
 \fBvirtual\fR(8) daemons require privileges.
-.IP "\fBChroot (default: Postfix >= 3.0: n, Postfix <3.0: y)\fR"
+.IP "\fBChroot (default: Postfix >= 3.0: n, Postfix < 3.0: y)\fR"
 Whether or not the service runs chrooted to the mail queue
 directory (pathname is controlled by the \fBqueue_directory\fR
 configuration variable in the main.cf file).
index 64753182ca2dbe7fb1db2e92511932c3394035c1..6c62b210a007432052e6000320e57a285fe904a4 100644 (file)
@@ -22,7 +22,7 @@ Alternatively, lookup tables can be specified as MySQL databases.
 In order to use MySQL lookups, define a MySQL source as a lookup
 table in main.cf, for example:
 .nf
-    alias_maps = mysql:/etc/mysql\-aliases.cf
+    alias_maps = mysql:/etc/postfix/mysql\-aliases.cf
 .fi
 
 The file /etc/postfix/mysql\-aliases.cf has the same format as
@@ -56,8 +56,9 @@ return the key itself or a constant value.
 .IP "\fBhosts\fR"
 The hosts that Postfix will try to connect to and query from.
 Specify \fIunix:\fR for UNIX domain sockets, \fIinet:\fR for TCP
-connections (default).  Example:
+connections (default).  Examples:
 .nf
+    hosts = inet:host1.some.domain inet:host2.some.domain:port
     hosts = host1.some.domain host2.some.domain:port
     hosts = unix:/file/name
 .fi
@@ -200,10 +201,10 @@ This parameter is available with Postfix 2.2 and later.
 
 NOTE: DO NOT put quotes around the result format!
 .IP "\fBdomain (default: no domain list)\fR"
-This is a list of domain names, paths to files, or
-dictionaries. When specified, only fully qualified search
-keys with a *non\-empty* localpart and a matching domain
-are eligible for lookup: 'user' lookups, bare domain lookups
+This is a list of domain names, paths to files, or "type:table"
+databases. When specified, only fully qualified search keys
+with a *non\-empty* localpart and a matching domain are
+eligible for lookup: 'user' lookups, bare domain lookups
 and "@domain" lookups are not performed. This can significantly
 reduce the query load on the MySQL server.
 .nf
index a55f2db31c3579bf7207b5ab76203aee107d1d98..150115245eb4fa88a0f3fab6b8c657898c2a6f39 100644 (file)
@@ -22,7 +22,7 @@ Alternatively, lookup tables can be specified as PostgreSQL
 databases.  In order to use PostgreSQL lookups, define a
 PostgreSQL source as a lookup table in main.cf, for example:
 .nf
-    alias_maps = pgsql:/etc/pgsql\-aliases.cf
+    alias_maps = pgsql:/etc/postfix/pgsql\-aliases.cf
 .fi
 
 The file /etc/postfix/pgsql\-aliases.cf has the same format as
@@ -63,6 +63,7 @@ are accepted and ignored for backwards compatibility.
 Examples:
 .nf
     hosts = postgresql://username@example.com/tablename?sslmode=require
+    hosts = inet:host1.some.domain inet:host2.some.domain:port
     hosts = host1.some.domain host2.some.domain:port
     hosts = unix:/file/name
 .fi
@@ -140,7 +141,7 @@ in prior releases the precedence was, from highest to lowest,
 \fBselect_function\fR, \fBquery\fR, \fBselect_field\fR, ...
 
 With Postfix 2.2 the \fBquery\fR parameter has highest precedence,
-see COMPATIBILITY above.
+see OBSOLETE QUERY INTERFACES below.
 
 NOTE: DO NOT put quotes around the \fBquery\fR parameter.
 .IP "\fBresult_format (default: \fB%s\fR)\fR"
@@ -186,8 +187,8 @@ This parameter is available with Postfix 2.2 and later.
 
 NOTE: DO NOT put quotes around the result format!
 .IP "\fBdomain (default: no domain list)\fR"
-This is a list of domain names, paths to files, or
-dictionaries. When specified, only fully qualified search
+This is a list of domain names, paths to files, or "type:table"
+databases. When specified, only fully qualified search
 keys with a *non\-empty* localpart and a matching domain
 are eligible for lookup: 'user' lookups, bare domain lookups
 and "@domain" lookups are not performed. This can significantly
index 3c70222535fe6263614f61ae91cebeac3ad44c33..cf04f37eff525b1972e278303c6fc1fd2631bafd 100644 (file)
@@ -113,8 +113,10 @@ logged as "partial" when the daemon terminates early after "\fBpostfix
 reload\fR", "\fBpostfix stop\fR", or no requests for $max_idle
 seconds.
 .PP
-Time units: s (seconds), m (minutes), h (hours), d (days), w
-(weeks).
+Specify a non\-negative time value (an integral value plus an optional
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is h (hours).
 .PP
 This feature is available in Postfix 2.7.
 .SH address_verify_default_transport (default: $default_transport)
@@ -138,7 +140,7 @@ memory which is lost after "\fBpostfix reload\fR" or "\fBpostfix
 stop\fR". This is the default with Postfix version 2.6 and earlier.
 .PP
 Specify a location in a file system that will not fill up. If the
-database becomes corrupted, the world comes to an end. To recover
+database becomes corrupted, the world comes to an end. To recover,
 delete (NOT: truncate) the file and do "\fBpostfix reload\fR".
 .PP
 Postfix daemon processes do not use root privileges when opening
@@ -171,14 +173,20 @@ This feature is available in Postfix 2.1 and later.
 The time after which a failed probe expires from the address
 verification cache.
 .PP
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
+Specify a non\-zero time value (an integral value plus an optional
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is d (days).
 .PP
 This feature is available in Postfix 2.1 and later.
 .SH address_verify_negative_refresh_time (default: 3h)
 The time after which a failed address verification probe needs to
 be refreshed.
 .PP
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
+Specify a non\-zero time value (an integral value plus an optional
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is h (hours).
 .PP
 This feature is available in Postfix 2.1 and later.
 .SH address_verify_pending_request_limit (default: see "postconf \-d" output)
@@ -225,14 +233,20 @@ verification request in progress.
 .PP
 The default polling delay is 3 seconds.
 .PP
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
+Specify a non\-zero time value (an integral value plus an optional
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).
 .PP
 This feature is available in Postfix 2.1 and later.
 .SH address_verify_positive_expire_time (default: 31d)
 The time after which a successful probe expires from the address
 verification cache.
 .PP
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
+Specify a non\-zero time value (an integral value plus an optional
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is d (days).
 .PP
 This feature is available in Postfix 2.1 and later.
 .SH address_verify_positive_refresh_time (default: 7d)
@@ -240,7 +254,10 @@ The time after which a successful address verification probe needs
 to be refreshed.  The address verification status is not updated
 when the probe fails (optimistic caching).
 .PP
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
+Specify a non\-zero time value (an integral value plus an optional
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is d (days).
 .PP
 This feature is available in Postfix 2.1 and later.
 .SH address_verify_relay_transport (default: $relay_transport)
@@ -299,11 +316,14 @@ caused such addresses to end up on spammer mailing lists, and has
 resulted in wasted network and processing resources.
 .PP
 To enable time\-dependent probe sender addresses, specify a
-non\-zero time value (an integral value plus an optional one\-letter
-suffix that specifies the time unit).  Specify a value of at least
-several hours, to avoid problems with senders that use greylisting.
-Avoid nice TTL values, to make the result less predictable.  Time
-units are: s (seconds), m (minutes), h (hours), d (days), w (weeks).
+non\-zero time value. Specify a value of at least several hours,
+to avoid problems with senders that use greylisting. Avoid nice
+TTL values, to make the result less predictable.
+.PP
+Specify a non\-negative time value (an integral value plus an optional
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).
 .PP
 This feature is available in Postfix 2.9 and later.
 .SH address_verify_service_name (default: verify)
@@ -506,16 +526,20 @@ The default interval is relatively short. Because of the high
 frequency of updates, the \fBanvil\fR(8) server uses volatile memory
 only. Thus, information is lost whenever the process terminates.
 .PP
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
+Specify a non\-zero time value (an integral value plus an optional
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
 The default time unit is s (seconds).
 .SH anvil_status_update_time (default: 600s)
 How frequently the \fBanvil\fR(8) connection and rate limiting server
 logs peak usage information.
 .PP
-This feature is available in Postfix 2.2 and later.
-.PP
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
+Specify a non\-zero time value (an integral value plus an optional
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
 The default time unit is s (seconds).
+.PP
+This feature is available in Postfix 2.2 and later.
 .SH append_at_myorigin (default: yes)
 With locally submitted mail, append the string "@$myorigin" to mail
 addresses without domain information. With remotely submitted mail,
@@ -566,7 +590,9 @@ To get the behavior before Postfix version 2.2, specify
 How long the \fBpostkick\fR(1) command waits for a request to enter the
 Postfix daemon process input buffer before giving up.
 .PP
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
+Specify a non\-zero time value (an integral value plus an optional
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
 The default time unit is s (seconds).
 .PP
 This feature is available in Postfix 2.1 and later.
@@ -741,7 +767,9 @@ 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).
+Specify a non\-negative time value (an integral value plus an optional
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
 The default time unit is d (days).
 .PP
 Specify 0 when mail delivery should be tried only once.
@@ -772,7 +800,7 @@ message size exceeds a local or remote MTA's message size limit.
 .SH bounce_template_file (default: empty)
 Pathname of a configuration file with bounce message templates.
 These override the built\-in templates of delivery status notification
-(DSN) messages for undeliverable mail, for delayed mail, successful
+(DSN) messages for undeliverable mail, delayed mail, successful
 delivery, or delivery verification. The \fBbounce\fR(5) manual page
 describes how to edit and test template files.
 .PP
@@ -855,7 +883,7 @@ This feature is available in Postfix 2.0 and later.
 The location of all postfix administrative commands.
 .SH command_execution_directory (default: empty)
 The \fBlocal\fR(8) delivery agent working directory for delivery to
-external command.  Failure to change directory causes the delivery
+external commands.  Failure to change directory causes the delivery
 to be deferred.
 .PP
 The command_execution_directory value is not subject to Postfix
@@ -892,11 +920,17 @@ address (Postfix 2.11 and later), or the system\-wide recipient
 address extension delimiter (Postfix 2.10 and earlier).
 .br
 .IP "\fB${name?value}\fR"
+.IP "\fB${name?{value}}\fR (Postfix >= 3.0)"
 Expands to \fIvalue\fR when \fI$name\fR is non\-empty.
 .br
 .IP "\fB${name:value}\fR"
+.IP "\fB${name:{value}}\fR (Postfix >= 3.0)"
 Expands to \fIvalue\fR when \fI$name\fR is empty.
 .br
+.IP "\fB${name?{value1}:{value2}}\fR (Postfix >= 3.0)"
+Expands to \fIvalue1\fR when \fI$name\fR is non\-empty,
+\fIvalue2\fR otherwise.
+.br
 .br
 .PP
 Instead of $name you can also specify ${name} or $(name).
@@ -1105,7 +1139,9 @@ This feature is available in Postfix 2.9 and later.
 How much time a Postfix daemon process may take to handle a
 request before it is terminated by a built\-in watchdog timer.
 .PP
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
+Specify a non\-zero time value (an integral value plus an optional
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
 The default time unit is s (seconds).
 .SH data_directory (default: see "postconf \-d" output)
 The directory with Postfix\-writable data files (for example:
@@ -1193,7 +1229,7 @@ for each message. One message can be preempted by another one when
 the other message can be delivered using no more delivery slots
 (i.e., invocations of delivery agents) than the current message
 counter has accumulated (or will eventually accumulate \- see about
-slot loans below). This parameter controls how often is the counter
+slot loans below). This parameter controls how often the counter is
 incremented \- it happens after each default_delivery_slot_cost
 recipients have been delivered.
 .PP
@@ -1232,8 +1268,8 @@ settings.
 This parameter speeds up the moment when a message preemption can
 happen. Instead of waiting until the full amount of delivery slots
 required is available, the preemption can happen when
-transport_delivery_slot_discount percent of the required amount
-plus transport_delivery_slot_loan still remains to be accumulated.
+\fItransport\fR_delivery_slot_discount percent of the required amount
+plus \fItransport\fR_delivery_slot_loan still remains to be accumulated.
 Note that the full amount will still have to be accumulated before
 another preemption can take place later.
 .PP
@@ -1380,7 +1416,7 @@ is compatible with earlier Postfix versions.
 The default maximal number of parallel deliveries to the same
 destination.  This is the default limit for delivery via the \fBlmtp\fR(8),
 \fBpipe\fR(8), \fBsmtp\fR(8) and \fBvirtual\fR(8) delivery agents.
-With per\-destination recipient limit > 1, a destination is a domain,
+With per\-destination recipient limit > 1, a destination is a domain,
 otherwise it is a recipient.
 .PP
 Use \fItransport\fR_destination_concurrency_limit to specify a
@@ -1540,7 +1576,7 @@ The default value for the extra per\-transport limit imposed on the
 number of in\-memory recipients.  This extra recipient space is
 reserved for the cases when the Postfix queue manager's scheduler
 preempts one message with another and suddenly needs some extra
-recipients slots for the chosen message in order to avoid performance
+recipient slots for the chosen message in order to avoid performance
 degradation.
 .PP
 Use \fItransport\fR_extra_recipient_limit to specify a
@@ -1566,7 +1602,7 @@ transport\-specific override, where \fItransport\fR is the master.cf
 name of the message delivery transport.
 .SH default_privs (default: nobody)
 The default rights used by the \fBlocal\fR(8) delivery agent for delivery
-to external file or command.  These rights are used when delivery
+to an external file or command.  These rights are used when delivery
 is requested from an \fBaliases\fR(5) file that is owned by \fBroot\fR, or
 when delivery is done on behalf of \fBroot\fR. \fBDO NOT SPECIFY A
 PRIVILEGED USER OR THE POSTFIX OWNER\fR.
@@ -1640,11 +1676,17 @@ The sender domain or empty string.
 .IP "\fB$sender_name\fR"
 The sender address localpart or <> in case of the null address.
 .br
-.IP "\fB${name?text}\fR"
-Expands to `text' if $name is not empty.
+.IP "\fB${name?value}\fR"
+.IP "\fB${name?{value}}\fR (Postfix >= 3.0)"
+Expands to \fIvalue\fR when \fI$name\fR is non\-empty.
+.br
+.IP "\fB${name:value}\fR"
+.IP "\fB${name:{value}}\fR (Postfix >= 3.0)"
+Expands to \fIvalue\fR when \fI$name\fR is empty.
 .br
-.IP "\fB${name:text}\fR"
-Expands to `text' if $name is empty.
+.IP "\fB${name?{value1}:{value2}}\fR (Postfix >= 3.0)"
+Expands to \fIvalue1\fR when \fI$name\fR is non\-empty,
+\fIvalue2\fR otherwise.
 .br
 .br
 .PP
@@ -1675,10 +1717,10 @@ Use \fItransport\fR_recipient_limit to specify a
 transport\-specific override, where \fItransport\fR is the master.cf
 name of the message delivery transport.
 .SH default_recipient_refill_delay (default: 5s)
-The default per\-transport maximum delay between recipients refills.
-When not all message recipients fit into the memory at once, keep loading
+The default per\-transport maximum delay between refilling recipients.
+When not all message recipients fit into memory at once, keep loading
 more of them at least once every this many seconds.  This is used to
-make sure the recipients are refilled in timely manner even when
+make sure the recipients are refilled in timely manner even when
 $default_recipient_refill_limit is too high for too slow deliveries.
 .PP
 Use \fItransport\fR_recipient_refill_delay to specify a
@@ -1688,7 +1730,7 @@ name of the message delivery transport.
 This feature is available in Postfix 2.4 and later.
 .SH default_recipient_refill_limit (default: 100)
 The default per\-transport limit on the number of recipients refilled at
-once.  When not all message recipients fit into the memory at once, keep
+once.  When not all message recipients fit into memory at once, keep
 loading more of them in batches of at least this many at a time.  See also
 $default_recipient_refill_delay, which may result in recipient batches
 lower than this when this limit is too high for too slow deliveries.
@@ -1762,8 +1804,9 @@ This feature is available in Postfix 3.1 and later.
 .SH default_verp_delimiters (default: +=)
 The two default VERP delimiter characters. These are used when
 no explicit delimiters are specified with the SMTP XVERP command
-or with the "\fBsendmail \-V\fR" command\-line option. Specify
-characters that are allowed by the verp_delimiter_filter setting.
+or with the "\fBsendmail \-XV\fR" command\-line option (Postfix 2.2
+and earlier: \fB\-V\fR). Specify characters that are allowed by the
+verp_delimiter_filter setting.
 .PP
 This feature is available in Postfix 1.1 and later.
 .SH defer_code (default: 450)
@@ -1780,7 +1823,7 @@ This feature is available in Postfix 2.0 and later.
 .SH defer_transports (default: empty)
 The names of message delivery transports that should not deliver mail
 unless someone issues "\fBsendmail \-q\fR" or equivalent. Specify zero
-or more names of mail delivery transports names that appear in the
+or more mail delivery transport names that appear in the
 first field of master.cf.
 .PP
 Example:
@@ -1796,7 +1839,7 @@ defer_transports = smtp
 The maximal number of digits after the decimal point when logging
 sub\-second delay values.  Specify a number in the range 0..6.
 .PP
-Large delay values are rounded off to an integral number seconds;
+Large delay values are rounded off to an integral number of seconds;
 delay values below the delay_logging_resolution_limit are logged
 as "0", and delay values under 100s are logged with at most two\-digit
 precision.
@@ -1839,7 +1882,9 @@ mailbox file or \fBbounce\fR(8) logfile.
 The time between attempts to acquire an exclusive lock on a mailbox
 file or \fBbounce\fR(8) logfile.
 .PP
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
+Specify a non\-zero time value (an integral value plus an optional
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
 The default time unit is s (seconds).
 .SH destination_concurrency_feedback_debug (default: no)
 Make the queue manager's feedback algorithm verbose for performance
@@ -2296,8 +2341,10 @@ The maximal number of attempts to fork() a child process.
 .SH fork_delay (default: 1s)
 The delay between attempts to fork() a child process.
 .PP
-Time units: s (seconds), m (minutes), h (hours), d (days), w
-(weeks).  The default time unit is s (seconds).
+Specify a non\-zero time value (an integral value plus an optional
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).
 .SH forward_expansion_filter (default: see "postconf \-d" output)
 Restrict the characters that the \fBlocal\fR(8) delivery agent allows in
 $name expansions of $forward_path.  Characters outside the
@@ -2340,11 +2387,17 @@ address (Postfix 2.11 and later), or the system\-wide recipient
 address extension delimiter (Postfix 2.10 and earlier).
 .br
 .IP "\fB${name?value}\fR"
+.IP "\fB${name?{value}}\fR (Postfix >= 3.0)"
 Expands to \fIvalue\fR when \fI$name\fR is non\-empty.
 .br
 .IP "\fB${name:value}\fR"
+.IP "\fB${name:{value}}\fR (Postfix >= 3.0)"
 Expands to \fIvalue\fR when \fI$name\fR is empty.
 .br
+.IP "\fB${name?{value1}:{value2}}\fR (Postfix >= 3.0)"
+Expands to \fIvalue1\fR when \fI$name\fR is non\-empty,
+\fIvalue2\fR otherwise.
+.br
 .br
 .PP
 Instead of $name you can also specify ${name} or $(name).
@@ -2412,7 +2465,7 @@ message headers, as specified in the \fBheader_checks\fR(5) manual page.
 .SH header_from_format (default: standard)
 The format of the Postfix\-generated \fBFrom:\fR header. This
 setting affects the appearance of 'full name' information when a
-local program such as /bin/mail submits a message without From:
+local program such as /bin/mail submits a message without From:
 header through the Postfix \fBsendmail\fR(1) command.
 .PP
 Specify one of the following:
@@ -2491,11 +2544,11 @@ Specify "ignore_mx_lookup_error = yes" to force a DNS A record
 lookup instead. This violates the SMTP standard and can result in
 mis\-delivery of mail.
 .SH import_environment (default: see "postconf \-d" output)
-The list of environment parameters that a privileged Postfix
+The list of environment variables that a privileged Postfix
 process will import from a non\-Postfix parent process, or name=value
 environment overrides.  Unprivileged utilities will enforce the
 name=value overrides, but otherwise will not change their process
-environment.  Examples of relevant parameters:
+environment.  Examples of relevant environment variables:
 .IP "\fBTZ\fR"
 May be needed for sane time keeping on most System\-V\-ish systems.
 .br
@@ -2512,7 +2565,7 @@ Needed to make "\fBpostfix \-c\fR" work.
 .PP
 Specify a list of names and/or name=value pairs, separated by
 whitespace or comma. Specify "{ name=value }" to protect whitespace
-or comma in parameter values (whitespace after the opening "{" and
+or comma in environment variable values (whitespace after the opening "{" and
 before the closing "}"
 is ignored). The form name=value is supported with Postfix version
 2.1 and later; the use of {} is supported with Postfix 3.0 and
@@ -2720,7 +2773,9 @@ example, by the Postfix address resolving and rewriting clients.
 .PP
 With Postfix 2.4 the default value was reduced from 100s to 5s.
 .PP
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
+Specify a non\-zero time value (an integral value plus an optional
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
 The default time unit is s (seconds).
 .SH ipc_timeout (default: 3600s)
 The time limit for sending or receiving information over an internal
@@ -2728,7 +2783,9 @@ communication channel.  The purpose is to break out of deadlock
 situations. If the time limit is exceeded the software aborts with a
 fatal error.
 .PP
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
+Specify a non\-zero time value (an integral value plus an optional
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
 The default time unit is s (seconds).
 .SH ipc_ttl (default: 1000s)
 The time after which a client closes an active internal communication
@@ -2737,7 +2794,9 @@ terminate voluntarily
 after reaching their client limit.  This is used, for example, by
 the Postfix address resolving and rewriting clients.
 .PP
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
+Specify a non\-zero time value (an integral value plus an optional
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
 The default time unit is s (seconds).
 .PP
 This feature is available in Postfix 2.1 and later.
@@ -2836,7 +2895,7 @@ command.
 .br
 .PP
 Most of these limitations have been with the Postfix
-connection cache that is shared among multiple LMTP client
+connection cache that is shared among multiple LMTP client
 programs.
 .SH lmtp_cname_overrides_servername (default: yes)
 The LMTP\-specific version of the smtp_cname_overrides_servername
@@ -2849,7 +2908,9 @@ zero (use the operating system built\-in time limit).  When no
 connection can be made within the deadline, the LMTP client tries
 the next address on the mail exchanger list.
 .PP
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
+Specify a non\-negative time value (an integral value plus an optional
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
 The default time unit is s (seconds).
 .PP
 Example:
@@ -2893,14 +2954,18 @@ and for receiving the remote LMTP server response.  When no response
 is received within the deadline, a warning is logged that the mail
 may be delivered multiple times.
 .PP
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
+Specify a non\-zero time value (an integral value plus an optional
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
 The default time unit is s (seconds).
 .SH lmtp_data_init_timeout (default: 120s)
 The Postfix LMTP client time limit for sending the LMTP DATA command,
 and
 for receiving the remote LMTP server response.
 .PP
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
+Specify a non\-zero time value (an integral value plus an optional
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
 The default time unit is s (seconds).
 .SH lmtp_data_xfer_timeout (default: 180s)
 The Postfix LMTP client time limit for sending the LMTP message
@@ -2908,7 +2973,9 @@ content.
 When the connection stalls for more than $lmtp_data_xfer_timeout
 the LMTP client terminates the transfer.
 .PP
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
+Specify a non\-zero time value (an integral value plus an optional
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
 The default time unit is s (seconds).
 .SH lmtp_defer_if_no_mx_address_found (default: no)
 The LMTP\-specific version of the smtp_defer_if_no_mx_address_found
@@ -3014,7 +3081,7 @@ This feature is available in Postfix 2.3 and later.
 The hostname to send in the LMTP LHLO command.
 .PP
 The default value is the machine hostname.  Specify a hostname or
-[ip.add.re.ss].
+[ip.add.re.ss] or [ip:v6:add:re::ss].
 .PP
 This information can be specified in the main.cf file for all LMTP
 clients, or it can be specified in the master.cf file for a specific
@@ -3047,7 +3114,9 @@ This feature is available in Postfix 2.3 and later.
 The Postfix LMTP client time limit for sending the MAIL FROM command,
 and for receiving the remote LMTP server response.
 .PP
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
+Specify a non\-zero time value (an integral value plus an optional
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
 The default time unit is s (seconds).
 .SH lmtp_mime_header_checks (default: empty)
 The LMTP\-specific version of the smtp_mime_header_checks
@@ -3108,7 +3177,9 @@ This feature is available in Postfix 2.4 and later.
 The Postfix LMTP client time limit for sending the QUIT command,
 and for receiving the remote LMTP server response.
 .PP
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
+Specify a non\-zero time value (an integral value plus an optional
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
 The default time unit is s (seconds).
 .SH lmtp_quote_rfc821_envelope (default: yes)
 The LMTP\-specific version of the smtp_quote_rfc821_envelope
@@ -3124,7 +3195,9 @@ This feature is available in Postfix 2.3 and later.
 The Postfix LMTP client time limit for sending the RCPT TO command,
 and for receiving the remote LMTP server response.
 .PP
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
+Specify a non\-zero time value (an integral value plus an optional
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
 The default time unit is s (seconds).
 .SH lmtp_reply_filter (default: empty)
 The LMTP\-specific version of the smtp_reply_filter
@@ -3138,7 +3211,9 @@ sends RSET in
 order to finish a recipient address probe, or to verify that a
 cached connection is still alive.
 .PP
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
+Specify a non\-zero time value (an integral value plus an optional
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
 The default time unit is s (seconds).
 .SH lmtp_sasl_auth_cache_name (default: empty)
 The LMTP\-specific version of the smtp_sasl_auth_cache_name
@@ -3190,7 +3265,7 @@ active attacks.
 .br
 .IP "\fBnodictionary\fR"
 Disallow authentication methods that are vulnerable to passive
-dictionary attack.
+dictionary attacks.
 .br
 .IP "\fBnoanonymous\fR"
 Disallow anonymous logins.
@@ -3233,7 +3308,7 @@ Send an XFORWARD command to the remote LMTP server when the LMTP LHLO
 server response announces XFORWARD support.  This allows an \fBlmtp\fR(8)
 delivery agent, used for content filter message injection, to
 forward the name, address, protocol and HELO name of the original
-client to the content filter and downstream queuing LMTP server.
+client to the content filter and downstream LMTP server.
 Before you change the value to yes, it is best to make sure that
 your content filter supports this command.
 .PP
@@ -3442,12 +3517,14 @@ and for receiving the remote LMTP server response.
 In case of problems the client does NOT try the next address on
 the mail exchanger list.
 .PP
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
+Specify a non\-zero time value (an integral value plus an optional
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
 The default time unit is s (seconds).
 .PP
 This feature is available in Postfix 2.1 and later.
 .SH local_command_shell (default: empty)
-Optional shell program for \fBlocal\fR(8) delivery to non\-Postfix command.
+Optional shell program for \fBlocal\fR(8) delivery to non\-Postfix commands.
 By default, non\-Postfix commands are executed directly; commands
 are given to the default shell (typically, /bin/sh) only when they
 contain shell meta characters or shell built\-in commands.
@@ -3648,7 +3725,7 @@ Examples:
     # send mail as themselves. Use "uid:" followed by the numerical
     # UID when the UID has no entry in the UNIX password file.
     local_login_sender_maps =
-        inline:{ { root = *}, { postfix = * } },
+        inline:{ { root = * }, { postfix = * } },
         pcre:/etc/postfix/login_senders
 .fi
 .ad
@@ -3659,7 +3736,7 @@ Examples:
 .ft C
 /etc/postfix/login_senders:
    # Allow both the bare username and the user@domain forms.
-    /(.+)/ $1 $1@example.com/
+    /(.+)/ $1 $1@example.com
 .fi
 .ad
 .ft R
@@ -3765,10 +3842,16 @@ The recipient's login shell.
 The recipient username.
 .br
 .IP "\fB${name?value}\fR"
-Expands to \fIvalue\fR when \fI$name\fR has a non\-empty value.
+.IP "\fB${name?{value}}\fR (Postfix >= 3.0)"
+Expands to \fIvalue\fR when \fI$name\fR is non\-empty.
 .br
 .IP "\fB${name:value}\fR"
-Expands to \fIvalue\fR when \fI$name\fR has an empty value.
+.IP "\fB${name:{value}}\fR (Postfix >= 3.0)"
+Expands to \fIvalue\fR when \fI$name\fR is empty.
+.br
+.IP "\fB${name?{value1}:{value2}}\fR (Postfix >= 3.0)"
+Expands to \fIvalue1\fR when \fI$name\fR is non\-empty,
+\fIvalue2\fR otherwise.
 .br
 .br
 .PP
@@ -3960,7 +4043,8 @@ The maximal size of any \fBlocal\fR(8) individual mailbox or maildir
 file, or zero (no limit).  In fact, this limits the size of any
 file that is written to upon local delivery, including files written
 by external commands that are executed by the \fBlocal\fR(8) delivery
-agent.
+agent. The value cannot exceed LONG_MAX (typically, a 32\-bit or
+64\-bit signed integer).
 .PP
 This limit must not be smaller than the message size limit.
 .SH mailbox_transport (default: empty)
@@ -4173,7 +4257,9 @@ parameter
 is ignored by the Postfix queue manager and by other long\-lived
 Postfix daemon processes.
 .PP
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
+Specify a non\-zero time value (an integral value plus an optional
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
 The default time unit is s (seconds).
 .SH max_use (default: 100)
 The maximal number of incoming connections that a Postfix daemon
@@ -4186,14 +4272,18 @@ The maximal time between attempts to deliver a deferred message.
 This parameter should be set to a value greater than or equal
 to $minimal_backoff_time. See also $queue_run_delay.
 .PP
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
+Specify a non\-zero time value (an integral value plus an optional
+one\-letter suffix that specifies the time unit).  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)
 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).
+Specify a non\-negative time value (an integral value plus an optional
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
 The default time unit is d (days).
 .PP
 Specify 0 when mail delivery should be tried only once.
@@ -4233,6 +4323,8 @@ message_reject_characters = \e0
 This feature is available in Postfix 2.3 and later.
 .SH message_size_limit (default: 10240000)
 The maximal size in bytes of a message, including envelope information.
+The value cannot exceed LONG_MAX (typically, a 32\-bit or 64\-bit
+signed integer).
 .PP
 Note: be careful when making changes.  Excessively small values
 will result in the loss of non\-delivery notifications, when a bounce
@@ -4281,10 +4373,9 @@ The time limit for sending an SMTP command to a Milter (mail
 filter) application, and for receiving the response.
 .PP
 Specify a non\-zero time value (an integral value plus an optional
-one\-letter suffix that specifies the time unit).
-.PP
-Time units: s (seconds), m (minutes), h (hours), d (days), w
-(weeks). The default time unit is s (seconds).
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).
 .PP
 This feature is available in Postfix 2.3 and later.
 .SH milter_connect_macros (default: see "postconf \-d" output)
@@ -4298,10 +4389,9 @@ The time limit for connecting to a Milter (mail filter)
 application, and for negotiating protocol options.
 .PP
 Specify a non\-zero time value (an integral value plus an optional
-one\-letter suffix that specifies the time unit).
-.PP
-Time units: s (seconds), m (minutes), h (hours), d (days), w
-(weeks). The default time unit is s (seconds).
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).
 .PP
 This feature is available in Postfix 2.3 and later.
 .SH milter_content_timeout (default: 300s)
@@ -4309,10 +4399,9 @@ The time limit for sending message content to a Milter (mail
 filter) application, and for receiving the response.
 .PP
 Specify a non\-zero time value (an integral value plus an optional
-one\-letter suffix that specifies the time unit).
-.PP
-Time units: s (seconds), m (minutes), h (hours), d (days), w
-(weeks). The default time unit is s (seconds).
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).
 .PP
 This feature is available in Postfix 2.3 and later.
 .SH milter_data_macros (default: see "postconf \-d" output)
@@ -4406,7 +4495,7 @@ values for arbitrary macros that Postfix may send to Milter
 applications.  These defaults are used when there is no corresponding
 information from the message delivery context.
 .PP
-Specify \fIname=value\fR or \fI{name}=value\fR pairs separated
+Specify \fIname=value\fR or \fI{name=value}\fR pairs separated
 by comma or whitespace.  Enclose a pair in "{}" when a value contains
 comma or whitespace (this form ignores whitespace after the enclosing
 "{", around the "=", and before the enclosing "}").
@@ -4496,7 +4585,9 @@ kept in the short\-term, in\-memory, destination status cache.
 This parameter should be set greater than or equal to
 $queue_run_delay. See also $maximal_backoff_time.
 .PP
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
+Specify a non\-zero time value (an integral value plus an optional
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
 The default time unit is s (seconds).
 .SH multi_instance_directories (default: empty)
 An optional list of non\-default Postfix configuration directories;
@@ -4672,7 +4763,7 @@ block from the list. The form "!/file/name" is supported only
 in Postfix version 2.4 and later.
 .PP
 Note 1: Pattern matching of domain names is controlled by the
-or absence of "mynetworks" in the parent_domain_matches_subdomains
+presence or absence of "mynetworks" in the parent_domain_matches_subdomains
 parameter value.
 .PP
 Note 2: IP version 6 address information must be specified inside
@@ -4703,7 +4794,7 @@ Specify "mynetworks_style = host" when Postfix should
 Specify "mynetworks_style = subnet" when Postfix
 should "trust" remote SMTP clients in the same IP subnetworks as the local
 machine.  On Linux, this works correctly only with interfaces
-specified with the "ifconfig" command.
+specified with the "ifconfig" or "ip" command.
 .IP \(bu
 Specify "mynetworks_style = class" when Postfix should
 "trust" remote SMTP clients in the same IP class A/B/C networks as the
@@ -4748,7 +4839,7 @@ A list of Milter (mail filter) applications for new mail that
 does not arrive via the Postfix \fBsmtpd\fR(8) server. This includes local
 submission via the \fBsendmail\fR(1) command line, new mail that arrives
 via the Postfix \fBqmqpd\fR(8) server, and old mail that is re\-injected
-into the queue with "postsuper \-r".  Specify space or comma as
+into the queue with "postsuper \-r".  Specify space or comma as a
 separator. See the MILTER_README document for details.
 .PP
 This feature is available in Postfix 2.3 and later.
@@ -4933,6 +5024,7 @@ cannot be set under 10s.
 Specify a non\-zero time value (an integral value plus an optional
 one\-letter suffix that specifies the time unit).  Time units: s
 (seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).
 .PP
 This feature is available in Postfix 3.4 and later.
 .SH postmulti_control_commands (default: reload flush)
@@ -5089,7 +5181,7 @@ a bare newline character, that is, a newline not preceded by carriage
 return.  Specify one of the following:
 .IP "\fBignore\fR"
 Ignore the failure of this test. Allow other tests to complete.
-Do \fInot\fR repeat this test before some the result from some
+Do \fInot\fR repeat this test before the result from some
 other test expires.
 This option is useful for testing and collecting statistics
 without blocking mail permanently.
@@ -5124,6 +5216,7 @@ before it can talk to a real Postfix SMTP server.
 Specify a non\-zero time value (an integral value plus an optional
 one\-letter suffix that specifies the time unit).  Time units: s
 (seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is d (days).
 .PP
 This feature is available in Postfix 2.8.
 .SH postscreen_blacklist_action (default: ignore)
@@ -5143,8 +5236,10 @@ logged as "partial" when the daemon terminates early after "\fBpostfix
 reload\fR", "\fBpostfix stop\fR", or no requests for $max_idle
 seconds.
 .PP
-Time units: s (seconds), m (minutes), h (hours), d (days), w
-(weeks).
+Specify a non\-negative time value (an integral value plus an optional
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is h (hours).
 .PP
 This feature is available in Postfix 2.8.
 .SH postscreen_cache_map (default: btree:$data_directory/postscreen_cache)
@@ -5164,8 +5259,10 @@ from being logged as "NEW" just because their cache entry expired
 an hour ago. It also prevents the cache from filling up with clients
 that passed some deep protocol test once and never came back.
 .PP
-Time units: s (seconds), m (minutes), h (hours), d (days), w
-(weeks).
+Specify a non\-zero time value (an integral value plus an optional
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is d (days).
 .PP
 This feature is available in Postfix 2.8.
 .SH postscreen_client_connection_count_limit (default: $smtpd_client_connection_count_limit)
@@ -5289,6 +5386,7 @@ it would be smaller than postscreen_dnsbl_min_ttl.
 Specify a non\-zero time value (an integral value plus an optional
 one\-letter suffix that specifies the time unit).  Time units: s
 (seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is h (hours).
 .PP
 This feature is available in Postfix 3.1. The default setting
 is backwards\-compatible with older Postfix versions.
@@ -5302,10 +5400,11 @@ it would be larger than postscreen_dnsbl_max_ttl.
 Specify a non\-zero time value (an integral value plus an optional
 one\-letter suffix that specifies the time unit).  Time units: s
 (seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).
 .PP
 This feature is available in Postfix 3.1.
 .SH postscreen_dnsbl_reply_map (default: empty)
-A mapping from actual DNSBL domain name which includes a secret
+A mapping from an actual DNSBL domain name which includes a secret
 password, to the DNSBL domain name that postscreen will reply with
 when it rejects mail.  When no mapping is found, the actual DNSBL
 domain will be used.
@@ -5407,6 +5506,11 @@ The time limit for DNSBL or DNSWL lookups. This is separate from
 the timeouts in the \fBdnsblog\fR(8) daemon which are defined by system
 \fBresolver\fR(3) routines.
 .PP
+Specify a non\-zero time value (an integral value plus an optional
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).
+.PP
 This feature is available in Postfix 3.0.
 .SH postscreen_dnsbl_ttl (default: 1h)
 The amount of time that \fBpostscreen\fR(8) will use the result from
@@ -5416,6 +5520,7 @@ IP address is required to pass that test again.
 Specify a non\-zero time value (an integral value plus an optional
 one\-letter suffix that specifies the time unit).  Time units: s
 (seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is h (hours).
 .PP
 This feature is available in Postfix 2.8\-3.0. It was
 replaced by postscreen_dnsbl_max_ttl in Postfix 3.1.
@@ -5485,6 +5590,7 @@ a good client can immediately talk to a real Postfix SMTP server.
 Specify a non\-zero time value (an integral value plus an optional
 one\-letter suffix that specifies the time unit).  Time units: s
 (seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is d (days).
 .PP
 This feature is available in Postfix 2.8.
 .SH postscreen_greet_wait (default: normal: 6s, overload: 2s)
@@ -5494,10 +5600,9 @@ lookup results to arrive (default: up to 2 seconds under stress,
 up to 6 seconds otherwise).
 .PP
 Specify a non\-zero time value (an integral value plus an optional
-one\-letter suffix that specifies the time unit).
-.PP
-Time units: s (seconds), m (minutes), h (hours), d (days), w
-(weeks).
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).
 .PP
 This feature is available in Postfix 2.8.
 .SH postscreen_helo_required (default: $smtpd_helo_required)
@@ -5511,7 +5616,7 @@ non\-SMTP commands as specified with the postscreen_forbidden_commands
 parameter.  Specify one of the following:
 .IP "\fBignore\fR"
 Ignore the failure of this test. Allow other tests to complete.
-Do \fInot\fR repeat this test before some the result from some
+Do \fInot\fR repeat this test before the result from some
 other test expires.
 This option is useful for testing and collecting statistics
 without blocking mail permanently.
@@ -5546,6 +5651,7 @@ before it can talk to a real Postfix SMTP server.
 Specify a non\-zero time value (an integral value plus an optional
 one\-letter suffix that specifies the time unit).  Time units: s
 (seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is d (days).
 .PP
 This feature is available in Postfix 2.8.
 .SH postscreen_pipelining_action (default: enforce)
@@ -5555,7 +5661,7 @@ multiple commands instead of sending one command and waiting for
 the server to respond.  Specify one of the following:
 .IP "\fBignore\fR"
 Ignore the failure of this test. Allow other tests to complete.
-Do \fInot\fR repeat this test before some the result from some
+Do \fInot\fR repeat this test before the result from some
 other test expires.
 This option is useful for testing and collecting statistics
 without blocking mail permanently.
@@ -5589,6 +5695,7 @@ before it can talk to a real Postfix SMTP server.
 Specify a non\-zero time value (an integral value plus an optional
 one\-letter suffix that specifies the time unit).  Time units: s
 (seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is d (days).
 .PP
 This feature is available in Postfix 2.8.
 .SH postscreen_post_queue_limit (default: $default_process_limit)
@@ -5656,6 +5763,7 @@ set under 10s.
 Specify a non\-zero time value (an integral value plus an optional
 one\-letter suffix that specifies the time unit).  Time units: s
 (seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).
 .PP
 This feature is available in Postfix 2.8.
 .SH postscreen_whitelist_interfaces (default: static:all)
@@ -5771,6 +5879,11 @@ This feature is available in Postfix 2.6 and later.
 The minimal delay between warnings that a specific destination is
 clogging up the Postfix active queue. Specify 0 to disable.
 .PP
+Specify a non\-negative time value (an integral value plus an optional
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).
+.PP
 This feature is enabled with the helpful_warnings parameter.
 .PP
 This feature is available in Postfix 2.0 and later.
@@ -5778,7 +5891,9 @@ This feature is available in Postfix 2.0 and later.
 How much time a Postfix queue manager process may take to handle
 a request before it is terminated by a built\-in watchdog timer.
 .PP
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
+Specify a non\-zero time value (an integral value plus an optional
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
 The default time unit is s (seconds).
 .PP
 This feature is available in Postfix 2.8 and later.
@@ -5795,7 +5910,9 @@ over an internal communication channel.  The purpose is to break
 out of deadlock situations. If the time limit is exceeded the
 software either retries or aborts the operation.
 .PP
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
+Specify a non\-zero time value (an integral value plus an optional
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
 The default time unit is s (seconds).
 .PP
 This feature is available in Postfix 2.8 and later.
@@ -5853,14 +5970,18 @@ How long the Postfix QMQP server will pause before sending a negative
 reply to the remote QMQP client. The purpose is to slow down confused
 or malicious clients.
 .PP
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
+Specify a non\-negative time value (an integral value plus an optional
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
 The default time unit is s (seconds).
 .SH qmqpd_timeout (default: 300s)
 The time limit for sending or receiving information over the network.
 If a read or write operation blocks for more than $qmqpd_timeout
 seconds the Postfix QMQP server gives up and disconnects.
 .PP
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
+Specify a non\-zero time value (an integral value plus an optional
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
 The default time unit is s (seconds).
 .SH queue_directory (default: see "postconf \-d" output)
 The location of the Postfix top\-level queue directory. This is the
@@ -5891,7 +6012,9 @@ prior to Postfix 2.4 the default value was 1000s.
 This parameter should be set less than or equal to
 $minimal_backoff_time. See also $maximal_backoff_time.
 .PP
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
+Specify a non\-zero time value (an integral value plus an optional
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
 The default time unit is s (seconds).
 .SH queue_service_name (default: qmgr)
 The name of the \fBqmgr\fR(8) service. This service manages the Postfix
@@ -6048,7 +6171,7 @@ the recipient_delimiter set. The delimiter character and extension
 may then be used to generate an extended .forward file name. This
 implementation recognizes one delimiter character and one extension
 per email address localpart or email address. With Postfix 2.10 and
-earler, the recipient_delimiter specifies a single character.
+earlier, the recipient_delimiter specifies a single character.
 .PP
 See \fBcanonical\fR(5), \fBlocal\fR(8), \fBrelocated\fR(5) and \fBvirtual\fR(5) for the
 effects of recipient_delimiter on lookups in aliases, canonical,
@@ -6214,7 +6337,7 @@ and then floods innocent people with undeliverable mail.  Technically,
 tables
 listed with $relay_recipient_maps are used as lists: Postfix needs
 to know only if a lookup string is found or not, but it does not
-use the result from table lookup.
+use the result from the table lookup.
 .PP
 Specify zero or more "type:name" lookup tables, separated by
 whitespace or comma. Tables will be searched in the specified order
@@ -6637,7 +6760,9 @@ relay     unix  \-       \-       n       \-       \-       smtp
 How long the Postfix \fBmaster\fR(8) waits before forking a server that
 appears to be malfunctioning.
 .PP
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
+Specify a non\-zero time value (an integral value plus an optional
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
 The default time unit is s (seconds).
 .SH setgid_group (default: postdrop)
 The group ownership of set\-gid Postfix commands and of group\-writable
@@ -6872,7 +6997,9 @@ tries the next address on the mail exchanger list. Specify 0 to
 disable the time limit (i.e. use whatever timeout is implemented by
 the operating system).
 .PP
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
+Specify a non\-negative time value (an integral value plus an optional
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
 The default time unit is s (seconds).
 .SH smtp_connection_cache_destinations (default: empty)
 Permanently enable SMTP connection caching for the specified
@@ -6985,7 +7112,9 @@ for receiving the remote SMTP server response.
 When no response is received within the deadline, a warning is
 logged that the mail may be delivered multiple times.
 .PP
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
+Specify a non\-zero time value (an integral value plus an optional
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
 The default time unit is s (seconds).
 .SH smtp_data_init_timeout (default: 120s)
 The Postfix SMTP client time limit for sending the SMTP DATA command,
@@ -7326,7 +7455,9 @@ This feature is available in Postfix 2.0 and later.
 The Postfix SMTP client time limit for sending the HELO or EHLO command,
 and for receiving the initial remote SMTP server response.
 .PP
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
+Specify a non\-zero time value (an integral value plus an optional
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
 The default time unit is s (seconds).
 .SH smtp_host_lookup (default: dns)
 What mechanisms the Postfix SMTP client uses to look up a host's
@@ -7363,7 +7494,9 @@ and earlier.
 The Postfix SMTP client time limit for sending the MAIL FROM command,
 and for receiving the remote SMTP server response.
 .PP
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
+Specify a non\-zero time value (an integral value plus an optional
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
 The default time unit is s (seconds).
 .SH smtp_mime_header_checks (default: empty)
 Restricted \fBmime_header_checks\fR(5) tables for the Postfix SMTP
@@ -7454,8 +7587,13 @@ How long the Postfix SMTP client pauses before sending
 ".<CR><LF>" in order to work around the PIX firewall
 "<CR><LF>.<CR><LF>" bug.
 .PP
-Choosing a too short time makes this workaround ineffective when
+Choosing too short a time makes this workaround ineffective when
 sending large messages over slow network connections.
+.PP
+Specify a non\-zero time value (an integral value plus an optional
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).
 .SH smtp_pix_workaround_maps (default: empty)
 Lookup tables, indexed by the remote SMTP server address, with
 per\-destination workarounds for CISCO PIX firewall bugs.  The table
@@ -7473,6 +7611,11 @@ turns on the PIX firewall "<CR><LF>.<CR><LF>"
 bug workaround for delivery through firewalls with "smtp fixup"
 mode turned on.
 .PP
+Specify a non\-negative time value (an integral value plus an optional
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).
+.PP
 By default, the workaround is turned off for mail that is queued
 for less than 500 seconds. In other words, the workaround is normally
 turned off for the first delivery attempt.
@@ -7504,7 +7647,9 @@ settings are backwards compatible with earlier Postfix versions.
 The Postfix SMTP client time limit for sending the QUIT command,
 and for receiving the remote SMTP server response.
 .PP
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
+Specify a non\-zero time value (an integral value plus an optional
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
 The default time unit is s (seconds).
 .SH smtp_quote_rfc821_envelope (default: yes)
 Quote addresses in Postfix SMTP client MAIL FROM and RCPT TO commands
@@ -7537,7 +7682,9 @@ is a performance feature of the Postfix SMTP client.
 The Postfix SMTP client time limit for sending the SMTP RCPT TO
 command, and for receiving the remote SMTP server response.
 .PP
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
+Specify a non\-zero time value (an integral value plus an optional
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
 The default time unit is s (seconds).
 .SH smtp_reply_filter (default: empty)
 A mechanism to transform replies from remote SMTP servers one
@@ -7598,6 +7745,11 @@ sends RSET in
 order to finish a recipient address probe, or to verify that a
 cached session is still usable.
 .PP
+Specify a non\-zero time value (an integral value plus an optional
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).
+.PP
 This feature is available in Postfix 2.1 and later.
 .SH smtp_sasl_auth_cache_name (default: empty)
 An optional table to prevent repeated SASL authentication
@@ -7606,7 +7758,7 @@ password. Each table (key, value) pair contains a server name, a
 username and password, and the full server response. This information
 is stored when a remote SMTP server rejects an authentication attempt
 with a 535 reply code.  As long as the smtp_sasl_password_maps
-information does no change, and as long as the smtp_sasl_auth_cache_name
+information does not change, and as long as the smtp_sasl_auth_cache_name
 information does not expire (see smtp_sasl_auth_cache_time) the
 Postfix SMTP client avoids SASL authentication attempts with the
 same server, username and password, and instead bounces or defers
@@ -7640,6 +7792,11 @@ This feature is available in Postfix 2.5 and later.
 The maximal age of an smtp_sasl_auth_cache_name entry before it
 is removed.
 .PP
+Specify a non\-negative time value (an integral value plus an optional
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is d (days).
+.PP
 This feature is available in Postfix 2.5 and later.
 .SH smtp_sasl_auth_enable (default: no)
 Enable SASL authentication in the Postfix SMTP client.  By default,
@@ -7846,6 +8003,11 @@ Do not wait for the response to the SMTP QUIT command.
 Time limit for Postfix SMTP client write and read operations
 during TLS startup and shutdown handshake procedures.
 .PP
+Specify a non\-zero time value (an integral value plus an optional
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).
+.PP
 This feature is available in Postfix 2.2 and later.
 .SH smtp_tcp_port (default: smtp)
 The default TCP port that the Postfix SMTP client connects to.
@@ -8025,7 +8187,7 @@ key.
 The file or files must contain at most one key of each type.  If,
 for example, two or more RSA keys and corresponding chains are listed,
 depending on the version of OpenSSL either only the last one will be
-used or an configuration error may be detected.  Note that while
+used or a configuration error may be detected.  Note that while
 "Ed25519" and "Ed448" are considered separate algorithms, the various
 ECDSA curves (typically one of prime256v1, secp384r1 or secp521r1) are
 considered as different parameters of a single "ECDSA" algorithm, so it
@@ -8226,7 +8388,7 @@ Though with "insecure" MX records an active attacker can
 compromise SMTP transport security by returning forged MX records,
 such attacks are "tamper\-evident" since any forged MX hostnames
 will be recorded in the mail logs.  Attackers who place a high value
-staying hidden may be deterred from forging MX records.
+on staying hidden may be deterred from forging MX records.
 .PP
 This feature is available in Postfix 3.1 and later. The \fBmay\fR
 policy is backwards\-compatible with earlier Postfix versions.
@@ -8304,7 +8466,7 @@ This option can be set to "no" to disable strict peer name
 checking. This setting has no effect on sessions that are controlled
 via the smtp_tls_per_site table.
 .PP
-Disabling the hostname verification can make sense in closed
+Disabling the hostname verification can make sense in closed
 environment where special CAs are created.  If not used carefully,
 this option opens the danger of a "man\-in\-the\-middle" attack (the
 CommonName of this attacker will be logged).
@@ -8335,7 +8497,7 @@ smtp_tls_exclude_ciphers = kEDH+aRSA
 .ft R
 .in -4
 .PP
-The first setting, disables anonymous ciphers. The next setting
+The first setting disables anonymous ciphers. The next setting
 disables ciphers that use the MD5 digest algorithm or the (single) DES
 encryption algorithm. The next setting disables ciphers that use MD5 and
 DES together.  The next setting disables the two ciphers "AES256\-SHA"
@@ -8454,7 +8616,7 @@ $ openssl x509 \-noout \-fingerprint \-\fIdigest\fR \-in \fIcertfile\fR.pem
 .ft R
 .in -4
 .PP
-The text to the right of "=" sign is the desired fingerprint.
+The text to the right of the "=" sign is the desired fingerprint.
 For example:
 .sp
 .in +4
@@ -8495,7 +8657,7 @@ $ openssl x509 \-in cert.pem \-noout \-pubkey |
 .in -4
 .PP
 The Postfix SMTP server and client log the peer (leaf) certificate
-fingerprint and public key fingerprint when the TLS loglevel is 2 or
+fingerprint and the public key fingerprint when the TLS loglevel is 2 or
 higher.
 .PP
 This feature is available in Postfix 2.5 and later.
@@ -8552,11 +8714,11 @@ log trust\-chain verification errors.
 2 Also log levels during TLS negotiation.
 .br
 .IP ""
-3 Also log hexadecimal and ASCII dump of TLS negotiation
-process.
+3 Also log the hexadecimal and ASCII dump of the
+TLS negotiation process.
 .br
 .IP ""
-4 Also log hexadecimal and ASCII dump of complete
+4 Also log the hexadecimal and ASCII dump of complete
 transmission after STARTTLS.
 .br
 .br
@@ -8578,19 +8740,19 @@ The following cipher grades are supported:
 .IP "\fBexport\fR"
 Enable "EXPORT" grade or better OpenSSL ciphers.  The underlying
 cipherlist is specified via the tls_export_cipherlist configuration
-parameter, which you are strongly encouraged to not change.  This
+parameter, which you are strongly encouraged not to change.  This
 choice is insecure and SHOULD NOT be used.
 .br
 .IP "\fBlow\fR"
 Enable "LOW" grade or better OpenSSL ciphers.  The underlying
 cipherlist is specified via the tls_low_cipherlist configuration
-parameter, which you are strongly encouraged to not change.  This
+parameter, which you are strongly encouraged not to change.  This
 choice is insecure and SHOULD NOT be used.
 .br
 .IP "\fBmedium\fR"
 Enable "MEDIUM" grade or better OpenSSL ciphers.
 The underlying cipherlist is specified via the tls_medium_cipherlist
-configuration parameter, which you are strongly encouraged to not change.
+configuration parameter, which you are strongly encouraged not to change.
 .br
 .IP "\fBhigh\fR"
 Enable only "HIGH" grade OpenSSL ciphers.  This setting may
@@ -8598,7 +8760,7 @@ be appropriate when all mandatory TLS destinations (e.g. when all
 mail is routed to a suitably capable relayhost) support at least one
 "HIGH" grade cipher. The underlying cipherlist is specified via the
 tls_high_cipherlist configuration parameter, which you are strongly
-encouraged to not change.
+encouraged not to change.
 .br
 .IP "\fBnull\fR"
 Enable only the "NULL" OpenSSL ciphers, these provide authentication
@@ -8607,7 +8769,7 @@ that all servers are prepared to use NULL ciphers (not normally enabled
 in TLS servers). A plausible use\-case is an LMTP server listening on a
 UNIX\-domain socket that is configured to support "NULL" ciphers. The
 underlying cipherlist is specified via the tls_null_cipherlist
-configuration parameter, which you are strongly encouraged to not
+configuration parameter, which you are strongly encouraged not to
 change.
 .br
 .br
@@ -8687,7 +8849,7 @@ smtp_tls_mandatory_protocols = >=0x0303
 With Postfix < 3.6 there is no support for a minimum or maximum
 version, and the protocol range is configured via protocol exclusions.
 To require at least TLS 1.0, set "smtp_tls_mandatory_protocols = !SSLv2,
-!SSLv3". Listing the protocols to include, rather than protocols to
+!SSLv3". Listing the protocols to include, rather than the protocols to
 exclude, is supported, but not recommended.  The exclusion syntax more
 accurately matches the underlying OpenSSL interface.
 .PP
@@ -8706,7 +8868,7 @@ smtp_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1.1
 .ft R
 .in -4
 .PP
-also disables any protocols version higher than TLSv1.1 leaving
+also disables any protocol versions higher than TLSv1.1 leaving
 only "TLSv1" enabled.
 .PP
 Support for "TLSv1.3" was introduced in OpenSSL 1.1.1.  Disabling
@@ -8715,7 +8877,7 @@ releases >= 3.0.14, 3.1.10, 3.2.7 and 3.3.2).
 .PP
 While the vast majority of SMTP servers with DANE TLSA records now
 support at least TLS 1.2, a few still only support TLS 1.0.  If you use
-"dane" or "dane\-only" it is best to not disable TLSv1, except perhaps
+"dane" or "dane\-only" it is best not to disable TLSv1, except perhaps
 via the policy table for destinations which you are sure will support
 "TLSv1.2".
 .PP
@@ -8754,8 +8916,8 @@ This feature is available in Postfix 2.2 and later.
 Optional lookup tables with the Postfix SMTP client TLS usage
 policy by next\-hop destination and by remote SMTP server hostname.
 When both lookups succeed, the more specific per\-site policy (NONE,
-MUST, etc) overrides the less specific one (MAY), and the more secure
-per\-site policy (MUST, etc) overrides the less secure one (NONE).
+MUST, etc.) overrides the less specific one (MAY), and the more secure
+per\-site policy (MUST, etc.) overrides the less secure one (NONE).
 With Postfix 2.3 and later smtp_tls_per_site is strongly discouraged:
 use smtp_tls_policy_maps instead.
 .PP
@@ -8778,7 +8940,7 @@ and smtp_tls_enforce_peername settings.
 .br
 .IP "MAY"
 Try to use TLS if the server announces support,
-otherwise use the unencrypted connection. This has less precedence
+otherwise use an unencrypted connection. This has less precedence
 than a more specific result (including \fBNONE\fR) from the alternate
 host or next\-hop lookup key, and has less precedence than the more
 specific global "smtp_enforce_tls = yes" or "smtp_tls_enforce_peername
@@ -8798,7 +8960,7 @@ Require TLS encryption, require that the remote
 SMTP server hostname matches the information in the remote SMTP
 server certificate, and require that the remote SMTP server certificate
 was issued by a trusted CA. This overrides a less secure \fBNONE\fR
-and \fBMUST_NOPEERMATCH\fR or a less specific \fBMAY\fR lookup
+or \fBMUST_NOPEERMATCH\fR or a less specific \fBMAY\fR lookup
 result from the alternate host or next\-hop lookup key, and overrides
 the global smtp_use_tls, smtp_enforce_tls and smtp_tls_enforce_peername
 settings.
@@ -8869,7 +9031,9 @@ attributes (available for opportunistic TLS with Postfix >= 2.6)
 and "connection_reuse" attribute (Postfix >= 3.4) override the
 "smtp_tls_ciphers", "smtp_tls_exclude_ciphers", "smtp_tls_protocols",
 and
-"smtp_tls_connection_reuse" configuration parameters. When opportunistic
+"smtp_tls_connection_reuse" configuration parameters. In the policy table,
+multiple ciphers, protocols or excluded ciphers must be separated by colons,
+as attribute values may not contain whitespace or commas. When opportunistic
 TLS handshakes fail, Postfix retries the connection with TLS disabled.
 This allows mail delivery to sites with non\-interoperable TLS
 implementations.
@@ -8883,7 +9047,7 @@ optional "exclude" attribute (Postfix >= 2.6) overrides the main.cf
 smtp_tls_mandatory_exclude_ciphers parameter, and the optional
 "connection_reuse" attribute (Postfix >= 3.4) overrides the
 main.cf smtp_tls_connection_reuse parameter. In the policy table,
-multiple protocols or excluded ciphers must be separated by colons,
+multiple ciphers, protocols or excluded ciphers must be separated by colons,
 as attribute values may not contain whitespace or commas.
 .br
 .IP "\fBdane\fR"
@@ -8896,6 +9060,14 @@ server certificate must match the TLSA records.  RFC 7672 (DANE)
 TLS authentication and DNSSEC support is available with Postfix
 2.11 and later. The optional "connection_reuse" attribute (Postfix
 >= 3.4) overrides the main.cf smtp_tls_connection_reuse parameter.
+When the effective security level used is may, the optional "ciphers",
+"exclude", and "protocols" attributes (Postfix >= 2.6) override the
+"smtp_tls_ciphers", "smtp_tls_exclude_ciphers", and "smtp_tls_protocols"
+configuration parameters.
+When the effective security level used is encrypt, the optional "ciphers",
+"exclude", and "protocols" attributes (Postfix >= 2.6) override the
+"smtp_tls_mandatory_ciphers", "smtp_tls_mandatory_exclude_ciphers", and
+"smtp_tls_mandatory_protocols" configuration parameters.
 .br
 .IP "\fBdane\-only\fR"
 Mandatory DANE TLS.  The TLS policy for the destination is
@@ -8904,15 +9076,18 @@ or none are usable, no connection is made to the server.  When
 usable TLSA records are obtained for the remote SMTP server, the
 server certificate must match the TLSA records.  RFC 7672 (DANE) TLS
 authentication and DNSSEC support is available with Postfix 2.11
-and later. The optional "connection_reuse" attribute (Postfix >=
-3.4) overrides the main.cf smtp_tls_connection_reuse parameter.
+and later. The optional "ciphers", "exclude", and "protocols" attributes
+(Postfix >= 2.6) override the "smtp_tls_mandatory_ciphers",
+"smtp_tls_mandatory_exclude_ciphers", and "smtp_tls_mandatory_protocols"
+configuration parameters. The optional "connection_reuse" attribute
+(Postfix >= 3.4) overrides the main.cf smtp_tls_connection_reuse parameter.
 .br
 .IP "\fBfingerprint\fR"
 Certificate fingerprint
 verification. Available with Postfix 2.5 and later. At this security
 level, there are no trusted Certification Authorities. The certificate
 trust chain, expiration date, ... are not checked. Instead,
-the optional \fBmatch\fR attribute, or else the main.cf
+the optional "match" attribute, or else the main.cf
 \fBsmtp_tls_fingerprint_cert_match\fR parameter, lists the certificate
 fingerprints or the public key fingerprint (Postfix 2.9 and later)
 of the valid server certificate. The digest
@@ -8921,8 +9096,12 @@ algorithm used to calculate the fingerprint is selected by the
 be combined with a "|" delimiter in a single match attribute, or multiple
 match attributes can be employed. The ":" character is not used as a
 delimiter as it occurs between each pair of fingerprint (hexadecimal)
-digits. The optional "connection_reuse" attribute (Postfix >= 3.4)
-overrides the main.cf smtp_tls_connection_reuse parameter.
+digits. The optional "ciphers", "exclude", and "protocols" attributes
+(Postfix >= 2.6) override the "smtp_tls_mandatory_ciphers",
+"smtp_tls_mandatory_exclude_ciphers", and "smtp_tls_mandatory_protocols"
+configuration parameters. The optional "connection_reuse" attribute
+(Postfix >= 3.4) overrides the main.cf smtp_tls_connection_reuse
+parameter.
 .br
 .IP "\fBverify\fR"
 Mandatory TLS verification.  At this security
@@ -8932,8 +9111,11 @@ unauthenticated DNS MX lookups.  The optional "match" attribute overrides
 the main.cf smtp_tls_verify_cert_match parameter. In the policy table,
 multiple match patterns and strategies must be separated by colons.
 In practice explicit control over matching is more common with the
-"secure" policy, described below. The optional "connection_reuse"
-attribute (Postfix >= 3.4) overrides the main.cf
+"secure" policy, described below. The optional "ciphers", "exclude",
+and "protocols" attributes (Postfix >= 2.6) override the
+"smtp_tls_mandatory_ciphers", "smtp_tls_mandatory_exclude_ciphers", and
+"smtp_tls_mandatory_protocols" configuration parameters. The optional
+"connection_reuse" attribute (Postfix >= 3.4) overrides the main.cf
 smtp_tls_connection_reuse parameter.
 .br
 .IP "\fBsecure\fR"
@@ -8942,18 +9124,21 @@ MX lookups, though potentially used to determine the candidate next\-hop
 gateway IP addresses, are \fBnot\fR trusted to be secure enough for TLS
 peername verification. Instead, the default name verified in the server
 certificate is obtained directly from the next\-hop, or is explicitly
-specified via the optional \fBmatch\fR attribute which overrides the
+specified via the optional "match" attribute which overrides the
 main.cf smtp_tls_secure_cert_match parameter. In the policy table,
 multiple match patterns and strategies must be separated by colons.
 The match attribute is most useful when multiple domains are supported by
-common server, the policy entries for additional domains specify matching
+a common server: the policy entries for additional domains specify matching
 rules for the primary domain certificate. While transport table overrides
-routing the secondary domains to the primary nexthop also allow secure
+that route the secondary domains to the primary nexthop also allow secure
 verification, they risk delivery to the wrong destination when domains
 change hands or are re\-assigned to new gateways. With the "match"
 attribute approach, routing is not perturbed, and mail is deferred if
-verification of a new MX host fails. The optional "connection_reuse"
-attribute (Postfix >= 3.4) overrides the main.cf
+verification of a new MX host fails. The optional "ciphers", "exclude",
+and "protocols" attributes (Postfix >= 2.6) override the
+"smtp_tls_mandatory_ciphers", "smtp_tls_mandatory_exclude_ciphers", and
+"smtp_tls_mandatory_protocols" configuration parameters. The optional
+"connection_reuse" attribute (Postfix >= 3.4) overrides the main.cf
 smtp_tls_connection_reuse parameter.
 .br
 .br
@@ -8994,10 +9179,10 @@ Example:
 .ad
 .ft R
 .PP
-\fBNote:\fR The \fBhostname\fR strategy if listed in a non\-default
-setting of smtp_tls_secure_cert_match or in the \fBmatch\fR attribute
-in the policy table can render the \fBsecure\fR level vulnerable to
-DNS forgery. Do not use the \fBhostname\fR strategy for secure\-channel
+\fBNote:\fR The "hostname" strategy if listed in a non\-default
+setting of smtp_tls_secure_cert_match or in the "match" attribute
+in the policy table can render the "secure" level vulnerable to
+DNS forgery. Do not use the "hostname" strategy for secure\-channel
 configurations in environments where DNS security is not assured.
 .PP
 This feature is available in Postfix 2.3 and later.
@@ -9018,7 +9203,7 @@ As of Postfix 3.6, the preferred way to limit the range of
 acceptable protocols is to set the lowest acceptable TLS protocol
 version and/or the highest acceptable TLS protocol version.  To set the
 lower bound include an element of the form: ">=\fIversion\fR" where
-\fIversion\fR is either one of the TLS protocol names listed above,
+\fIversion\fR is either one of the TLS protocol names listed above,
 or a hexadecimal number corresponding to the desired TLS protocol
 version (0301 for TLS 1.0, 0302 for TLS 1.1, etc.).  For the upper
 bound, use "<=\fIversion\fR".  There must be no whitespace between
@@ -9150,9 +9335,12 @@ example.net     secure match=example.com:.example.com
 .PP
 This feature is available in Postfix 2.3 and later.
 .SH smtp_tls_security_level (default: empty)
-The default SMTP TLS security level for the Postfix SMTP client;
-when a non\-empty value is specified, this overrides the obsolete
-parameters smtp_use_tls, smtp_enforce_tls, and smtp_tls_enforce_peername.
+The default SMTP TLS security level for the Postfix SMTP client.
+When a non\-empty value is specified, this overrides the obsolete
+parameters smtp_use_tls, smtp_enforce_tls, and smtp_tls_enforce_peername;
+when no value is specified for smtp_tls_enforce_peername or the obsolete
+parameters, the default SMTP TLS security level is
+none.
 .PP
 Specify one of the following security levels:
 .IP "\fBnone\fR"
@@ -9264,7 +9452,7 @@ smtp_tls_security_level = none
 .ft C
 # Opportunistic TLS.
 smtp_tls_security_level = may
-# Do not tweak opportunistic ciphers or protocol unless it is essential
+# Do not tweak opportunistic ciphers or protocols unless it is essential
 # to do so (if a security vulnerability is found in the SSL library that
 # can be mitigated by disabling a particular protocol or raising the
 # cipher grade).
@@ -9357,7 +9545,7 @@ concurrent access.  The file is created if it does not exist. The \fBsmtp\fR(8)
 daemon does not use this parameter directly, rather the cache is
 implemented indirectly in the \fBtlsmgr\fR(8) daemon. This means that
 per\-smtp\-instance master.cf overrides of this parameter are not effective.
-Note, that each of the cache databases supported by \fBtlsmgr\fR(8) daemon:
+Note that each of the cache databases supported by \fBtlsmgr\fR(8) daemon:
 $smtpd_tls_session_cache_database, $smtp_tls_session_cache_database
 (and with Postfix 2.3 and later $lmtp_tls_session_cache_database), needs to
 be stored separately. It is not at this time possible to store multiple
@@ -9395,6 +9583,11 @@ As of Postfix 2.11 this setting cannot exceed 100 days.  If set
 <= 0, session caching is disabled.  If set to a positive value
 less than 2 minutes, the minimum value of 2 minutes is used instead.
 .PP
+Specify a non\-zero time value (an integral value plus an optional
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).
+.PP
 This feature is available in Postfix 2.2 and later.
 .SH smtp_tls_trust_anchor_file (default: empty)
 Zero or more PEM\-format files with trust\-anchor certificates
@@ -9520,7 +9713,7 @@ example.com     verify  match=hostname:nexthop
 This feature is available in Postfix 2.3 and later.
 .SH smtp_tls_wrappermode (default: no)
 Request that the Postfix SMTP client connects using the
-legacy SMTPS protocol instead of using the STARTTLS command.
+SUBMISSIONS/SMTPS protocol instead of using the STARTTLS command.
 .PP
 This mode requires "smtp_tls_security_level = encrypt" or
 stronger.
@@ -9559,7 +9752,9 @@ Postfix 2.3 and later use smtp_tls_security_level instead.
 The Postfix SMTP client time limit for sending the XFORWARD command,
 and for receiving the remote SMTP server response.
 .PP
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
+Specify a non\-zero time value (an integral value plus an optional
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
 The default time unit is s (seconds).
 .PP
 This feature is available in Postfix 2.1 and later.
@@ -9668,7 +9863,7 @@ send to this service per time unit, regardless of whether or not
 Postfix actually accepts those commands.  The time unit is specified
 with the anvil_rate_time_unit configuration parameter.
 .PP
-By default, there is no limit on the number AUTH commands that a
+By default, there is no limit on the number of AUTH commands that a
 client may send.
 .PP
 To disable this feature, specify a limit of 0.
@@ -9833,7 +10028,7 @@ client network address information.
 .IP "\fBcheck_ccert_access \fItype:table\fR\fR"
 By default use the remote SMTP client certificate fingerprint
 or the public key
-fingerprint (Postfix 2.9 and later) as lookup key for the specified
+fingerprint (Postfix 2.9 and later) as the lookup key for the specified
 \fBaccess\fR(5) database; with Postfix version 2.2, also require that the
 remote SMTP client certificate is verified successfully.
 The fingerprint digest algorithm is configurable via the
@@ -9921,7 +10116,7 @@ Instead, use DUNNO in order to exclude specific hosts from denylists.
 This feature is available in Postfix 2.7 and later.
 .br
 .IP "\fBcheck_sasl_access \fItype:table\fR\fR"
-Use the remote SMTP client SASL user name as lookup key for
+Use the remote SMTP client SASL user name as the lookup key for
 the specified \fBaccess\fR(5) database. The lookup key has the form
 "username@domainname" when the smtpd_sasl_local_domain parameter
 value is non\-empty.  Unlike the check_client_access feature,
@@ -9944,7 +10139,7 @@ authenticated via the RFC 4954 (AUTH) protocol.
 .IP "\fBpermit_tls_all_clientcerts\fR"
 Permit the request when the remote SMTP client certificate is
 verified successfully.  This option must be used only if a special
-CA issues the certificates and only this CA is listed as trusted
+CA issues the certificates and only this CA is listed as trusted
 CA. Otherwise, clients with a third\-party certificate would also
 be allowed to relay.  Specify "tls_append_default_CA = no" when the
 trusted CA is specified with smtpd_tls_CAfile or smtpd_tls_CApath,
@@ -10280,7 +10475,7 @@ feature:
 .ft C
     # Append XVERP to MAIL FROM commands to request VERP\-style delivery.
     # See VERP_README for more information on how to use Postfix VERP.
-    /^(MAIL FROM:\es*<listname@example\e.com>.*)/   $1 XVERP
+    /^(MAIL\es+FROM:\es*<listname@example\e.com>.*)/   $1 XVERP
 .fi
 .ad
 .ft R
@@ -10425,10 +10620,17 @@ With Postfix version 2.1 and later: the SMTP server response delay after
 a client has made more than $smtpd_soft_error_limit errors, and
 fewer than $smtpd_hard_error_limit errors, without delivering mail.
 .PP
-With Postfix version 2.0 and earlier: the SMTP server delay before
-sending a reject (4xx or 5xx) response, when the client has made
-fewer than $smtpd_soft_error_limit errors without delivering
-mail.
+With Postfix version 2.0 and earlier: the SMTP server delay
+before sending a reject (4xx or 5xx) response, when the client has
+made fewer than $smtpd_soft_error_limit errors without delivering
+mail. When the client has made $smtpd_soft_error_limit or more errors,
+delay all responses with the larger of (number of errors) seconds
+or $smtpd_error_sleep_time.
+.PP
+Specify a non\-negative time value (an integral value plus an optional
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).
 .SH smtpd_etrn_restrictions (default: empty)
 Optional restrictions that the Postfix SMTP server applies in the
 context of a client ETRN command.
@@ -10494,9 +10696,10 @@ Support for inline regular expressions was added in Postfix version
 .SH smtpd_hard_error_limit (default: normal: 20, overload: 1)
 The maximal number of errors a remote SMTP client is allowed to
 make without delivering mail. The Postfix SMTP server disconnects
-when the limit is exceeded. Normally the default limit is 20, but
+when the limit is reached. Normally the default limit is 20, but
 it changes under overload to just 1. With Postfix 2.5 and earlier,
 the SMTP server always allows up to 20 errors by default.
+Valid values are greater than zero.
 .SH smtpd_helo_required (default: no)
 Require that a remote SMTP client introduces itself with the HELO
 or EHLO command before sending the MAIL command or other commands
@@ -10829,11 +11032,21 @@ This feature is available in Postfix 3.0 and later.
 The time after which an idle SMTPD policy service connection is
 closed.
 .PP
+Specify a non\-zero time value (an integral value plus an optional
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).
+.PP
 This feature is available in Postfix 2.1 and later.
 .SH smtpd_policy_service_max_ttl (default: 1000s)
 The time after which an active SMTPD policy service connection is
 closed.
 .PP
+Specify a non\-zero time value (an integral value plus an optional
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).
+.PP
 This feature is available in Postfix 2.1 and later.
 .SH smtpd_policy_service_policy_context (default: empty)
 Optional information that the Postfix SMTP server specifies in
@@ -10854,11 +11067,21 @@ This feature is available in Postfix 3.0 and later.
 The delay between attempts to resend a failed SMTPD policy
 service request. Specify a value greater than zero.
 .PP
+Specify a non\-zero time value (an integral value plus an optional
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).
+.PP
 This feature is available in Postfix 3.0 and later.
 .SH smtpd_policy_service_timeout (default: 100s)
 The time limit for connecting to, writing to, or receiving from a
 delegated SMTPD policy server.
 .PP
+Specify a non\-zero time value (an integral value plus an optional
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).
+.PP
 This feature is available in Postfix 2.1 and later.
 .SH smtpd_policy_service_try_limit (default: 2)
 The maximal number of attempts to send an SMTPD policy service
@@ -10878,7 +11101,7 @@ supposed to give the result to another Postfix SMTP server process.
 Specify "host:port" or "inet:host:port" for a TCP endpoint, or
 "unix:pathname" for a UNIX\-domain endpoint. The host can be specified
 as an IP address or as a symbolic name; no MX lookups are done.
-When no "host" or "host:"  are specified, the local machine is
+When no "host" or "host:" is specified, the local machine is
 assumed.  Pathname interpretation is relative to the Postfix queue
 directory.
 .PP
@@ -10912,7 +11135,9 @@ receiving information.  When a connection fails the client gets a
 generic error message while more detailed information is logged to
 the maillog file.
 .PP
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
+Specify a non\-zero time value (an integral value plus an optional
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
 The default time unit is s (seconds).
 .PP
 This feature is available in Postfix 2.1 and later.
@@ -11005,7 +11230,7 @@ feature is available in Postfix 2.1 and later.
 .IP "\fBpermit_auth_destination\fR"
 Permit the request when one of the following is true:
 .IP \(bu
-Postfix is mail forwarder: the resolved RCPT TO domain matches
+Postfix is mail forwarder: the resolved RCPT TO domain matches
 $relay_domains or a subdomain thereof, and the address contains no
 sender\-specified routing (user@elsewhere@domain),
 .IP \(bu
@@ -11016,7 +11241,7 @@ contains no sender\-specified routing (user@elsewhere@domain).
 .br
 .br
 .IP "\fBpermit_mx_backup\fR"
-Permit the request when the local mail system is backup MX for
+Permit the request when the local mail system is backup MX for
 the RCPT TO domain, or when the domain is an authorized destination
 (see permit_auth_destination for definition).
 .IP \(bu
@@ -11027,7 +11252,7 @@ Safety: permit_mx_backup can be vulnerable to mis\-use when
 access is not restricted with permit_mx_backup_networks.
 .IP \(bu
 Safety: as of Postfix version 2.3, permit_mx_backup no longer
-accepts the address when the local mail system is primary MX for
+accepts the address when the local mail system is primary MX for
 the recipient domain.  Exception: permit_mx_backup accepts the address
 when it specifies an authorized destination (see permit_auth_destination
 for definition).
@@ -11065,7 +11290,7 @@ in Postfix version 2.0 and later.
 .IP "\fBreject_unauth_destination\fR"
 Reject the request unless one of the following is true:
 .IP \(bu
-Postfix is mail forwarder: the resolved RCPT TO domain matches
+Postfix is mail forwarder: the resolved RCPT TO domain matches
 $relay_domains or a subdomain thereof, and contains no sender\-specified
 routing (user@elsewhere@domain),
 .IP \(bu
@@ -11110,7 +11335,7 @@ see the ADDRESS_VERIFICATION_README file for details.
 The
 unverified_recipient_reject_code parameter specifies the numerical
 response code when an address is known to bounce (default: 450,
-change into 550 when you are confident that it is safe to do so).
+change ito 550 when you are confident that it is safe to do so).
 .br
 The unverified_recipient_defer_code parameter specifies the
 numerical response code when an address probe failed due to a
@@ -11340,6 +11565,8 @@ By default, the Postfix SMTP server accepts:
 .IP \(bu
 Mail from clients whose IP address matches $mynetworks, or:
 .IP \(bu
+Mail from clients who are SASL authenticated, or:
+.IP \(bu
 Mail to remote destinations that match $relay_domains, except
 for addresses that contain sender\-specified routing
 (user@elsewhere@domain), or:
@@ -11457,7 +11684,7 @@ $mynetworks to prevent Postfix from offering AUTH to local clients.
 .PP
 Specify a list of network/netmask patterns, separated by commas
 and/or whitespace. The mask specifies the number of bits in the
-network part of a host address. You can also "/file/name" or
+network part of a host address. 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).  Continue
@@ -11734,7 +11961,7 @@ unauthenticated clients only. This feature is available in
 Postfix version 2.1 and later.
 .br
 .IP "\fBreject_unknown_sender_domain\fR"
-Reject the request when Postfix is not final destination for
+Reject the request when Postfix is not the final destination for
 the sender address, and the MAIL FROM domain has 1) no DNS MX and
 no DNS A
 record, or 2) a malformed MX record such as a record with
@@ -11816,11 +12043,18 @@ The number of errors a remote SMTP client is allowed to make without
 delivering mail before the Postfix SMTP server slows down all its
 responses.
 .IP \(bu
-With Postfix version 2.1 and later, the Postfix SMTP server
-delays all responses by $smtpd_error_sleep_time seconds.
+With Postfix version 2.1 and later, when the error count
+is > $smtpd_soft_error_limit, the Postfix SMTP server
+delays all responses by $smtpd_error_sleep_time.
+.IP \(bu
+With Postfix versions 2.0 and earlier, when the error count
+is > $smtpd_soft_error_limit, the Postfix SMTP server delays all
+responses by the larger of (number of errors) seconds or
+$smtpd_error_sleep_time.
 .IP \(bu
-With Postfix versions 2.0 and earlier, the Postfix SMTP
-server delays all responses by (number of errors) seconds.
+With Postfix versions 2.0 and earlier, when the error count
+is <= $smtpd_soft_error_limit, the Postfix SMTP server delays 4XX
+and 5XX responses by $smtpd_error_sleep_time.
 .br
 .SH smtpd_starttls_timeout (default: see "postconf \-d" output)
 The time limit for Postfix SMTP server write and read operations
@@ -11828,6 +12062,11 @@ during TLS startup and shutdown handshake procedures. The current
 default value is stress\-dependent. Before Postfix version 2.8, it
 was fixed at 300s.
 .PP
+Specify a non\-zero time value (an integral value plus an optional
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).
+.PP
 This feature is available in Postfix 2.2 and later.
 .SH smtpd_timeout (default: normal: 300s, overload: 10s)
 When the Postfix SMTP server wants to send an SMTP server
@@ -11847,7 +12086,9 @@ by default.
 Note: if you set SMTP time limits to very large values you may have
 to update the global ipc_timeout parameter.
 .PP
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
+Specify a non\-zero time value (an integral value plus an optional
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
 The default time unit is s (seconds).
 .SH smtpd_tls_CAfile (default: empty)
 A file containing (PEM format) CA certificates of root CAs trusted
@@ -12085,7 +12326,7 @@ key.
 The file or files must contain at most one key of each type.  If,
 for example, two or more RSA keys and corresponding chains are listed,
 depending on the version of OpenSSL either only the last one will be
-used or an configuration error may be detected.  Note that while
+used or a configuration error may be detected.  Note that while
 "Ed25519" and "Ed448" are considered separate algorithms, the various
 ECDSA curves (typically one of prime256v1, secp384r1 or secp521r1) are
 considered as different parameters of a single "ECDSA" algorithm, so it
@@ -12328,7 +12569,7 @@ smtpd_tls_dh1024_param_file = /etc/postfix/dh2048.pem
 .ad
 .ft R
 .PP
-This feature is available with Postfix version 2.2.
+This feature is available in Postfix 2.2 and later.
 .SH smtpd_tls_dh512_param_file (default: empty)
 File with DH parameters that the Postfix SMTP server should
 use with export\-grade EDH ciphers.  The default SMTP server cipher
@@ -12351,7 +12592,8 @@ smtpd_tls_dh512_param_file = /etc/postfix/dh_512.pem
 .ad
 .ft R
 .PP
-This feature is available with Postfix version 2.2.
+This feature is available in Postfix 2.2 and later,
+but is ignored in Postfix 3.6 and later.
 .SH smtpd_tls_dkey_file (default: $smtpd_tls_dcert_file)
 File with the Postfix SMTP server DSA private key in PEM format.
 This file may be combined with the Postfix SMTP server DSA certificate
@@ -12634,13 +12876,13 @@ The following cipher grades are supported:
 .IP "\fBexport\fR"
 Enable "EXPORT" grade or stronger OpenSSL ciphers.  The
 underlying cipherlist is specified via the tls_export_cipherlist
-configuration parameter, which you are strongly encouraged to not
+configuration parameter, which you are strongly encouraged not to
 change.  This choice is insecure and SHOULD NOT be used.
 .br
 .IP "\fBlow\fR"
 Enable "LOW" grade or stronger OpenSSL ciphers. The underlying
 cipherlist is specified via the tls_low_cipherlist configuration
-parameter, which you are strongly encouraged to not change.  This
+parameter, which you are strongly encouraged not to change.  This
 choice is insecure and SHOULD NOT be used.
 .br
 .IP "\fBmedium\fR"
@@ -12648,7 +12890,7 @@ Enable "MEDIUM" grade or stronger OpenSSL ciphers. These use 128\-bit
 or longer symmetric bulk\-encryption keys. This is the default minimum
 strength for mandatory TLS encryption. The underlying cipherlist is
 specified via the tls_medium_cipherlist configuration parameter, which
-you are strongly encouraged to not change.
+you are strongly encouraged not to change.
 .br
 .IP "\fBhigh\fR"
 Enable only "HIGH" grade OpenSSL ciphers. The
@@ -12662,7 +12904,7 @@ without encryption.  This setting is only appropriate in the rare
 case that all clients are prepared to use NULL ciphers (not normally
 enabled in TLS clients). The underlying cipherlist is specified via the
 tls_null_cipherlist configuration parameter, which you are strongly
-encouraged to not change.
+encouraged not to change.
 .br
 .br
 .PP
@@ -12901,7 +13143,7 @@ concurrent access.  The file is created if it does not exist. The \fBsmtpd\fR(8)
 daemon does not use this parameter directly, rather the cache is
 implemented indirectly in the \fBtlsmgr\fR(8) daemon. This means that
 per\-smtpd\-instance master.cf overrides of this parameter are not
-effective. Note, that each of the cache databases supported by \fBtlsmgr\fR(8)
+effective. Note that each of the cache databases supported by \fBtlsmgr\fR(8)
 daemon: $smtpd_tls_session_cache_database, $smtp_tls_session_cache_database
 (and with Postfix 2.3 and later $lmtp_tls_session_cache_database), needs to be
 stored separately. It is not at this time possible to store multiple
@@ -12950,16 +13192,21 @@ value of 2 minutes is used instead.  TLS session tickets require
 an OpenSSL library (at least version 0.9.8h) that provides full
 support for this TLS extension.
 .PP
+Specify a non\-negative time value (an integral value plus an optional
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).
+.PP
 This feature is available in Postfix 2.2 and later, and updated
 for TLS session ticket support in Postfix 2.11.
 .SH smtpd_tls_wrappermode (default: no)
-Run the Postfix SMTP server in the non\-standard "wrapper" mode,
+Run the Postfix SMTP server in TLS "wrapper" mode,
 instead of using the STARTTLS command.
 .PP
 If you want to support this service, enable a special port in
 master.cf, and specify "\-o smtpd_tls_wrappermode=yes" on the SMTP
-server's command line. Port 465 (smtps) was once chosen for this
-purpose.
+server's command line. Port 465 (submissions/smtps) is reserved for
+this purpose.
 .PP
 This feature is available in Postfix 2.2 and later.
 .SH smtpd_upstream_proxy_protocol (default: empty)
@@ -12978,6 +13225,11 @@ This feature is available in Postfix 2.10 and later.
 The time limit for the proxy protocol specified with the
 smtpd_upstream_proxy_protocol parameter.
 .PP
+Specify a non\-zero time value (an integral value plus an optional
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).
+.PP
 This feature is available in Postfix 2.10 and later.
 .SH smtpd_use_tls (default: no)
 Opportunistic TLS: announce STARTTLS support to remote SMTP clients,
@@ -13052,8 +13304,8 @@ mail.
 This feature is available in Postfix 3.0 and later.
 .SH smtputf8_enable (default: yes)
 Enable preliminary SMTPUTF8 support for the protocols described
-in RFC 6531..6533. This requires that Postfix is built to support
-these protocols.
+in RFC 6531, RFC 6532, and RFC 6533. This requires that Postfix is
+built to support these protocols.
 .PP
 This feature is available in Postfix 3.0 and later.
 .SH soft_bounce (default: no)
@@ -13082,7 +13334,9 @@ soft_bounce = yes
 The time after which a stale exclusive mailbox lockfile is removed.
 This is used for delivery to file or mailbox.
 .PP
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
+Specify a non\-zero time value (an integral value plus an optional
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
 The default time unit is s (seconds).
 .SH stress (default: empty)
 This feature is documented in the STRESS_README document.
@@ -13286,7 +13540,7 @@ ignored with a warning.
 .PP
 Note: It is unwise to omit sha256 from the digest list.  This
 digest algorithm is the only mandatory to implement digest algorithm
-in RFC 6698, and many servers are expected publish TLSA records
+in RFC 6698, and many servers are expected to publish TLSA records
 with just sha256 digests.  Unless one of the standard digests is
 seriously compromised and servers have had ample time to update their
 TLSA records you should not omit any standard digests, just arrange
@@ -13397,7 +13651,7 @@ The prioritized list of elliptic curves supported by the Postfix
 SMTP client and server.  These curves are used by the Postfix SMTP
 server when "smtpd_tls_eecdh_grade = auto".  The selected curves
 must be implemented by OpenSSL and be standardized for use in TLS
-(RFC 4492 or its imminent successor).  It is unwise to list only
+(RFC 8422).  It is unwise to list only
 "bleeding\-edge" curves supported by a small subset of clients.  The
 default list is suitable for most users.
 .PP
@@ -13421,10 +13675,10 @@ server when "smtpd_tls_eecdh_grade = strong". The phrase "sensibly
 strong" means approximately 128\-bit security based on best known
 attacks. The selected curve must be implemented by OpenSSL (as
 reported by \fBecparam\fR(1) with the "\-list_curves" option) and be one
-of the curves listed in Section 5.1.1 of RFC 4492. You should not
+of the curves listed in Section 5.1.1 of RFC 8422. You should not
 generally change this setting.  Remote SMTP client implementations
 must support this curve for EECDH key exchange to take place.  It
-is unwise to choose an "bleeding\-edge" curve supported by only a
+is unwise to choose only "bleeding\-edge" curves supported by only a
 small subset of clients.
 .PP
 The default "strong" curve is rated in NSA Suite
@@ -13457,7 +13711,10 @@ This additional strength comes at a significant computational cost, most
 users should instead set "smtpd_tls_eecdh_grade = strong".  The selected
 curve must be implemented by OpenSSL (as reported by \fBecparam\fR(1) with the
 "\-list_curves" option) and be one of the curves listed in Section 5.1.1
-of RFC 4492. You should not generally change this setting.
+of RFC 8422. You should not generally change this setting.  Remote SMTP
+client implementations must support this curve for EECDH key exchange
+to take place.  It is unwise to choose only "bleeding\-edge" curves
+supported by only a small subset of clients.
 .PP
 This default "ultra" curve is rated in NSA Suite
 B for information classified up to TOP SECRET.
@@ -13481,7 +13738,7 @@ lmtp_tls_ciphers, and lmtp_tls_mandatory_ciphers.  With Postfix
 releases before the middle of 2015 this is the default cipherlist
 for the opportunistic ("may") TLS client security level and also
 the default cipherlist for the SMTP server. You are strongly
-encouraged to not change this setting.
+encouraged not to change this setting.
 .PP
 This feature is available in Postfix 2.3 and later.
 .SH tls_fast_shutdown_enable (default: yes)
@@ -13495,7 +13752,7 @@ The OpenSSL cipherlist for "high" grade ciphers. This defines
 the meaning of the "high" setting in smtpd_tls_ciphers,
 smtpd_tls_mandatory_ciphers, smtp_tls_ciphers, smtp_tls_mandatory_ciphers,
 lmtp_tls_ciphers, and lmtp_tls_mandatory_ciphers. You are strongly
-encouraged to not change this setting.
+encouraged not to change this setting.
 .PP
 This feature is available in Postfix 2.3 and later.
 .SH tls_legacy_public_key_fingerprints (default: no)
@@ -13516,7 +13773,7 @@ The OpenSSL cipherlist for "low" or higher grade ciphers. This defines
 the meaning of the "low" setting in smtpd_tls_ciphers,
 smtpd_tls_mandatory_ciphers, smtp_tls_ciphers, smtp_tls_mandatory_ciphers,
 lmtp_tls_ciphers, and lmtp_tls_mandatory_ciphers. You are strongly
-encouraged to not change this setting.
+encouraged not to change this setting.
 .PP
 This feature is available in Postfix 2.3 and later.
 .SH tls_medium_cipherlist (default: see "postconf \-d" output)
@@ -13527,15 +13784,15 @@ lmtp_tls_ciphers, and lmtp_tls_mandatory_ciphers.  This is the
 default cipherlist for mandatory TLS encryption in the TLS client
 (with anonymous ciphers disabled when verifying server certificates).
 This is the default cipherlist for opportunistic TLS with Postfix
-releases after the middle of 2015.  You are strongly encouraged to
-not change this setting.
+releases after the middle of 2015.  You are strongly encouraged not
+to change this setting.
 .PP
 This feature is available in Postfix 2.3 and later.
 .SH tls_null_cipherlist (default: eNULL:!aNULL)
 The OpenSSL cipherlist for "NULL" grade ciphers that provide
 authentication without encryption. This defines the meaning of the "null"
-setting in smtpd_mandatory_tls_ciphers, smtp_tls_mandatory_ciphers and
-lmtp_tls_mandatory_ciphers.  You are strongly encouraged to not
+setting in smtpd_tls_mandatory_ciphers, smtp_tls_mandatory_ciphers and
+lmtp_tls_mandatory_ciphers.  You are strongly encouraged not to
 change this setting.
 .PP
 This feature is available in Postfix 2.3 and later.
@@ -13589,6 +13846,11 @@ The time between attempts by \fBtlsmgr\fR(8) to save the state of
 the pseudo random number generator (PRNG) to the file specified
 with $tls_random_exchange_name.
 .PP
+Specify a non\-zero time value (an integral value plus an optional
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).
+.PP
 This feature is available in Postfix 2.2 and later.
 .SH tls_random_reseed_period (default: 3600s)
 The maximal time between attempts by \fBtlsmgr\fR(8) to re\-seed the
@@ -13596,6 +13858,11 @@ in\-memory pseudo random number generator (PRNG) pool from external
 sources.  The actual time between re\-seeding attempts is calculated
 using the PRNG, and is between 0 and the time specified.
 .PP
+Specify a non\-zero time value (an integral value plus an optional
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).
+.PP
 This feature is available in Postfix 2.2 and later.
 .SH tls_random_source (default: see "postconf \-d" output)
 The external entropy source for the in\-memory \fBtlsmgr\fR(8) pseudo
@@ -13605,7 +13872,7 @@ type must be prepended:  egd:/path/to/egd_socket for a source with
 EGD compatible socket interface, or dev:/path/to/device for a
 device file.
 .PP
-Note: on OpenBSD systems specify /dev/arandom when /dev/urandom
+Note: on OpenBSD systems specify dev:/dev/arandom when dev:/dev/urandom
 gives timeout errors.
 .PP
 This feature is available in Postfix 2.2 and later.
@@ -13618,7 +13885,7 @@ server mode of \fBtlsproxy\fR(8).
 .PP
 When this parameter is non\-empty, the Postfix SMTP server enables
 SNI extension processing, and logs SNI values that are invalid or
-don't match an entry in the the specified tables.  When an entry
+don't match an entry in the specified tables.  When an entry
 does match, the SNI name is logged as part of the connection summary
 at log levels 1 and higher.
 .PP
@@ -13905,7 +14172,8 @@ to configure tlsproxy client keys and certificates is via the
 This feature is available in Postfix 3.4 and later.
 .SH tlsproxy_client_enforce_tls (default: $smtp_enforce_tls)
 Enforcement mode: require that SMTP servers use TLS encryption.
-See smtp_enforce_tls for further details.
+See smtp_enforce_tls for further details. Use
+tlsproxy_client_security_level instead.
 .PP
 This feature is available in Postfix 3.4 and later.
 .SH tlsproxy_client_fingerprint_digest (default: $smtp_tls_fingerprint_digest)
@@ -13955,13 +14223,14 @@ client. See smtp_tls_security_level for further details.
 This feature is available in Postfix 3.4 and later.
 .SH tlsproxy_client_use_tls (default: $smtp_use_tls)
 Opportunistic mode: use TLS when a remote server announces TLS
-support. See smtp_use_tls for further details.
+support. See smtp_use_tls for further details. Use
+tlsproxy_client_security_level instead.
 .PP
 This feature is available in Postfix 3.4 and later.
 .SH tlsproxy_enforce_tls (default: $smtpd_enforce_tls)
 Mandatory TLS: announce STARTTLS support to remote SMTP clients, and
 require that clients use TLS encryption. See smtpd_enforce_tls for
-further details.
+further details. Use tlsproxy_tls_security_level instead.
 .PP
 This feature is available in Postfix 2.8 and later.
 .SH tlsproxy_service_name (default: tlsproxy)
@@ -14148,7 +14417,7 @@ This feature is available in Postfix 2.8 and later.
 .SH tlsproxy_use_tls (default: $smtpd_use_tls)
 Opportunistic TLS: announce STARTTLS support to remote SMTP clients,
 but do not require that clients use TLS encryption. See smtpd_use_tls
-for further details.
+for further details. Use tlsproxy_tls_security_level instead.
 .PP
 This feature is available in Postfix 2.8 and later.
 .SH tlsproxy_watchdog_timeout (default: 10s)
@@ -14162,6 +14431,7 @@ cannot be set under 10s.
 Specify a non\-zero time value (an integral value plus an optional
 one\-letter suffix that specifies the time unit).  Time units: s
 (seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).
 .PP
 This feature is available in Postfix 2.8 and later
 .SH trace_service_name (default: trace)
@@ -14375,13 +14645,20 @@ This feature is available in Postfix 2.4 and later.
 The time between attempts by the Postfix queue manager to contact
 a malfunctioning message delivery transport.
 .PP
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
+Specify a non\-zero time value (an integral value plus an optional
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
 The default time unit is s (seconds).
 .SH transport_time_limit (default: $command_time_limit)
 A transport\-specific override for the command_time_limit parameter
 value, where \fItransport\fR is the master.cf name of the message
 delivery transport.
 .PP
+Specify a non\-zero time value (an integral value plus an optional
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).
+.PP
 Note: \fItransport\fR_time_limit parameters will not show up
 in "postconf" command output before Postfix version 2.9.  This
 limitation applies to many parameters whose name is a combination
@@ -14391,13 +14668,26 @@ of a master.cf service name and a built\-in suffix (in this case:
 A transport\-specific override for the default_transport_rate_delay
 parameter value, where the initial \fItransport\fR in the parameter
 name is the master.cf name of the message delivery transport.
+.PP
+Specify a non\-negative time value (an integral value plus an optional
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).
+.PP
+Note: \fItransport\fR_transport_rate_delay parameters will
+not show up in "postconf" command output before Postfix version
+2.9.  This limitation applies to many parameters whose name is a
+combination of a master.cf service name and a built\-in suffix (in
+this case: "_transport_rate_delay").
 .SH trigger_timeout (default: 10s)
 The time limit for sending a trigger to a Postfix daemon (for
 example, the \fBpickup\fR(8) or \fBqmgr\fR(8) daemon). This time limit prevents
 programs from getting stuck when the mail system is under heavy
 load.
 .PP
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
+Specify a non\-zero time value (an integral value plus an optional
+one\-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
 The default time unit is s (seconds).
 .SH undisclosed_recipients_header (default: see "postconf \-d" output)
 Message header that the Postfix \fBcleanup\fR(8) server inserts when a
@@ -14598,7 +14888,7 @@ exponentially.
 .PP
 This feature is available in Postfix 3.0 and later.
 .SH virtual_alias_domains (default: $virtual_alias_maps)
-Postfix is final destination for the specified list of virtual
+Postfix is the final destination for the specified list of virtual
 alias domains, that is, domains for which all addresses are aliased
 to addresses in other local or remote domains. The SMTP server
 validates recipient addresses with $virtual_alias_maps and rejects
@@ -14618,7 +14908,7 @@ domain names).
 Specify a list of host or domain names, "/file/name" or
 "type:table" patterns, separated by commas and/or whitespace. A
 "/file/name" pattern is replaced by its contents; a "type:table"
-lookup table is matched when a table entry matches a lookup string
+lookup table is matched when a table entry matches a host or domain name
 (the lookup result is ignored).  Continue long lines by starting
 the next line with whitespace. Specify "!pattern" to exclude a host
 or domain name from the list. The form "!/file/name" is supported
@@ -14643,7 +14933,7 @@ from each original recipient.
 This feature is available in Postfix 2.1 and later.
 .SH virtual_alias_maps (default: $virtual_maps)
 Optional lookup tables that alias specific mail addresses or domains
-to other local or remote address.  The table format and lookups
+to other local or remote addresses.  The table format and lookups
 are documented in \fBvirtual\fR(5). For an overview of Postfix address
 manipulations see the ADDRESS_REWRITING_README document.
 .PP
@@ -14746,7 +15036,7 @@ virtual_mailbox_base = /var/mail
 .ad
 .ft R
 .SH virtual_mailbox_domains (default: $virtual_mailbox_maps)
-Postfix is final destination for the specified list of domains;
+Postfix is the final destination for the specified list of domains;
 mail is delivered via the $virtual_transport mail delivery transport.
 By default this is the Postfix \fBvirtual\fR(8) delivery agent.  The SMTP
 server validates recipient addresses with $virtual_mailbox_maps
@@ -14794,6 +15084,11 @@ In a lookup table, specify a left\-hand side of "@domain.tld" to
 match any user in the specified domain that does not have a specific
 "user@domain.tld" entry.
 .PP
+With the default "virtual_mailbox_domains = $virtual_mailbox_maps",
+lookup tables also need entries with a left\-hand side of "domain.tld"
+to satisfy virtual_mailbox_domain lookups (the right\-hand side is
+required but will not be used).
+.PP
 The remainder of this text is specific to the \fBvirtual\fR(8) delivery
 agent.  It does not apply when mail is delivered with a different
 mail delivery program.
index fdb61067ef2395f87bef338ee12b54f90bed5281..fbc85a3918f006304543785e3de117d9510e4154 100644 (file)
@@ -27,7 +27,7 @@ or SQL, the same lookups are done as for ordinary indexed files.
 
 Alternatively, the table can be provided as a regular\-expression
 map where patterns are given as regular expressions, or lookups
-can be directed to TCP\-based server. In those case, the lookups
+can be directed to TCP\-based server. In those case, the lookups
 are done in a slightly different way as described below under
 "REGULAR EXPRESSION TABLES" or "TCP\-BASED TABLES".
 
@@ -100,7 +100,7 @@ directed to a TCP\-based server. For a description of regular
 expression lookup table syntax, see \fBregexp_table\fR(5) or
 \fBpcre_table\fR(5). For a description of the TCP client/server
 table lookup protocol, see \fBtcp_table\fR(5).
-This feature is not available up to and including Postfix version 2.4.
+This feature is available in Postfix 2.5 and later.
 
 Each pattern is a regular expression that is applied to the entire
 address being looked up. Thus, \fIuser@domain\fR mail addresses are not
@@ -121,7 +121,7 @@ pattern can be interpolated as \fB$1\fR, \fB$2\fR and so on.
 This section describes how the table lookups change when lookups
 are directed to a TCP\-based server. For a description of the TCP
 client/server lookup protocol, see \fBtcp_table\fR(5).
-This feature is not available up to and including Postfix version 2.4.
+This feature is available in Postfix 2.5 and later.
 
 Each lookup operation uses the entire address once.  Thus,
 \fIuser@domain\fR mail addresses are not broken up into their
@@ -141,20 +141,23 @@ The table format does not understand quoting conventions.
 The following \fBmain.cf\fR parameters are especially relevant.
 The text below provides only a parameter summary. See
 \fBpostconf\fR(5) for more details including examples.
-.IP \fBrelocated_maps\fR
-List of lookup tables for relocated users or sites.
+.IP "\fBrelocated_maps (empty)\fR"
+Optional lookup tables with new contact information for users or
+domains that no longer exist.
 .PP
 Other parameters of interest:
-.IP \fBinet_interfaces\fR
-The network interface addresses that this system receives mail on.
-You need to stop and start Postfix when this parameter changes.
-.IP \fBmydestination\fR
-List of domains that this mail system considers local.
-.IP \fBmyorigin\fR
-The domain that is appended to locally\-posted mail.
-.IP \fBproxy_interfaces\fR
-Other interfaces that this machine receives mail on by way of a
-proxy agent or network address translator.
+.IP "\fBinet_interfaces (all)\fR"
+The network interface addresses that this mail system receives
+mail on.
+.IP "\fBmydestination ($myhostname, localhost.$mydomain, localhost)\fR"
+The list of domains that are delivered via the $local_transport
+mail delivery transport.
+.IP "\fBmyorigin ($myhostname)\fR"
+The domain name that locally\-posted mail appears to come
+from, and that locally posted mail is delivered to.
+.IP "\fBproxy_interfaces (empty)\fR"
+The network interface addresses that this mail system receives mail
+on by way of a proxy or network address translation unit.
 .SH "SEE ALSO"
 .na
 .nf
index 01c420ae6d9c071edceeebe10877ea6d21140c0d..c0655976b9ccc0106c644505dacbf7ed1cd2d44d 100644 (file)
@@ -22,7 +22,7 @@ Alternatively, lookup tables can be specified as SQLite databases.
 In order to use SQLite lookups, define an SQLite source as a lookup
 table in main.cf, for example:
 .nf
-    alias_maps = sqlite:/etc/sqlite\-aliases.cf
+    alias_maps = sqlite:/etc/postfix/sqlite\-aliases.cf
 .fi
 
 The file /etc/postfix/sqlite\-aliases.cf has the same format as
@@ -166,8 +166,8 @@ This parameter is available with Postfix 2.2 and later.
 
 NOTE: DO NOT put quotes around the result format!
 .IP "\fBdomain (default: no domain list)\fR"
-This is a list of domain names, paths to files, or
-dictionaries. When specified, only fully qualified search
+This is a list of domain names, paths to files, or "type:table"
+databases. When specified, only fully qualified search
 keys with a *non\-empty* localpart and a matching domain
 are eligible for lookup: 'user' lookups, bare domain lookups
 and "@domain" lookups are not performed. This can significantly
index b19cfd5961949dd281ef893c1ca4b6840c631265..223b9582445df3e9500e34f0f2f26905ffe9755e 100644 (file)
@@ -60,7 +60,7 @@ or SQL, the same lookups are done as for ordinary indexed files.
 
 Alternatively, the table can be provided as a regular\-expression
 map where patterns are given as regular expressions, or lookups
-can be directed to TCP\-based server. In those case, the lookups
+can be directed to TCP\-based server. In those case, the lookups
 are done in a slightly different way as described below under
 "REGULAR EXPRESSION TABLES" or "TCP\-BASED TABLES".
 .SH "CASE FOLDING"
index 74fbcef753f636f90d7939a25272772ddbd8d59d..702f060ef37ef8e95600c6d1b94275544b0f4c94 100644 (file)
@@ -53,7 +53,7 @@ or SQL, the same lookups are done as for ordinary indexed files.
 
 Alternatively, the table can be provided as a regular\-expression
 map where patterns are given as regular expressions, or lookups
-can be directed to TCP\-based server. In those case, the lookups
+can be directed to TCP\-based server. In those case, the lookups
 are done in a slightly different way as described below under
 "REGULAR EXPRESSION TABLES" or "TCP\-BASED TABLES".
 .SH "CASE FOLDING"
@@ -101,7 +101,7 @@ Redirect mail for \fIuser\fR@\fIsite\fR to \fIaddress\fR when
 $\fBmydestination\fR, or when it is listed in $\fBinet_interfaces\fR
 or $\fBproxy_interfaces\fR.
 .sp
-This functionality overlaps with functionality of the local
+This functionality overlaps with the functionality of the local
 \fIaliases\fR(5) database. The difference is that \fBvirtual\fR(5)
 mapping can be applied to non\-local addresses.
 .IP "@\fIdomain address, address, ...\fR"
@@ -161,7 +161,7 @@ When a mail address localpart contains the optional recipient delimiter
 
 The \fBpropagate_unmatched_extensions\fR parameter controls whether
 an unmatched address extension (\fI+foo\fR) is propagated to the
-result of table lookup.
+result of table lookup.
 .SH "VIRTUAL ALIAS DOMAINS"
 .na
 .nf
@@ -246,7 +246,7 @@ pattern can be interpolated as \fB$1\fR, \fB$2\fR and so on.
 This section describes how the table lookups change when lookups
 are directed to a TCP\-based server. For a description of the TCP
 client/server lookup protocol, see \fBtcp_table\fR(5).
-This feature is not available up to and including Postfix version 2.4.
+This feature is available in Postfix 2.5 and later.
 
 Each lookup operation uses the entire address once.  Thus,
 \fIuser@domain\fR mail addresses are not broken up into their
@@ -269,9 +269,9 @@ and for default values. Use the "\fBpostfix reload\fR" command after
 a configuration change.
 .IP "\fBvirtual_alias_maps ($virtual_maps)\fR"
 Optional lookup tables that alias specific mail addresses or domains
-to other local or remote address.
+to other local or remote addresses.
 .IP "\fBvirtual_alias_domains ($virtual_alias_maps)\fR"
-Postfix is final destination for the specified list of virtual
+Postfix is the final destination for the specified list of virtual
 alias domains, that is, domains for which all addresses are aliased
 to addresses in other local or remote domains.
 .IP "\fBpropagate_unmatched_extensions (canonical, virtual)\fR"
index 6aeeac7a7c38680510ccaf087ce8f2a5a646ccbe..ca9c6c8d850a6acb9de2ed1316a076d388b1daa4 100644 (file)
@@ -61,12 +61,18 @@ directory), \fB$shell\fR (recipient shell), \fB$recipient\fR
 (complete recipient address), \fB$extension\fR (recipient address
 extension), \fB$domain\fR (recipient domain), \fB$local\fR
 (entire recipient address localpart) and
-\fB$recipient_delimiter.\fR The forms \fI${name?value}\fR and
-\fI${name:value}\fR expand conditionally to \fIvalue\fR when
-\fI$name\fR is (is not) defined.
-Characters that may have special meaning to the shell or file system
-are replaced by underscores.  The list of acceptable characters
-is specified with the \fBforward_expansion_filter\fR configuration
+\fB$recipient_delimiter.\fR The forms \fI${name?value}\fR
+and \fI${name?{value}}\fR (Postfix 3.0 and later) expand
+conditionally to \fIvalue\fR when \fI$name\fR is defined,
+and the forms \fI${name:value}\fR \fI${name:{value}}\fR
+(Postfix 3.0 and later) expand conditionally to \fIvalue\fR
+when \fI$name\fR is not defined.  The form
+\fI${name?{value1}:{value2}}\fR (Postfix 3.0 and later)
+expands conditionally to \fIvalue1\fR when \fI$name\fR is
+defined, or \fIvalue2\fR otherwise. Characters that may
+have special meaning to the shell or file system are replaced
+with underscores. The list of acceptable characters is
+specified with the \fBforward_expansion_filter\fR configuration
 parameter.
 
 An alias or ~/.\fBforward\fR file may list any combination of external
@@ -180,13 +186,18 @@ to interpolation of \fB$user\fR (recipient username),
 address), \fB$extension\fR (recipient address extension),
 \fB$domain\fR (recipient domain), \fB$local\fR (entire
 recipient address localpart) and \fB$recipient_delimiter.\fR
-The forms \fI${name?value}\fR and \fI${name:value}\fR expand
-conditionally to \fIvalue\fR when \fI$name\fR is (is not)
-defined.  Characters that may have special meaning to the
-shell or file system are replaced by underscores.  The list
-of acceptable characters is specified with the
-\fBexecution_directory_expansion_filter\fR configuration
-parameter.
+The forms \fI${name?value}\fR and \fI${name?{value}}\fR
+(Postfix 3.0 and later) expand conditionally to \fIvalue\fR
+when \fI$name\fR is defined, and the forms \fI${name:value}\fR
+and \fI${name:{value}}\fR (Postfix 3.0 and later) expand
+conditionally to \fIvalue\fR when \fI$name\fR is not defined.
+The form \fI${name?{value1}:{value2}}\fR (Postfix 3.0 and
+later) expands conditionally to \fIvalue1\fR when \fI$name\fR
+is defined, or \fIvalue2\fR otherwise. Characters that may
+have special meaning to the shell or file system are replaced
+with underscores. The list of acceptable characters
+is specified with the \fBexecution_directory_expansion_filter\fR
+configuration parameter.
 
 The command is executed directly where possible. Assistance by the
 shell (\fB/bin/sh\fR on UNIX systems) is used only when the command
@@ -208,7 +219,7 @@ non\-zero exit status.
 
 A limited amount of message context is exported via environment
 variables. Characters that may have special meaning to the shell
-are replaced by underscores.  The list of acceptable characters
+are replaced with underscores.  The list of acceptable characters
 is specified with the \fBcommand_expansion_filter\fR configuration
 parameter.
 .IP \fBSHELL\fR
@@ -475,7 +486,7 @@ Optional catch\-all destination for unknown \fBlocal\fR(8) recipients.
 Available in Postfix version 2.2 and later:
 .IP "\fBcommand_execution_directory (empty)\fR"
 The \fBlocal\fR(8) delivery agent working directory for delivery to
-external command.
+external commands.
 .SH "MAILBOX LOCKING CONTROLS"
 .na
 .nf
@@ -530,7 +541,7 @@ Restrict the characters that the \fBlocal\fR(8) delivery agent allows in
 $name expansions of $mailbox_command and $command_execution_directory.
 .IP "\fBdefault_privs (nobody)\fR"
 The default rights used by the \fBlocal\fR(8) delivery agent for delivery
-to external file or command.
+to an external file or command.
 .IP "\fBforward_expansion_filter (see 'postconf -d' output)\fR"
 Restrict the characters that the \fBlocal\fR(8) delivery agent allows in
 $name expansions of $forward_path.
@@ -564,7 +575,7 @@ to non\-Postfix processes.
 The time limit for sending or receiving information over an internal
 communication channel.
 .IP "\fBlocal_command_shell (empty)\fR"
-Optional shell program for \fBlocal\fR(8) delivery to non\-Postfix command.
+Optional shell program for \fBlocal\fR(8) delivery to non\-Postfix commands.
 .IP "\fBmax_idle (100s)\fR"
 The maximum amount of time that an idle Postfix daemon process waits
 for an incoming connection before terminating voluntarily.
index 59af49f7018e680823607cc1d13dc58c778cf152..8e54eafd79f41e983fc8296eab41716b96eb2506 100644 (file)
@@ -180,6 +180,7 @@ specify \fB$sender\fR as an argument by itself:
 .nf
     \fIRight\fR: command \-f $sender \-\- $recipient
 .fi
+NOTE: DO NOT put quotes around the command, $sender, or $recipient.
 .IP
 This feature is available as of Postfix 2.3.
 .IP "\fBsize\fR=\fIsize_limit\fR (optional)"
index 410ec87b72e29ad760b5ac3fd53d808776d1a930..8baa440b20dad8a32163f7c292ec2a508009369d 100644 (file)
@@ -18,7 +18,7 @@ It listens on a port as specified in the Postfix \fBmaster.cf\fR file
 and spawns an external command whenever a connection is established.
 The connection can be made over local IPC (such as UNIX\-domain
 sockets) or over non\-local IPC (such as TCP sockets).
-The command\'s standard input, output and error streams are connected
+The command's standard input, output and error streams are connected
 directly to the communication endpoint.
 
 This daemon expects to be run from the \fBmaster\fR(8) process
index bec3f8588da0884fff21161ee492eec67e32c3d6..fa1e572b5ab7e12d79d29ff8dabfdb5b63e1b62e 100644 (file)
@@ -320,6 +320,11 @@ but do not require that clients use TLS encryption.
 .IP "\fBtlsproxy_enforce_tls ($smtpd_enforce_tls)\fR"
 Mandatory TLS: announce STARTTLS support to remote SMTP clients, and
 require that clients use TLS encryption.
+.IP "\fBtlsproxy_client_use_tls ($smtp_use_tls)\fR"
+Opportunistic mode: use TLS when a remote server announces TLS
+support.
+.IP "\fBtlsproxy_client_enforce_tls ($smtp_enforce_tls)\fR"
+Enforcement mode: require that SMTP servers use TLS encryption.
 .SH "RESOURCE CONTROLS"
 .na
 .nf
index ccf601b08be723dc9872bf7b2f74373ee5acdda4..e41da7190b84f08f6c86d8378e9895d3d472d3ab 100644 (file)
@@ -56,7 +56,7 @@ Resolve the address for address verification purposes.
 .ad
 .fi
 The \fBtrivial\-rewrite\fR(8) servers run under control by
-the Postfix master
+the Postfix master(8)
 server.  Each server can handle multiple simultaneous connections.
 When all servers are busy while a client connects, the master
 creates a new server process, provided that the trivial\-rewrite
index 3a3525a74d6cc89a658a617758570f591511ba77..746fc0df23ef72d10c04ea4d6631a8e69aff5602 100644 (file)
@@ -154,7 +154,7 @@ RFC 822 (ARPA Internet Text Messages)
 .ad
 .fi
 Mail bounces when the recipient has no mailbox or when the
-recipient is over disk quota. In all other cases, mail for
+recipient is over disk quota. In all other problem cases, mail for
 an existing recipient is deferred and a warning is logged.
 
 Problems and transactions are logged to \fBsyslogd\fR(8)
@@ -209,7 +209,7 @@ delivery.
 .PP
 Available in Postfix version 2.0 and later:
 .IP "\fBvirtual_mailbox_domains ($virtual_mailbox_maps)\fR"
-Postfix is final destination for the specified list of domains;
+Postfix is the final destination for the specified list of domains;
 mail is delivered via the $virtual_transport mail delivery transport.
 .IP "\fBvirtual_transport (virtual)\fR"
 The default mail delivery transport and next\-hop destination for
diff --git a/postfix/mantools/check-double-cc b/postfix/mantools/check-double-cc
new file mode 100755 (executable)
index 0000000..61ffc5b
--- /dev/null
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+# Finds double words in C comments. See mantools/comment.c for 'comment'
+# source code.
+
+LANG=C; export LANG
+
+find src -name '*.[hc]' | xargs cat | comment | mantools/deroff | mantools/find-double | fgrep -vxf proto/stop.double-cc
diff --git a/postfix/mantools/check-double-install-proto-text b/postfix/mantools/check-double-install-proto-text
new file mode 100755 (executable)
index 0000000..4a27b84
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+# Finds double words in install and proto text files.
+
+LANG=C; export LANG
+
+ls *install* proto/* | egrep -v 'stop|Makefile|html|\.proto' | xargs mantools/deroff | mantools/find-double | fgrep -vxf proto/stop.double-install-proto-text
diff --git a/postfix/mantools/check-double-proto-html b/postfix/mantools/check-double-proto-html
new file mode 100755 (executable)
index 0000000..234a774
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+# Finds double words in proto html files.
+
+LANG=C; export LANG
+
+ls proto/*.html proto/*.proto | xargs mantools/dehtml | mantools/find-double | fgrep -vxf proto/stop.double-proto-html
diff --git a/postfix/mantools/check-spell-cc b/postfix/mantools/check-spell-cc
new file mode 100755 (executable)
index 0000000..ab22470
--- /dev/null
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+# Spellchecks comments in C source code. See mantools/comment.c for
+# 'comment' source code.
+
+LANG=C; export LANG
+
+find . -name *.[hc] | xargs cat | comment | mantools/deroff | spell | fgrep -vxf proto/stop | fgrep -vxf proto/stop.spell-cc
diff --git a/postfix/mantools/check-spell-install-proto-text b/postfix/mantools/check-spell-install-proto-text
new file mode 100755 (executable)
index 0000000..fbf75c7
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+# Spellchecks the install scripts and proto non-html files.
+
+LANG=C; export LANG
+
+ls *install* proto/* | egrep -v 'stop|Makefile|html|\.proto' |  mantools/deroff | spell | fgrep -vxf proto/stop
diff --git a/postfix/mantools/check-spell-proto-html b/postfix/mantools/check-spell-proto-html
new file mode 100755 (executable)
index 0000000..3d05d66
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+# Spellchecks the proto HTML files.
+
+LANG=C; export LANG
+
+mantools/dehtml proto/*html proto/*.proto | spell | fgrep -vxf proto/stop | fgrep -vxf proto/stop.spell-proto-html
diff --git a/postfix/mantools/comment.c b/postfix/mantools/comment.c
new file mode 100644 (file)
index 0000000..4372d44
--- /dev/null
@@ -0,0 +1,66 @@
+#include <stdio.h>
+
+void    copy_comment()
+{
+    int     c;
+
+    while ((c = getchar()) != EOF) {
+       if (c == '*') {
+           if ((c = getchar()) == '/') {
+               putchar('\n');
+               return;
+           }
+           if (c != EOF)
+               ungetc(c, stdin);
+           putchar('*');
+       } else {
+           putchar(c);
+       }
+    }
+}
+
+void    skip_string(int quote)
+{
+    int     c;
+
+    while ((c = getchar()) != EOF) {
+       if (c == quote) {
+           return;
+       } else if (c == '\\') {
+           getchar();
+       }
+    }
+}
+
+int     main()
+{
+    int     c;
+
+    while ((c = getchar()) != EOF) {
+       switch (c) {
+       case '/':
+           if ((c = getchar()) == '*') {
+               copy_comment();
+           } else if (c == '/') {
+               while ((c = getchar()) != EOF) {
+                   putchar(c);
+                   if (c == '\n')
+                       break;
+               }
+           } else {
+               if (c != EOF)
+                   ungetc(c, stdin);
+           }
+           break;
+       case '"':
+       case '\'':
+           skip_string(c);
+           break;
+       case '\\':
+           (void) getchar();
+           break;
+       default:
+           break;
+       }
+    }
+}
diff --git a/postfix/mantools/deroff b/postfix/mantools/deroff
new file mode 100755 (executable)
index 0000000..d538e6e
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+sed '
+       s/^\.[^ ]*//
+       s/\\f.//g
+       s/\\(..//g
+' "$@"
diff --git a/postfix/mantools/find-double b/postfix/mantools/find-double
new file mode 100755 (executable)
index 0000000..371663e
--- /dev/null
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+sed 's/[^A-Z0-9a-z_][^A-Z0-9a-z_]*/ /g' "$@" | awk '
+       { for (i = 1; i <= NF; i++) {
+               if (length($i) > 1 && $(i) == last) {
+                       if (i == 1)
+                           printf("%s ", last)
+                       print
+               }
+               last = $(i)
+          }
+       }
+'
index c1972d13b466557e42cb14cc897e6554e5c8e1ce..602d80c835b715fd7fb23d430231e9123cc17e94 100755 (executable)
@@ -32,7 +32,7 @@ while (<>) {
        $printit = 0;
        next LINE;
     }
-    if (/"[Hh][Tt][Tt][Pp]:/) {
+    if (/"[Hh][Tt][Tt][Pp][Ss]?:/) {
        print;
        $printit = 0;
        next LINE;
@@ -134,23 +134,24 @@ while (<>) {
     s;\bcon[-</bB>]*\n*[ <bB>]*tent_filter\b;<a href="postconf.5.html#content_filter">$&</a>;g;
     s;\bdata_direc[-</bB>]*\n*[ <bB>]*tory\b;<a href="postconf.5.html#data_directory">$&</a>;g;
     s;\bdae[-</bB>]*\n*[ <bB>]*mon_direc[-</bB>]*\n*[ <bB>]*tory\b;<a href="postconf.5.html#daemon_directory">$&</a>;g;
+    s;\bdaemon_table_open_error_is_fatal\b;<a href="postconf.5.html#daemon_table_open_error_is_fatal">$&</a>;g;
     s;\bdaemon_timeout\b;<a href="postconf.5.html#daemon_timeout">$&</a>;g;
     s;\bdebug_peer_level\b;<a href="postconf.5.html#debug_peer_level">$&</a>;g;
     s;\bdebug_peer_list\b;<a href="postconf.5.html#debug_peer_list">$&</a>;g;
     s;\bdefault_delivery_status_filter\b;<a href="postconf.5.html#default_delivery_status_filter">$&</a>;g;
     s;\bdefault_data[-</Bb>]*\n* *[<Bb>]*base_type\b;<a href="postconf.5.html#default_database_type">$&</a>;g;
     s;\bdefault_deliv[-</Bb>]*\n* *[<Bb>]*ery_slot_cost\b;<a href="postconf.5.html#default_delivery_slot_cost">$&</a>;g;
-    s;\bdefault_deliv[-</Bb>]*\n* *[<Bb>]*ery_slot_discount\b;<a href="postconf.5.html#default_delivery_slot_discount">$&</a>;g;
+    s;\bdefault_deliv[-</Bb>]*\n* *[<Bb>]*ery_slot_dis[-</Bb>]*\n* *[<Bb>]*count\b;<a href="postconf.5.html#default_delivery_slot_discount">$&</a>;g;
     s;\bdefault_deliv[-</Bb>]*\n* *[<Bb>]*ery_slot_loan\b;<a href="postconf.5.html#default_delivery_slot_loan">$&</a>;g;
-    s;\bdefault_destina[-</Bb>]*\n* *[<Bb>]*tion_concur[-</Bb>]*\n* *[<Bb>]*rency_limit\b;<a href="postconf.5.html#default_destination_concurrency_limit">$&</a>;g;
+    s;\bdefault_destina[-</Bb>]*\n* *[<Bb>]*tion_con[-</Bb>]*\n* *[<Bb>]*cur[-</Bb>]*\n* *[<Bb>]*rency_limit\b;<a href="postconf.5.html#default_destination_concurrency_limit">$&</a>;g;
     s;\bdefault_destina[-</Bb>]*\n* *[<Bb>]*tion_recip[-</bB>]*\n* *[<bB>]*i[-</bB>]*\n* *[<bB>]*ent_limit\b;<a href="postconf.5.html#default_destination_recipient_limit">$&</a>;g;
     s;\bdefault_extra_recipi[-</bB>]*\n* *[<bB>]*ent_limit\b;<a href="postconf.5.html#default_extra_recipient_limit">$&</a>;g;
     s;\bdefault_minimum_deliv[-</Bb>]*\n* *[<Bb>]*ery_slots\b;<a href="postconf.5.html#default_minimum_delivery_slots">$&</a>;g;
     s;\bdefault_privs\b;<a href="postconf.5.html#default_privs">$&</a>;g;
     s;\bdefault_process_limit\b;<a href="postconf.5.html#default_process_limit">$&</a>;g;
     s;\bdefault_rbl_reply\b;<a href="postconf.5.html#default_rbl_reply">$&</a>;g;
-    s;\bdefault_recipi[-</bB>]*\n* *[<bB>]*ent_refill_limit\b;<a href="postconf.5.html#default_recipient_refill_limit">$&</a>;g;
-    s;\bdefault_recipi[-</bB>]*\n* *[<bB>]*ent_refill_delay\b;<a href="postconf.5.html#default_recipient_refill_delay">$&</a>;g;
+    s;\bdefault_recipi[-</bB>]*\n* *[<bB>]*ent_re[-</bB>]*\n* *[<bB>]*fill_limit\b;<a href="postconf.5.html#default_recipient_refill_limit">$&</a>;g;
+    s;\bdefault_recipi[-</bB>]*\n* *[<bB>]*ent_re[-</bB>]*\n* *[<bB>]*fill_delay\b;<a href="postconf.5.html#default_recipient_refill_delay">$&</a>;g;
     s;\bdefault_recip[-</bB>]*\n* *[<bB>]*ient_limit\b;<a href="postconf.5.html#default_recipient_limit">$&</a>;g;
     s;\bdefault_transport\b;<a href="postconf.5.html#default_transport">$&</a>;g;
     s;\bsender[-</bB>]*\n* *[<bB>]*_de[-</bB>]*\n* *[<bB>]*pen[-</bB>]*\n* *[<bB>]*dent_de[-</bB>]*\n* *[<bB>]*fault[-</bB>]*\n* *[<bB>]*_trans[-</bB>]*\n* *[<bB>]*port[-</bB>]*\n* *[<bB>]*_maps\b;<a href="postconf.5.html#sender_dependent_default_transport_maps">$&</a>;g;
@@ -197,6 +198,7 @@ while (<>) {
     s;\bheader_address_token_limit\b;<a href="postconf.5.html#header_address_token_limit">$&</a>;g;
     s;\bheader_checks\b;<a href="postconf.5.html#header_checks">$&</a>;g;
     s;\bheader_size_limit\b;<a href="postconf.5.html#header_size_limit">$&</a>;g;
+    s;\bheader_from_format\b;<a href="postconf.5.html#header_from_format">$&</a>;g;
     s;\bhelpful_warnings\b;<a href="postconf.5.html#helpful_warnings">$&</a>;g;
     s;\bhome_mailbox\b;<a href="postconf.5.html#home_mailbox">$&</a>;g;
     s;\bhopcount_limit\b;<a href="postconf.5.html#hopcount_limit">$&</a>;g;
@@ -207,7 +209,7 @@ while (<>) {
     s;\bin_flow_delay\b;<a href="postconf.5.html#in_flow_delay">$&</a>;g;
     s;\binet_inter[-</bB>]*\n*[ <bB>]*faces\b;<a href="postconf.5.html#inet_interfaces">$&</a>;g;
     s;\binet_protocols\b;<a href="postconf.5.html#inet_protocols">$&</a>;g;
-    s;\binitial_desti[-</bB>]*\n*[ <bB>]*nation_concur[-</bB>]*\n*[ <bB>]*rency\b;<a href="postconf.5.html#initial_destination_concurrency">$&</a>;g;
+    s;\binitial_desti[-</bB>]*\n*[ <bB>]*nation_con[-</bB>]*\n*[ <bB>]*cur[-</bB>]*\n*[ <bB>]*rency\b;<a href="postconf.5.html#initial_destination_concurrency">$&</a>;g;
     s;\binvalid_hostname_reject_code\b;<a href="postconf.5.html#invalid_hostname_reject_code">$&</a>;g;
     s;\bipc_idle\b;<a href="postconf.5.html#ipc_idle">$&</a>;g;
     s;\bipc_timeout\b;<a href="postconf.5.html#ipc_timeout">$&</a>;g;
@@ -215,6 +217,7 @@ while (<>) {
     s;\bline_length_limit\b;<a href="postconf.5.html#line_length_limit">$&</a>;g;
     s;\blmdb_map_size\b;<a href="postconf.5.html#lmdb_map_size">$&</a>;g;
     s;\blmtp_address_preference\b;<a href="postconf.5.html#lmtp_address_preference">$&</a>;g;
+    s;\blmtp_bind_address_enforce\b;<a href="postconf.5.html#lmtp_bind_address_enforce">$&</a>;g;
     s;\blmtp_body_checks\b;<a href="postconf.5.html#lmtp_body_checks">$&</a>;g;
     s;\blmtp_cname_overrides_servername\b;<a href="postconf.5.html#lmtp_cname_overrides_servername">$&</a>;g;
     s;\blmtp_delivery_status_filter\b;<a href="postconf.5.html#lmtp_delivery_status_filter">$&</a>;g;
@@ -398,12 +401,12 @@ while (<>) {
     s;\bqmqpd_authorized_clients\b;<a href="postconf.5.html#qmqpd_authorized_clients">$&</a>;g;
     s;\bservice_name\b;<a href="postconf.5.html#service_name">$&</a>;g;
 
-    s;\bdefault_desti[-</Bb>]*\n* *[<Bb>]*na[-</Bb>]*\n* *[<Bb>]*tion_concur[-</Bb>]*\n* *[<Bb>]*rency_negative_feedback\b;<a href="postconf.5.html#default_destination_concurrency_negative_feedback">$&</a>;g;
-    s;\bdefault_desti[-</Bb>]*\n* *[<Bb>]*na[-</Bb>]*\n* *[<Bb>]*tion_concur[-</Bb>]*\n* *[<Bb>]*rency_positive_feedback\b;<a href="postconf.5.html#default_destination_concurrency_positive_feedback">$&</a>;g;
-    s;\bdefault_desti[-</Bb>]*\n* *[<Bb>]*na[-</Bb>]*\n* *[<Bb>]*tion_con[-</Bb>]*\n* *[<Bb>]*currency_failed_cohort_limit\b;<a href="postconf.5.html#default_destination_concurrency_failed_cohort_limit">$&</a>;g;
+    s;\bdefault_desti[-</Bb>]*\n* *[<Bb>]*na[-</Bb>]*\n* *[<Bb>]*tion_con[-</Bb>]*\n* *[<Bb>]*cur[-</Bb>]*\n* *[<Bb>]*rency_negative_feedback\b;<a href="postconf.5.html#default_destination_concurrency_negative_feedback">$&</a>;g;
+    s;\bdefault_desti[-</Bb>]*\n* *[<Bb>]*na[-</Bb>]*\n* *[<Bb>]*tion_con[-</Bb>]*\n* *[<Bb>]*cur[-</Bb>]*\n* *[<Bb>]*rency_positive_feedback\b;<a href="postconf.5.html#default_destination_concurrency_positive_feedback">$&</a>;g;
+    s;\bdefault_desti[-</Bb>]*\n* *[<Bb>]*na[-</Bb>]*\n* *[<Bb>]*tion_con[-</Bb>]*\n* *[<Bb>]*cur[-</Bb>]*\n* *[<Bb>]*rency_failed_cohort_limit\b;<a href="postconf.5.html#default_destination_concurrency_failed_cohort_limit">$&</a>;g;
     s;\bdestination_concurrency_feedback_debug\b;<a href="postconf.5.html#destination_concurrency_feedback_debug">$&</a>;g;
     s;\bdefault_destina[-</Bb>]*\n* *[<Bb>]*tion_rate_delay\b;<a href="postconf.5.html#default_destination_rate_delay">$&</a>;g;
-    s;\bdefault_trans[-<\/bB>]*\n*[ <bB>]*port_rate_delay\b;<a href="postconf.5.html#default_transport_rate_delay">$&</a>;g;
+    s;\bdefault_trans[-<\/bB>]*\n*[ <bB>]*port_rate_de[-<\/bB>]*\n*[ <bB>]*lay\b;<a href="postconf.5.html#default_transport_rate_delay">$&</a>;g;
     s;\bmeta_directory\b;<a href="postconf.5.html#meta_directory">$&</a>;g;
 
     s;\bqmqpd_client_port_logging\b;<a href="postconf.5.html#qmqpd_client_port_logging">$&</a>;g;
@@ -710,6 +713,7 @@ while (<>) {
     s;\bsmtpd_sasl_tls_security_options\b;<a href="postconf.5.html#smtpd_sasl_tls_security_options">$&</a>;g;
     s;\bsmtpd_sasl_type\b;<a href="postconf.5.html#smtpd_sasl_type">$&</a>;g;
     s;\bsmtpd_sasl_mechanism_filter\b;<a href="postconf.5.html#smtpd_sasl_mechanism_filter">$&</a>;g;
+    s;\bsmtpd_sasl_service\b;<a href="postconf.5.html#smtpd_sasl_service">$&</a>;g;
     s;\bsmtpd_start[-</bB>]*\n* *[<bB>]*tls_timeout\b;<a href="postconf.5.html#smtpd_starttls_timeout">$&</a>;g;
     s;\bsmtpd_tls_CAfile\b;<a href="postconf.5.html#smtpd_tls_CAfile">$&</a>;g;
     s;\bsmtpd_tls_CApath\b;<a href="postconf.5.html#smtpd_tls_CApath">$&</a>;g;
@@ -769,7 +773,7 @@ while (<>) {
     s;\btls_preempt_cipherlist\b;<a href="postconf.5.html#tls_preempt_cipherlist">$&</a>;g;
     s;\btls_disable_workarounds\b;<a href="postconf.5.html#tls_disable_workarounds">$&</a>;g;
     s;\btls_append_default_CA\b;<a href="postconf.5.html#tls_append_default_CA">$&</a>;g;
-    s;\btls_legacy_public_key_fingerprints\b;<a href="postconf.5.html#tls_legacy_public_key_fingerprint">$&</a>;g;
+    s;\btls_legacy_public_key_fingerprints\b;<a href="postconf.5.html#tls_legacy_public_key_fingerprints">$&</a>;g;
     s;\btls_dane_digests\b;<a href="postconf.5.html#tls_dane_digests">$&</a>;g;
     s;\btls_wildcard_matches_multiple_labels\b;<a href="postconf.5.html#tls_wildcard_matches_multiple_labels">$&</a>;g;
     s;\btls_session_ticket_cipher\b;<a href="postconf.5.html#tls_session_ticket_cipher">$&</a>;g;
@@ -786,24 +790,26 @@ while (<>) {
     s;\bknown_tcp_ports\b;<a href="postconf.5.html#known_tcp_ports">$&</a>;g;
 
     # Transport-dependent magical parameters.
-
-    s;(<i>transport</i>)(<b>)?(_destination_concurrency_failed_cohort_limit)\b;$2<a href="postconf.5.html#transport_destination_concurrency_failed_cohort_limit">$1$3</a>;g;
-    s;(<i>transport</i>)(<b>)?(_destination_concurrency_negative_feedback)\b;$2<a href="postconf.5.html#transport_destination_concurrency_negative_feedback">$1$3</a>;g;
-    s;(<i>transport</i>)(<b>)?(_destination_concurrency_positive_feedback)\b;$2<a href="postconf.5.html#transport_destination_concurrency_positive_feedback">$1$3</a>;g;
-    s;(<i>transport</i>)(<b>)?(_delivery_slot_cost)\b;$2<a href="postconf.5.html#transport_delivery_slot_cost">$1$3</a>;g;
-    s;(<i>transport</i>)(<b>)?(_delivery_slot_discount)\b;$2<a href="postconf.5.html#transport_delivery_slot_discount">$1$3</a>;g;
-    s;(<i>transport</i>)(<b>)?(_delivery_slot_loan)\b;$2<a href="postconf.5.html#transport_delivery_slot_loan">$1$3</a>;g;
-    s;(<i>transport</i>)(<b>)?(_destination_concurrency_limit)\b;$2<a href="postconf.5.html#transport_destination_concurrency_limit">$1$3</a>;g;
-    s;(<i>transport</i>)(<b>)?(_destination_recipient_limit)\b;$2<a href="postconf.5.html#transport_destination_recipient_limit">$1$3</a>;g;
-    s;(<i>transport</i>)(<b>)?(_extra_recipient_limit)\b;$2<a href="postconf.5.html#transport_extra_recipient_limit">$1$3</a>;g;
-    s;(<i>transport</i>)(<b>)?(_initial_destination_concurrency)\b;$2<a href="postconf.5.html#transport_initial_destination_concurrency">$1$3</a>;g;
-    s;(<i>transport</i>)(<b>)?(_minimum_delivery_slots)\b;$2<a href="postconf.5.html#transport_minimum_delivery_slots">$1$3</a>;g;
-    s;(<i>transport</i>)(<b>)?(_recipient_limit)\b;$2<a href="postconf.5.html#transport_recipient_limit">$1$3</a>;g;
-    s;(<i>transport</i>)(<b>)?(_recipient_refill_delay)\b;$2<a href="postconf.5.html#transport_recipient_refill_delay">$1$3</a>;g;
-    s;(<i>transport</i>)(<b>)?(_recipient_refill_limit)\b;$2<a href="postconf.5.html#transport_recipient_refill_limit">$1$3</a>;g;
-    s;(<i>transport</i>)(<b>)?(_time_limit)\b;$2<a href="postconf.5.html#transport_time_limit">$1$3</a>;g;
-    s;(<i>transport</i>)(<b>)?(_destination_rate_delay)\b;$2<a href="postconf.5.html#transport_destination_rate_delay">$1$3</a>;g;
-    s;(<i>transport</i>)(<b>)?(_transport_rate_delay)\b;$2<a href="postconf.5.html#transport_transport_rate_delay">$1$3</a>;g;
+    # Note: Accept non-italic "transport" prefix for content that has been
+    # converted from troff in C sources. Tooling doesn't support bold+italic.
+
+    s;((?:<i>)?transport(?:</i>)?)(<b>)?(_destination_concurrency_failed_cohort_limit)\b;$2<a href="postconf.5.html#transport_destination_concurrency_failed_cohort_limit">$1$3</a>;g;
+    s;((?:<i>)?transport(?:</i>)?)(<b>)?(_destination_concurrency_negative_feedback)\b;$2<a href="postconf.5.html#transport_destination_concurrency_negative_feedback">$1$3</a>;g;
+    s;((?:<i>)?transport(?:</i>)?)(<b>)?(_destination_concurrency_positive_feedback)\b;$2<a href="postconf.5.html#transport_destination_concurrency_positive_feedback">$1$3</a>;g;
+    s;((?:<i>)?transport(?:</i>)?)(<b>)?(_delivery_slot_cost)\b;$2<a href="postconf.5.html#transport_delivery_slot_cost">$1$3</a>;g;
+    s;((?:<i>)?transport(?:</i>)?)(<b>)?(_delivery_slot_discount)\b;$2<a href="postconf.5.html#transport_delivery_slot_discount">$1$3</a>;g;
+    s;((?:<i>)?transport(?:</i>)?)(<b>)?(_delivery_slot_loan)\b;$2<a href="postconf.5.html#transport_delivery_slot_loan">$1$3</a>;g;
+    s;((?:<i>)?transport(?:</i>)?)(<b>)?(_destination_concurrency_limit)\b;$2<a href="postconf.5.html#transport_destination_concurrency_limit">$1$3</a>;g;
+    s;((?:<i>)?transport(?:</i>)?)(<b>)?(_destination_recipient_limit)\b;$2<a href="postconf.5.html#transport_destination_recipient_limit">$1$3</a>;g;
+    s;((?:<i>)?transport(?:</i>)?)(<b>)?(_extra_recipient_limit)\b;$2<a href="postconf.5.html#transport_extra_recipient_limit">$1$3</a>;g;
+    s;((?:<i>)?transport(?:</i>)?)(<b>)?(_initial_destination_concurrency)\b;$2<a href="postconf.5.html#transport_initial_destination_concurrency">$1$3</a>;g;
+    s;((?:<i>)?transport(?:</i>)?)(<b>)?(_minimum_delivery_slots)\b;$2<a href="postconf.5.html#transport_minimum_delivery_slots">$1$3</a>;g;
+    s;((?:<i>)?transport(?:</i>)?)(<b>)?(_recipient_limit)\b;$2<a href="postconf.5.html#transport_recipient_limit">$1$3</a>;g;
+    s;((?:<i>)?transport(?:</i>)?)(<b>)?(_recipient_refill_delay)\b;$2<a href="postconf.5.html#transport_recipient_refill_delay">$1$3</a>;g;
+    s;((?:<i>)?transport(?:</i>)?)(<b>)?(_recipient_refill_limit)\b;$2<a href="postconf.5.html#transport_recipient_refill_limit">$1$3</a>;g;
+    s;((?:<i>)?transport(?:</i>)?)(<b>)?(_time_limit)\b;$2<a href="postconf.5.html#transport_time_limit">$1$3</a>;g;
+    s;((?:<i>)?transport(?:</i>)?)(<b>)?(_destination_rate_delay)\b;$2<a href="postconf.5.html#transport_destination_rate_delay">$1$3</a>;g;
+    s;((?:<i>)?transport(?:</i>)?)(<b>)?(_transport_rate_delay)\b;$2<a href="postconf.5.html#transport_transport_rate_delay">$1$3</a>;g;
 
     # Undo hyperlinks of manual pages with the same name as parameters.
 
@@ -1180,30 +1186,32 @@ while (<>) {
        $printit = 0;
        next LINE;
     }
-    s/canonical domains*/<a href="VIRTUAL_README.html#canonical">$&<\/a>/;
-    s/hosted domains*/<a href="VIRTUAL_README.html#canonical">$&<\/a>/;
-    #s/other domains*/<a href="VIRTUAL_README.html#canonical">&<\/a>/
-    s/virtual alias example/<a href="VIRTUAL_README.html#virtual_alias">$&<\/a>/;
-    s/virtual mailbox example/<a href="VIRTUAL_README.html#virtual_mailbox">$&<\/a>/;
-    s/local domains*/<a href="ADDRESS_CLASS_README.html#local_domain_class">$&<\/a>/;
-    s/virtual alias domains*/<a href="ADDRESS_CLASS_README.html#virtual_alias_class">$&<\/a>/;
-    s/virtual ALIAS domains*/<a href="ADDRESS_CLASS_README.html#virtual_alias_class">$&<\/a>/;
-    s/virtual mailbox domains*/<a href="ADDRESS_CLASS_README.html#virtual_mailbox_class">$&<\/a>/;
-    s/virtual MAILBOX domains*/<a href="ADDRESS_CLASS_README.html#virtual_mailbox_class">$&<\/a>/;
-    s/relay domains*/<a href="ADDRESS_CLASS_README.html#relay_domain_class">$&<\/a>/;
-    s/default domains*/<a href="ADDRESS_CLASS_README.html#default_domain_class">$&<\/a>/;
-    s/mydestination domains*/<a href="ADDRESS_CLASS_README.html#local_domain_class">$&<\/a>/;
-    s/\b"*maildrop"* *queues*\b/<a href="QSHAPE_README.html#maildrop_queue">$&<\/a>/;
-    s/\b("*maildrop"*),/<a href="QSHAPE_README.html#maildrop_queue">$1<\/a>,/;
-    s/\b("*incoming"*) and\b/<a href="QSHAPE_README.html#incoming_queue">$1<\/a> and/;
-    s/\b("*incoming"*) or\b/<a href="QSHAPE_README.html#incoming_queue">$1<\/a> or/;
-    s/\b"*incoming"* *queues*\b/<a href="QSHAPE_README.html#incoming_queue">$&<\/a>/;
-    s/<b> *incoming *<\/b> *queues*\b/<a href="QSHAPE_README.html#incoming_queue">$&<\/a>/;
-    s/\b"*active"* *queues*\b/<a href="QSHAPE_README.html#active_queue">$&<\/a>/;
-    s/\b"*deferred"* *queues*\b/<a href="QSHAPE_README.html#deferred_queue">$&<\/a>/;
-    s/\b"*hold"* *queues*\b/<a href="QSHAPE_README.html#hold_queue">$&<\/a>/;
-    s/\b("*hold"*),/<a href="QSHAPE_README.html#hold_queue">$1<\/a>,/;
-    s/\b(postfix  *tls)\b/<a href="postfix-tls.1.html">$1<\/a>/;
+    s/canonical domains*/<a href="VIRTUAL_README.html#canonical">$&<\/a>/g;
+    s/hosted domains*/<a href="VIRTUAL_README.html#canonical">$&<\/a>/g;
+    #s/other domains*/<a href="VIRTUAL_README.html#canonical">&<\/a>/g;
+    s/virtual alias example/<a href="VIRTUAL_README.html#virtual_alias">$&<\/a>/g;
+    s/virtual mailbox example/<a href="VIRTUAL_README.html#virtual_mailbox">$&<\/a>/g;
+    s/local domains*/<a href="ADDRESS_CLASS_README.html#local_domain_class">$&<\/a>/g;
+    s/virtual alias domains*/<a href="ADDRESS_CLASS_README.html#virtual_alias_class">$&<\/a>/g;
+    s/virtual ALIAS domains*/<a href="ADDRESS_CLASS_README.html#virtual_alias_class">$&<\/a>/g;
+    s/virtual mailbox domains*/<a href="ADDRESS_CLASS_README.html#virtual_mailbox_class">$&<\/a>/g;
+    s/virtual MAILBOX domains*/<a href="ADDRESS_CLASS_README.html#virtual_mailbox_class">$&<\/a>/g;
+    s/relay domains*/<a href="ADDRESS_CLASS_README.html#relay_domain_class">$&<\/a>/g;
+    s/default domains*/<a href="ADDRESS_CLASS_README.html#default_domain_class">$&<\/a>/g;
+    s/mydestination domains*/<a href="ADDRESS_CLASS_README.html#local_domain_class">$&<\/a>/g;
+    s/\b"*maildrop"* *queues*\b/<a href="QSHAPE_README.html#maildrop_queue">$&<\/a>/g;
+    s/\b("*maildrop"*),/<a href="QSHAPE_README.html#maildrop_queue">$1<\/a>,/g;
+    s/\b(?<!\/)("*incoming"*),/<a href="QSHAPE_README.html#incoming_queue">$1<\/a>,/g;
+    s/\b("*incoming"*) and\b/<a href="QSHAPE_README.html#incoming_queue">$1<\/a> and/g;
+    s/\b("*incoming"*) or\b/<a href="QSHAPE_README.html#incoming_queue">$1<\/a> or/g;
+    s/\b"*incoming"* *queues*\b/<a href="QSHAPE_README.html#incoming_queue">$&<\/a>/g;
+    s/<b> *incoming *<\/b> *queues*\b/<a href="QSHAPE_README.html#incoming_queue">$&<\/a>/g;
+    s/\b("*active"*) and\b/<a href="QSHAPE_README.html#active_queue">$1<\/a> and/g;
+    s/\b"*active"* *queues*\b/<a href="QSHAPE_README.html#active_queue">$&<\/a>/ig;
+    s/\b"*deferred"* *queues*\b/<a href="QSHAPE_README.html#deferred_queue">$&<\/a>/g;
+    s/\b"*hold"* *queues*\b/<a href="QSHAPE_README.html#hold_queue">$&<\/a>/g;
+    s/\b("*hold"*),/<a href="QSHAPE_README.html#hold_queue">$1<\/a>,/g;
+    s/\b(postfix  *tls)\b/<a href="postfix-tls.1.html">$1<\/a>/g;
 
     # Hyperlink map types.
 
@@ -1215,7 +1223,7 @@ while (<>) {
     s/\b(fail):/<a href="DATABASE_README.html#types">$1<\/a>:/g;
     s/\b(hash):/<a href="DATABASE_README.html#types">$1<\/a>:/g;
     s/\b(internal):/<a href="DATABASE_README.html#types">$1<\/a>:/g;
-    s/\b(ldap):/<a href="ldap_table.5.html">$1<\/a>:/g;
+    s/\b(ldap[is]?):/<a href="ldap_table.5.html">$1<\/a>:/g;
     s/\b(lmdb):/<a href="lmdb_table.5.html">$1<\/a>:/g;
     s/\b(memcache):/<a href="memcache_table.5.html">$1<\/a>:/g;
     s/\b(mysql):/<a href="mysql_table.5.html">$1<\/a>:/g;
@@ -1245,8 +1253,9 @@ while (<>) {
     s/([^\/])\b(virtual):/$1<a href="virtual.8.html">$2<\/a>:/g;
 
     # Database library dependencies.
+    # Note: Exclude AUXLIBS_SDBM because there is no SDBM_README.
 
-    s/\b(AUXLIBS_)([A-Z]+)\b/<a href="$2_README.html">$1$2<\/a>/g;
+    s/\b(AUXLIBS_(?!SDBM))([A-Z]+)\b/<a href="$2_README.html">$1$2<\/a>/g;
 }
 continue {
     if ($printit)
index e498cd34a1f5481d39116e155581bf5fdac49ea6..f6780e7fd6646b52ca7c3bb57eeb1a77d60df388 100644 (file)
 #      This parameter setting is recorded in the installed main.cf file.
 # .IP command_directory
 #      The final destination directory for Postfix administrative commands.
-#      This directory should be in the command search path of adminstrative
+#      This directory should be in the command search path of administrative
 #      users. The built-in default directory name is system dependent.
 #      This parameter setting is recorded in the installed main.cf file.
 # .IP html_directory
@@ -405,7 +405,7 @@ in the command search path of any users."
 
 command_directory_prompt="the final destination directory for
 installed Postfix administrative commands.  This directory should
-be in the command search path of adminstrative users."
+be in the command search path of administrative users."
 
 queue_directory_prompt="the final destination directory for Postfix
 queues."
index 9a0e685b66ffcedbb4ad24b317df187f5c457293..8c60b765a643e38084ac425aa6b4b5474bf7a755 100644 (file)
@@ -493,8 +493,8 @@ document. </p> </dd>
 Rewrite "user@host" to "user@host.$mydomain" </dt>
 
 <dd> <p> This feature is controlled by the boolean append_dot_mydomain
-parameter (default: yes).  The purpose is to get consistent treatment
-of different forms of the same hostname. </p>
+parameter (default: Postfix â‰¥ 3.0: no, Postfix < 3.0: yes).  The purpose
+is to get consistent treatment of different forms of the same hostname. </p>
 
 <p> NOTE: Postfix versions 2.2 and later rewrite message headers
 from remote SMTP clients only if the client matches the
index 1f90e00cb66b7f2c035b68d209b4c75acdb9f3fe..aae94309183e583672e288629d0aa9481830e2e5 100644 (file)
@@ -302,7 +302,7 @@ many users configure their email addresses as <i>username@example.com</i>,
 messages with DSN turned on will trigger the REJECT action in the
 previous section. </p>
 
-<p> If you have such clients then you can to exclude their Message-ID
+<p> If you have such clients then you can exclude their Message-ID
 strings with the two "<tt>Message-ID:.* &lt;!&amp;!</tt>" patterns
 that are shown in the previous section.  Otherwise you will not be
 able to use the two backscatter rules to stop forged Message ID
@@ -382,7 +382,8 @@ above techniques to recognize forgeries.  </p>
 because there is a lot of variation in report formats.  The following
 is only a small example of message header patterns.  For a large
 collection of header and body patterns that recognize virus
-notification email, see http://www.dkuug.dk/keld/virus/
+notification email, see
+https://web.archive.org/web/20100317123907/http://std.dkuug.dk/keld/virus/
 or http://www.t29.dk/antiantivirus.txt.  </p>
 
 <blockquote>
index 4d6244b6c1328b5698eaaa71efdb7475a1a42efc..531dbf9d8e036f358dbdf468adc6be6928bb6a69 100644 (file)
@@ -264,7 +264,7 @@ clients that send mail from outside an authorized network block.
 This is explained in the SASL_README and TLS_README documents. </p>
 
 <p> IMPORTANT: If your machine is connected to a wide area network
-then the "mynetworks_style = host" setting may be too friendly. </p>
+then the "mynetworks_style = subnet" setting may be too friendly. </p>
 
 <p> Examples (specify only one of the following): </p>
 
@@ -286,13 +286,15 @@ parameter value.
 
 <ul>
 
-<li> <p> Specify "mynetworks_style = host" when Postfix should
-forward mail from only the local machine. </p>
+<li> <p> Specify "mynetworks_style = host" (the default when
+compatibility_level &ge; 2) when Postfix should forward mail from
+only the local machine. </p>
 
-<li> <p> Specify "mynetworks_style = subnet" (the default) when
-Postfix should forward mail from SMTP clients in the same IP
-subnetworks as the local machine.  On Linux, this works correctly
-only with interfaces specified with the "ifconfig" command. </p>
+<li> <p> Specify "mynetworks_style = subnet" (the default when
+compatibility_level &lt; 2) when Postfix should forward mail from
+SMTP clients in the same IP subnetworks as the local machine.
+On Linux, this works correctly only with interfaces specified
+with the "ifconfig" or "ip" command. </p>
 
 <li> <p> Specify "mynetworks_style = class" when Postfix should
 forward mail from SMTP clients in the same IP class A/B/C networks
index 85adeac00c36cbfa9869a9702e3fed28cde476d2..1891c7b3001d2a0d511561e2827faa31ea0e230f 100644 (file)
@@ -170,7 +170,7 @@ then turn off Postfix's CHUNKING announcement as described above.
 <p> In RFC 4468, the authors write that a client may pipeline
 commands, and that after sending BURL LAST or BDAT LAST, a client
 must wait for the server's response. But as this text does not
-appear in RFC 3030 which defines BDAT, is it a useless restriction
+appear in RFC 3030 which defines BDAT, it is a useless restriction
 that Postfix will not enforce. </p>
 
 </body>
index 818c4e1e53cbc41141fd31f2f64baab5b4e586ba..939fafb15550c2c94712fb614a98691a8c6b8dec 100644 (file)
@@ -458,8 +458,8 @@ of duplication. </p>
 Postfix versions do not support the receive_override_options feature.
 </p>
 
-<p> If you are MX service provider and want to apply disable
-head/body checks for some domains, you can configure ONE Postfix
+<p> If you are an MX service provider and want to enable header/body
+checks only for some domains, you can configure ONE Postfix
 instance with multiple SMTP server IP addresses in master.cf. Each
 address provides a different service. </p>
 
index 9ec17432ec961e21389df07fcac8dd6292334256..7020dbe2312038aa984742f2b9278ccebcdd99fe 100644 (file)
@@ -245,7 +245,7 @@ setting mynetworks_style=subnet</a> </h2>
 
 <p> The mynetworks_style default value has changed from "subnet"
 to "host". This parameter is used to implement the "permit_mynetworks"
-feature. The change could in unexpected 'access denied' errors after
+feature. The change could cause unexpected 'access denied' errors after
 Postfix is updated from an older version. The backwards-compatibility
 safety net is designed to prevent such surprises. </p>
 
index 7f35146e0546e30c92ff3e6bfde413dd49347ff0..bc2e34ed6493b41b438748abe095ffc81553d603 100644 (file)
@@ -178,7 +178,7 @@ bgcolor="#f0f0ff"> scache(8) </td> </tr>
 <p> The connection cache can be searched by destination domain name
 (the right-hand side of the recipient address) and by the IP address
 of the host at the other end of the connection. This allows Postfix
-to reuse a connection even when the remote host is mail server for
+to reuse a connection even when the remote host is mail server for
 domains with different names.  </p>
 
 <h2><a name="configuration">Connection cache configuration </a></h2>
index b25be05c8e2f3f10c1c255dc793e500c2effea0e..1db3372588dae5b025f7843091906dd2751b3cd7 100644 (file)
@@ -98,7 +98,7 @@ lookup key exists.  Any non-empty lookup result value may be used
 here: the lookup result is not used. Examples
 are the local_recipient_maps that determine what local recipients
 Postfix accepts in mail from the network, the mydestination parameter
-that specifies what domains Postfix delivers locally, or the
+that specifies what domains Postfix delivers locally for, or the
 mynetworks parameter that specifies the IP addresses of trusted
 clients or client networks.  Technically, these are lists, not
 tables. Despite the difference, Postfix lists are described here
@@ -326,7 +326,7 @@ also the static: map type. </dd>
 
 <dt> <b>internal</b> </dt>
 
-<dd> A non-shared, in-memory hash table. Its content are lost when
+<dd> A non-shared, in-memory hash table. Its contents are lost when
 a process terminates. </dd>
 
 <dt> <b>lmdb</b> </dt>
index a5778efa62ab8cc59ddf7cbb727dbdd8e0b6ed0a..ea62cdc48121217bf74e0a840a43b85b688f5a0c 100644 (file)
@@ -577,11 +577,11 @@ or 1000+ lines of <b>postconf</b> command output. </p>
 </ul>
 
 <li> <p> Better, provide output from the <b>postfinger</b> tool.
-This can be found at http://ftp.wl0.org/SOURCES/postfinger.  </p>
+This can be found at https://github.com/ford--prefect/postfinger.  </p>
 
 <li> <p> If the problem is SASL related, consider including the
 output from the <b>saslfinger</b> tool. This can be found at
-http://postfix.state-of-mind.de/patrick.koetter/saslfinger/. </p>
+https://packages.debian.org/search?keywords=sasl2-bin. </p>
 
 <li> <p> If the problem is about too much mail in the queue, consider
 including output from the <b>qshape</b> tool, as described in the
index d2bab2af7281dfe4b442d99e283b4cc33e108d5b..0ed87d6181d2ce806eef0928cf1da84b1011275f 100644 (file)
@@ -176,7 +176,7 @@ and is not recommended for now.  </p>
 
 <h3> EDH Server support </h3>
 
-<p> Postfix &ge; 2.2 support 1024-bit-prime EDH out of the box,
+<p> Postfix &ge; 2.2 supports 1024-bit-prime EDH out of the box,
 with no additional configuration, but you may want to override the
 default prime to be 2048 bits long, and you may want to regenerate
 your primes periodically. See the <a href="#quick-start">quick-start</a>
@@ -218,7 +218,7 @@ for the recommended configuration to work around this issue.  </p>
 
 <h3> EECDH Server support </h3>
 
-<p> Postfix &ge; 2.6 support NIST P-256 EECDH when built with OpenSSL
+<p> Postfix &ge; 2.6 supports NIST P-256 EECDH when built with OpenSSL
 &ge; 1.0.0.  When the remote SMTP client also supports EECDH and
 implements the P-256 curve, forward secrecy just works.  </p>
 
@@ -530,7 +530,7 @@ This pattern is likely to persist until some new key-exchange
 mechanism is invented that also supports forward secrecy.  </p>
 
 <p> The actual key length and raw algorithm key length 
-are generally the same with non-export ciphers, but may they
+are generally the same with non-export ciphers, but they may
 differ for the legacy export ciphers where the actual key 
 is artificially shortened. </p>
 
index 0091fdbdcf409ca680709d9c0d767ea2ec0a29c2..71bcc4ffbe553b72756711b7510f56df5a42979f 100644 (file)
@@ -534,7 +534,7 @@ built, with "make install" or "make upgrade". </p>
 </pre>
 </blockquote>
 
-<p> As with the command "make makefiles, the command "make
+<p> As with the command "make makefiles", the command "make
 install/upgrade name=value..." will replace the string MAIL_VERSION
 at the end of a configuration parameter value with the Postfix
 release version.  Do not try to specify something like $mail_version
@@ -1240,7 +1240,7 @@ of: </p>
 
 <p> Follow the instructions in the "<a href="#mandatory">Mandatory
 configuration file edits</a>" in section 10, and review the "<a
-name="#hamlet">To chroot or not to chroot</a>" text in section
+href="#hamlet">To chroot or not to chroot</a>" text in section
 11. </p>
 
 <p> Start the Postfix system: </p>
@@ -1565,6 +1565,7 @@ following commands: </p>
 <pre>
 # newaliases
 # sendmail -bi
+# postalias /etc/aliases (pathname is system dependent!)
 </pre>
 </blockquote>
 
index db0dc61e698d5c334e794466ecc7f447e364f7d5..01ea51baeeb2d8112e617927cfd3e5c739117905 100644 (file)
@@ -153,7 +153,7 @@ mynetworks = 127.0.0.0/8 168.100.189.0/28 [::1]/128 [fe80::]/10 [2001:240:587::]
 </blockquote>
 
 <p> If you did specify the mynetworks parameter value in
-main.cf, you need update the mynetworks value to include
+main.cf, you need to update the mynetworks value to include
 the IPv6 networks the system is in. Be sure to specify IPv6 address
 information inside "<tt>[]</tt>", like this: </p>
 
index a105ff6d5a719df362823b2aa617487cbbabf042..720d1c0d4b0dfd6250457311197f46f268a2d9fd 100644 (file)
@@ -533,7 +533,7 @@ query_filter = (&amp;(mailacceptinggeneralid=%s)(!(|(maildrop="*|*")(maildrop="*
 </pre>
 </blockquote>
 
-<li> <p> And for that matter, even for aliases, you may not want users able to
+<li> <p> And for that matter, even for aliases, you may not want users to be able to
   specify their maildrops as programs, includes, etc. This might be
   particularly pertinent on a "sealed" server where they don't have
   local UNIX accounts, but exist only in LDAP and Cyrus. You might allow
index 71e0a63dbea7e2d522a618fbdc66f4e20fe6b0cd..f04375e319eecb5ac15e3d5c40bacae96d684b13 100644 (file)
 <h2> Host lookup issues </h2>
 
 <p> By default Linux /etc/hosts lookups do not support multiple IP
-address per hostname. This causes warnings from the Postfix SMTP
+addresses per hostname. This causes warnings from the Postfix SMTP
 server that "hostname XXX does not resolve to address YYY", and is
 especially a problem with hosts that have both IPv4 and IPv6
-addresses.  To fix, turn on support for multiple IP addresses: </p>
+addresses.  To fix this, turn on support for multiple IP addresses: </p>
 
 <blockquote>
 <pre>
@@ -73,7 +73,7 @@ library routines.  See the DB_README file for further information.
 
 <p> On RedHat Linux 7.1 and later <b>procmail</b> no longer has
 permission
-to write the mail spool directory. Workaround: </p>
+to write to the mail spool directory. Workaround: </p>
 
 <blockquote>
 <pre>
index 6f9882ec829860e8592ad4d0d40ee880e8bd08ae..5a19a92e5fecbcf7c85ab339bf0476ad527374fb 100644 (file)
@@ -129,7 +129,7 @@ program is configured with the maillog_file_compressor parameter
 
 <ul>
 
-<li> <p> This command will not rotate a logfile with pathname under
+<li> <p> This command will not rotate a logfile with pathname under
 the /dev directory, such as /dev/stdout. </p>
 
 <li> <p> This command does not (yet) remove old logfiles. </p>
@@ -146,7 +146,7 @@ the /dev directory, such as /dev/stdout. </p>
 in the background, as well as non-daemon programs for local mail
 submission or Postfix management.
 
-<li> <p> Logging to Postfix logfile or stdout requires the Postfix
+<li> <p> Logging to the Postfix logfile or stdout requires the Postfix
 postlogd(8) service. This ensures that simultaneous logging from
 different programs will not get mixed up. </p>
 
index 346d1cc55b855455a5323ada5b9410aa32a75e43..a0d5ac69264e09007bf22d50a0103123d92420f7 100644 (file)
@@ -309,7 +309,8 @@ from other Milter applications.  </p>
 <dt> <b>unix:</b><i>pathname</i> </dt> <dd><p>Connect to the local
 UNIX-domain server that is bound to the specified pathname. If the
 smtpd(8) or cleanup(8) process runs chrooted, an absolute pathname
-is interpreted relative to the Postfix queue directory.</p> </dd>
+is interpreted relative to the Postfix queue directory. On many
+systems, <b>local</b> is a synonym for <b>unix</b></p> </dd>
 
 <dt> <b> inet:</b><i>host</i><b>:</b><i>port</i> </dt> <dd> <p>
 Connect to the specified TCP port on the specified local or remote
@@ -758,7 +759,7 @@ transaction (for example; queue ID, sender, or recipient). </p>
 you may specify macro default values with the milter_macro_defaults
 parameter. Specify zero or more <i>name=value</i> pairs separated by
 comma or whitespace; you may even specify macro names that Postfix does
-know about! </p>
+not know about! </p>
 
 <h2><a name="workarounds">Workarounds</a></h2>
 
index d0e1f551faff539d5309dad6e5b76c72a7c076bf..196f804054ae1e57d8bdfc8c987f272e1a735855 100644 (file)
@@ -259,7 +259,7 @@ EOF
 </pre>
 </blockquote>
 
-<p> The test message should be delivered the members of the "mtaadmin"
+<p> The test message should be delivered to the members of the "mtaadmin"
 address group (or whatever address group you choose) with the
 following headers: </p>
 
@@ -378,7 +378,7 @@ post-filter re-injection SMTP service. Typical additions include: </p>
     smtpd_relay_restrictions =
     smtpd_recipient_restrictions = permit_mynetworks, reject
 
-    # Tolerate occasional high latency in the  content filter.
+    # Tolerate occasional high latency in the content filter.
     #
     smtpd_timeout = 1200s
 
index fc7bdc99799cb390b7aa7b6b5dc6b13dba587df3..db52f02f52eb07fdfbd276d1a28094c643ac3c5c 100644 (file)
@@ -46,8 +46,7 @@ There is no need to recompile Postfix. </p>
 which can be obtained from: </p>
 
 <blockquote>
-    <p> http://www.mysql.com/downloads/ <br>
-    http://sourceforge.net/projects/mysql/ </p>
+    <p> http://www.mysql.com/downloads/ </p>
 </blockquote>
 
 <p> In order to build Postfix with mysql map support, you will need to add
@@ -178,7 +177,7 @@ main.cf configuration feature.</li>
 
 <li> Liviu Daia with further refinements from Jose Luis Tallon and
 Victor Duchovni developed the common query, result_format, domain and
-expansion_limit interface for LDAP, MySQL and PosgreSQL.</li>
+expansion_limit interface for LDAP, MySQL and PostgreSQL.</li>
 
 </ul>
 
index c3d865333c630fd54a87f5494c9a5d55d0a69fe4..56db3799add61938db1e4baf838531fb01d91135 100644 (file)
@@ -228,7 +228,8 @@ temporary allowlist is not used for SMTP client addresses
 that appear on the <i>permanent</i> access list. </p>
 
 <p> By default the temporary allowlist is not shared with other
-postscreen(8) daemons. See <a href="#temp_white_sharing"> Sharing
+postscreen(8) daemons. See
+<a href="#temp_white_sharing"> Sharing
 the temporary allowlist </a> below for alternatives. </p>
 
 <p> When the SMTP client address appears on the temporary
@@ -266,9 +267,9 @@ failure.  </p> </blockquote>
 <ul>
 
 <li> <p> First, configure the host to listen on both primary and
-backup MX addresses. Use the appropriate <tt>ifconfig</tt> command
-for the local operating system, or update the appropriate configuration
-files and "refresh" the network protocol stack. </p>
+backup MX addresses. Use the appropriate <tt>ifconfig</tt> or <tt>ip</tt>
+command for the local operating system, or update the appropriate
+configuration files and "refresh" the network protocol stack. </p>
 
 <p> <p> Second, configure Postfix to listen on the new IP address
 (this step is needed when you have specified inet_interfaces in
@@ -310,7 +311,8 @@ interval before the "220 <i>text</i>..." server greeting, where
 postscreen(8) can run a number of tests in parallel. </p>
 
 <p> When a good client passes these tests, and no "<a
-href="#after_220">deep protocol tests</a>" are configured, postscreen(8)
+href="#after_220">deep protocol tests</a>"
+are configured, postscreen(8)
 adds the client to the temporary allowlist and hands off the "live"
 connection to a Postfix SMTP server process.  The client can then
 continue as if postscreen(8) never even existed (except of course
@@ -512,7 +514,8 @@ service, so that they never have to deal with postscreen(8)'s tests.
 receiver send one command and one response at a time.  Unlike the
 Postfix SMTP server, postscreen(8) does not announce support
 for ESMTP command pipelining.  Therefore, clients are not allowed
-to send multiple commands. postscreen(8)'s <a href="#after_220">deep
+to send multiple commands. postscreen(8)'s
+<a href="#after_220">deep
 protocol test</a> for this is disabled by default. </p>
 
 <p> With "postscreen_pipelining_enable = yes", postscreen(8) detects
@@ -546,7 +549,8 @@ after the 220 SMTP server greeting</a>" below. </p>
 of this is the usage of commands such as CONNECT and other non-SMTP
 commands. Just like the Postfix SMTP server's smtpd_forbidden_commands
 feature, postscreen(8) has an equivalent postscreen_forbidden_commands
-feature to block these clients. postscreen(8)'s <a href="#after_220">deep
+feature to block these clients. postscreen(8)'s
+<a href="#after_220">deep
 protocol test</a> for this is disabled by default.  </p>
 
 <p> With "postscreen_non_smtp_command_enable = yes", postscreen(8)
@@ -583,7 +587,8 @@ tests fail after the 220 SMTP server greeting</a>" below. </p>
 <p> SMTP is a line-oriented protocol: lines have a limited length,
 and are terminated with &lt;CR&gt;&lt;LF&gt;. Lines ending in a
 "bare" &lt;LF&gt;, that is newline not preceded by carriage return,
-are not allowed in SMTP.  postscreen(8)'s <a href="#after_220">deep
+are not allowed in SMTP.  postscreen(8)'s
+<a href="#after_220">deep
 protocol test</a> for this is disabled by default.  </p>
 
 <p> With "postscreen_bare_newline_enable = yes", postscreen(8)
@@ -902,14 +907,15 @@ Postfix version 2.8. </p>
 <li> <p> Some postscreen(8) configuration parameters implement
 stress-dependent behavior. This is supported only when the default
 value is stress-dependent (that is, "postconf -d <i>parametername</i>"
-output shows "<i>parametername</i> =
-${stress?<i>something</i>}${stress:<i>something</i>}").
+output shows
+"<i>parametername</i>&nbsp;=&nbsp;${stress?<i>something</i>}${stress:<i>something</i>}" or
+"<i>parametername</i>&nbsp;=&nbsp;${stress?{<i>something</i>}:{<i>something</i>}}").
 Other parameters always evaluate as if the stress value is the empty
 string. </p>
 
 <li> <p> See "<a href="#before_220">Tests before the 220 SMTP server
-greeting</a>" for details about the logging from these postscreen(8)
-tests. </p>
+greeting</a>" for details about the logging from these
+postscreen(8) tests. </p>
 
 <li> <p> If you run Postfix 2.6 or earlier you must stop and start
 the master daemon ("<tt>postfix stop; postfix start</tt>").  This
@@ -983,7 +989,8 @@ tests</a>", but these are more intrusive than the pregreet or DNSBL
 tests. </p>
 
 <p> When a good client passes the "<a href="#after_220">deep
-protocol tests</a>", postscreen(8) adds the client to the temporary
+protocol tests</a>",
+postscreen(8) adds the client to the temporary
 allowlist but it cannot hand off the "live" connection to a Postfix
 SMTP server process in the middle of the session. Instead, postscreen(8)
 defers mail delivery attempts with a 4XX status, logs the
index 4e82aaf86a95bcc712778cf816444e47e9a616ea..8ab32359dd151c9253536424a2e80b520765b2bf 100644 (file)
@@ -239,7 +239,8 @@ temporary allowlist is not used for SMTP client addresses
 that appear on the <i>permanent</i> access list. </p>
 
 <p> By default the temporary allowlist is not shared with other
-postscreen(8) daemons. See <a href="#temp_allow_sharing"> Sharing
+postscreen(8) daemons. See
+<a href="#temp_allow_sharing"> Sharing
 the temporary allowlist </a> below for alternatives. </p>
 
 <p> When the SMTP client address appears on the temporary
@@ -277,9 +278,9 @@ failure.  </p> </blockquote>
 <ul>
 
 <li> <p> First, configure the host to listen on both primary and
-backup MX addresses. Use the appropriate <tt>ifconfig</tt> command
-for the local operating system, or update the appropriate configuration
-files and "refresh" the network protocol stack. </p>
+backup MX addresses. Use the appropriate <tt>ifconfig</tt> or <tt>ip</tt>
+command for the local operating system, or update the appropriate
+configuration files and "refresh" the network protocol stack. </p>
 
 <p> <p> Second, configure Postfix to listen on the new IP address
 (this step is needed when you have specified inet_interfaces in
@@ -324,7 +325,8 @@ interval before the "220 <i>text</i>..." server greeting, where
 postscreen(8) can run a number of tests in parallel. </p>
 
 <p> When a good client passes these tests, and no "<a
-href="#after_220">deep protocol tests</a>" are configured, postscreen(8)
+href="#after_220">deep protocol tests</a>"
+are configured, postscreen(8)
 adds the client to the temporary allowlist and hands off the "live"
 connection to a Postfix SMTP server process.  The client can then
 continue as if postscreen(8) never even existed (except of course
@@ -526,7 +528,8 @@ service, so that they never have to deal with postscreen(8)'s tests.
 receiver send one command and one response at a time.  Unlike the
 Postfix SMTP server, postscreen(8) does not announce support
 for ESMTP command pipelining.  Therefore, clients are not allowed
-to send multiple commands. postscreen(8)'s <a href="#after_220">deep
+to send multiple commands. postscreen(8)'s
+<a href="#after_220">deep
 protocol test</a> for this is disabled by default. </p>
 
 <p> With "postscreen_pipelining_enable = yes", postscreen(8) detects
@@ -560,7 +563,8 @@ after the 220 SMTP server greeting</a>" below. </p>
 of this is the usage of commands such as CONNECT and other non-SMTP
 commands. Just like the Postfix SMTP server's smtpd_forbidden_commands
 feature, postscreen(8) has an equivalent postscreen_forbidden_commands
-feature to block these clients. postscreen(8)'s <a href="#after_220">deep
+feature to block these clients. postscreen(8)'s
+<a href="#after_220">deep
 protocol test</a> for this is disabled by default.  </p>
 
 <p> With "postscreen_non_smtp_command_enable = yes", postscreen(8)
@@ -597,7 +601,8 @@ tests fail after the 220 SMTP server greeting</a>" below. </p>
 <p> SMTP is a line-oriented protocol: lines have a limited length,
 and are terminated with &lt;CR&gt;&lt;LF&gt;. Lines ending in a
 "bare" &lt;LF&gt;, that is newline not preceded by carriage return,
-are not allowed in SMTP.  postscreen(8)'s <a href="#after_220">deep
+are not allowed in SMTP.  postscreen(8)'s
+<a href="#after_220">deep
 protocol test</a> for this is disabled by default.  </p>
 
 <p> With "postscreen_bare_newline_enable = yes", postscreen(8)
@@ -916,14 +921,15 @@ Postfix version 2.8. </p>
 <li> <p> Some postscreen(8) configuration parameters implement
 stress-dependent behavior. This is supported only when the default
 value is stress-dependent (that is, "postconf -d <i>parametername</i>"
-output shows "<i>parametername</i> =
-${stress?<i>something</i>}${stress:<i>something</i>}").
+output shows
+"<i>parametername</i>&nbsp;=&nbsp;${stress?<i>something</i>}${stress:<i>something</i>}" or
+"<i>parametername</i>&nbsp;=&nbsp;${stress?{<i>something</i>}:{<i>something</i>}}").
 Other parameters always evaluate as if the stress value is the empty
 string. </p>
 
 <li> <p> See "<a href="#before_220">Tests before the 220 SMTP server
-greeting</a>" for details about the logging from these postscreen(8)
-tests. </p>
+greeting</a>" for details about the logging from these
+postscreen(8) tests. </p>
 
 <li> <p> If you run Postfix 2.6 or earlier you must stop and start
 the master daemon ("<tt>postfix stop; postfix start</tt>").  This
@@ -997,7 +1003,8 @@ tests</a>", but these are more intrusive than the pregreet or DNSBL
 tests. </p>
 
 <p> When a good client passes the "<a href="#after_220">deep
-protocol tests</a>", postscreen(8) adds the client to the temporary
+protocol tests</a>",
+postscreen(8) adds the client to the temporary
 allowlist but it cannot hand off the "live" connection to a Postfix
 SMTP server process in the middle of the session. Instead, postscreen(8)
 defers mail delivery attempts with a 4XX status, logs the
index 2bf47be131a76be24774670432872582454ead1c..6956b46c726f141c62e2cb88ed8f887f54124bc9 100644 (file)
@@ -120,11 +120,11 @@ minutes old and 12 older than 1280 minutes (1440 minutes in a day).
 <p> When the output is a terminal intermediate results showing the top 20
 domains (-n option) are displayed after every 1000 messages (-N option)
 and the final output also shows only the top 20 domains. This makes
-qshape useful even when the deferred queue is very large and it may
-otherwise take prohibitively long to read the entire deferred queue. </p>
+qshape useful even when the "deferred" queue is very large and it may
+otherwise take prohibitively long to read the entire "deferred" queue. </p>
 
 <p> By default, qshape shows statistics for the union of both the
-incoming and active queues which are the most relevant queues to
+"incoming" and "active" queues which are the most relevant queues to
 look at when analyzing performance. </p>
 
 <p> One can request an alternate list of queues: </p>
@@ -136,8 +136,8 @@ $ qshape incoming active deferred
 </pre>
 </blockquote>
 
-<p> this will show the age distribution of the deferred queue or
-the union of the incoming active and deferred queues. </p>
+<p> this will show the age distribution of the "deferred" queue or
+the union of the "incoming", "active" and "deferred" queues. </p>
 
 <p> Command line options control the number of display "buckets",
 the age limit for the smallest bucket, display of parent domain
@@ -154,7 +154,7 @@ dominate the queue sender or recipient counts, approximately when
 a burst of mail started, and when it stopped. </p>
 
 <p> The problem destinations or sender domains appear near the top
-left corner of the output table. Remember that the active queue
+left corner of the output table. Remember that the "active" queue
 can accommodate up to 20000 ($qmgr_message_active_limit) messages.
 To check whether this limit has been reached, use: </p>
 
@@ -164,11 +164,11 @@ $ qshape -s active       <i>(show sender statistics)</i>
 </pre>
 </blockquote>
 
-<p> If the total sender count is below 20000 the active queue is
+<p> If the total sender count is below 20000 the "active" queue is
 not yet saturated, any high volume sender domains show near the
 top of the output.
 
-<p> With oqmgr(8) the active queue is also limited to at most 20000
+<p> With oqmgr(8) the "active" queue is also limited to at most 20000
 recipient addresses ($qmgr_message_recipient_limit). To check for
 exhaustion of this limit use: </p>
 
@@ -223,15 +223,15 @@ output.  </p>
 
 <h2><a name="healthy">Example 1: Healthy queue</a></h2>
 
-<p> When looking at just the incoming and active queues, under
-normal conditions (no congestion) the incoming and active queues
+<p> When looking at just the "incoming" and "active" queues, under
+normal conditions (no congestion) the "incoming" and "active" queues
 are nearly empty. Mail leaves the system almost as quickly as it
-comes in or is deferred without congestion in the active queue.
+comes in or is deferred without congestion in the "active" queue.
 </p>
 
 <blockquote>
 <pre>
-$ qshape        <i>(show incoming and active queue status)</i>
+$ qshape        <i>(show "incoming" and "active" queue status)</i>
 
                  T  5 10 20 40 80 160 320 640 1280 1280+
           TOTAL  5  0  0  0  1  0   0   0   1    1     2
@@ -239,9 +239,9 @@ $ qshape        <i>(show incoming and active queue status)</i>
 </pre>
 </blockquote>
 
-<p> If one looks at the two queues separately, the incoming queue
+<p> If one looks at the two queues separately, the "incoming" queue
 is empty or perhaps briefly has one or two messages, while the
-active queue holds more messages and for a somewhat longer time:
+"active" queue holds more messages and for a somewhat longer time:
 </p>
 
 <blockquote>
@@ -266,7 +266,7 @@ dictionary attack bounces</a></h2>
 available for some of the hosted domains. Dictionary attacks on
 the unvalidated domains result in bounce backscatter. The bounces
 dominate the queue, but with proper tuning they do not saturate the
-incoming or active queues. The high volume of deferred mail is not
+"incoming" or "active" queues. The high volume of deferred mail is not
 a direct cause for alarm. </p>
 
 <blockquote>
@@ -290,7 +290,7 @@ $ qshape deferred | head
 is the tail end of the time distribution, showing that short term
 arrival rates are moderate. Larger numbers and lower message ages
 are more indicative of current trouble. Old mail still going nowhere
-is largely harmless so long as the active and incoming queues are
+is largely harmless so long as the "active" and "incoming" queues are
 short. We can also see that the groups.msn.com undeliverables are
 low rate steady stream rather than a concentrated dictionary attack
 that is now over. </p>
@@ -318,8 +318,9 @@ most of the messages are bounces. </p>
 queue</a></h2>
 
 <p> This example is taken from a Feb 2004 discussion on the Postfix
-Users list.  Congestion was reported with the active and incoming
-queues large and not shrinking despite very large delivery agent
+Users list.  Congestion was reported with the
+"active" and "incoming" queues
+large and not shrinking despite very large delivery agent
 process limits.  The thread is archived at:
 http://groups.google.com/groups?threadm=c0b7js$2r65$1@FreeBSD.csie.NCTU.edu.tw
 and
@@ -331,7 +332,7 @@ that all the messages were for just a few destinations: </p>
 
 <blockquote>
 <pre>
-$ qshape        <i>(show incoming and active queue status)</i>
+$ qshape        <i>(show "incoming" and "active" queue status)</i>
 
                            T   A   5  10  20  40  80 160 320 320+
                  TOTAL 11775 9996  0   0   1   1  42  94 221 1420
@@ -341,10 +342,10 @@ $ qshape        <i>(show incoming and active queue status)</i>
 </pre>
 </blockquote>
 
-<p> The "A" column showed the count of messages in the active queue,
-and the numbered columns showed totals for the deferred queue. At
-10000 messages (Postfix 1.x active queue size limit) the active
-queue is full. The incoming was growing rapidly. </p>
+<p> The "A" column showed the count of messages in the "active" queue,
+and the numbered columns showed totals for the "deferred" queue. At
+10000 messages (Postfix 1.x "active" queue size limit) the "active" queue
+is full. The "incoming" queue was growing rapidly. </p>
 
 <p> With the trouble destinations clearly identified, the administrator
 quickly found and fixed the problem. It is substantially harder to
@@ -356,8 +357,8 @@ one message at a time. </p>
 <h2><a name="backlog">Example 4: High volume destination backlog</a></h2>
 
 <p> When a site you send a lot of email to is down or slow, mail
-messages will rapidly build up in the deferred queue, or worse, in
-the active queue. The qshape output will show large numbers for
+messages will rapidly build up in the "deferred" queue, or worse, in
+the "active" queue. The qshape output will show large numbers for
 the destination domain in all age buckets that overlap the starting
 time of the problem: </p>
 
@@ -373,13 +374,13 @@ $ qshape deferred | head
 </blockquote>
 
 <p> Here the "highvolume.com" destination is continuing to accumulate
-deferred mail. The incoming and active queues are fine, but the
-deferred queue started growing some time between 1 and 2 hours ago
+deferred mail. The "incoming" and "active" queues are fine, but the
+"deferred" queue started growing some time between 1 and 2 hours ago
 and continues to grow. </p>
 
 <p> If the high volume destination is not down, but is instead
-slow, one might see similar congestion in the active queue. Active
-queue congestion is a greater cause for alarm; one might need to
+slow, one might see similar congestion in the "active" queue.
+"Active" queue congestion is a greater cause for alarm; one might need to
 take measures to ensure that the mail is deferred instead or even
 add an access(5) rule asking the sender to try again later. </p>
 
@@ -616,7 +617,7 @@ submission rate or perhaps excessive CPU consumption in the cleanup(8)
 service due to excessive body_checks, or (Postfix &ge; 2.3) high latency
 milters. </p>
 
-<p> Note, that once the active queue is full, the cleanup service
+<p> Note, that once the "active" queue is full, the cleanup service
 will attempt to slow down message injection by pausing $in_flow_delay
 for each message. In this case "maildrop" queue congestion may be
 a consequence of congestion downstream, rather than a problem in
@@ -651,8 +652,8 @@ can be used to manually release messages into the "deferred" queue.
 
 <p> Messages can potentially stay in the "hold" queue longer than
 $maximal_queue_lifetime. If such "old" messages need to be released from
-the "hold" queue, they should typically be moved into the "maildrop"
-queue using "postsuper -r", so that the message gets a new timestamp and
+the "hold" queue, they should typically be moved into the "maildrop" queue
+using "postsuper -r", so that the message gets a new timestamp and
 is given more than one opportunity to be delivered.  Messages that are
 "young" can be moved directly into the "deferred" queue using
 "postsuper -H". </p>
@@ -672,21 +673,21 @@ notifies the queue manager of new mail arrival. The queue manager
 ignores incomplete queue files whose mode is 0600, as these are
 still being written by cleanup.  </p>
 
-<p> The queue manager scans the incoming queue bringing any new
-mail into the "active" queue if the active queue resource limits
-have not been exceeded. By default, the active queue accommodates
-at most 20000 messages. Once the active queue message limit is
-reached, the queue manager stops scanning the incoming (and deferred,
-see below) queue.  </p>
+<p> The queue manager scans the "incoming" queue bringing any new
+mail into the "active" queue if the "active" queue resource limits
+have not been exceeded. By default, the "active" queue accommodates
+at most 20000 messages. Once the "active" queue message limit is
+reached, the queue manager stops scanning the "incoming" queue
+(and the "deferred" queue, see below).  </p>
 
-<p> Under normal conditions the incoming queue is nearly empty (has
+<p> Under normal conditions the "incoming" queue is nearly empty (has
 only mode 0600 files), with the queue manager able to import new
-messages into the active queue as soon as they become available.
+messages into the "active" queue as soon as they become available.
 </p>
 
-<p> The incoming queue grows when the message input rate spikes
+<p> The "incoming" queue grows when the message input rate spikes
 above the rate at which the queue manager can import messages into
-the active queue. The main factors slowing down the queue manager
+the "active" queue. The main factors slowing down the queue manager
 are disk I/O and lookup queries to the trivial-rewrite service. If the queue
 manager is routinely not keeping up, consider not using "slow"
 lookup services (MySQL, LDAP, ...) for transport lookups or speeding
@@ -712,8 +713,8 @@ to 1 message per second, but is not strong enough to deflect an
 excessive input rate from many sources at the same time.  </p>
 
 <p> If a server is being hammered from multiple directions, consider
-raising the in_flow_delay to 10 seconds, but only if the incoming
-queue is growing even while the active queue is not full and the
+raising the in_flow_delay to 10 seconds, but only if the "incoming" queue
+is growing even while the "active" queue is not full and the
 trivial-rewrite service is using a fast transport lookup mechanism.
 </p>
 
@@ -723,8 +724,8 @@ trivial-rewrite service is using a fast transport lookup mechanism.
 ensure fast and fair delivery of mail to all destinations within
 designated resource limits.  </p>
 
-<p> The active queue is somewhat analogous to an operating system's
-process run queue. Messages in the active queue are ready to be
+<p> The "active" queue is somewhat analogous to an operating system's
+process run queue. Messages in the "active" queue are ready to be
 sent (runnable), but are not necessarily in the process of being
 sent (running).  </p>
 
@@ -732,15 +733,14 @@ sent (running).  </p>
 as a directory on disk, the real "active" queue is a set of data
 structures in the memory of the queue manager process.  </p>
 
-<p> Messages in the "maildrop", "hold", "incoming" and "deferred"
-queues (see below) do not occupy memory; they are safely stored on
+<p> Messages in the "maildrop", "hold", "incoming" and "deferred" queues
+(see below) do not occupy memory; they are safely stored on
 disk waiting for their turn to be processed. The envelope information
 for messages in the "active" queue is managed in memory, allowing
 the queue manager to do global scheduling, allocating available
-delivery agent processes to an appropriate message in the active
-queue.  </p>
+delivery agent processes to an appropriate message in the "active" queue.  </p>
 
-<p> Within the active queue, (multi-recipient) messages are broken
+<p> Within the "active" queue, (multi-recipient) messages are broken
 up into groups of recipients that share the same transport/nexthop
 combination; the group size is capped by the transport's recipient
 concurrency limit.  </p>
@@ -756,15 +756,15 @@ concurrency limits. Per-recipient limits are appropriate when
 performing final delivery to mailboxes rather than when relaying
 to a remote server.  </p>
 
-<p> Congestion occurs in the active queue when one or more destinations
+<p> Congestion occurs in the "active" queue when one or more destinations
 drain slower than the corresponding message input rate. </p>
 
-<p> Input into the active queue comes both from new mail in the "incoming"
-queue, and retries of mail in the "deferred" queue. Should the "deferred"
-queue get really large, retries of old mail can dominate the arrival
+<p> Input into the "active" queue comes both from new mail in the "incoming" queue,
+and retries of mail in the "deferred" queue. Should the "deferred" queue
+get really large, retries of old mail can dominate the arrival
 rate of new mail. Systems with more CPU, faster disks and more network
-bandwidth can deal with larger deferred queues, but as a rule of thumb
-the deferred queue scales to somewhere between 100,000 and 1,000,000
+bandwidth can deal with larger "deferred" queues, but as a rule of thumb
+the "deferred" queue scales to somewhere between 100,000 and 1,000,000
 messages with good performance unlikely above that "limit". Systems with
 queues this large should typically stop accepting new mail, or put the
 backlog "on hold" until the underlying issue is fixed (provided that
@@ -773,12 +773,12 @@ there is enough capacity to handle just the new mail). </p>
 <p> When a destination is down for some time, the queue manager will
 mark it dead, and immediately defer all mail for the destination without
 trying to assign it to a delivery agent. In this case the messages
-will quickly leave the active queue and end up in the deferred queue
+will quickly leave the "active" queue and end up in the "deferred" queue
 (with Postfix &lt; 2.4, this is done directly by the queue manager,
 with Postfix &ge; 2.4 this is done via the "retry" delivery agent). </p>
 
 <p> When the destination is instead simply slow, or there is a problem
-causing an excessive arrival rate the active queue will grow and will
+causing an excessive arrival rate the "active" queue will grow and will
 become dominated by mail to the congested destination.  </p>
 
 <p> The only way to reduce congestion is to either reduce the input
@@ -818,7 +818,7 @@ throughput falls to just over 1 message per second. </p>
 <p> The best way to avoid bottlenecks when one or more MX hosts is
 non-responsive is to use connection caching. Connection caching was
 introduced with Postfix 2.2 and is by default enabled on demand for
-destinations with a backlog of mail in the active queue. When connection
+destinations with a backlog of mail in the "active" queue. When connection
 caching is in effect for a particular destination, established connections
 are re-used to send additional messages, this reduces the number of
 connections made per message delivery and maintains good throughput even
@@ -849,20 +849,20 @@ transport allocates a separate delivery agent pool to these destinations
 and allows separate tuning of timeouts and concurrency limits. </p>
 
 <p> Another common cause of congestion is unwarranted flushing of the
-entire deferred queue. The deferred queue holds messages that are likely
+entire "deferred" queue. The "deferred" queue holds messages that are likely
 to fail to be delivered and are also likely to be slow to fail delivery
-(time out). As a result the most common reaction to a large deferred queue
+(time out). As a result the most common reaction to a large "deferred" queue
 (flush it!) is more than likely counter-productive, and typically makes
-the congestion worse. Do not flush the deferred queue unless you expect
+the congestion worse. Do not flush the "deferred" queue unless you expect
 that most of its content has recently become deliverable (e.g. relayhost
 back up after an outage)!  </p>
 
 <p> Note that whenever the queue manager is restarted, there may
-already be messages in the active queue directory, but the "real"
-active queue in memory is empty. In order to recover the in-memory
-state, the queue manager moves all the active queue messages
-back into the incoming queue, and then uses its normal incoming
-queue scan to refill the active queue. The process of moving all
+already be messages in the "active" queue directory, but the "real"
+"active" queue in memory is empty. In order to recover the in-memory
+state, the queue manager moves all the "active" queue messages
+back into the "incoming" queue, and then uses its normal "incoming" queue
+scan to refill the "active" queue. The process of moving all
 the messages back and forth, redoing transport table (trivial-rewrite(8)
 resolve service) lookups, and re-importing the messages back into
 memory is expensive. At all costs, avoid frequent restarts of the
@@ -872,20 +872,20 @@ queue manager (e.g. via frequent execution of "postfix reload").  </p>
 
 <p> When all the deliverable recipients for a message are delivered,
 and for some recipients delivery failed for a transient reason (it
-might succeed later), the message is placed in the deferred queue.
+might succeed later), the message is placed in the "deferred" queue.
 </p>
 
-<p> The queue manager scans the deferred queue periodically. The scan
-interval is controlled by the queue_run_delay parameter.  While a deferred
-queue scan is in progress, if an incoming queue scan is also in progress
-(ideally these are brief since the incoming queue should be short), the
-queue manager alternates between looking for messages in the "incoming"
-queue and in the "deferred" queue. This "round-robin" strategy prevents
-starvation of either the incoming or the deferred queues.  </p>
-
-<p> Each deferred queue scan only brings a fraction of the deferred
-queue back into the active queue for a retry. This is because each
-message in the deferred queue is assigned a "cool-off" time when
+<p> The queue manager scans the "deferred" queue periodically. The scan
+interval is controlled by the queue_run_delay parameter.  While a "deferred" queue
+scan is in progress, if an "incoming" queue scan is also in progress
+(ideally these are brief since the "incoming" queue should be short), the
+queue manager alternates between looking for messages in the "incoming" queue
+and in the "deferred" queue. This "round-robin" strategy prevents
+starvation of either the "incoming" or the "deferred" queues.  </p>
+
+<p> Each "deferred" queue scan only brings a fraction of the "deferred" queue
+back into the "active" queue for a retry. This is because each
+message in the "deferred" queue is assigned a "cool-off" time when
 it is deferred.  This is done by time-warping the modification
 time of the queue file into the future. The queue file is not
 eligible for a retry if its modification time is not yet reached.
@@ -897,36 +897,36 @@ the message's age in the queue, and adjusting up or down to lie
 within the limits. This means that young messages are initially
 retried more often than old messages.  </p>
 
-<p> If a high volume site routinely has large deferred queues, it
+<p> If a high volume site routinely has large "deferred" queues, it
 may be useful to adjust the queue_run_delay, minimal_backoff_time and
 maximal_backoff_time to provide short enough delays on first failure
 (Postfix &ge; 2.4 has a sensibly low minimal backoff time by default),
 with perhaps longer delays after multiple failures, to reduce the
 retransmission rate of old messages and thereby reduce the quantity
-of previously deferred mail in the active queue.  If you want a really
+of previously deferred mail in the "active" queue.  If you want a really
 low minimal_backoff_time, you may also want to lower queue_run_delay,
 but understand that more frequent scans will increase the demand for
 disk I/O. </p>
 
-<p> One common cause of large deferred queues is failure to validate
+<p> One common cause of large "deferred" queues is failure to validate
 recipients at the SMTP input stage. Since spammers routinely launch
 dictionary attacks from unrepliable sender addresses, the bounces
-for invalid recipient addresses clog the deferred queue (and at high
-volumes proportionally clog the active queue). Recipient validation
+for invalid recipient addresses clog the "deferred" queue (and at high
+volumes proportionally clog the "active" queue). Recipient validation
 is strongly recommended through use of the local_recipient_maps and
 relay_recipient_maps parameters. Even when bounces drain quickly they
 inundate innocent victims of forgery with unwanted email. To avoid
 this, do not accept mail for invalid recipients. </p>
 
 <p> When a host with lots of deferred mail is down for some time,
-it is possible for the entire deferred queue to reach its retry
-time simultaneously. This can lead to a very full active queue once
+it is possible for the entire "deferred" queue to reach its retry
+time simultaneously. This can lead to a very full "active" queue once
 the host comes back up. The phenomenon can repeat approximately
 every maximal_backoff_time seconds if the messages are again deferred
 after a brief burst of congestion. Perhaps, a future Postfix release
 will add a random offset to the retry time (or use a combination
-of strategies) to reduce the odds of repeated complete deferred
-queue flushes.  </p>
+of strategies) to reduce the odds of repeated complete "deferred" queue
+flushes.  </p>
 
 <h2><a name="credits">Credits</a></h2>
 
index 932ef727baec5634a865c973f3b79e954b08b886..c70d2423332d5a66837bff802d698c8a86e6bfed 100644 (file)
@@ -960,9 +960,9 @@ file entries: </p>
 
 <dt>ldapdb_uri</dt>
 
-<dd> <p> Specify either <code>ldapi://</code> for to connect over
+<dd> <p> Specify either <code>ldapi://</code> to connect over
 a UNIX-domain socket, <code>ldap://</code> for an unencrypted TCP
-connection or <code>ldaps://</code> for an encrypted TCP connection.
+connection, or <code>ldaps://</code> for an encrypted TCP connection.
 </p> </dd>
 
 <dt>ldapdb_id</dt>
@@ -1809,14 +1809,14 @@ resort.  </p>
 tables into one single MySQL database, and configure different
 Postfix queries to extract the appropriate information. </p>
 
-<li> <p> Specify dbm instead of hash if your system uses dbm files
-instead of db files. To find out what lookup tables Postfix supports,
-use the command "postconf -m". </p>
+<li> <p> Specify <b>dbm</b> instead of <b>hash</b> if your system uses
+<b>dbm</b> files instead of <b>db</b> files. To find out what lookup
+tables Postfix supports, use the command "<b>postconf -m</b>". </p>
 
-<li> <p> Execute the command "postmap /etc/postfix/sasl_passwd"
+<li> <p> Execute the command "<b>postmap /etc/postfix/sasl_passwd</b>"
 whenever you change the sasl_passwd table. </p>
 
-<li> <p> Execute the command "postmap /etc/postfix/sender_relay"
+<li> <p> Execute the command "<b>postmap /etc/postfix/sender_relay</b>"
 whenever you change the sender_relay table. </p>
 
 </ul>
@@ -2047,7 +2047,7 @@ necessary; it just makes Postfix configuration a little more
 convenient because you don't have to specify the SASL plug-in type
 in the Postfix main.cf file (but this may cause surprises when you
 switch to a later Postfix version that is built with the default
-SASL type of <code>sasl</code>). </p>
+SASL type of <code>cyrus</code>). </p>
 
 </li>
 
@@ -2188,7 +2188,7 @@ it unless you are forced to. The makers of Cyrus SASL write: </p>
 
 <blockquote> <i> This library is being deprecated and applications
 should transition to using the SASLv2 library</i> (source: <a
-href="http://cyrusimap.web.cmu.edu/downloads.html">Project Cyrus:
+href="http://www.cyrusimap.org/download.html">Project Cyrus:
 Downloads</a>). </blockquote>
 
 <p> If you still need to set it up, here's a quick rundown: </p>
index f9c1e7b8b33ffee00364b122a29105085d7a2739..d80b8f4e3678ff29c5c14bfca4dbf84c8ab81abe 100644 (file)
@@ -720,7 +720,7 @@ nqmgr </a> </h3>
 <p>
 
 Let's start by recapitulating the structures and terms used when
-referring to queue manager and how it operates. Many of these are
+referring to the queue manager and how it operates. Many of these are
 partially described elsewhere, but it is nice to have a coherent
 overview in one place:
 
@@ -745,7 +745,7 @@ it shall talk to) and jobs (referencing the messages it shall
 deliver). </p>
 
 <li> <p> Each transport queue (not to be confused with the on-disk
-active queue or incoming queue) groups everything what is going be
+"active" queue or "incoming" queue) groups everything what is going be
 delivered to given destination (aka nexthop) by its transport.  Each
 queue belongs to one transport, so each destination may be referred
 to by several queues, one for each transport.  Each queue maintains
@@ -795,7 +795,7 @@ up the message </a> </h3>
 
 <p>
 
-Whenever <tt>nqmgr</tt> moves a queue file into the active queue,
+Whenever <tt>nqmgr</tt> moves a queue file into the "active" queue,
 the following happens: It reads all necessary information from the
 queue file as <tt>oqmgr</tt> does, and also reads as many recipients
 as possible - more on that later, for now let's just pretend it
@@ -809,7 +809,7 @@ Then it resolves the recipients as <tt>oqmgr</tt> does, which
 means obtaining (address, nexthop, transport) triple for each
 recipient. For each triple, it finds the transport; if it does not
 exist yet, it instantiates it (unless it's dead). Within the
-transport, it finds the destination queue for given nexthop; if it
+transport, it finds the destination queue for the given nexthop; if it
 does not exist yet, it instantiates it (unless it's dead). The
 triple is then bound to given destination queue. This happens in
 qmgr_resolve() and is basically the same as in <tt>oqmgr</tt>.
@@ -826,9 +826,10 @@ the bound destination queue within this jobs context; if it does
 not exist yet, it instantiates it.  Finally, it stores the address
 from the resolved triple to the recipient entry which is appended
 to both the queue entry list and the peer entry list. The addresses
-for same nexthop are batched in the entries up to recipient_concurrency
-limit for that transport. This happens in qmgr_assign() and apart
-from that it operates with job and peer structures it is basically the
+for the same nexthop are batched in the entries up to the
+<i>transport</i>_destination_recipient_limit for that transport.
+This happens in qmgr_message_assign(), and apart
+from that it operates with job and peer structures, it is basically the
 same as in <tt>oqmgr</tt>.
 
 </p>
@@ -845,9 +846,9 @@ time is important as we will see shortly.
 
 <p>
 
-[Now you should have pretty good idea what is the state of the
-<tt>nqmgr</tt> after couple of messages was picked up, what is the
-relation between all those job, peer, queue and entry structures.]
+[Now you should have a pretty good idea what the state of the
+<tt>nqmgr</tt> is after a couple of messages were picked up, and what the
+relation is between all those job, peer, queue and entry structures.]
 
 </p>
 
@@ -894,7 +895,8 @@ was picked up by the <tt>nqmgr</tt>. So by default we get the
 top-level round-robin transport, and within each transport we get
 the FIFO message delivery. The round-robin of the peers by the
 destination is perhaps of little importance in most real-life cases
-(unless the recipient_concurrency limit is reached, in one job there
+(unless the <i>transport</i>_destination_recipient_limit is reached,
+in one job there
 is only one peer structure for each destination), but theoretically
 it makes sure that even within single jobs, destinations are treated
 fairly.
@@ -986,11 +988,11 @@ mail followed by two two-recipient mails?
 
 The simple answer would be to use delivery sequence <tt>12121313</tt>.
 But the problem is that this does not scale well. Imagine you have
-mail with thousand recipients followed by mail with hundred recipients.
+mail with a thousand recipients followed by mail with a hundred recipients.
 It is tempting to suggest the  delivery sequence like <tt>121212....</tt>,
 but alas! Imagine there arrives another mail with say ten recipients.
 But there are no free slots anymore, so it can't slip by, not even
-if it had just only one recipients.  It will be stuck until the
+if it had only one recipient.  It will be stuck until the
 hundred-recipient mail is delivered, which really sucks.
 
 </p>
@@ -998,7 +1000,7 @@ hundred-recipient mail is delivered, which really sucks.
 <p>
 
 So, it becomes obvious that while inflating the message to get
-free slots is great idea, one has to be really careful of how the
+free slots is great idea, one has to be really careful of how the
 free slots are assigned, otherwise one might corner himself. So,
 how does <tt>nqmgr</tt> really use the free slots?
 
@@ -1032,7 +1034,7 @@ thousand recipient mail?
 
 <p>
 
-Well, despite it looks so at the first glance, another trick will
+Well, despite the fact that it looks so at the first glance, another trick will
 allow us to answer "no, we are not!". If we had said that we will
 inflate the delivery time twice at maximum, and then we consider
 every other slot as a free slot, then we would overinflate in case
@@ -1056,7 +1058,7 @@ transport has a <i>transport</i>_delivery_slot_cost parameter, which
 defaults to default_delivery_slot_cost parameter which is set to 5
 by default. This is the k from the paragraph above. Each time k
 entries of the job are selected for delivery, this counter is
-incremented by one. Once there are some slots accumulated, job which
+incremented by one. Once there are some slots accumulated, job which
 requires no more than that number of slots to be fully delivered
 can preempt this job.
 
@@ -1066,7 +1068,7 @@ can preempt this job.
 
 [Well, the truth is, the counter is incremented every time an entry
 is selected and it is divided by k when it is used.
-But for the understanding it's good enough to use
+But to understand, it's good enough to use
 the above approximation of the truth.]
 
 </p>
@@ -1083,7 +1085,7 @@ and when does all this exactly happen?
 <p>
 
 The answer for the first part is simple. The job whose entry was
-selected the last time is so called current job. Normally, it is
+selected the last time is the so called current job. Normally, it is
 the first job on the scheduler's job list, but destination concurrency
 limits may change this as we will see later. It is always only the
 current job which may get preempted.
@@ -1092,7 +1094,7 @@ current job which may get preempted.
 
 <p>
 
-Now for the second part. The current job has certain amount of
+Now for the second part. The current job has certain amount of
 recipient entries, and as such may accumulate at maximum some amount
 of available delivery slots. It might have already accumulated some,
 and perhaps even already used some when it was preempted before
@@ -1111,8 +1113,8 @@ That is, the older the job is, the more we should try to deliver
 it in order to get best message delivery rates. These rates are of
 course subject to how many recipients the message has, therefore
 the division by the recipient (entry) count. No one shall be surprised
-that message with n recipients takes n times longer to deliver than
-message with one recipient.
+that message with n recipients takes n times longer to deliver than
+message with one recipient.
 
 </p>
 
@@ -1124,9 +1126,9 @@ delivered within the number of slots the current job already
 accumulated? Why do we need to estimate how much it has yet to
 accumulate? If you found out the answer, congratulate yourself. If
 we did it this simple way, we would always choose the candidate
-with least recipient entries. If there were enough single recipient
+with the fewest recipient entries. If there were enough single recipient
 mails coming in, they would always slip by the bulk mail as soon
-as possible, and the two and more recipients mail would never get
+as possible, and the two or more recipients mail would never get
 a chance, no matter how long they have been sitting around in the
 job list.
 
@@ -1134,7 +1136,7 @@ job list.
 
 <p>
 
-This candidate selection has interesting implication - that when
+This candidate selection has an interesting implication - that when
 we choose the best candidate for preemption (this is done in
 qmgr_choose_candidate()), it may happen that we may not use it for
 preemption immediately. This leads to an answer to the last part
@@ -1148,12 +1150,12 @@ The preemption attempt happens every time next transport's recipient
 entry is to be chosen for delivery. To avoid needless overhead, the
 preemption is not attempted if the current job could never accumulate
 more than <i>transport</i>_minimum_delivery_slots (defaults to
-default_minimum_delivery_slots which defaults to 3). If there is
+default_minimum_delivery_slots which defaults to 3). If there are
 already enough accumulated slots to preempt the current job by the
 chosen best candidate, it is done immediately. This basically means
 that the candidate is moved in front of the current job on the
 scheduler's job list and decreasing the accumulated slot counter
-by the amount used by the candidate. If there is not enough slots...
+by the amount used by the candidate. If there are not enough slots...
 well, I could say that nothing happens and the another preemption
 is attempted the next time. But that's not the complete truth.
 
@@ -1164,13 +1166,13 @@ is attempted the next time. But that's not the complete truth.
 The truth is that it turns out that it is not really necessary to
 wait until the jobs counter accumulates all the delivery slots in
 advance. Say we have ten-recipient mail followed by two two-recipient
-mails. If the preemption happened when enough delivery slot accumulate
+mails. If the preemption happened when enough delivery slots accumulate
 (assuming slot cost 2), the delivery sequence becomes
 <tt>11112211113311</tt>. Now what would we get if we would wait
 only for 50% of the necessary slots to accumulate and we promise
 we would wait for the remaining 50% later, after we get back
-to the preempted job? If we use such slot loan, the delivery sequence
-becomes <tt>11221111331111</tt>. As we can see, it makes it no
+to the preempted job? If we use such slot loan, the delivery sequence
+becomes <tt>11221111331111</tt>. As we can see, it makes it not
 considerably worse for the delivery of the ten-recipient mail, but
 it allows the small messages to be delivered sooner.
 
@@ -1192,15 +1194,15 @@ accumulated so far.
 
 <p>
 
-And it pretty much concludes this chapter.
+And that pretty much concludes this chapter.
 
 </p>
 
 <p>
 
 [Now you should have a feeling that you pretty much understand the
-scheduler and the preemption, or at least that you will have it
-after you read the last chapter couple more times. You shall clearly
+scheduler and the preemption, or at least that you will have
+after you read the last chapter couple more times. You shall clearly
 see the job list and the preemption happening at its head, in ideal
 delivery conditions. The feeling of understanding shall last until
 you start wondering what happens if some of the jobs are blocked,
@@ -1226,17 +1228,17 @@ selected by the scheduler?
 
 <p>
 
-From user's point of view it is all simple. If some of the peers
+From the user's point of view it is all simple. If some of the peers
 of a job can't be selected, those peers are simply skipped by the
 entry selection algorithm (the pseudo-code described before) and
 only the selectable ones are used. If none of the peers may be
 selected, the job is declared a "blocker job". Blocker jobs are
 skipped by the entry selection algorithm and they are also excluded
-from the candidates for preemption of current job. Thus the scheduler
+from the candidates for preemption of the current job. Thus the scheduler
 effectively behaves as if the blocker jobs didn't exist on the job
 list at all. As soon as at least one of the peers of a blocker job
 becomes unblocked (that is, the delivery agent handling the delivery
-of the recipient entry for given destination successfully finishes),
+of the recipient entry for the given destination successfully finishes),
 the job's blocker status is removed and the job again participates
 in all further scheduler actions normally.
 
@@ -1298,8 +1300,8 @@ this change because of blockers?
 
 <p>
 
-The answer is: a lot. Any job may become blocker job at any time,
-and also become normal job again at any time. This has several
+The answer is: a lot. Any job may become blocker job at any time,
+and also become normal job again at any time. This has several
 important implications:
 
 </p>
@@ -1320,7 +1322,7 @@ unblocked and is completed... You get the idea.
 <p>
 
 [Interesting side note: even when jobs are delivered out of order,
-from single destination's point of view the jobs are still delivered
+from single destination's point of view the jobs are still delivered
 in the expected order (that is, FIFO unless there was some preemption
 involved). This is because whenever a destination queue becomes
 unblocked (the destination limit allows selection of more recipient
@@ -1371,7 +1373,7 @@ huh?
 <p>
 
 If I illustrate the relations after the above mentioned examples
-(but those in point 1)), the situation would look like this:
+(but those in point 1), the situation would look like this:
 
 </p>
 
@@ -1398,8 +1400,8 @@ Now how does <tt>nqmgr</tt> deal with all these complicated relations?
 <p>
 
 Well, it maintains them all as described, but fortunately, all these
-relations are necessary only for purposes of proper counting of
-available delivery slots. For purposes of ordering the jobs for
+relations are necessary only for the purpose of proper counting of
+available delivery slots. For the purpose of ordering the jobs for
 entry selection, the original rule still applies: "the job preempting
 the current job is moved in front of the current job on the job
 list". So for entry selection purposes, the job relations remain
@@ -1428,8 +1430,8 @@ are simply ignored.
 
 <p>
 
-[By now, you should have a feeling that there is more things going
-under the hood than you ever wanted to know. You decide that
+[By now, you should have a feeling that there are more things going
+on under the hood than you ever wanted to know. You decide that
 forgetting about this chapter is the best you can do for the sake
 of your mind's health and you basically stick with the idea how the
 scheduler works in ideal conditions, when there are no blockers,
@@ -1443,11 +1445,11 @@ limits </a> </h3>
 <p>
 
 When discussing the <tt>nqmgr</tt> scheduler, we have so far assumed
-that all recipients of all messages in the active queue are completely
-read into the memory. This is simply not true. There is an upper
+that all recipients of all messages in the "active" queue are completely
+read into memory. This is simply not true. There is an upper
 bound on the amount of memory the <tt>nqmgr</tt> may use, and
 therefore it must impose some limits on the information it may store
-in the memory at any given time.
+in memory at any given time.
 
 </p>
 
@@ -1456,11 +1458,11 @@ in the memory at any given time.
 First of all, not all messages may be read in-core at once. At any
 time, only qmgr_message_active_limit messages may be read in-core
 at maximum. When read into memory, the messages are picked from the
-incoming and deferred message queues and moved to the active queue
-(incoming having priority), so if there is more than
-qmgr_message_active_limit messages queued in the active queue, the
-rest will have to wait until (some of) the messages in the active
-queue are completely delivered (or deferred).
+"incoming" and "deferred" queues and moved to the "active" queue
+(incoming having priority), so if there are more than
+qmgr_message_active_limit messages queued in the "active" queue, the
+rest will have to wait until (some of) the messages in the "active" queue
+are completely delivered (or deferred).
 
 </p>
 
@@ -1468,11 +1470,11 @@ queue are completely delivered (or deferred).
 
 Even with the limited amount of in-core messages, there is another
 limit which must be imposed in order to avoid memory exhaustion.
-Each message may contain huge amount of recipients (tens or hundreds
+Each message may contain a huge number of recipients (tens or hundreds
 of thousands are not uncommon), so if <tt>nqmgr</tt> read all
-recipients of all messages in the active queue, it may easily run
+recipients of all messages in the "active" queue, it may easily run
 out of memory. Therefore there must be some upper bound on the
-amount of message recipients which are read into the memory at the
+amount of message recipients which are read into memory at the
 same time.
 
 </p>
@@ -1490,8 +1492,8 @@ affects the <tt>nqmgr</tt> and its scheduler.
 The message limit is straightforward - it just limits the size of
 the
 lookahead the <tt>nqmgr</tt>'s scheduler has when choosing which
-message can preempt the current one. Messages not in the active
-queue simply are not considered at all.
+message can preempt the current one. Messages not in the "active" queue
+are simply not considered at all.
 
 </p>
 
@@ -1517,12 +1519,12 @@ of recipient entries. With unread recipients, it is not clear how
 many recipient entries there will be, as they are subject to
 per-destination grouping. It is not even clear to what transports
 (and thus jobs) the recipients will be assigned. And with messages
-coming from the deferred queue, it is not even clear how many unread
+coming from the "deferred" queue, it is not even clear how many unread
 recipients are still to be delivered. This all means that the
 scheduler must use only estimates of how many recipients entries
 there will be.  Fortunately, it is possible to estimate the minimum
 and maximum correctly, so the scheduler can always err on the safe
-side.  Obviously, the better the estimates, the better results, so
+side.  Obviously, the better the estimates, the better the results, so
 it is best when we are able to read all recipients in-core and turn
 the estimates into exact counts, or at least try to read as many
 as possible to make the estimates as accurate as possible.
@@ -1552,9 +1554,9 @@ it achieve it?
 <p>
 
 Perhaps the easiest solution would be to say that each message may
-have at maximum X recipients stored in-core, but such solution would
+have at maximum X recipients stored in-core, but such solution would
 be poor for several reasons. With reasonable qmgr_message_active_limit
-values, the X would have to be quite low to maintain reasonable
+values, the X would have to be quite low to maintain reasonable
 memory footprint. And with low X lots of things would not work well.
 The <tt>nqmgr</tt> would have problems to use the
 <i>transport</i>_destination_recipient_limit efficiently. The
@@ -1568,11 +1570,11 @@ again.
 <p>
 
 Therefore it seems reasonable to have a solution which does not use
-a limit imposed on per-message basis, but which maintains a pool
+a limit imposed on per-message basis, but which maintains a pool
 of available recipient slots, which can be shared among all messages
 in the most efficient manner. And as we do not want separate
 transports to compete for resources whenever possible, it seems
-appropriate to maintain such recipient pool for each transport
+appropriate to maintain such recipient pool for each transport
 separately. This is the general idea, now how does it work in
 practice?
 
@@ -1580,13 +1582,13 @@ practice?
 
 <p>
 
-First we have to solve little chicken-and-egg problem. If we want
+First we have to solve little chicken-and-egg problem. If we want
 to use the per-transport recipient pools, we first need to know to
-what transport(s) is the message assigned. But we will find that
-out only after we read in the recipients first. So it is obvious
+what transport(s) the message is assigned. But we will find that
+out only after we first read in the recipients. So it is obvious
 that we first have to read in some recipients, use them to find out
-to what transports is the message to be assigned, and only after
-that we can use the per-transport recipient pools.
+to what transports the message is to be assigned, and only after
+that can we use the per-transport recipient pools.
 
 </p>
 
@@ -1595,12 +1597,12 @@ that we can use the per-transport recipient pools.
 Now how many recipients shall we read for the first time? This is
 what qmgr_message_recipient_minimum and qmgr_message_recipient_limit
 values control. The qmgr_message_recipient_minimum value specifies
-how many recipients of each message we will read for the first time,
+how many recipients of each message we will read the first time,
 no matter what.  It is necessary to read at least one recipient
 before we can assign the message to a transport and create the first
 job. However, reading only qmgr_message_recipient_minimum recipients
 even if there are only few messages with few recipients in-core would
-be wasteful. Therefore if there is less than qmgr_message_recipient_limit
+be wasteful. Therefore if there are fewer than qmgr_message_recipient_limit
 recipients in-core so far, the first batch of recipients may be
 larger than qmgr_message_recipient_minimum - as large as is required
 to reach the qmgr_message_recipient_limit limit.
@@ -1624,10 +1626,10 @@ qmgr_message_recipient_minimum amount which always applies).
 
 <p>
 
-For example, if a message has three jobs, first with 1 recipient
-still in-core and 4 recipient slots, second with 5 recipient in-core
-and 5 recipient slots, and third with 2 recipients in-core and 0
-recipient slots, it has 1+5+2=7 recipients in-core and 4+5+0=9 jobs'
+For example, if a message has three jobs, the first with 1 recipient
+still in-core and 4 recipient slots, the second with 5 recipients in-core
+and 5 recipient slots, and the third with 2 recipients in-core and 0
+recipient slots, it has 1+5+2=8 recipients in-core and 4+5+0=9 jobs'
 recipients slots in total. This means that we could immediately
 read 2+qmgr_message_recipient_minimum more recipients of that message
 in core.
@@ -1675,9 +1677,9 @@ More specifically, each time a job is created and appended to the
 job list, it gets all unused recipient slots from its transport's
 pool. It keeps them until all recipients of its message are read.
 When this happens, all unused recipient slots are transferred to
-the next job (which is now in fact now first such job) on the job
+the next job (which is now in fact the first such job) on the job
 list which still has some recipients unread, or eventually back to
-the transport pool if there is no such job. Such transfer then also
+the transport pool if there is no such job. Such transfer then also
 happens whenever a recipient entry of that job is delivered.
 
 </p>
@@ -1685,10 +1687,10 @@ happens whenever a recipient entry of that job is delivered.
 <p>
 
 There is also a scenario when a job is not appended to the end of
-the job list (for example it was created as a result of second or
+the job list (for example it was created as a result of second or
 later recipient batch). Then it works exactly as above, except that
 if it was put in front of the first unread job (that is, the job
-of a message which still has some unread recipients in queue file),
+of a message which still has some unread recipients in the queue file),
 that job is first forced to return all of its unused recipient slots
 to the transport pool.
 
@@ -1705,21 +1707,21 @@ as they still have recipients in-core (the maximum is there because
 of the sponsoring mentioned before) and the jobs after this job get
 nothing from the transport recipient pool (unless they got something
 before and then the first unread job was created and enqueued in
-front of them later - in such case the also get at maximum as many
+front of them later - in such a case, they also get at maximum as many
 slots as they have recipients in-core).
 
 </p>
 
 <p>
 
-Things work fine in such state for most of the time, because the
-current job is either completely read in-core or has as much recipient
+Things work fine in such state for most of the time, because the
+current job is either completely read in-core or has as many recipient
 slots as there are, but there is one situation which we still have
 to take care of specially.  Imagine if the current job is preempted
 by some unread job from the job list and there are no more recipient
 slots available, so this new current job could read only batches
 of qmgr_message_recipient_minimum recipients at a time. This would
-really degrade performance. For this reason, each transport has
+really degrade performance. For this reason, each transport has an
 extra pool of <i>transport</i>_extra_recipient_limit recipient
 slots, dedicated exactly for this situation. Each time an unread
 job preempts the current job, it gets half of the remaining recipient
@@ -1730,7 +1732,7 @@ slots from the normal pool and this extra pool.
 <p>
 
 And that's it. It sure does sound pretty complicated, but fortunately
-most people don't really have to care how exactly it works as long
+most people don't really have to care exactly how it works as long
 as it works.  Perhaps the only important things to know for most
 people are the following upper bound formulas:
 
@@ -1783,7 +1785,7 @@ where the sum is over all used transports.
 <p>
 
 And this terribly complicated chapter concludes the documentation
-of <tt>nqmgr</tt> scheduler.
+of the <tt>nqmgr</tt> scheduler.
 
 </p>
 
@@ -1793,7 +1795,7 @@ of <tt>nqmgr</tt> scheduler.
 inside out. In practice, you still hope that you will never have
 to really understand the last or last two chapters completely, and
 fortunately most people really won't. Understanding how the scheduler
-works in ideal conditions is more than good enough for vast majority
+works in ideal conditions is more than good enough for the vast majority
 of users.]
 
 </p>
index ee69165044b111cab2515c0ac722f46672643901..ce38bc82c02d3707059518222b3492b113173b36 100644 (file)
@@ -218,8 +218,9 @@ some restriction produces a result of PERMIT, REJECT or DEFER (try
 again later).  The end of each list is equivalent to a PERMIT result.
 By placing a PERMIT restriction before a REJECT restriction you
 can make exceptions for specific clients or users. This is called
-allowlisting; the fourth example above allows mail from local
-networks but otherwise rejects mail to arbitrary destinations. </p>
+allowlisting; the smtpd_relay_restrictions example above allows mail from local
+networks, and from SASL authenticated clients, but otherwise rejects mail
+to arbitrary destinations. </p>
 
 <p> The table below summarizes the purpose of each SMTP access
 restriction list. All lists use the exact same syntax; they differ
index da886ab70c840f21d2f725d22351f1c0d99e2f3c..b8df76eaa299891ddeb99a8ddd3d1a8aa11ae7e5 100644 (file)
@@ -24,8 +24,8 @@ block or accept mail at specific SMTP protocol stages. In addition,
 the Postfix SMTP server can delegate decisions to an external policy
 server (Postfix 2.1 and later). </p>
 
-<p> With this policy delegation mechanism, a simple <a href="#greylist">
-greylist </a> policy can be implemented with only a dozen lines of
+<p> With this policy delegation mechanism, a simple
+<a href="#greylist">greylist</a> policy can be implemented with only a dozen lines of
 Perl, as is shown at the end of this document. A complete example
 can be found in the Postfix source code, in the directory
 examples/smtpd-policy. </p>
@@ -269,7 +269,7 @@ a TCP socket at 127.0.0.1 port 9998. The second example specifies
 an absolute pathname of a UNIX-domain socket. The third example
 specifies a pathname relative to the Postfix queue directory; use
 this for policy servers that are spawned by the Postfix master
-daemon. </p>
+daemon. On many systems, "local" is a synonym for "unix".</p>
 
 <p> To create a policy service that listens on a UNIX-domain socket
 called "policy", and that runs under control of the Postfix spawn(8)
@@ -316,7 +316,7 @@ open relay. </p>
 
 <li> <p> Line 11: this increases the time that a policy server
 process may run to 3600 seconds.  The default time limit of 1000
-seconds is too short; the policy daemon needs to run long as the
+seconds is too short; the policy daemon needs to run as long as the
 SMTP server process that talks to it.
 See the spawn(8) manpage for more information about the
 <i>transport</i>_time_limit parameter.  </p>
@@ -565,7 +565,7 @@ each request and reply. </p>
 
 <li> <p> Line 6: this increases the time that a greylist server
 process may run to 3600 seconds.  The default time limit of 1000
-seconds is too short; the greylist daemon needs to run long as the
+seconds is too short; the greylist daemon needs to run as long as the
 SMTP server process that talks to it.
 See the spawn(8) manpage for more information about the
 <i>transport</i>_time_limit parameter.  </p>
@@ -615,7 +615,7 @@ client/server configuration</a>" section above.  </p>
 domains that often appear in forged email.  At some point
 in cyberspace/time a list of frequently
 forged MAIL FROM domains could be found at
-http://www.monkeys.com/anti-spam/filtering/sender-domain-validate.in.
+https://web.archive.org/web/20080526153208/http://www.monkeys.com/anti-spam/filtering/sender-domain-validate.in.
 
 <blockquote>
 <pre>
index 61699ed31cb527c53c0c04d625eb95b4cc47326d..710183b7b89998fb4cf04145acf27fc532ad5564 100644 (file)
@@ -199,8 +199,9 @@ usual. </p>
 <p> The content filter itself is not described here. You can use
 any filter that is SMTP enabled. For non-SMTP capable content
 filtering software, Bennett Todd's SMTP proxy implements a nice
-Perl-based framework. See: http://bent.latency.net/smtpprox/ or
-https://github.com/jnorell/smtpprox.</p>
+Perl-based framework. See:
+https://web.archive.org/web/20151022025756/http://bent.latency.net/smtpprox/
+or https://github.com/jnorell/smtpprox/ </p>
 
 <blockquote>
 
@@ -351,8 +352,8 @@ the top of the master.cf file: </p>
 
 <p> By default, the filter has 100 seconds to do its work. If it
 takes longer then Postfix gives up and reports an error to the
-remote SMTP client. You can increase this time limit (see configuration
-parameter section below) but doing so is pointless because you
+remote SMTP client. You can increase this time limit (see the <a href="#parameters">"Configuration
+parameters"</a> section below) but doing so is pointless because you
 can't control when the remote SMTP client times out. </p>
 
 <h2><a name="parameters">Configuration parameters</a></h2>
index 9389297ad057ac791857032f3138f58569d66509..c0e5608381d1e2d79bebc945fc54cde20572539a 100644 (file)
@@ -244,7 +244,7 @@ turned on (smtputf8_enable = yes). </p>
 
 <p> For compatibility with pre-SMTPUTF8 environments, Postfix does
 not automatically set the "SMTPUTF8 requested" flag on messages
-from non-SMTPUTF8 clients that contain an UTF-8 header value or
+from non-SMTPUTF8 clients that contain a UTF-8 header value or
 UTF-8 address localpart. This would make such messages undeliverable
 to non-SMTPUTF8 servers, and could be a barrier to SMTPUTF8 adoption.
 </p>
index 97f14d8e22ff3142fc0e5d2b77924ff9bfa740a6..598f80cf2b292ffefbd73ca20e8aebd2284c0df4 100644 (file)
@@ -98,12 +98,6 @@ dbpath = /some/path/to/sqlite_database
 query = SELECT forw_addr FROM mxaliases WHERE alias='%s' AND status='paid'
 </pre>
 
-<h2>Additional notes</h2>
-
-<p> The SQLite configuration interface setup allows for multiple
-sqlite databases: you can use one for a virtual table, one for an
-access table, and one for an aliases table if you want. </p>
-
 <h2>Credits</h2>
 
 <p> SQLite support was added with Postfix version 2.8. </p>
index 1714e4f2bc70daf44057b46085869804516fc5bc..b4f4efcf5a988c97cfd3d420dd6fb217ef06cc2a 100644 (file)
@@ -168,7 +168,7 @@ at their default settings. </p>
 
 <p> First we present the non-mailhost configuration, because it is
 the simpler one. This machine sends mail as "user@example.com" and
-is final destination for "user@hostname.example.com". </p>
+is the final destination for "user@hostname.example.com". </p>
 
 <blockquote>
 <pre>
@@ -198,7 +198,7 @@ a firewall</a>". </p>
 </ul>
 
 <p> Next we present the mailhost configuration.  This machine sends
-mail as "user@example.com" and is final destination for
+mail as "user@example.com" and is the final destination for
 "user@hostname.example.com" as well as "user@example.com". </p>
 
 <blockquote>
@@ -341,7 +341,7 @@ All the mail to these two accounts is forwarded to an inside address.
 only address literals matching $inet_interfaces or $proxy_interfaces
 are deemed local.  So "localpart@[a.d.d.r]" can be matched as simply
 "localpart" in canonical(5) and virtual(5). This avoids the need to
-specify firewall IP addresses into Postfix configuration files. </p>
+specify firewall IP addresses in Postfix configuration files. </p>
 
 </ul>
 
@@ -478,7 +478,7 @@ mail_version</b>". </p>
 
 <p> The following example presents additional configuration. You
 need to combine this with basic configuration information as
-discussed the first half of this document. </p>
+discussed in the first half of this document. </p>
 
 <blockquote>
 <pre>
@@ -526,7 +526,7 @@ you edit the transport table. </p>
 <h2><a name="backup">Configuring Postfix as primary or backup MX host for a remote site</a></h2>
 
 <p> This section presents additional configuration. You need to
-combine this with basic configuration information as discussed the
+combine this with basic configuration information as discussed in the
 first half of this document. </p>
 
 <p> When your system is SECONDARY MX host for a remote site this
@@ -642,7 +642,7 @@ of the time. For dialup connections that are up 24x7, see the <a
 href="#local_network">local area network</a> section above.  </p>
 
 <p> This section presents additional configuration. You need to
-combine this with basic configuration information as discussed the
+combine this with basic configuration information as discussed in the
 first half of this document. </p>
 
 <p> If you do not have your own hostname and IP address (usually
@@ -749,7 +749,7 @@ send mail between users on the same machine. </p>
 
 <p> The following example presents additional configuration. You
 need to combine this with basic configuration information as
-discussed the first half of this document. </p>
+discussed in the first half of this document. </p>
 
 <blockquote>
 <pre>
@@ -797,7 +797,7 @@ address of their own.</p>
 
 <p> The following example presents additional configuration. You
 need to combine this with basic configuration information as
-discussed the first half of this document. </p>
+discussed in the first half of this document. </p>
 
 <blockquote>
 <pre>
index 26b7b0ecde020e024d16f366a74cf1c7213f830d..30fa5f2261f480d1ce1631233c6718b6e738b6f9 100644 (file)
@@ -543,7 +543,7 @@ services that accept remote connections. </p>
 <p> The postscreen(8) daemon, introduced with Postfix 2.8, provides
 additional protection against mail server overload. One postscreen(8)
 process handles multiple inbound SMTP connections, and decides which
-clients may to talk to a Postfix SMTP server process.  By keeping
+clients may talk to a Postfix SMTP server process.  By keeping
 spambots away, postscreen(8) leaves more SMTP server processes
 available for legitimate clients, and delays the onset of server
 overload conditions. </p>
index 94d4a4b502fe9a297e6cbaadc56989c1ae0a1c70..dacf1c138d32b3fe48b75fc87e5205f37982c6fa 100644 (file)
@@ -35,7 +35,7 @@ SMTP mail or with SASL authentication.
 <p> Postfix version 2.2 introduces support for TLS as described in
 RFC 3207.  TLS Support for older Postfix versions was available as
 an add-on patch.  The section "<a href="#compat">Compatibility with
-Postfix < 2.2 TLS support</a>" below discusses the differences
+Postfix &lt; 2.2 TLS support</a>" below discusses the differences
 between these implementations.  </p>
 
 <p> Topics covered in this document: </p>
@@ -54,7 +54,7 @@ between these implementations.  </p>
 
 <li><a href="#problems"> Reporting problems </a>
 
-<li><a href="#compat">Compatibility with Postfix < 2.2 TLS support</a>
+<li><a href="#compat">Compatibility with Postfix &lt; 2.2 TLS support</a>
 
 <li><a href="#credits"> Credits </a>
 
@@ -225,7 +225,7 @@ key configuration </a> </h3>
 <p> In order to use TLS, the Postfix SMTP server needs a certificate
 and a private key. Both must be in "pem" format. The private key
 must not be encrypted, meaning:  the key must be accessible without
-password.  Both certificate and private key may be in the same
+password.  Both certificate and private key may be in the same
 file.  </p>
 
 <p> Both RSA and DSA certificates are supported. Typically you will
@@ -253,7 +253,7 @@ CA".  Create the server.pem file with: </p>
 </blockquote>
 
 <p> A Postfix SMTP server certificate supplied here must be usable
-as SSL server certificate and hence pass the "openssl verify -purpose
+as an SSL server certificate and hence pass the "openssl verify -purpose
 sslserver ..." test. </p>
 
 <p> A client that trusts the root CA has a local copy of the root
@@ -616,7 +616,7 @@ as a key for the specified access(5) table. </p> </dd>
 <p> The permit_tls_all_clientcerts feature must be used with caution,
 because it can result in too many access permissions.  Use this
 feature only if a special CA issues the client certificates, and
-only if this CA is listed as trusted CA. If other CAs are trusted,
+only if this CA is listed as trusted CA. If other CAs are trusted,
 any owner of a valid client certificate would be authorized.
 The permit_tls_all_clientcerts feature can be practical for a
 specially created email relay server.  </p>
@@ -663,7 +663,7 @@ the user or host.</p>
 
 <p> To influence the Postfix SMTP server cipher selection scheme,
 you can give cipherlist string.  A detailed description would go
-to far here; please refer to the OpenSSL documentation.  If you
+too far here; please refer to the OpenSSL documentation.  If you
 don't know what to do with it, simply don't touch it and leave the
 (openssl-)compiled in default! </p>
 
@@ -778,7 +778,7 @@ certificate is presented.  </p>
 key/certificate pair as the Postfix SMTP server.  If a certificate
 is to be presented, it must be in "pem" format. The private key
 must not be encrypted, meaning: it must be accessible without
-password. Both parts (certificate and private key) may be in the
+password. Both parts (certificate and private key) may be in the
 same file. </p>
 
 <p> In order for remote SMTP servers to verify the Postfix SMTP
@@ -798,7 +798,7 @@ Create the client.pem file with: </p>
 </blockquote>
 
 <p> A Postfix SMTP client certificate supplied here must be usable
-as SSL client certificate and hence pass the "openssl verify -purpose
+as an SSL client certificate and hence pass the "openssl verify -purpose
 sslclient ..." test. </p>
 
 <p> A server that trusts the root CA has a local copy of the root
@@ -1156,9 +1156,9 @@ smtp_tls_enforce_peername. Note: "smtp_enforce_tls = yes" and
 "smtp_tls_enforce_peername = yes" imply "smtp_use_tls = yes". </p>
 
 <li> <p> When both hostname and next-hop destination lookups produce
-a result, the more specific per-site policy (NONE, MUST, etc)
+a result, the more specific per-site policy (NONE, MUST, etc.)
 overrides the less specific one (MAY), and the more secure per-site
-policy (MUST, etc) overrides the less secure one (NONE).  </p>
+policy (MUST, etc.) overrides the less secure one (NONE).  </p>
 
 <li> <p> After the per-site policy lookups are combined, the result
 generally overrides the global policy. The exception is the less
@@ -1215,7 +1215,7 @@ verification. This feature requires Postfix 2.2.9 or later.  </p>
     example.org                 NONE
 
     # TLS should not be used with the host <i>smtp.example.com</i>.
-    smtp.example.com             NONE
+    [smtp.example.com]          NONE
 </pre>
 </blockquote>
 
@@ -1266,7 +1266,7 @@ special CA which then issues the actual certificate...) </p>
 
 <p> To influence the Postfix SMTP client cipher selection scheme,
 you can give cipherlist string.  A detailed description would go
-to far here; please refer to the OpenSSL documentation.  If you
+too far here; please refer to the OpenSSL documentation.  If you
 don't know what to do with it, simply don't touch it and leave the
 (openssl-)compiled in default! </p>
 
@@ -1539,7 +1539,7 @@ Patches, when possible, are greatly appreciated too. </p>
 
 </ul>
 
-<h2><a name="compat">Compatibility with Postfix <2.2 TLS support</a></h2>
+<h2><a name="compat">Compatibility with Postfix &lt; 2.2 TLS support</a></h2>
 
 <p> Postfix version 2.2 TLS support is based on the Postfix/TLS
 patch by Lutz J&auml;nicke, but differs in a few minor ways. </p>
index a58595768d84bde92360b1e90eef07b1b6766978..b53e71bd3b71fc73856bb4cc785422f998c5ab9a 100644 (file)
@@ -29,7 +29,7 @@ SMTP mail or with SASL authentication. </p>
 the ability to encrypt mail and to authenticate remote SMTP clients
 or servers.  You also turn on hundreds of thousands of lines of
 OpenSSL library code.  Assuming that OpenSSL is written as carefully
-as Wietse's own code, every 1000 lines introduce one additional bug
+as Wietse's own code, every 1000 lines introduces one additional bug
 into Postfix.  </p>
 
 <p> Topics covered in this document: </p>
@@ -201,7 +201,7 @@ client must receive the issuing CA certificates via the TLS handshake
 or via public-key infrastructure. This means that the Postfix server
 public-key certificate file must include the server certificate
 first, then the issuing CA(s) (bottom-up order). The Postfix SMTP
-server certificate must be usable as SSL server certificate and
+server certificate must be usable as an SSL server certificate and
 hence pass the "<tt>openssl verify -purpose sslserver ...</tt>" test.
 </p>
 
@@ -280,7 +280,7 @@ single file can hold multiple <i>(key, cert, [chain])</i> sequences, one
 per algorithm.  It is typically simpler to keep the chain for each
 algorithm in its own file.  Most users are likely to deploy just a
 single RSA chain, but with OpenSSL 1.1.1, it is possible to deploy up to
-five chains, one each for RSA, ECDSA, ED25519, ED448 and even the
+five chains, one each for RSA, ECDSA, ED25519, ED448, and even the
 obsolete DSA. </p>
 
 <blockquote>
@@ -795,7 +795,7 @@ context, though not recommended, is still likely safe.  </p>
 <p> The permit_tls_all_clientcerts feature must be used with caution,
 because it can result in too many access permissions.  Use this
 feature only if a special CA issues the client certificates, and
-only if this CA is listed as trusted CA. If other CAs are trusted,
+only if this CA is listed as trusted CA. If other CAs are trusted,
 any owner of a valid client certificate would be authorized.
 The permit_tls_all_clientcerts feature can be practical for a
 specially created email relay server.  </p>
@@ -1863,7 +1863,7 @@ cipher used determines which certificate is presented. </p>
 key/certificate pair as the Postfix SMTP server.  If a certificate
 is to be presented, it must be in "PEM" format. The private key
 must not be encrypted, meaning: it must be accessible without
-password. Both parts (certificate and private key) may be in the
+password. Both parts (certificate and private key) may be in the
 same file. </p>
 
 <p> With OpenSSL 1.1.1 and Postfix &ge; 3.4 it is also possible to
@@ -1892,7 +1892,7 @@ As the "root" super-user create the client.pem file with: </p>
 </blockquote>
 
 <p> A Postfix SMTP client certificate supplied here must be usable
-as SSL client certificate and hence pass the "openssl verify -purpose
+as an SSL client certificate and hence pass the "openssl verify -purpose
 sslclient ..." test. </p>
 
 <p> A server that trusts the root CA has a local copy of the root
@@ -1911,7 +1911,7 @@ single file can hold multiple <i>(key, cert, [chain])</i> sequences, one
 per algorithm.  It is typically simpler to keep the chain for each
 algorithm in its own file.  Most users are likely to deploy at most a
 single RSA chain, but with OpenSSL 1.1.1, it is possible to deploy up
-five chains, one each for RSA, ECDSA, ED25519, ED448 and even the
+five chains, one each for RSA, ECDSA, ED25519, ED448, and even the
 obsolete DSA. </p>
 
 <blockquote>
@@ -2332,10 +2332,10 @@ files.  </dd>
 
 <dt><b>secure</b></dt> <dd><a href="#client_tls_secure">Secure certificate
 verification.</a> Mail is delivered only if the TLS handshake succeeds,
-if the remote SMTP server certificate can be validated (not expired
-or revoked, and signed by a trusted Certification Authority), and if the
-server certificate name matches the optional "match" attribute (or the
-main.cf smtp_tls_secure_cert_match parameter value when no optional
+and DNS forgery resistant remote SMTP certificate verification succeeds
+(not expired or revoked, and signed by a trusted Certification Authority),
+and if the server certificate name matches the optional "match" attribute
+(or the main.cf smtp_tls_secure_cert_match parameter value when no optional
 "match" attribute is specified).  With Postfix &ge; 2.11 the "tafile"
 attribute optionally modifies trust chain verification in the same manner
 as the "smtp_tls_trust_anchor_file" parameter.  The "tafile" attribute
@@ -2841,7 +2841,7 @@ for exchanging email with sites that you have no trust relationship
 with.  For real authentication you need also enable DNSSEC record
 signing for your domain and publish TLSA records and/or your Postfix
 public key certificate needs to be signed by a recognized Certification
-Authority.  To authenticate the certificates of remote host you
+Authority.  To authenticate the certificates of remote host you
 need a DNSSEC-validating local resolver and to enable <a
 href="#client_tls_dane">DANE</a> authentication and/or configure
 the Postfix SMTP client with a list of public key certificates of
@@ -3112,7 +3112,7 @@ client certificates, unless there are servers which authenticate your mail
 submission via client certificates. Often servers that perform TLS client
 authentication will issue the required certificates signed by their own
 CA. If you configure the client certificate and key incorrectly, you
-will be unable to send mail to sites that request client certificate,
+will be unable to send mail to sites that request client certificate,
 but don't require them from all clients. </p>
 
 <blockquote>
index 0f0d0c75a6168b737d469c7cbaeee93d8a0d8d18..61b37bdb24e3912810651364395e1b928405aede 100644 (file)
@@ -409,9 +409,9 @@ especially if the gateway forwards to multiple MX hosts. When all
 MX hosts are up and accepting connections in a timely fashion,
 throughput will be high.  If any MX host is down and completely
 unresponsive, the average connection latency rises to at least 1/N
-* $smtp_connection_timeout, if there are N MX hosts. This limits
+* $smtp_connect_timeout, if there are N MX hosts. This limits
 throughput to at most the destination concurrency * N /
-$smtp_connection_timeout. </p>
+$smtp_connect_timeout. </p>
 
 <p> For example, with a destination concurrency of 100 and 2 MX
 hosts, each host will handle up to 50 simultaneous connections. If
@@ -422,9 +422,9 @@ multiple MX hosts need a lower connection timeout, values as low
 as 5s or even 1s can be used to prevent congestion when one or
 more, but not all MX hosts are down. </p>
 
-<p> If necessary, set a higher transport_destination_concurrency_limit
+<p> If necessary, set a higher <i>transport</i>_destination_concurrency_limit
 (in main.cf since this is a queue manager parameter) and a lower
-smtp_connection_timeout (with a "-o" override in master.cf since
+smtp_connect_timeout (with a "-o" override in master.cf since
 this parameter has no per-transport name) for the relay transport
 and any transports dedicated for specific high volume destinations.
 </p>
index 3541fd41fce4618be8c102ccf299d2e5c1538b57..1c5aecc0c65892bc50f1c04873e350357818524a 100644 (file)
@@ -62,7 +62,7 @@ domains, non-UNIX accounts</a>
 <h2><a name="canonical">Canonical versus hosted versus 
 other domains</a></h2>
 
-<p>Most Postfix systems are <b>final destination</b> for only a
+<p>Most Postfix systems are the <b>final destination</b> for only a
 few domain names.  These include the hostnames and [the IP addresses]
 of the machine that Postfix runs on, and sometimes also include
 the parent domain of the hostname.  The remainder of this document
@@ -71,7 +71,7 @@ usually implemented with the Postfix local domain address class,
 as defined in the ADDRESS_CLASS_README file.</p>
 
 <p> Besides the canonical domains, Postfix can be configured to be
-<b>final destination</b> for any number of additional domains.
+the <b>final destination</b> for any number of additional domains.
 These domains are called hosted, because they are not directly
 associated with the name of the machine itself. Hosted domains are
 usually implemented with the virtual alias domain address class
@@ -87,7 +87,7 @@ relay domain address class, as defined in the ADDRESS_CLASS_README
 file.  </p>
 
 <p> Finally, Postfix can be configured as a transit host for sending
-mail across the internet. Obviously, Postfix is not final destination
+mail across the internet. Obviously, Postfix is not the final destination
 for such mail. This function is available only for authorized
 clients and/or users, and is implemented by the default domain
 address class, as defined in the ADDRESS_CLASS_README file. </p>
index e01cc0f0e9ebd75a9eff374e216ff07e19eb5929..0fe2a899ede231c40c1d7af80b2aff3c7b70abee 100644 (file)
@@ -29,7 +29,7 @@
 #
 #      Alternatively, the table can be provided as a regular-expression
 #      map where patterns are given as regular expressions, or lookups
-#      can be directed to TCP-based server. In those cases, the lookups
+#      can be directed to TCP-based server. In those cases, the lookups
 #      are done in a slightly different way as described below under
 #      "REGULAR EXPRESSION TABLES" or "TCP-BASED TABLES".
 # CASE FOLDING
 # .sp
 #      This feature is available in Postfix 2.1 and later.
 # .IP "\fBDEFER_IF_PERMIT \fIoptional text...\fR
-#      Defer the request if some later restriction would result in a
+#      Defer the request if some later restriction would result in
 #      an explicit or implicit PERMIT action.
 #      Reply with "\fB$access_map_defer_code 4.7.1 \fI optional
 #      text...\fR" when the
index de9e19143da8348dc6226b0dc3f1e219ddcf5177..6364d3e1dae5968cdebcfc170f07a5671eb472a4 100644 (file)
@@ -27,7 +27,7 @@
 #
 #      Alternatively, the table can be provided as a regular-expression
 #      map where patterns are given as regular expressions, or lookups
-#      can be directed to TCP-based server. In those cases, the lookups
+#      can be directed to TCP-based server. In those cases, the lookups
 #      are done in a slightly different way as described below under
 #      "REGULAR EXPRESSION TABLES" or "TCP-BASED TABLES".
 #
 #      off in email addresses.
 # .IP "\fBmasquerade_exceptions (empty)\fR"
 #      Optional list of user names that are not subjected to address
-#      masquerading, even when their address matches $masquerade_domains.
+#      masquerading, even when their addresses match $masquerade_domains.
 # .IP "\fBmydestination ($myhostname, localhost.$mydomain, localhost)\fR"
 #      The list of domains that are delivered via the $local_transport
 #      mail delivery transport.
index ca03813994232984949beaeb06fcf86b59ac20e5..5b4dd65eb59da9ced737afdfe4c58281389fe2a2 100644 (file)
 # .fi
 #
 #      Postfix parses the result as if it is a file in /etc/postfix.
+#
+#      Note: if a rule contains \fB$\fR, specify \fB$$\fR to keep
+#      Postfix from trying to do \fI$name\fR expansion as it
+#      evaluates a parameter value.
 # EXAMPLE SMTPD ACCESS MAP
 # .nf
 #      /etc/postfix/main.cf:
index 77d62252b4a6054025aa539b6d232b06683dce9e..fdeb1eac56a8d3736d07ec35408589569811e300 100644 (file)
@@ -41,7 +41,7 @@
 #
 #      Alternatively, the table can be provided as a regular-expression
 #      map where patterns are given as regular expressions, or lookups
-#      can be directed to TCP-based server. In those case, the lookups
+#      can be directed to a TCP-based server. In those cases, the lookups
 #      are done in a slightly different way as described below under
 #      "REGULAR EXPRESSION TABLES" or "TCP-BASED TABLES".
 # CASE FOLDING
 #      This section describes how the table lookups change when lookups
 #      are directed to a TCP-based server. For a description of the TCP
 #      client/server lookup protocol, see \fBtcp_table\fR(5).
-#      This feature is not available up to and including Postfix version 2.4.
+#      This feature is available in Postfix 2.5 and later.
 #      
 #      Each lookup operation uses the entire address once.  Thus,
 #      \fIuser@domain\fR mail addresses are not broken up into their
 #      The following \fBmain.cf\fR parameters are especially relevant.  
 #      The text below provides only a parameter summary. See
 #      \fBpostconf\fR(5) for more details including examples.
-# .IP \fBsmtp_generic_maps\fR
-#      Address mapping lookup table for envelope and header sender
-#      and recipient addresses while delivering mail via SMTP.
-# .IP \fBpropagate_unmatched_extensions\fR 
-#      A list of address rewriting or forwarding mechanisms that propagate
-#      an address extension from the original address to the result.
-#      Specify zero or more of \fBcanonical\fR, \fBvirtual\fR, \fBalias\fR,  
-#      \fBforward\fR, \fBinclude\fR, or \fBgeneric\fR.
+# .IP "\fBsmtp_generic_maps (empty)\fR"
+#      Optional lookup tables that perform address rewriting in the
+#      Postfix SMTP client, typically to transform a locally valid address into
+#      a globally valid address when sending mail across the Internet.
+# .IP "\fBpropagate_unmatched_extensions (canonical, virtual)\fR"
+#      What address lookup tables copy an address extension from the lookup
+#      key to the lookup result.
 # .PP
 #      Other parameters of interest:
-# .IP \fBinet_interfaces\fR
-#      The network interface addresses that this system receives mail on.
-#      You need to stop and start Postfix when this parameter changes.
-# .IP \fBproxy_interfaces\fR
-#      Other interfaces that this machine receives mail on by way of a
-#      proxy agent or network address translator.
-# .IP \fBmydestination\fR
-#      List of domains that this mail system considers local.
-# .IP \fBmyorigin\fR
-#      The domain that is appended to locally-posted mail.
-# .IP \fBowner_request_special\fR
-#      Give special treatment to \fBowner-\fIxxx\fR and \fIxxx\fB-request\fR
-#      addresses.
+# .IP "\fBinet_interfaces (all)\fR"
+#      The network interface addresses that this mail system receives
+#      mail on.
+# .IP "\fBproxy_interfaces (empty)\fR"
+#      The network interface addresses that this mail system receives mail
+#      on by way of a proxy or network address translation unit.
+# .IP "\fBmydestination ($myhostname, localhost.$mydomain, localhost)\fR"
+#      The list of domains that are delivered via the $local_transport
+#      mail delivery transport.
+# .IP "\fBmyorigin ($myhostname)\fR"
+#      The domain name that locally-posted mail appears to come
+#      from, and that locally posted mail is delivered to.
+# .IP "\fBowner_request_special (yes)\fR"
+#      Enable special treatment for owner-\fIlistname\fR entries in the
+#      \fBaliases\fR(5) file, and don't split owner-\fIlistname\fR and
+#      \fIlistname\fR-request address localparts when the recipient_delimiter
+#      is set to "-".
 # SEE ALSO
 #      postmap(1), Postfix lookup table manager
 #      postconf(5), configuration parameters
index b770e4a162e329cfb95e92bad0ff11b706ea1629..fe3626a90209b17e287946175a15d27f8b1a1b1f 100644 (file)
 #      For the \fBsearch_base\fR parameter, the upper-case equivalents
 #      of the above expansions behave identically to their lower-case
 #      counter-parts. With the \fBresult_format\fR parameter (previously
-#      called \fBresult_filter\fR see the COMPATIBILITY section and below),
-#      they expand to the corresponding components of input key rather
-#      than the result value.
+#      called \fBresult_filter\fR see the OTHER OBSOLETE FEATURES section
+#      and below), they expand to the corresponding components of input
+#      key rather than the result value.
 # .IP "\fB%[1-9]\fR"
 #      The patterns %1, %2, ... %9 are replaced by the corresponding
 #      most significant component of the input key's domain. If the
 #      The upper-case equivalents of the above expansions behave in the
 #      \fBquery_filter\fR parameter identically to their lower-case
 #      counter-parts. With the \fBresult_format\fR parameter (previously
-#      called \fBresult_filter\fR see the COMPATIBILITY section and below),
-#      they expand to the corresponding components of input key rather
-#      than the result value.
+#      called \fBresult_filter\fR see the OTHER OBSOLETE FEATURES section
+#      and below), they expand to the corresponding components of input
+#      key rather than the result value.
 # .IP
 #      The above %S, %U and %D expansions are available with Postfix 2.2
 #      and later.
 #      NOTE: DO NOT put quotes around the result format!
 # .IP "\fBdomain (default: no domain list)\fR"
 #      This is a list of domain names, paths to files, or
-#      dictionaries. When specified, only fully qualified search
+#      "type:table" databases. When specified, only fully qualified search
 #      keys with a *non-empty* localpart and a matching domain
 #      are eligible for lookup: 'user' lookups, bare domain lookups
 #      and "@domain" lookups are not performed. This can significantly
index 6f01c16ce659585f061e9c3f9069f401bab5231f..28040b69a0b7cf83bd31f2270fd7181e2dd343fc 100644 (file)
 # .sp
 #      The \fBlocal\fR(8), \fBpipe\fR(8), \fBspawn\fR(8), and
 #      \fBvirtual\fR(8) daemons require privileges.
-# .IP "\fBChroot (default: Postfix >= 3.0: n, Postfix <3.0: y)\fR"
+# .IP "\fBChroot (default: Postfix >= 3.0: n, Postfix < 3.0: y)\fR"
 #      Whether or not the service runs chrooted to the mail queue
 #      directory (pathname is controlled by the \fBqueue_directory\fR
 #      configuration variable in the main.cf file).
index b4c7c75b007b7fba61c0452795b716c2e54054fe..6870acf40af231f7030dedfaee83084ad7b26323 100644 (file)
@@ -16,7 +16,7 @@
 #      In order to use MySQL lookups, define a MySQL source as a lookup
 #      table in main.cf, for example:
 # .nf
-#          alias_maps = mysql:/etc/mysql-aliases.cf
+#          alias_maps = mysql:/etc/postfix/mysql-aliases.cf
 # .fi
 #
 #      The file /etc/postfix/mysql-aliases.cf has the same format as
@@ -46,8 +46,9 @@
 # .IP "\fBhosts\fR"
 #      The hosts that Postfix will try to connect to and query from.
 #      Specify \fIunix:\fR for UNIX domain sockets, \fIinet:\fR for TCP
-#      connections (default).  Example:
+#      connections (default).  Examples:
 # .nf
+#          hosts = inet:host1.some.domain inet:host2.some.domain:port
 #          hosts = host1.some.domain host2.some.domain:port
 #          hosts = unix:/file/name
 # .fi
 #
 #      NOTE: DO NOT put quotes around the result format!
 # .IP "\fBdomain (default: no domain list)\fR"
-#      This is a list of domain names, paths to files, or
-#      dictionaries. When specified, only fully qualified search
-#      keys with a *non-empty* localpart and a matching domain
-#      are eligible for lookup: 'user' lookups, bare domain lookups
+#      This is a list of domain names, paths to files, or "type:table"
+#      databases. When specified, only fully qualified search keys
+#      with a *non-empty* localpart and a matching domain are
+#      eligible for lookup: 'user' lookups, bare domain lookups
 #      and "@domain" lookups are not performed. This can significantly
 #      reduce the query load on the MySQL server.
 # .nf
index fefc7a830ef09922bc5f8788140984184a12dfc2..f5d96833c8ce2ca9d4d70586276ad10ccb8f2a59 100644 (file)
@@ -16,7 +16,7 @@
 #      databases.  In order to use PostgreSQL lookups, define a
 #      PostgreSQL source as a lookup table in main.cf, for example:
 # .nf
-#          alias_maps = pgsql:/etc/pgsql-aliases.cf
+#          alias_maps = pgsql:/etc/postfix/pgsql-aliases.cf
 # .fi
 #
 #      The file /etc/postfix/pgsql-aliases.cf has the same format as
@@ -53,6 +53,7 @@
 #      Examples:
 # .nf
 #          hosts = postgresql://username@example.com/tablename?sslmode=require
+#          hosts = inet:host1.some.domain inet:host2.some.domain:port
 #          hosts = host1.some.domain host2.some.domain:port
 #          hosts = unix:/file/name
 # .fi
 #      \fBselect_function\fR, \fBquery\fR, \fBselect_field\fR, ...
 #
 #      With Postfix 2.2 the \fBquery\fR parameter has highest precedence,
-#      see COMPATIBILITY above.
+#      see OBSOLETE QUERY INTERFACES below.
 #
 #      NOTE: DO NOT put quotes around the \fBquery\fR parameter.
 # .IP "\fBresult_format (default: \fB%s\fR)\fR"
 #
 #      NOTE: DO NOT put quotes around the result format!
 # .IP "\fBdomain (default: no domain list)\fR"
-#      This is a list of domain names, paths to files, or
-#      dictionaries. When specified, only fully qualified search
+#      This is a list of domain names, paths to files, or "type:table"
+#      databases. When specified, only fully qualified search
 #      keys with a *non-empty* localpart and a matching domain
 #      are eligible for lookup: 'user' lookups, bare domain lookups
 #      and "@domain" lookups are not performed. This can significantly
index 19e5d16df3a30c8fe418c5931f3c1758037bf6fe..c9c5b8218098cc197babfb208e6957ca95b48d93 100644 (file)
@@ -219,7 +219,7 @@ stop</b>". This is the default with Postfix version 2.6 and earlier.
 
 <p>
 Specify a location in a file system that will not fill up. If the
-database becomes corrupted, the world comes to an end. To recover
+database becomes corrupted, the world comes to an end. To recover,
 delete (NOT: truncate) the file and do "<b>postfix reload</b>".
 </p>
 
@@ -263,9 +263,10 @@ The time after which a failed probe expires from the address
 verification cache.
 </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is d (days).  </p>
 
 <p>
 This feature is available in Postfix 2.1 and later.
@@ -278,9 +279,10 @@ The time after which a failed address verification probe needs to
 be refreshed.
 </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is h (hours).  </p>
 
 <p>
 This feature is available in Postfix 2.1 and later.
@@ -299,8 +301,10 @@ logged as "partial" when the daemon terminates early after "<b>postfix
 reload</b>", "<b>postfix stop</b>", or no requests for $max_idle
 seconds. </p>
 
-<p> Time units: s (seconds), m (minutes), h (hours), d (days), w
-(weeks). </p>
+<p> Specify a non-negative time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is h (hours).  </p>
 
 <p> This feature is available in Postfix 2.7. </p>
 
@@ -348,9 +352,10 @@ verification request in progress.
 The default polling delay is 3 seconds.
 </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 <p>
 This feature is available in Postfix 2.1 and later.
@@ -363,9 +368,10 @@ The time after which a successful probe expires from the address
 verification cache.
 </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is d (days).  </p>
 
 <p>
 This feature is available in Postfix 2.1 and later.
@@ -379,9 +385,10 @@ to be refreshed.  The address verification status is not updated
 when the probe fails (optimistic caching).
 </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is d (days).  </p>
 
 <p>
 This feature is available in Postfix 2.1 and later.
@@ -751,10 +758,10 @@ bounce_queue_lifetime limit.  By default, this limit is the same
 as for regular mail.
 </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is d (days).
-</p>
+<p> Specify a non-negative time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is d (days).  </p>
 
 <p>
 Specify 0 when mail delivery should be tried only once.
@@ -909,10 +916,10 @@ be owned by root.
 <p> How much time a Postfix daemon process may take to handle a
 request before it is terminated by a built-in watchdog timer.  </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 %PARAM debug_peer_level 2
 
@@ -979,7 +986,7 @@ for each message. One message can be preempted by another one when
 the other message can be delivered using no more delivery slots
 (i.e., invocations of delivery agents) than the current message
 counter has accumulated (or will eventually accumulate - see about
-slot loans below). This parameter controls how often is the counter
+slot loans below). This parameter controls how often the counter is
 incremented - it happens after each default_delivery_slot_cost
 recipients have been delivered.
 </p>
@@ -1022,7 +1029,7 @@ default_delivery_slot_cost = 2
 The default maximal number of parallel deliveries to the same
 destination.  This is the default limit for delivery via the lmtp(8),
 pipe(8), smtp(8) and virtual(8) delivery agents.
-With per-destination recipient limit &gt; 1, a destination is a domain,
+With per-destination recipient limit &gt; 1, a destination is a domain,
 otherwise it is a recipient.
 </p>
 
@@ -1075,7 +1082,7 @@ The default value for the extra per-transport limit imposed on the
 number of in-memory recipients.  This extra recipient space is
 reserved for the cases when the Postfix queue manager's scheduler
 preempts one message with another and suddenly needs some extra
-recipients slots for the chosen message in order to avoid performance
+recipient slots for the chosen message in order to avoid performance
 degradation.
 </p>
 
@@ -1102,7 +1109,7 @@ name of the message delivery transport.
 
 <p>
 The default rights used by the local(8) delivery agent for delivery
-to external file or command.  These rights are used when delivery
+to an external file or command.  These rights are used when delivery
 is requested from an aliases(5) file that is owned by <b>root</b>, or
 when delivery is done on behalf of <b>root</b>. <b>DO NOT SPECIFY A
 PRIVILEGED USER OR THE POSTFIX OWNER</b>.
@@ -1214,13 +1221,22 @@ name, or an email address whose domain was denylisted). </dd>
 
 <dd>The sender address localpart or &lt;&gt; in case of the null address. </dd>
 
-<dt><b>${name?text}</b></dt>
+<dt><b>${name?value}</b></dt>
 
-<dd>Expands to `text' if $name is not empty. </dd>
+<dt><b>${name?{value}}</b> (Postfix &ge; 3.0)</dt>
 
-<dt><b>${name:text}</b></dt>
+<dd>Expands to <i>value</i> when <i>$name</i> is non-empty. </dd>
+
+<dt><b>${name:value}</b></dt>
+
+<dt><b>${name:{value}}</b> (Postfix &ge; 3.0)</dt>
+
+<dd>Expands to <i>value</i> when <i>$name</i> is empty. </dd>
 
-<dd>Expands to `text' if $name is empty. </dd>
+<dt><b>${name?{value1}:{value2}}</b> (Postfix &ge; 3.0)</dt>
+
+<dd>Expands to <i>value1</i> when <i>$name</i> is non-empty,
+<i>value2</i> otherwise. </dd>
 
 </dl>
 
@@ -1265,7 +1281,7 @@ name of the message delivery transport.
 
 <p>
 The default per-transport limit on the number of recipients refilled at
-once.  When not all message recipients fit into the memory at once, keep
+once.  When not all message recipients fit into memory at once, keep
 loading more of them in batches of at least this many at a time.  See also
 $default_recipient_refill_delay, which may result in recipient batches
 lower than this when this limit is too high for too slow deliveries.
@@ -1281,10 +1297,10 @@ name of the message delivery transport.
 %PARAM default_recipient_refill_delay 5s
 
 <p>
-The default per-transport maximum delay between recipients refills.
-When not all message recipients fit into the memory at once, keep loading
+The default per-transport maximum delay between refilling recipients.
+When not all message recipients fit into memory at once, keep loading
 more of them at least once every this many seconds.  This is used to
-make sure the recipients are refilled in timely manner even when
+make sure the recipients are refilled in timely manner even when
 $default_recipient_refill_limit is too high for too slow deliveries.
 </p>
 
@@ -1345,7 +1361,7 @@ Do not change this unless you have a complete understanding of RFC 5321.
 <p>
 The names of message delivery transports that should not deliver mail
 unless someone issues "<b>sendmail -q</b>" or equivalent. Specify zero
-or more names of mail delivery transports names that appear in the
+or more mail delivery transport names that appear in the
 first field of master.cf.
 </p>
 
@@ -1371,10 +1387,10 @@ The time between attempts to acquire an exclusive lock on a mailbox
 file or bounce(8) logfile.
 </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 %PARAM disable_vrfy_command no
 
@@ -1615,8 +1631,10 @@ d=days, w=weeks.  The default time unit is hours.
 
 <p> The delay between attempts to fork() a child process.  </p>
 
-<p> Time units: s (seconds), m (minutes), h (hours), d (days), w
-(weeks).  The default time unit is s (seconds).  </p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 %PARAM execution_directory_expansion_filter see "postconf -d" output
 
@@ -1629,7 +1647,7 @@ outside the allowed set are replaced by underscores.  </p>
 %PARAM command_execution_directory
 
 <p> The local(8) delivery agent working directory for delivery to
-external command.  Failure to change directory causes the delivery
+external commands.  Failure to change directory causes the delivery
 to be deferred. </p>
 
 <p> The command_execution_directory value is not subject to Postfix
@@ -1678,12 +1696,21 @@ address extension delimiter (Postfix 2.10 and earlier). </dd>
 
 <dt><b>${name?value}</b></dt>
 
+<dt><b>${name?{value}}</b> (Postfix &ge; 3.0)</dt>
+
 <dd>Expands to <i>value</i> when <i>$name</i> is non-empty. </dd>
 
 <dt><b>${name:value}</b></dt>
 
+<dt><b>${name:{value}}</b> (Postfix &ge; 3.0)</dt>
+
 <dd>Expands to <i>value</i> when <i>$name</i> is empty. </dd>
 
+<dt><b>${name?{value1}:{value2}}</b> (Postfix &ge; 3.0)</dt>
+<dd>Expands to <i>value1</i> when <i>$name</i> is non-empty,
+<i>value2</i> otherwise. </dd>
+
 </dl>
 
 <p>
@@ -1743,12 +1770,21 @@ address extension delimiter (Postfix 2.10 and earlier). </dd>
 
 <dt><b>${name?value}</b></dt>
 
+<dt><b>${name?{value}}</b> (Postfix &ge; 3.0)</dt>
+
 <dd>Expands to <i>value</i> when <i>$name</i> is non-empty. </dd>
 
 <dt><b>${name:value}</b></dt>
 
+<dt><b>${name:{value}}</b> (Postfix &ge; 3.0)</dt>
+
 <dd>Expands to <i>value</i> when <i>$name</i> is empty. </dd>
 
+<dt><b>${name?{value1}:{value2}}</b> (Postfix &ge; 3.0)</dt>
+<dd>Expands to <i>value1</i> when <i>$name</i> is non-empty,
+<i>value2</i> otherwise. </dd>
+
 </dl>
 
 <p>
@@ -1897,11 +1933,11 @@ mis-delivery of mail.
 
 %PARAM import_environment see "postconf -d" output
 
-<p> The list of environment parameters that a privileged Postfix
+<p> The list of environment variables that a privileged Postfix
 process will import from a non-Postfix parent process, or name=value
 environment overrides.  Unprivileged utilities will enforce the
 name=value overrides, but otherwise will not change their process
-environment.  Examples of relevant parameters: </p>
+environment.  Examples of relevant environment variables: </p>
 
 <dl>
 
@@ -1926,7 +1962,7 @@ environment.  Examples of relevant parameters: </p>
 
 <p> Specify a list of names and/or name=value pairs, separated by
 whitespace or comma. Specify "{ name=value }" to protect whitespace
-or comma in parameter values (whitespace after the opening "{" and
+or comma in environment variable values (whitespace after the opening "{" and
 before the closing "}"
 is ignored). The form name=value is supported with Postfix version
 2.1 and later; the use of {} is supported with Postfix 3.0 and
@@ -2101,10 +2137,10 @@ example, by the Postfix address resolving and rewriting clients.
 
 <p> With Postfix 2.4 the default value was reduced from 100s to 5s. </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 %PARAM ipc_timeout 3600s
 
@@ -2115,10 +2151,10 @@ situations. If the time limit is exceeded the software aborts with a
 fatal error.
 </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 %PARAM ipc_ttl 1000s
 
@@ -2130,10 +2166,10 @@ after reaching their client limit.  This is used, for example, by
 the Postfix address resolving and rewriting clients.
 </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 <p>
 This feature is available in Postfix 2.1 and later.
@@ -2151,10 +2187,10 @@ zero (use the operating system built-in time limit).  When no
 connection can be made within the deadline, the LMTP client tries
 the next address on the mail exchanger list.  </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-negative time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 <p>
 Example:
@@ -2171,10 +2207,10 @@ and for receiving the remote LMTP server response.  When no response
 is received within the deadline, a warning is logged that the mail
 may be delivered multiple times.  </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 %PARAM lmtp_data_init_timeout 120s
 
@@ -2184,10 +2220,10 @@ and
 for receiving the remote LMTP server response.
 </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 %PARAM lmtp_data_xfer_timeout 180s
 
@@ -2198,10 +2234,10 @@ When the connection stalls for more than $lmtp_data_xfer_timeout
 the LMTP client terminates the transfer.
 </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 %PARAM lmtp_lhlo_timeout 300s
 
@@ -2212,10 +2248,10 @@ greeting banner, or when it sends no greeting banner within the
 deadline, the LMTP client tries the next address on the mail
 exchanger list.  </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 %PARAM lmtp_mail_timeout 300s
 
@@ -2224,10 +2260,10 @@ The Postfix LMTP client time limit for sending the MAIL FROM command,
 and for receiving the remote LMTP server response.
 </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 %PARAM lmtp_quit_timeout 300s
 
@@ -2236,10 +2272,10 @@ The Postfix LMTP client time limit for sending the QUIT command,
 and for receiving the remote LMTP server response.
 </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 %PARAM lmtp_rcpt_timeout 300s
 
@@ -2248,10 +2284,10 @@ The Postfix LMTP client time limit for sending the RCPT TO command,
 and for receiving the remote LMTP server response.
 </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 %PARAM lmtp_rset_timeout 20s
 
@@ -2261,10 +2297,10 @@ sends RSET in
 order to finish a recipient address probe, or to verify that a
 cached connection is still alive.  </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 %PARAM lmtp_send_xforward_command no
 
@@ -2273,7 +2309,7 @@ Send an XFORWARD command to the remote LMTP server when the LMTP LHLO
 server response announces XFORWARD support.  This allows an lmtp(8)
 delivery agent, used for content filter message injection, to
 forward the name, address, protocol and HELO name of the original
-client to the content filter and downstream queuing LMTP server.
+client to the content filter and downstream LMTP server.
 Before you change the value to yes, it is best to make sure that
 your content filter supports this command.
 </p>
@@ -2300,10 +2336,10 @@ In case of problems the client does NOT try the next address on
 the mail exchanger list.
 </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 <p>
 This feature is available in Postfix 2.1 and later.
@@ -2312,7 +2348,7 @@ This feature is available in Postfix 2.1 and later.
 %PARAM local_command_shell 
 
 <p>
-Optional shell program for local(8) delivery to non-Postfix command.
+Optional shell program for local(8) delivery to non-Postfix commands.
 By default, non-Postfix commands are executed directly; commands
 are given to the default shell (typically, /bin/sh) only when they
 contain shell meta characters or shell built-in commands.
@@ -2501,11 +2537,20 @@ address extension delimiter (Postfix 2.10 and earlier). </dd>
 
 <dt><b>${name?value}</b></dt>
 
-<dd>Expands to <i>value</i> when <i>$name</i> has a non-empty value. </dd>
+<dt><b>${name?{value}}</b> (Postfix &ge; 3.0)</dt>
+
+<dd>Expands to <i>value</i> when <i>$name</i> is non-empty. </dd>
 
 <dt><b>${name:value}</b></dt>
 
-<dd>Expands to <i>value</i> when <i>$name</i> has an empty value. </dd>
+<dt><b>${name:{value}}</b> (Postfix &ge; 3.0)</dt>
+
+<dd>Expands to <i>value</i> when <i>$name</i> is empty. </dd>
+
+<dt><b>${name?{value1}:{value2}}</b> (Postfix &ge; 3.0)</dt>
+
+<dd>Expands to <i>value1</i> when <i>$name</i> is non-empty,
+<i>value2</i> otherwise. </dd>
 
 </dl>
 
@@ -2727,7 +2772,9 @@ mailbox_command = /some/where/maildrop -d "$USER"
 file, or zero (no limit).  In fact, this limits the size of any
 file that is written to upon local delivery, including files written
 by external commands that are executed by the local(8) delivery
-agent.  </p>
+agent. The value cannot exceed LONG_MAX (typically, a 32-bit or
+64-bit signed integer).
+</p>
 
 <p>
 This limit must not be smaller than the message size limit.
@@ -2871,10 +2918,10 @@ is ignored by the Postfix queue manager and by other long-lived
 Postfix daemon processes.
 </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 %PARAM max_use 100
 
@@ -2894,10 +2941,10 @@ The maximal time between attempts to deliver a deferred message.
 <p> This parameter should be set to a value greater than or equal
 to $minimal_backoff_time. See also $queue_run_delay.  </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 %PARAM maximal_queue_lifetime 5d
 
@@ -2907,10 +2954,10 @@ temporary error, and the time in the queue has reached the
 maximal_queue_lifetime limit. 
 </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is d (days).
-</p>
+<p> Specify a non-negative time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is d (days).  </p>
 
 <p>
 Specify 0 when mail delivery should be tried only once.
@@ -2931,6 +2978,8 @@ This feature is available in Postfix 2.11 and later.
 
 <p>
 The maximal size in bytes of a message, including envelope information.
+The value cannot exceed LONG_MAX (typically, a 32-bit or 64-bit
+signed integer).
 </p>
 
 <p> Note: be careful when making changes.  Excessively small values
@@ -2953,10 +3002,10 @@ kept in the short-term, in-memory, destination status cache.
 <p> This parameter should be set greater than or equal to
 $queue_run_delay. See also $maximal_backoff_time.  </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 %PARAM multi_recipient_bounce_reject_code 550
 
@@ -3109,7 +3158,7 @@ block from the list. The form "!/file/name" is supported only
 in Postfix version 2.4 and later. </p>
 
 <p> Note 1: Pattern matching of domain names is controlled by the
-or absence of "mynetworks" in the parent_domain_matches_subdomains
+presence or absence of "mynetworks" in the parent_domain_matches_subdomains
 parameter value.  </p>
 
 <p> Note 2: IP version 6 address information must be specified inside
@@ -3266,7 +3315,7 @@ transport_maps
 
 <dd>
 qmqpd_authorized_clients,
-smtpd_access_maps,
+<a href="SMTPD_ACCESS_README.html">smtpd_access_maps</a>,
 </dd>
 
 <dt> Postfix version 2.8 and later </dt> 
@@ -3413,10 +3462,10 @@ reply to the remote QMQP client. The purpose is to slow down confused
 or malicious clients.
 </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-negative time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 %PARAM qmqpd_timeout 300s
 
@@ -3426,10 +3475,10 @@ If a read or write operation blocks for more than $qmqpd_timeout
 seconds the Postfix QMQP server gives up and disconnects.
 </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 %PARAM queue_minfree 0
 
@@ -3462,10 +3511,10 @@ prior to Postfix 2.4 the default value was 1000s.
 <p> This parameter should be set less than or equal to
 $minimal_backoff_time. See also $maximal_backoff_time.  </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 %PARAM rbl_reply_maps 
 
@@ -3645,7 +3694,7 @@ the recipient_delimiter set. The delimiter character and extension
 may then be used to generate an extended .forward file name. This
 implementation recognizes one delimiter character and one extension
 per email address localpart or email address. With Postfix 2.10 and
-earler, the recipient_delimiter specifies a single character. </p>
+earlier, the recipient_delimiter specifies a single character. </p>
 
 <p> See canonical(5), local(8), relocated(5) and virtual(5) for the
 effects of recipient_delimiter on lookups in aliases, canonical,
@@ -3751,7 +3800,7 @@ and then floods innocent people with undeliverable mail.  Technically,
 tables
 listed with $relay_recipient_maps are used as lists: Postfix needs
 to know only if a lookup string is found or not, but it does not
-use the result from table lookup.  </p>
+use the result from the table lookup.  </p>
 
 <p>
 Specify zero or more "type:name" lookup tables, separated by
@@ -4183,10 +4232,10 @@ disable the time limit (i.e. use whatever timeout is implemented by
 the operating system).
 </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-negative time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 %PARAM smtp_data_done_timeout 600s
 
@@ -4200,10 +4249,10 @@ When no response is received within the deadline, a warning is
 logged that the mail may be delivered multiple times.
 </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 %PARAM smtp_data_init_timeout 120s
 
@@ -4363,10 +4412,10 @@ The Postfix SMTP client time limit for sending the HELO or EHLO command,
 and for receiving the initial remote SMTP server response.
 </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 %PARAM smtp_host_lookup dns
 
@@ -4426,10 +4475,10 @@ The Postfix SMTP client time limit for sending the MAIL FROM command,
 and for receiving the remote SMTP server response.
 </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 %PARAM smtp_mx_address_limit 5
 
@@ -4467,6 +4516,11 @@ turns on the PIX firewall "&lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;"
 bug workaround for delivery through firewalls with "smtp fixup"
 mode turned on.  </p>
 
+<p> Specify a non-negative time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
+
 <p>
 By default, the workaround is turned off for mail that is queued
 for less than 500 seconds. In other words, the workaround is normally
@@ -4486,10 +4540,10 @@ The Postfix SMTP client time limit for sending the QUIT command,
 and for receiving the remote SMTP server response.
 </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 %PARAM smtp_quote_rfc821_envelope yes
 
@@ -4528,10 +4582,10 @@ The Postfix SMTP client time limit for sending the SMTP RCPT TO
 command, and for receiving the remote SMTP server response.
 </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 %PARAM smtp_sasl_auth_enable no
 
@@ -4708,10 +4762,10 @@ The Postfix SMTP client time limit for sending the XFORWARD command,
 and for receiving the remote SMTP server response.
 </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 <p>
 This feature is available in Postfix 2.1 and later.
@@ -5072,7 +5126,7 @@ with the anvil_rate_time_unit configuration parameter.
 </p>
 
 <p>
-By default, there is no limit on the number AUTH commands that a
+By default, there is no limit on the number of AUTH commands that a
 client may send.
 </p>
 
@@ -5120,7 +5174,7 @@ client network address information.
 
 <dd> By default use the remote SMTP client certificate fingerprint
 or the public key
-fingerprint (Postfix 2.9 and later) as lookup key for the specified
+fingerprint (Postfix 2.9 and later) as the lookup key for the specified
 access(5) database; with Postfix version 2.2, also require that the
 remote SMTP client certificate is verified successfully.
 The fingerprint digest algorithm is configurable via the
@@ -5217,7 +5271,7 @@ This feature is available in Postfix 2.7 and later.  </dd>
 
 <dt><b><a name="check_sasl_access">check_sasl_access</a> <i><a href="DATABASE_README.html">type:table</a></i></b></dt>
 
-<dd> Use the remote SMTP client SASL user name as lookup key for
+<dd> Use the remote SMTP client SASL user name as the lookup key for
 the specified access(5) database. The lookup key has the form
 "username@domainname" when the smtpd_sasl_local_domain parameter
 value is non-empty.  Unlike the check_client_access feature,
@@ -5245,7 +5299,7 @@ authenticated via the RFC 4954 (AUTH) protocol. </dd>
 
 <dd> Permit the request when the remote SMTP client certificate is
 verified successfully.  This option must be used only if a special
-CA issues the certificates and only this CA is listed as trusted
+CA issues the certificates and only this CA is listed as trusted
 CA. Otherwise, clients with a third-party certificate would also
 be allowed to relay.  Specify "tls_append_default_CA = no" when the
 trusted CA is specified with smtpd_tls_CAfile or smtpd_tls_CApath,
@@ -5557,10 +5611,17 @@ a client has made more than $smtpd_soft_error_limit errors, and
 fewer than $smtpd_hard_error_limit errors, without delivering mail.
 </p>
 
-<p>With Postfix version 2.0 and earlier: the SMTP server delay before
-sending a reject (4xx or 5xx) response, when the client has made
-fewer than $smtpd_soft_error_limit errors without delivering
-mail. </p>
+<p>With Postfix version 2.0 and earlier: the SMTP server delay
+before sending a reject (4xx or 5xx) response, when the client has
+made fewer than $smtpd_soft_error_limit errors without delivering
+mail. When the client has made $smtpd_soft_error_limit or more errors,
+delay all responses with the larger of (number of errors) seconds
+or $smtpd_error_sleep_time. </p>
+
+<p> Specify a non-negative time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 %PARAM smtpd_soft_error_limit 10
 
@@ -5572,11 +5633,18 @@ responses.
 
 <ul>
 
-<li><p>With Postfix version 2.1 and later, the Postfix SMTP server
-delays all responses by $smtpd_error_sleep_time seconds. </p>
+<li><p>With Postfix version 2.1 and later, when the error count
+is &gt; $smtpd_soft_error_limit, the Postfix SMTP server
+delays all responses by $smtpd_error_sleep_time. </p>
+
+<li><p>With Postfix versions 2.0 and earlier, when the error count
+is &gt; $smtpd_soft_error_limit, the Postfix SMTP server delays all
+responses by the larger of (number of errors) seconds or
+$smtpd_error_sleep_time. </p>
 
-<li><p>With Postfix versions 2.0 and earlier, the Postfix SMTP
-server delays all responses by (number of errors) seconds. </p>
+<li><p>With Postfix versions 2.0 and earlier, when the error count
+is &le; $smtpd_soft_error_limit, the Postfix SMTP server delays 4XX
+and 5XX responses by $smtpd_error_sleep_time. </p>
 
 </ul>
 
@@ -5585,9 +5653,10 @@ server delays all responses by (number of errors) seconds. </p>
 <p>
 The maximal number of errors a remote SMTP client is allowed to
 make without delivering mail. The Postfix SMTP server disconnects
-when the limit is exceeded. Normally the default limit is 20, but
+when the limit is reached. Normally the default limit is 20, but
 it changes under overload to just 1. With Postfix 2.5 and earlier,
 the SMTP server always allows up to 20 errors by default.
+Valid values are greater than zero.
 
 </p>
 
@@ -5961,7 +6030,7 @@ supposed to give the result to another Postfix SMTP server process.
 <p> Specify "host:port" or "inet:host:port" for a TCP endpoint, or
 "unix:pathname" for a UNIX-domain endpoint. The host can be specified
 as an IP address or as a symbolic name; no MX lookups are done.
-When no "host" or "host:"  are specified, the local machine is
+When no "host" or "host:" is specified, the local machine is
 assumed.  Pathname interpretation is relative to the Postfix queue
 directory.  </p>
 
@@ -5979,10 +6048,10 @@ generic error message while more detailed information is logged to
 the maillog file.
 </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 <p>
 This feature is available in Postfix 2.1 and later.
@@ -6087,7 +6156,7 @@ feature is available in Postfix 2.1 and later.  </dd>
 
 <ul>
 
-<li> Postfix is mail forwarder: the resolved RCPT TO domain matches
+<li> Postfix is mail forwarder: the resolved RCPT TO domain matches
 $relay_domains or a subdomain thereof, and the address contains no
 sender-specified routing (user@elsewhere@domain),
 
@@ -6100,7 +6169,7 @@ contains no sender-specified routing (user@elsewhere@domain).
 
 <dt><b><a name="permit_mx_backup">permit_mx_backup</a></b></dt>
 
-<dd>Permit the request when the local mail system is backup MX for
+<dd>Permit the request when the local mail system is backup MX for
 the RCPT TO domain, or when the domain is an authorized destination
 (see permit_auth_destination for definition).
 
@@ -6113,7 +6182,7 @@ sender-specified routing information (example: user@elsewhere@domain).
 access is not restricted with permit_mx_backup_networks.
 
 <li> Safety: as of Postfix version 2.3, permit_mx_backup no longer
-accepts the address when the local mail system is primary MX for
+accepts the address when the local mail system is primary MX for
 the recipient domain.  Exception: permit_mx_backup accepts the address
 when it specifies an authorized destination (see permit_auth_destination
 for definition).
@@ -6153,7 +6222,7 @@ in Postfix version 2.0 and later.</dd>
 
 <ul>
 
-<li> Postfix is mail forwarder: the resolved RCPT TO domain matches
+<li> Postfix is mail forwarder: the resolved RCPT TO domain matches
 $relay_domains or a subdomain thereof, and contains no sender-specified
 routing (user@elsewhere@domain),
 
@@ -6199,7 +6268,7 @@ Address verification information is managed by the verify(8) server;
 see the ADDRESS_VERIFICATION_README file for details.  <br> The
 unverified_recipient_reject_code parameter specifies the numerical
 response code when an address is known to bounce (default: 450,
-change into 550 when you are confident that it is safe to do so).
+change ito 550 when you are confident that it is safe to do so).
 <br>The unverified_recipient_defer_code parameter specifies the
 numerical response code when an address probe failed due to a
 temporary problem (default: 450). <br> The
@@ -6265,6 +6334,8 @@ By default, the Postfix SMTP server accepts:
 
 <li> Mail from clients whose IP address matches $mynetworks, or:
 
+<li> Mail from clients who are SASL authenticated, or:
+
 <li> Mail to remote destinations that match $relay_domains, except
 for addresses that contain sender-specified routing
 (user@elsewhere@domain), or:
@@ -6378,7 +6449,7 @@ $mynetworks to prevent Postfix from offering AUTH to local clients.
 <p>
 Specify a list of network/netmask patterns, separated by commas
 and/or whitespace. The mask specifies the number of bits in the
-network part of a host address. You can also "/file/name" or
+network part of a host address. 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).  Continue
@@ -6646,7 +6717,7 @@ Postfix version 2.1 and later. </dd>
 
 <dt><b><a name="reject_unknown_sender_domain">reject_unknown_sender_domain</a></b></dt>
 
-<dd>Reject the request when Postfix is not final destination for
+<dd>Reject the request when Postfix is not the final destination for
 the sender address, and the MAIL FROM domain has 1) no DNS MX and
 no DNS A
 record, or 2) a malformed MX record such as a record with
@@ -6736,10 +6807,10 @@ Note: if you set SMTP time limits to very large values you may have
 to update the global ipc_timeout parameter.
 </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 %PARAM soft_bounce no
 
@@ -6774,10 +6845,10 @@ The time after which a stale exclusive mailbox lockfile is removed.
 This is used for delivery to file or mailbox.
 </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 %PARAM strict_rfc821_envelopes no
 
@@ -6895,10 +6966,10 @@ The time between attempts by the Postfix queue manager to contact
 a malfunctioning message delivery transport.
 </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 %PARAM trigger_timeout 10s
 
@@ -6909,10 +6980,10 @@ programs from getting stuck when the mail system is under heavy
 load.
 </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 %PARAM unknown_address_reject_code 450
 
@@ -7062,7 +7133,7 @@ This feature is available in Postfix 2.6 and later.
 
 %PARAM virtual_alias_domains $virtual_alias_maps
 
-<p> Postfix is final destination for the specified list of virtual
+<p> Postfix is the final destination for the specified list of virtual
 alias domains, that is, domains for which all addresses are aliased
 to addresses in other local or remote domains. The SMTP server
 validates recipient addresses with $virtual_alias_maps and rejects
@@ -7086,7 +7157,7 @@ domain names).
 <p> Specify a list of host or domain names, "/file/name" or
 "type:table" patterns, separated by commas and/or whitespace. A
 "/file/name" pattern is replaced by its contents; a "type:table"
-lookup table is matched when a table entry matches a lookup string
+lookup table is matched when a table entry matches a host or domain name
 (the lookup result is ignored).  Continue long lines by starting
 the next line with whitespace. Specify "!pattern" to exclude a host
 or domain name from the list. The form "!/file/name" is supported
@@ -7120,7 +7191,7 @@ This feature is available in Postfix 2.1 and later.
 
 <p>
 Optional lookup tables that alias specific mail addresses or domains
-to other local or remote address.  The table format and lookups
+to other local or remote addresses.  The table format and lookups
 are documented in virtual(5). For an overview of Postfix address
 manipulations see the ADDRESS_REWRITING_README document.
 </p>
@@ -7308,10 +7379,10 @@ How long the postkick(1) command waits for a request to enter the
 Postfix daemon process input buffer before giving up.
 </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 <p>
 This feature is available in Postfix 2.1 and later.
@@ -7480,13 +7551,13 @@ How frequently the anvil(8) connection and rate limiting server
 logs peak usage information.
 </p>
 
-<p>
-This feature is available in Postfix 2.2 and later.
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 <p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
+This feature is available in Postfix 2.2 and later.
 </p>
 
 %PARAM enable_errors_to no
@@ -7526,10 +7597,10 @@ frequency of updates, the anvil(8) server uses volatile memory
 only. Thus, information is lost whenever the process terminates.
 </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 %PARAM command_expansion_filter see "postconf -d" output
 
@@ -7578,8 +7649,8 @@ settings.
 This parameter speeds up the moment when a message preemption can
 happen. Instead of waiting until the full amount of delivery slots
 required is available, the preemption can happen when
-transport_delivery_slot_discount percent of the required amount
-plus transport_delivery_slot_loan still remains to be accumulated.
+<i>transport</i>_delivery_slot_discount percent of the required amount
+plus <i>transport</i>_delivery_slot_loan still remains to be accumulated.
 Note that the full amount will still have to be accumulated before
 another preemption can take place later.
 </p>
@@ -7628,8 +7699,9 @@ is requested with the SMTP XVERP command or with the "<b>sendmail
 
 <p> The two default VERP delimiter characters. These are used when
 no explicit delimiters are specified with the SMTP XVERP command
-or with the "<b>sendmail -V</b>" command-line option. Specify
-characters that are allowed by the verp_delimiter_filter setting.
+or with the "<b>sendmail -XV</b>" command-line option (Postfix 2.2
+and earlier: <b>-V</b>). Specify characters that are allowed by the
+verp_delimiter_filter setting.
 </p>
 
 <p>
@@ -7902,7 +7974,7 @@ command.
 
 <p>
 Most of these limitations have been with the Postfix
-connection cache that is shared among multiple LMTP client
+connection cache that is shared among multiple LMTP client
 programs.
 </p>
 
@@ -7944,7 +8016,7 @@ active attacks. </dd>
 <dt><b>nodictionary</b></dt>
 
 <dd>Disallow authentication methods that are vulnerable to passive
-dictionary attack. </dd>
+dictionary attacks. </dd>
 
 <dt><b>noanonymous</b></dt>
 
@@ -8102,7 +8174,7 @@ This is the list of trusted networks for relay access control etc.
 <li><p>Specify "mynetworks_style = subnet" when Postfix
 should "trust" remote SMTP clients in the same IP subnetworks as the local
 machine.  On Linux, this works correctly only with interfaces
-specified with the "ifconfig" command. </p>
+specified with the "ifconfig" or "ip" command. </p>
 
 <li><p>Specify "mynetworks_style = class" when Postfix should
 "trust" remote SMTP clients in the same IP class A/B/C networks as the
@@ -8277,6 +8349,11 @@ The minimal delay between warnings that a specific destination is
 clogging up the Postfix active queue. Specify 0 to disable.
 </p>
 
+<p> Specify a non-negative time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
+
 <p>
 This feature is enabled with the helpful_warnings parameter.
 </p>
@@ -8411,10 +8488,10 @@ How long the Postfix master(8) waits before forking a server that
 appears to be malfunctioning.
 </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 %PARAM setgid_group postdrop
 
@@ -8457,10 +8534,15 @@ How long the Postfix SMTP client pauses before sending
 </p>
 
 <p>
-Choosing a too short time makes this workaround ineffective when
+Choosing too short a time makes this workaround ineffective when
 sending large messages over slow network connections.
 </p>
 
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
+
 %PARAM smtp_randomize_addresses yes
 
 <p>
@@ -8476,6 +8558,11 @@ sends RSET in
 order to finish a recipient address probe, or to verify that a
 cached session is still usable.  </p>
 
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
+
 <p> This feature is available in Postfix 2.1 and later.  </p>
 
 %PARAM smtpd_data_restrictions 
@@ -8586,6 +8673,11 @@ The time after which an idle SMTPD policy service connection is
 closed.
 </p>
 
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
+
 <p>
 This feature is available in Postfix 2.1 and later.
 </p>
@@ -8597,6 +8689,11 @@ The time after which an active SMTPD policy service connection is
 closed.
 </p>
 
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
+
 <p>
 This feature is available in Postfix 2.1 and later.
 </p>
@@ -8608,6 +8705,11 @@ The time limit for connecting to, writing to, or receiving from a
 delegated SMTPD policy server.
 </p>
 
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
+
 <p>
 This feature is available in Postfix 2.1 and later.
 </p>
@@ -8943,7 +9045,7 @@ virtual_mailbox_base = /var/mail
 
 %PARAM virtual_mailbox_domains $virtual_mailbox_maps
 
-<p> Postfix is final destination for the specified list of domains;
+<p> Postfix is the final destination for the specified list of domains;
 mail is delivered via the $virtual_transport mail delivery transport.
 By default this is the Postfix virtual(8) delivery agent.  The SMTP
 server validates recipient addresses with $virtual_mailbox_maps
@@ -9014,6 +9116,13 @@ match any user in the specified domain that does not have a specific
 "user@domain.tld" entry.
 </p>
 
+<p>
+With the default "virtual_mailbox_domains = $virtual_mailbox_maps",
+lookup tables also need entries with a left-hand side of "domain.tld"
+to satisfy virtual_mailbox_domain lookups (the right-hand side is
+required but will not be used).
+</p>
+
 <p> The remainder of this text is specific to the virtual(8) delivery
 agent.  It does not apply when mail is delivered with a different
 mail delivery program.  </p>
@@ -9639,13 +9748,13 @@ Postfix 2.3 and later use smtpd_tls_security_level instead. </p>
 
 %PARAM smtpd_tls_wrappermode no
 
-<p> Run the Postfix SMTP server in the non-standard "wrapper" mode,
+<p> Run the Postfix SMTP server in TLS "wrapper" mode,
 instead of using the STARTTLS command. </p>
 
 <p> If you want to support this service, enable a special port in
 master.cf, and specify "-o smtpd_tls_wrappermode=yes" on the SMTP
-server's command line. Port 465 (smtps) was once chosen for this
-purpose. </p>
+server's command line. Port 465 (submissions/smtps) is reserved for
+this purpose. </p>
 
 <p> This feature is available in Postfix 2.2 and later.  </p>
 
@@ -9708,7 +9817,7 @@ concurrent access.  The file is created if it does not exist. The smtpd(8)
 daemon does not use this parameter directly, rather the cache is
 implemented indirectly in the tlsmgr(8) daemon. This means that
 per-smtpd-instance master.cf overrides of this parameter are not
-effective. Note, that each of the cache databases supported by tlsmgr(8)
+effective. Note that each of the cache databases supported by tlsmgr(8)
 daemon: $smtpd_tls_session_cache_database, $smtp_tls_session_cache_database
 (and with Postfix 2.3 and later $lmtp_tls_session_cache_database), needs to be
 stored separately. It is not at this time possible to store multiple
@@ -9756,6 +9865,11 @@ value of 2 minutes is used instead.  TLS session tickets require
 an OpenSSL library (at least version 0.9.8h) that provides full
 support for this TLS extension. </p>
 
+<p> Specify a non-negative time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
+
 <p> This feature is available in Postfix 2.2 and later, and updated
 for TLS session ticket support in Postfix 2.11. </p>
 
@@ -9865,7 +9979,7 @@ Postfix uses ciphers with forward secrecy.  </p>
 smtpd_tls_dh1024_param_file = /etc/postfix/dh2048.pem
 </pre>
 
-<p>This feature is available with Postfix version 2.2.</p>
+<p>This feature is available in Postfix 2.2 and later.</p>
 
 %PARAM smtpd_tls_dh512_param_file
 
@@ -9887,7 +10001,8 @@ configuration parameter.  </p>
 smtpd_tls_dh512_param_file = /etc/postfix/dh_512.pem
 </pre>
 
-<p>This feature is available with Postfix version 2.2.</p>
+<p>This feature is available in Postfix 2.2 and later,
+but is ignored in Postfix 3.6 and later.</p>
 
 %PARAM smtpd_starttls_timeout see "postconf -d" output
 
@@ -9896,6 +10011,11 @@ during TLS startup and shutdown handshake procedures. The current
 default value is stress-dependent. Before Postfix version 2.8, it
 was fixed at 300s. </p>
 
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
+
 <p> This feature is available in Postfix 2.2 and later.  </p>
 
 %PARAM smtp_tls_cert_file
@@ -10055,10 +10175,10 @@ log trust-chain verification errors.  </dd>
 
 <dt> </dt> <dd> 2 Also log levels during TLS negotiation.  </dd>
 
-<dt> </dt> <dd> 3 Also log hexadecimal and ASCII dump of TLS negotiation
-process.  </dd>
+<dt> </dt> <dd> 3 Also log the hexadecimal and ASCII dump of the
+TLS negotiation process.  </dd>
 
-<dt> </dt> <dd> 4 Also log hexadecimal and ASCII dump of complete
+<dt> </dt> <dd> 4 Also log the hexadecimal and ASCII dump of complete
 transmission after STARTTLS. </dd>
 
 </dl>
@@ -10077,7 +10197,7 @@ concurrent access.  The file is created if it does not exist. The smtp(8)
 daemon does not use this parameter directly, rather the cache is
 implemented indirectly in the tlsmgr(8) daemon. This means that
 per-smtp-instance master.cf overrides of this parameter are not effective.
-Note, that each of the cache databases supported by tlsmgr(8) daemon:
+Note that each of the cache databases supported by tlsmgr(8) daemon:
 $smtpd_tls_session_cache_database, $smtp_tls_session_cache_database
 (and with Postfix 2.3 and later $lmtp_tls_session_cache_database), needs to
 be stored separately. It is not at this time possible to store multiple
@@ -10113,6 +10233,11 @@ are not possible. </p>
 &le; 0, session caching is disabled.  If set to a positive value
 less than 2 minutes, the minimum value of 2 minutes is used instead.  </p>
 
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
+
 <p> This feature is available in Postfix 2.2 and later.  </p>
 
 %PARAM smtp_use_tls no
@@ -10161,7 +10286,7 @@ for MTA clients are not specified. </p>
 checking. This setting has no effect on sessions that are controlled
 via the smtp_tls_per_site table.  </p>
 
-<p> Disabling the hostname verification can make sense in closed
+<p> Disabling the hostname verification can make sense in closed
 environment where special CAs are created.  If not used carefully,
 this option opens the danger of a "man-in-the-middle" attack (the
 CommonName of this attacker will be logged). </p>
@@ -10174,8 +10299,8 @@ Postfix 2.3 and later use smtp_tls_security_level instead. </p>
 <p> Optional lookup tables with the Postfix SMTP client TLS usage
 policy by next-hop destination and by remote SMTP server hostname.
 When both lookups succeed, the more specific per-site policy (NONE,
-MUST, etc) overrides the less specific one (MAY), and the more secure
-per-site policy (MUST, etc) overrides the less secure one (NONE).
+MUST, etc.) overrides the less specific one (MAY), and the more secure
+per-site policy (MUST, etc.) overrides the less secure one (NONE).
 With Postfix 2.3 and later smtp_tls_per_site is strongly discouraged:
 use smtp_tls_policy_maps instead. </p>
 
@@ -10199,7 +10324,7 @@ lookup key, and overrides the global smtp_use_tls, smtp_enforce_tls,
 and smtp_tls_enforce_peername settings. </dd>
 
 <dt> MAY </dt> <dd> Try to use TLS if the server announces support,
-otherwise use the unencrypted connection. This has less precedence
+otherwise use an unencrypted connection. This has less precedence
 than a more specific result (including <b>NONE</b>) from the alternate
 host or next-hop lookup key, and has less precedence than the more
 specific global "smtp_enforce_tls = yes" or "smtp_tls_enforce_peername
@@ -10217,7 +10342,7 @@ smtp_enforce_tls and smtp_tls_enforce_peername settings.  </dd>
 SMTP server hostname matches the information in the remote SMTP
 server certificate, and require that the remote SMTP server certificate
 was issued by a trusted CA. This overrides a less secure <b>NONE</b>
-and <b>MUST_NOPEERMATCH</b> or a less specific <b>MAY</b> lookup
+or <b>MUST_NOPEERMATCH</b> or a less specific <b>MAY</b> lookup
 result from the alternate host or next-hop lookup key, and overrides
 the global smtp_use_tls, smtp_enforce_tls and smtp_tls_enforce_peername
 settings.  </dd>
@@ -10295,6 +10420,11 @@ Postfix 2.3 and later; use smtp_tls_mandatory_ciphers instead. </p>
 <p> Time limit for Postfix SMTP client write and read operations
 during TLS startup and shutdown handshake procedures. </p>
 
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
+
 <p> This feature is available in Postfix 2.2 and later.  </p>
 
 %PARAM smtp_tls_dkey_file $smtp_tls_dcert_file
@@ -10365,7 +10495,7 @@ type must be prepended:  egd:/path/to/egd_socket for a source with
 EGD compatible socket interface, or dev:/path/to/device for a
 device file.  </p>
 
-<p> Note: on OpenBSD systems specify /dev/arandom when /dev/urandom
+<p> Note: on OpenBSD systems specify dev:/dev/arandom when dev:/dev/urandom
 gives timeout errors.  </p>
 
 <p> This feature is available in Postfix 2.2 and later.  </p>
@@ -10387,6 +10517,11 @@ in-memory pseudo random number generator (PRNG) pool from external
 sources.  The actual time between re-seeding attempts is calculated
 using the PRNG, and is between 0 and the time specified.  </p>
 
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
+
 <p> This feature is available in Postfix 2.2 and later.  </p>
 
 %PARAM tls_random_prng_update_period 3600s
@@ -10395,6 +10530,11 @@ using the PRNG, and is between 0 and the time specified.  </p>
 the pseudo random number generator (PRNG) to the file specified
 with $tls_random_exchange_name.  </p>
 
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
+
 <p> This feature is available in Postfix 2.2 and later.  </p>
 
 %PARAM tls_daemon_random_bytes 32
@@ -10515,7 +10655,7 @@ DNS lookup and increases the maximal inbound delivery rate. </p>
 <p> The maximal number of digits after the decimal point when logging
 sub-second delay values.  Specify a number in the range 0..6.  </p>
 
-<p> Large delay values are rounded off to an integral number seconds;
+<p> Large delay values are rounded off to an integral number of seconds;
 delay values below the delay_logging_resolution_limit are logged
 as "0", and delay values under 100s are logged with at most two-digit
 precision.  </p>
@@ -10540,7 +10680,7 @@ precision.  </p>
 
 <p> Pathname of a configuration file with bounce message templates.
 These override the built-in templates of delivery status notification
-(DSN) messages for undeliverable mail, for delayed mail, successful
+(DSN) messages for undeliverable mail, delayed mail, successful
 delivery, or delivery verification. The bounce(5) manual page
 describes how to edit and test template files.  </p>
 
@@ -10614,7 +10754,7 @@ The hostname to send in the LMTP LHLO command.
 
 <p>
 The default value is the machine hostname.  Specify a hostname or
-[ip.add.re.ss].
+[ip.add.re.ss] or [ip:v6:add:re::ss].
 </p>
 
 <p>
@@ -11208,7 +11348,9 @@ attributes (available for opportunistic TLS with Postfix &ge; 2.6)
 and "connection_reuse" attribute (Postfix &ge; 3.4) override the
 "smtp_tls_ciphers", "smtp_tls_exclude_ciphers", "smtp_tls_protocols",
 and
-"smtp_tls_connection_reuse" configuration parameters. When opportunistic
+"smtp_tls_connection_reuse" configuration parameters. In the policy table,
+multiple ciphers, protocols or excluded ciphers must be separated by colons,
+as attribute values may not contain whitespace or commas. When opportunistic
 TLS handshakes fail, Postfix retries the connection with TLS disabled.
 This allows mail delivery to sites with non-interoperable TLS
 implementations.</dd>
@@ -11222,7 +11364,7 @@ optional "exclude" attribute (Postfix &ge; 2.6) overrides the main.cf
 smtp_tls_mandatory_exclude_ciphers parameter, and the optional
 "connection_reuse" attribute (Postfix &ge; 3.4) overrides the
 main.cf smtp_tls_connection_reuse parameter. In the policy table,
-multiple protocols or excluded ciphers must be separated by colons,
+multiple ciphers, protocols or excluded ciphers must be separated by colons,
 as attribute values may not contain whitespace or commas. </dd>
 
 <dt><b><a href="TLS_README.html#client_tls_dane">dane</a></b></dt>
@@ -11237,6 +11379,16 @@ server certificate must match the TLSA records.  RFC 7672 (DANE)
 TLS authentication and DNSSEC support is available with Postfix
 2.11 and later. The optional "connection_reuse" attribute (Postfix
 &ge; 3.4) overrides the main.cf smtp_tls_connection_reuse parameter.
+When the effective security level used is <a
+href="TLS_README.html#client_tls_may">may</a>, the optional "ciphers",
+"exclude", and "protocols" attributes (Postfix &ge; 2.6) override the
+"smtp_tls_ciphers", "smtp_tls_exclude_ciphers", and "smtp_tls_protocols"
+configuration parameters.
+When the effective security level used is <a
+href="TLS_README.html#client_tls_encrypt">encrypt</a>, the optional "ciphers",
+"exclude", and "protocols" attributes (Postfix &ge; 2.6) override the
+"smtp_tls_mandatory_ciphers", "smtp_tls_mandatory_exclude_ciphers", and
+"smtp_tls_mandatory_protocols" configuration parameters.
 </dd>
 
 <dt><b><a href="TLS_README.html#client_tls_dane">dane-only</a></b></dt>
@@ -11246,8 +11398,11 @@ or none are usable, no connection is made to the server.  When
 usable TLSA records are obtained for the remote SMTP server, the
 server certificate must match the TLSA records.  RFC 7672 (DANE) TLS
 authentication and DNSSEC support is available with Postfix 2.11
-and later. The optional "connection_reuse" attribute (Postfix &ge;
-3.4) overrides the main.cf smtp_tls_connection_reuse parameter.
+and later. The optional "ciphers", "exclude", and "protocols" attributes
+(Postfix &ge; 2.6) override the "smtp_tls_mandatory_ciphers",
+"smtp_tls_mandatory_exclude_ciphers", and "smtp_tls_mandatory_protocols"
+configuration parameters. The optional "connection_reuse" attribute
+(Postfix &ge; 3.4) overrides the main.cf smtp_tls_connection_reuse parameter.
 </dd>
 
 <dt><b><a href="TLS_README.html#client_tls_fprint">fingerprint</a></b></dt>
@@ -11255,7 +11410,7 @@ and later. The optional "connection_reuse" attribute (Postfix &ge;
 verification. Available with Postfix 2.5 and later. At this security
 level, there are no trusted Certification Authorities. The certificate
 trust chain, expiration date, ... are not checked. Instead,
-the optional <b>match</b> attribute, or else the main.cf
+the optional "match" attribute, or else the main.cf
 <b>smtp_tls_fingerprint_cert_match</b> parameter, lists the certificate
 fingerprints or the public key fingerprint (Postfix 2.9 and later)
 of the valid server certificate. The digest
@@ -11264,8 +11419,12 @@ algorithm used to calculate the fingerprint is selected by the
 be combined with a "|" delimiter in a single match attribute, or multiple
 match attributes can be employed. The ":" character is not used as a
 delimiter as it occurs between each pair of fingerprint (hexadecimal)
-digits. The optional "connection_reuse" attribute (Postfix &ge; 3.4)
-overrides the main.cf smtp_tls_connection_reuse parameter. </dd>
+digits. The optional "ciphers", "exclude", and "protocols" attributes
+(Postfix &ge; 2.6) override the "smtp_tls_mandatory_ciphers",
+"smtp_tls_mandatory_exclude_ciphers", and "smtp_tls_mandatory_protocols"
+configuration parameters. The optional "connection_reuse" attribute
+(Postfix &ge; 3.4) overrides the main.cf smtp_tls_connection_reuse
+parameter. </dd>
 
 <dt><b><a href="TLS_README.html#client_tls_verify">verify</a></b></dt>
 <dd>Mandatory TLS verification.  At this security
@@ -11275,8 +11434,11 @@ unauthenticated DNS MX lookups.  The optional "match" attribute overrides
 the main.cf smtp_tls_verify_cert_match parameter. In the policy table,
 multiple match patterns and strategies must be separated by colons.
 In practice explicit control over matching is more common with the
-"secure" policy, described below. The optional "connection_reuse"
-attribute (Postfix &ge; 3.4) overrides the main.cf
+"secure" policy, described below. The optional "ciphers", "exclude",
+and "protocols" attributes (Postfix &ge; 2.6) override the
+"smtp_tls_mandatory_ciphers", "smtp_tls_mandatory_exclude_ciphers", and
+"smtp_tls_mandatory_protocols" configuration parameters. The optional
+"connection_reuse" attribute (Postfix &ge; 3.4) overrides the main.cf
 smtp_tls_connection_reuse parameter. </dd>
 
 <dt><b><a href="TLS_README.html#client_tls_secure">secure</a></b></dt>
@@ -11285,18 +11447,21 @@ MX lookups, though potentially used to determine the candidate next-hop
 gateway IP addresses, are <b>not</b> trusted to be secure enough for TLS
 peername verification. Instead, the default name verified in the server
 certificate is obtained directly from the next-hop, or is explicitly
-specified via the optional <b>match</b> attribute which overrides the
+specified via the optional "match" attribute which overrides the
 main.cf smtp_tls_secure_cert_match parameter. In the policy table,
 multiple match patterns and strategies must be separated by colons.
 The match attribute is most useful when multiple domains are supported by
-common server, the policy entries for additional domains specify matching
+a common server: the policy entries for additional domains specify matching
 rules for the primary domain certificate. While transport table overrides
-routing the secondary domains to the primary nexthop also allow secure
+that route the secondary domains to the primary nexthop also allow secure
 verification, they risk delivery to the wrong destination when domains
 change hands or are re-assigned to new gateways. With the "match"
 attribute approach, routing is not perturbed, and mail is deferred if
-verification of a new MX host fails. The optional "connection_reuse"
-attribute (Postfix &ge; 3.4) overrides the main.cf
+verification of a new MX host fails. The optional "ciphers", "exclude",
+and "protocols" attributes (Postfix &ge; 2.6) override the
+"smtp_tls_mandatory_ciphers", "smtp_tls_mandatory_exclude_ciphers", and
+"smtp_tls_mandatory_protocols" configuration parameters. The optional
+"connection_reuse" attribute (Postfix &ge; 3.4) overrides the main.cf
 smtp_tls_connection_reuse parameter. </dd>
 
 </dl>
@@ -11331,10 +11496,10 @@ Example:
         match=51:e9:af:2e:1e:40:1f:...:64:0a:30:35:2d:09:16:31:5a:eb:82:76
 </pre>
 
-<p> <b>Note:</b> The <b>hostname</b> strategy if listed in a non-default
-setting of smtp_tls_secure_cert_match or in the <b>match</b> attribute
-in the policy table can render the <b>secure</b> level vulnerable to
-DNS forgery. Do not use the <b>hostname</b> strategy for secure-channel
+<p> <b>Note:</b> The "hostname" strategy if listed in a non-default
+setting of smtp_tls_secure_cert_match or in the "match" attribute
+in the policy table can render the "secure" level vulnerable to
+DNS forgery. Do not use the "hostname" strategy for secure-channel
 configurations in environments where DNS security is not assured. </p>
 
 <p> This feature is available in Postfix 2.3 and later. </p>
@@ -11388,7 +11553,7 @@ smtp_tls_mandatory_protocols = &gt;=0x0303
 <p> With Postfix &lt; 3.6 there is no support for a minimum or maximum
 version, and the protocol range is configured via protocol exclusions.
 To require at least TLS 1.0, set "smtp_tls_mandatory_protocols = !SSLv2,
-!SSLv3". Listing the protocols to include, rather than protocols to
+!SSLv3". Listing the protocols to include, rather than the protocols to
 exclude, is supported, but not recommended.  The exclusion syntax more
 accurately matches the underlying OpenSSL interface.  </p>
 
@@ -11403,7 +11568,7 @@ smtp_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1.1
 </pre>
 </blockquote>
 
-<p> also disables any protocols version higher than TLSv1.1 leaving
+<p> also disables any protocol versions higher than TLSv1.1 leaving
 only "TLSv1" enabled.  </p>
 
 <p> Support for "TLSv1.3" was introduced in OpenSSL 1.1.1.  Disabling
@@ -11412,7 +11577,7 @@ releases &ge; 3.0.14, 3.1.10, 3.2.7 and 3.3.2).  </p>
 
 <p> While the vast majority of SMTP servers with DANE TLSA records now
 support at least TLS 1.2, a few still only support TLS 1.0.  If you use
-"dane" or "dane-only" it is best to not disable TLSv1, except perhaps
+"dane" or "dane-only" it is best not to disable TLSv1, except perhaps
 via the policy table for destinations which you are sure will support
 "TLSv1.2".  </p>
 
@@ -11643,10 +11808,12 @@ smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
 
 %PARAM smtp_tls_security_level
 
-<p> The default SMTP TLS security level for the Postfix SMTP client;
-when a non-empty value is specified, this overrides the obsolete
-parameters smtp_use_tls, smtp_enforce_tls, and smtp_tls_enforce_peername.
-</p>
+<p> The default SMTP TLS security level for the Postfix SMTP client.
+When a non-empty value is specified, this overrides the obsolete
+parameters smtp_use_tls, smtp_enforce_tls, and smtp_tls_enforce_peername;
+when no value is specified for smtp_tls_enforce_peername or the obsolete
+parameters, the default SMTP TLS security level is
+<a href="TLS_README.html#client_tls_none">none</a>. </p>
 
 <p> Specify one of the following security levels: </p>
 
@@ -11758,7 +11925,7 @@ smtp_tls_security_level = none
 <pre>
 # Opportunistic TLS.
 smtp_tls_security_level = may
-# Do not tweak opportunistic ciphers or protocol unless it is essential
+# Do not tweak opportunistic ciphers or protocols unless it is essential
 # to do so (if a security vulnerability is found in the SSL library that
 # can be mitigated by disabling a particular protocol or raising the
 # cipher grade).
@@ -11814,7 +11981,7 @@ separator. See the MILTER_README document for details.  </p>
 does not arrive via the Postfix smtpd(8) server. This includes local
 submission via the sendmail(1) command line, new mail that arrives
 via the Postfix qmqpd(8) server, and old mail that is re-injected
-into the queue with "postsuper -r".  Specify space or comma as
+into the queue with "postsuper -r".  Specify space or comma as a
 separator. See the MILTER_README document for details.  </p>
 
 <p> This feature is available in Postfix 2.3 and later. </p>
@@ -11886,10 +12053,9 @@ the "hold" queue. Available with Postfix 2.6 and later. </dd>
 application, and for negotiating protocol options. </p>
 
 <p> Specify a non-zero time value (an integral value plus an optional
-one-letter suffix that specifies the time unit). </p>
-
-<p> Time units: s (seconds), m (minutes), h (hours), d (days), w
-(weeks). The default time unit is s (seconds). </p>
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 <p> This feature is available in Postfix 2.3 and later. </p>
 
@@ -11899,10 +12065,9 @@ one-letter suffix that specifies the time unit). </p>
 filter) application, and for receiving the response.  </p>
 
 <p> Specify a non-zero time value (an integral value plus an optional
-one-letter suffix that specifies the time unit). </p>
-
-<p> Time units: s (seconds), m (minutes), h (hours), d (days), w
-(weeks). The default time unit is s (seconds). </p>
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 <p> This feature is available in Postfix 2.3 and later. </p>
 
@@ -11912,10 +12077,9 @@ one-letter suffix that specifies the time unit). </p>
 filter) application, and for receiving the response.  </p>
 
 <p> Specify a non-zero time value (an integral value plus an optional
-one-letter suffix that specifies the time unit). </p>
-
-<p> Time units: s (seconds), m (minutes), h (hours), d (days), w
-(weeks). The default time unit is s (seconds). </p>
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 <p> This feature is available in Postfix 2.3 and later. </p>
 
@@ -11999,7 +12163,7 @@ values for arbitrary macros that Postfix may send to Milter
 applications.  These defaults are used when there is no corresponding
 information from the message delivery context. </p>
 
-<p> Specify <i>name=value</i> or <i>{name}=value</i> pairs separated
+<p> Specify <i>name=value</i> or <i>{name=value}</i> pairs separated
 by comma or whitespace.  Enclose a pair in "{}" when a value contains
 comma or whitespace (this form ignores whitespace after the enclosing
 "{", around the "=", and before the enclosing "}"). </p>
@@ -12034,13 +12198,13 @@ one "medium" or "high" grade cipher. </p>
 <dt><b>export</b></dt>
 <dd> Enable "EXPORT" grade or stronger OpenSSL ciphers.  The
 underlying cipherlist is specified via the tls_export_cipherlist
-configuration parameter, which you are strongly encouraged to not
+configuration parameter, which you are strongly encouraged not to
 change.  This choice is insecure and SHOULD NOT be used.  </dd>
 
 <dt><b>low</b></dt>
 <dd> Enable "LOW" grade or stronger OpenSSL ciphers. The underlying
 cipherlist is specified via the tls_low_cipherlist configuration
-parameter, which you are strongly encouraged to not change.  This
+parameter, which you are strongly encouraged not to change.  This
 choice is insecure and SHOULD NOT be used.  </dd>
 
 <dt><b>medium</b></dt>
@@ -12048,7 +12212,7 @@ choice is insecure and SHOULD NOT be used.  </dd>
 or longer symmetric bulk-encryption keys. This is the default minimum
 strength for mandatory TLS encryption. The underlying cipherlist is
 specified via the tls_medium_cipherlist configuration parameter, which
-you are strongly encouraged to not change. </dd>
+you are strongly encouraged not to change. </dd>
 
 <dt><b>high</b></dt>
 <dd> Enable only "HIGH" grade OpenSSL ciphers. The
@@ -12062,7 +12226,7 @@ without encryption.  This setting is only appropriate in the rare
 case that all clients are prepared to use NULL ciphers (not normally
 enabled in TLS clients). The underlying cipherlist is specified via the
 tls_null_cipherlist configuration parameter, which you are strongly
-encouraged to not change. </dd>
+encouraged not to change. </dd>
 
 </dl>
 
@@ -12140,19 +12304,19 @@ on a per-destination basis. </p>
 <dt><b>export</b></dt>
 <dd> Enable "EXPORT" grade or better OpenSSL ciphers.  The underlying
 cipherlist is specified via the tls_export_cipherlist configuration
-parameter, which you are strongly encouraged to not change.  This
+parameter, which you are strongly encouraged not to change.  This
 choice is insecure and SHOULD NOT be used.  </dd>
 
 <dt><b>low</b></dt>
 <dd> Enable "LOW" grade or better OpenSSL ciphers.  The underlying
 cipherlist is specified via the tls_low_cipherlist configuration
-parameter, which you are strongly encouraged to not change.  This
+parameter, which you are strongly encouraged not to change.  This
 choice is insecure and SHOULD NOT be used.  </dd>
 
 <dt><b>medium</b></dt>
 <dd> Enable "MEDIUM" grade or better OpenSSL ciphers.
 The underlying cipherlist is specified via the tls_medium_cipherlist
-configuration parameter, which you are strongly encouraged to not change.
+configuration parameter, which you are strongly encouraged not to change.
 </dd>
 
 <dt><b>high</b></dt>
@@ -12161,7 +12325,7 @@ be appropriate when all mandatory TLS destinations (e.g. when all
 mail is routed to a suitably capable relayhost) support at least one
 "HIGH" grade cipher. The underlying cipherlist is specified via the
 tls_high_cipherlist configuration parameter, which you are strongly
-encouraged to not change. </dd>
+encouraged not to change. </dd>
 
 <dt><b>null</b></dt>
 <dd> Enable only the "NULL" OpenSSL ciphers, these provide authentication
@@ -12170,7 +12334,7 @@ that all servers are prepared to use NULL ciphers (not normally enabled
 in TLS servers). A plausible use-case is an LMTP server listening on a
 UNIX-domain socket that is configured to support "NULL" ciphers. The
 underlying cipherlist is specified via the tls_null_cipherlist
-configuration parameter, which you are strongly encouraged to not
+configuration parameter, which you are strongly encouraged not to
 change. </dd>
 
 </dl>
@@ -12208,7 +12372,7 @@ smtp_tls_exclude_ciphers = kEDH+aRSA
 </pre>
 </blockquote>
 
-<p> The first setting, disables anonymous ciphers. The next setting
+<p> The first setting disables anonymous ciphers. The next setting
 disables ciphers that use the MD5 digest algorithm or the (single) DES
 encryption algorithm. The next setting disables ciphers that use MD5 and
 DES together.  The next setting disables the two ciphers "AES256-SHA"
@@ -12236,7 +12400,7 @@ attribute. See smtp_tls_policy_maps for notes and examples. </p>
 the meaning of the "high" setting in smtpd_tls_ciphers,
 smtpd_tls_mandatory_ciphers, smtp_tls_ciphers, smtp_tls_mandatory_ciphers,
 lmtp_tls_ciphers, and lmtp_tls_mandatory_ciphers. You are strongly
-encouraged to not change this setting.  </p>
+encouraged not to change this setting.  </p>
 
 <p> This feature is available in Postfix 2.3 and later. </p>
 
@@ -12249,8 +12413,8 @@ lmtp_tls_ciphers, and lmtp_tls_mandatory_ciphers.  This is the
 default cipherlist for mandatory TLS encryption in the TLS client
 (with anonymous ciphers disabled when verifying server certificates).
 This is the default cipherlist for opportunistic TLS with Postfix
-releases after the middle of 2015.  You are strongly encouraged to
-not change this setting.  </p>
+releases after the middle of 2015.  You are strongly encouraged not
+to change this setting.  </p>
 
 <p> This feature is available in Postfix 2.3 and later. </p>
 
@@ -12260,7 +12424,7 @@ not change this setting.  </p>
 the meaning of the "low" setting in smtpd_tls_ciphers,
 smtpd_tls_mandatory_ciphers, smtp_tls_ciphers, smtp_tls_mandatory_ciphers,
 lmtp_tls_ciphers, and lmtp_tls_mandatory_ciphers. You are strongly
-encouraged to not change this setting.  </p>
+encouraged not to change this setting.  </p>
 
 <p> This feature is available in Postfix 2.3 and later. </p>
 
@@ -12273,7 +12437,7 @@ lmtp_tls_ciphers, and lmtp_tls_mandatory_ciphers.  With Postfix
 releases before the middle of 2015 this is the default cipherlist
 for the opportunistic ("may") TLS client security level and also
 the default cipherlist for the SMTP server. You are strongly
-encouraged to not change this setting.  </p>
+encouraged not to change this setting.  </p>
 
 <p> This feature is available in Postfix 2.3 and later. </p>
 
@@ -12281,8 +12445,8 @@ encouraged to not change this setting.  </p>
 
 <p> The OpenSSL cipherlist for "NULL" grade ciphers that provide
 authentication without encryption. This defines the meaning of the "null"
-setting in smtpd_mandatory_tls_ciphers, smtp_tls_mandatory_ciphers and
-lmtp_tls_mandatory_ciphers.  You are strongly encouraged to not
+setting in smtpd_tls_mandatory_ciphers, smtp_tls_mandatory_ciphers and
+lmtp_tls_mandatory_ciphers.  You are strongly encouraged not to
 change this setting. </p>
 
 <p> This feature is available in Postfix 2.3 and later. </p>
@@ -12478,7 +12642,7 @@ $ openssl x509 -noout -fingerprint -<i>digest</i> -in <i>certfile</i>.pem
 </pre>
 </blockquote>
 
-<p> The text to the right of "=" sign is the desired fingerprint.
+<p> The text to the right of the "=" sign is the desired fingerprint.
 For example: </p>
 
 <blockquote>
@@ -12510,7 +12674,7 @@ $ openssl x509 -in cert.pem -noout -pubkey |
 </blockquote>
 
 <p> The Postfix SMTP server and client log the peer (leaf) certificate
-fingerprint and public key fingerprint when the TLS loglevel is 2 or
+fingerprint and the public key fingerprint when the TLS loglevel is 2 or
 higher. </p>
 
 <p> This feature is available in Postfix 2.5 and later. </p>
@@ -12737,7 +12901,7 @@ use the "!" exclusion syntax, also described below.  </p>
 acceptable protocols is to set the lowest acceptable TLS protocol
 version and/or the highest acceptable TLS protocol version.  To set the
 lower bound include an element of the form: "&gt;=<i>version</i>" where
-<i>version</i> is either one of the TLS protocol names listed above,
+<i>version</i> is either one of the TLS protocol names listed above,
 or a hexadecimal number corresponding to the desired TLS protocol
 version (0301 for TLS 1.0, 0302 for TLS 1.1, etc.).  For the upper
 bound, use "&lt;=<i>version</i>".  There must be no whitespace between
@@ -12920,7 +13084,7 @@ parameter. See there for details. </p>
 SMTP client and server.  These curves are used by the Postfix SMTP
 server when "smtpd_tls_eecdh_grade = auto".  The selected curves
 must be implemented by OpenSSL and be standardized for use in TLS
-(RFC 4492 or its imminent successor).  It is unwise to list only
+(RFC 8422).  It is unwise to list only
 "bleeding-edge" curves supported by a small subset of clients.  The
 default list is suitable for most users. </p>
 
@@ -12946,10 +13110,10 @@ server when "smtpd_tls_eecdh_grade = strong". The phrase "sensibly
 strong" means approximately 128-bit security based on best known
 attacks. The selected curve must be implemented by OpenSSL (as
 reported by ecparam(1) with the "-list_curves" option) and be one
-of the curves listed in Section 5.1.1 of RFC 4492. You should not
+of the curves listed in Section 5.1.1 of RFC 8422. You should not
 generally change this setting.  Remote SMTP client implementations
 must support this curve for EECDH key exchange to take place.  It
-is unwise to choose an "bleeding-edge" curve supported by only a
+is unwise to choose only "bleeding-edge" curves supported by only a
 small subset of clients.  </p>
 
 <p> The default "strong" curve is rated in NSA <a
@@ -12987,7 +13151,10 @@ This additional strength comes at a significant computational cost, most
 users should instead set "smtpd_tls_eecdh_grade = strong".  The selected
 curve must be implemented by OpenSSL (as reported by ecparam(1) with the
 "-list_curves" option) and be one of the curves listed in Section 5.1.1
-of RFC 4492. You should not generally change this setting. </p>
+of RFC 8422. You should not generally change this setting.  Remote SMTP
+client implementations must support this curve for EECDH key exchange
+to take place.  It is unwise to choose only "bleeding-edge" curves
+supported by only a small subset of clients. </p>
 
 <p> This default "ultra" curve is rated in NSA <a
 href="https://web.archive.org/web/20160330034144/https://www.nsa.gov/ia/programs/suiteb_cryptography/">Suite
@@ -13411,6 +13578,11 @@ this case: "_destination_recipient_limit"). </p>
 value, where <i>transport</i> is the master.cf name of the message
 delivery transport. </p>
 
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
+
 <p> Note: <i>transport</i>_time_limit parameters will not show up
 in "postconf" command output before Postfix version 2.9.  This
 limitation applies to many parameters whose name is a combination
@@ -13554,6 +13726,17 @@ unit). </p>
 parameter value, where the initial <i>transport</i> in the parameter
 name is the master.cf name of the message delivery transport. </p>
 
+<p> Specify a non-negative time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
+
+<p> Note: <i>transport</i>_transport_rate_delay parameters will
+not show up in "postconf" command output before Postfix version
+2.9.  This limitation applies to many parameters whose name is a
+combination of a master.cf service name and a built-in suffix (in
+this case: "_transport_rate_delay").  </p>
+
 %PARAM default_destination_rate_delay 0s
 
 <p> The default amount of delay that is inserted between individual
@@ -13664,7 +13847,7 @@ password. Each table (key, value) pair contains a server name, a
 username and password, and the full server response. This information
 is stored when a remote SMTP server rejects an authentication attempt
 with a 535 reply code.  As long as the smtp_sasl_password_maps
-information does no change, and as long as the smtp_sasl_auth_cache_name
+information does not change, and as long as the smtp_sasl_auth_cache_name
 information does not expire (see smtp_sasl_auth_cache_time) the
 Postfix SMTP client avoids SASL authentication attempts with the
 same server, username and password, and instead bounces or defers
@@ -13698,6 +13881,11 @@ smtp_sasl_auth_cache_name = proxy:btree:/var/lib/postfix/sasl_auth_cache
 <p> The maximal age of an smtp_sasl_auth_cache_name entry before it
 is removed. </p>
 
+<p> Specify a non-negative time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is d (days).  </p>
+
 <p> This feature is available in Postfix 2.5 and later. </p>
 
 %PARAM lmtp_sasl_auth_soft_bounce yes
@@ -14110,7 +14298,8 @@ a good client can immediately talk to a real Postfix SMTP server. </p>
 
 <p> Specify a non-zero time value (an integral value plus an optional
 one-letter suffix that specifies the time unit).  Time units: s
-(seconds), m (minutes), h (hours), d (days), w (weeks).  </p>
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is d (days).  </p>
 
 <p> This feature is available in Postfix 2.8. </p>
 
@@ -14122,8 +14311,10 @@ from being logged as "NEW" just because their cache entry expired
 an hour ago. It also prevents the cache from filling up with clients
 that passed some deep protocol test once and never came back. </p>
 
-<p> Time units: s (seconds), m (minutes), h (hours), d (days), w
-(weeks).  </p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is d (days).  </p>
 
 <p> This feature is available in Postfix 2.8. </p>
 
@@ -14141,8 +14332,10 @@ logged as "partial" when the daemon terminates early after "<b>postfix
 reload</b>", "<b>postfix stop</b>", or no requests for $max_idle
 seconds. </p>
 
-<p> Time units: s (seconds), m (minutes), h (hours), d (days), w
-(weeks).  </p>
+<p> Specify a non-negative time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is h (hours).  </p>
 
 <p> This feature is available in Postfix 2.8. </p>
 
@@ -14154,10 +14347,9 @@ lookup results to arrive (default: up to 2 seconds under stress,
 up to 6 seconds otherwise).  <p>
 
 <p> Specify a non-zero time value (an integral value plus an optional
-one-letter suffix that specifies the time unit).  </p>
-
-<p> Time units: s (seconds), m (minutes), h (hours), d (days), w
-(weeks).  </p>
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 <p> This feature is available in Postfix 2.8. </p>
 
@@ -14456,7 +14648,7 @@ feature: </p>
 <pre>
     # Append XVERP to MAIL FROM commands to request VERP-style delivery.
     # See VERP_README for more information on how to use Postfix VERP.
-    /^(MAIL FROM:\s*&lt;listname@example\.com&gt;.*)/   $1 XVERP
+    /^(MAIL\s+FROM:\s*&lt;listname@example\.com&gt;.*)/   $1 XVERP
 </pre>
 
 <pre>
@@ -14716,7 +14908,8 @@ IP address is required to pass that test again.  </p>
 
 <p> Specify a non-zero time value (an integral value plus an optional
 one-letter suffix that specifies the time unit).  Time units: s
-(seconds), m (minutes), h (hours), d (days), w (weeks).  </p>
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is h (hours).  </p>
 
 <p> This feature is available in Postfix 2.8-3.0. It was 
 replaced by postscreen_dnsbl_max_ttl in Postfix 3.1.  </p>
@@ -14731,7 +14924,8 @@ it would be larger than postscreen_dnsbl_max_ttl.  </p>
 
 <p> Specify a non-zero time value (an integral value plus an optional
 one-letter suffix that specifies the time unit).  Time units: s
-(seconds), m (minutes), h (hours), d (days), w (weeks).  </p>
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 <p> This feature is available in Postfix 3.1. </p>
 
@@ -14745,7 +14939,8 @@ it would be smaller than postscreen_dnsbl_min_ttl.  </p>
 
 <p> Specify a non-zero time value (an integral value plus an optional
 one-letter suffix that specifies the time unit).  Time units: s
-(seconds), m (minutes), h (hours), d (days), w (weeks).  </p>
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is h (hours).  </p>
 
 <p> This feature is available in Postfix 3.1. The default setting
 is backwards-compatible with older Postfix versions. </p>
@@ -14762,7 +14957,7 @@ the server to respond.  Specify one of the following: </p>
 <dt> <b>ignore</b> </dt>
 
 <dd> Ignore the failure of this test. Allow other tests to complete.
-Do <i>not</i> repeat this test before some the result from some
+Do <i>not</i> repeat this test before the result from some
 other test expires.
 This option is useful for testing and collecting statistics
 without blocking mail permanently. </dd>
@@ -14792,7 +14987,8 @@ before it can talk to a real Postfix SMTP server. </p>
 
 <p> Specify a non-zero time value (an integral value plus an optional
 one-letter suffix that specifies the time unit).  Time units: s
-(seconds), m (minutes), h (hours), d (days), w (weeks).  </p>
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is d (days).  </p>
 
 <p> This feature is available in Postfix 2.8.  </p>
 
@@ -14817,7 +15013,8 @@ set under 10s.  </p>
 
 <p> Specify a non-zero time value (an integral value plus an optional
 one-letter suffix that specifies the time unit).  Time units: s
-(seconds), m (minutes), h (hours), d (days), w (weeks).  </p>
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 <p> This feature is available in Postfix 2.8.  </p>
 
@@ -14855,7 +15052,7 @@ parameter.  Specify one of the following: </p>
 <dt> <b>ignore</b> </dt>
 
 <dd> Ignore the failure of this test. Allow other tests to complete.
-Do <i>not</i> repeat this test before some the result from some
+Do <i>not</i> repeat this test before the result from some
 other test expires.
 This option is useful for testing and collecting statistics
 without blocking mail permanently. </dd>
@@ -14887,7 +15084,8 @@ before it can talk to a real Postfix SMTP server. </p>
 
 <p> Specify a non-zero time value (an integral value plus an optional
 one-letter suffix that specifies the time unit).  Time units: s
-(seconds), m (minutes), h (hours), d (days), w (weeks).  </p>
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is d (days).  </p>
 
 <p> This feature is available in Postfix 2.8.  </p>
 
@@ -14901,7 +15099,7 @@ test, before it can talk to a real Postfix SMTP server. </p>
 
 %PARAM postscreen_dnsbl_reply_map
 
-<p> A mapping from actual DNSBL domain name which includes a secret
+<p> A mapping from an actual DNSBL domain name which includes a secret
 password, to the DNSBL domain name that postscreen will reply with
 when it rejects mail.  When no mapping is found, the actual DNSBL
 domain will be used. </p>
@@ -14932,6 +15130,11 @@ the file is read). </p>
 the timeouts in the dnsblog(8) daemon which are defined by system
 resolver(3) routines. </p>
 
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
+
 <p> This feature is available in Postfix 3.0.  </p>
 %PARAM postscreen_bare_newline_action ignore
 
@@ -14944,7 +15147,7 @@ return.  Specify one of the following: </p>
 <dt> <b>ignore</b> </dt>
 
 <dd> Ignore the failure of this test. Allow other tests to complete.
-Do <i>not</i> repeat this test before some the result from some
+Do <i>not</i> repeat this test before the result from some
 other test expires.
 This option is useful for testing and collecting statistics
 without blocking mail permanently. </dd>
@@ -14975,7 +15178,8 @@ before it can talk to a real Postfix SMTP server. </p>
 
 <p> Specify a non-zero time value (an integral value plus an optional
 one-letter suffix that specifies the time unit).  Time units: s
-(seconds), m (minutes), h (hours), d (days), w (weeks).  </p>
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is d (days).  </p>
 
 <p> This feature is available in Postfix 2.8.  </p>
 
@@ -15066,10 +15270,10 @@ over an internal communication channel.  The purpose is to break
 out of deadlock situations. If the time limit is exceeded the
 software either retries or aborts the operation. </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 <p> This feature is available in Postfix 2.8 and later.  </p>
 
@@ -15079,10 +15283,10 @@ The default time unit is s (seconds).
 a request before it is terminated by a built-in watchdog timer.
 </p>
 
-<p>
-Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).
-</p>
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 <p> This feature is available in Postfix 2.8 and later.  </p>
 
@@ -15218,7 +15422,8 @@ cannot be set under 10s.  </p>
 
 <p> Specify a non-zero time value (an integral value plus an optional
 one-letter suffix that specifies the time unit).  Time units: s
-(seconds), m (minutes), h (hours), d (days), w (weeks).  </p>
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 <p> This feature is available in Postfix 2.8 and later  </p>
 
@@ -15271,7 +15476,7 @@ for details. </p>
 
 <p> Mandatory TLS: announce STARTTLS support to remote SMTP clients, and
 require that clients use TLS encryption. See smtpd_enforce_tls for
-further details. </p>
+further details. Use tlsproxy_tls_security_level instead. </p>
 
 <p> This feature is available in Postfix 2.8 and later. </p>
 
@@ -15501,7 +15706,7 @@ shared by all three services, namely smtpd_tls_session_cache_timeout. </p>
 
 <p> Opportunistic TLS: announce STARTTLS support to remote SMTP clients,
 but do not require that clients use TLS encryption. See smtpd_use_tls
-for further details. </p>
+for further details. Use tlsproxy_tls_security_level instead. </p>
 
 <p> This feature is available in Postfix 2.8 and later. </p>
 
@@ -15794,6 +15999,11 @@ authentication in the proxy agent (Postfix 2.9 and later). <p>
 <p> The time limit for the proxy protocol specified with the
 smtpd_upstream_proxy_protocol parameter. </p>
 
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
+
 <p> This feature is available in Postfix 2.10 and later.  </p>
  
 %PARAM enable_long_queue_ids no
@@ -15934,12 +16144,14 @@ caused such addresses to end up on spammer mailing lists, and has
 resulted in wasted network and processing resources.  </p>
 
 <p> To enable time-dependent probe sender addresses, specify a
-non-zero time value (an integral value plus an optional one-letter
-suffix that specifies the time unit).  Specify a value of at least
-several hours, to avoid problems with senders that use greylisting.
-Avoid nice TTL values, to make the result less predictable.  Time
-units are: s (seconds), m (minutes), h (hours), d (days), w (weeks).
-</p>
+non-zero time value. Specify a value of at least several hours,
+to avoid problems with senders that use greylisting. Avoid nice
+TTL values, to make the result less predictable.  </p>
+
+<p> Specify a non-negative time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 <p> This feature is available in Postfix 2.9 and later.  </p>
 
@@ -16407,7 +16619,7 @@ ignored with a warning. </p>
 
 <p> Note: It is unwise to omit sha256 from the digest list.  This
 digest algorithm is the only mandatory to implement digest algorithm
-in RFC 6698, and many servers are expected publish TLSA records
+in RFC 6698, and many servers are expected to publish TLSA records
 with just sha256 digests.  Unless one of the standard digests is
 seriously compromised and servers have had ample time to update their
 TLSA records you should not omit any standard digests, just arrange
@@ -16659,13 +16871,18 @@ request before giving up. Specify a value greater than zero. </p>
 <p> The delay between attempts to resend a failed SMTPD policy
 service request. Specify a value greater than zero. </p>
 
+<p> Specify a non-zero time value (an integral value plus an optional
+one-letter suffix that specifies the time unit).  Time units: s
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
+
 <p> This feature is available in Postfix 3.0 and later. </p>
 
 %PARAM smtputf8_enable yes
 
 <p> Enable preliminary SMTPUTF8 support for the protocols described
-in RFC 6531..6533. This requires that Postfix is built to support
-these protocols. </p>
+in RFC 6531, RFC 6532, and RFC 6533. This requires that Postfix is
+built to support these protocols. </p>
 
 <p> This feature is available in Postfix 3.0 and later. </p>
 
@@ -16917,7 +17134,7 @@ with valid PTR etc. records. </p>
 %PARAM smtp_tls_wrappermode no
 
 <p> Request that the Postfix SMTP client connects using the
-legacy SMTPS protocol instead of using the STARTTLS command. </p>
+SUBMISSIONS/SMTPS protocol instead of using the STARTTLS command. </p>
 
 <p> This mode requires "smtp_tls_security_level = encrypt" or
 stronger. </p>
@@ -17035,7 +17252,7 @@ With earlier Postfix versions the default setting was always "dane".
 compromise SMTP transport security by returning forged MX records,
 such attacks are "tamper-evident" since any forged MX hostnames
 will be recorded in the mail logs.  Attackers who place a high value
-staying hidden may be deterred from forging MX records. </p>
+on staying hidden may be deterred from forging MX records. </p>
 
 <p>
 This feature is available in Postfix 3.1 and later. The <b>may</b>
@@ -17147,7 +17364,7 @@ configuration parameter. See there for details. </p>
 
 <p> The format of the Postfix-generated <b>From:</b> header. This
 setting affects the appearance of 'full name' information when a
-local program such as /bin/mail submits a message without From:
+local program such as /bin/mail submits a message without From:
 header through the Postfix sendmail(1) command. </p>
 
 <p> Specify one of the following: </p>
@@ -17308,14 +17525,16 @@ for further details. </p>
 %PARAM tlsproxy_client_use_tls $smtp_use_tls
 
 <p> Opportunistic mode: use TLS when a remote server announces TLS
-support. See smtp_use_tls for further details. </p>
+support. See smtp_use_tls for further details. Use
+tlsproxy_client_security_level instead. </p>
 
 <p> This feature is available in Postfix 3.4 and later. </p>
 
 %PARAM tlsproxy_client_enforce_tls $smtp_enforce_tls
 
 <p> Enforcement mode: require that SMTP servers use TLS encryption.
-See smtp_enforce_tls for further details. </p>
+See smtp_enforce_tls for further details. Use
+tlsproxy_client_security_level instead. </p>
 
 <p> This feature is available in Postfix 3.4 and later. </p>
 
@@ -17357,7 +17576,7 @@ key. </p>
 <p> The file or files must contain at most one key of each type.  If,
 for example, two or more RSA keys and corresponding chains are listed,
 depending on the version of OpenSSL either only the last one will be
-used or an configuration error may be detected.  Note that while
+used or a configuration error may be detected.  Note that while
 "Ed25519" and "Ed448" are considered separate algorithms, the various
 ECDSA curves (typically one of prime256v1, secp384r1 or secp521r1) are
 considered as different parameters of a single "ECDSA" algorithm, so it
@@ -17511,7 +17730,7 @@ key. </p>
 <p> The file or files must contain at most one key of each type.  If,
 for example, two or more RSA keys and corresponding chains are listed,
 depending on the version of OpenSSL either only the last one will be
-used or an configuration error may be detected.  Note that while
+used or a configuration error may be detected.  Note that while
 "Ed25519" and "Ed448" are considered separate algorithms, the various
 ECDSA curves (typically one of prime256v1, secp384r1 or secp521r1) are
 considered as different parameters of a single "ECDSA" algorithm, so it
@@ -17652,7 +17871,7 @@ server mode of tlsproxy(8). </p>
 
 <p> When this parameter is non-empty, the Postfix SMTP server enables
 SNI extension processing, and logs SNI values that are invalid or
-don't match an entry in the the specified tables.  When an entry
+don't match an entry in the specified tables.  When an entry
 does match, the SNI name is logged as part of the connection summary
 at log levels 1 and higher.  </p>
 
@@ -17822,7 +18041,8 @@ cannot be set under 10s. </p>
 
 <p> Specify a non-zero time value (an integral value plus an optional
 one-letter suffix that specifies the time unit).  Time units: s
-(seconds), m (minutes), h (hours), d (days), w (weeks).  </p>
+(seconds), m (minutes), h (hours), d (days), w (weeks).
+The default time unit is s (seconds).  </p>
 
 <p> This feature is available in Postfix 3.4 and later.  </p>
 
@@ -18012,14 +18232,14 @@ match. </dd>
     # send mail as themselves. Use "uid:" followed by the numerical
     # UID when the UID has no entry in the UNIX password file.
     local_login_sender_maps = 
-       inline:{ { root = *}, { postfix = * } },
+       inline:{ { root = * }, { postfix = * } },
        pcre:/etc/postfix/login_senders
 </pre>
 
 <pre>
 /etc/postfix/login_senders:
    # Allow both the bare username and the user@domain forms.
-    /(.+)/ $1 $1@example.com/
+    /(.+)/ $1 $1@example.com
 </pre>
 
 <p> This feature is available in Postfix 3.6 and later. </p>
index c716a21659f1a766252a783d35da4b0a34cc09ad..a0a54cadf1ddfed1050b0e84aeb2406530b9faf2 100644 (file)
@@ -21,7 +21,7 @@
 #
 #      Alternatively, the table can be provided as a regular-expression
 #      map where patterns are given as regular expressions, or lookups
-#      can be directed to TCP-based server. In those case, the lookups
+#      can be directed to TCP-based server. In those case, the lookups
 #      are done in a slightly different way as described below under
 #      "REGULAR EXPRESSION TABLES" or "TCP-BASED TABLES".
 #
@@ -84,7 +84,7 @@
 #      expression lookup table syntax, see \fBregexp_table\fR(5) or
 #      \fBpcre_table\fR(5). For a description of the TCP client/server
 #      table lookup protocol, see \fBtcp_table\fR(5).
-#      This feature is not available up to and including Postfix version 2.4.
+#      This feature is available in Postfix 2.5 and later.
 #
 #      Each pattern is a regular expression that is applied to the entire
 #      address being looked up. Thus, \fIuser@domain\fR mail addresses are not
 #      This section describes how the table lookups change when lookups
 #      are directed to a TCP-based server. For a description of the TCP
 #      client/server lookup protocol, see \fBtcp_table\fR(5).
-#      This feature is not available up to and including Postfix version 2.4.
+#      This feature is available in Postfix 2.5 and later.
 #
 #      Each lookup operation uses the entire address once.  Thus,
 #      \fIuser@domain\fR mail addresses are not broken up into their
 #      The following \fBmain.cf\fR parameters are especially relevant.  
 #      The text below provides only a parameter summary. See
 #      \fBpostconf\fR(5) for more details including examples.
-# .IP \fBrelocated_maps\fR
-#      List of lookup tables for relocated users or sites.
+# .IP "\fBrelocated_maps (empty)\fR"
+#      Optional lookup tables with new contact information for users or
+#      domains that no longer exist.
 # .PP
 #      Other parameters of interest:
-# .IP \fBinet_interfaces\fR
-#      The network interface addresses that this system receives mail on.
-#      You need to stop and start Postfix when this parameter changes.
-# .IP \fBmydestination\fR
-#      List of domains that this mail system considers local.
-# .IP \fBmyorigin\fR
-#      The domain that is appended to locally-posted mail.
-# .IP \fBproxy_interfaces\fR
-#      Other interfaces that this machine receives mail on by way of a
-#      proxy agent or network address translator.
+# .IP "\fBinet_interfaces (all)\fR"
+#      The network interface addresses that this mail system receives
+#      mail on.
+# .IP "\fBmydestination ($myhostname, localhost.$mydomain, localhost)\fR"
+#      The list of domains that are delivered via the $local_transport
+#      mail delivery transport.
+# .IP "\fBmyorigin ($myhostname)\fR"
+#      The domain name that locally-posted mail appears to come
+#      from, and that locally posted mail is delivered to.
+# .IP "\fBproxy_interfaces (empty)\fR"
+#      The network interface addresses that this mail system receives mail
+#      on by way of a proxy or network address translation unit.
 # SEE ALSO
 #      trivial-rewrite(8), address resolver
 #      postmap(1), Postfix lookup table manager
index aeaba341d7a11f9a8d3bf4627e576ae1c3bb6a4b..a4edf72e89302f25ddcfe9723b43bfa7b6e7eabd 100644 (file)
@@ -16,7 +16,7 @@
 #      In order to use SQLite lookups, define an SQLite source as a lookup
 #      table in main.cf, for example:
 # .nf
-#          alias_maps = sqlite:/etc/sqlite-aliases.cf
+#          alias_maps = sqlite:/etc/postfix/sqlite-aliases.cf
 # .fi
 #
 #      The file /etc/postfix/sqlite-aliases.cf has the same format as
 #
 #      NOTE: DO NOT put quotes around the result format!
 # .IP "\fBdomain (default: no domain list)\fR"
-#      This is a list of domain names, paths to files, or
-#      dictionaries. When specified, only fully qualified search
+#      This is a list of domain names, paths to files, or "type:table"
+#      databases. When specified, only fully qualified search
 #      keys with a *non-empty* localpart and a matching domain
 #      are eligible for lookup: 'user' lookups, bare domain lookups
 #      and "@domain" lookups are not performed. This can significantly
index 0462f338e4aeb70c12a0307fbbfa16aa25656d72..af293d34ca653e6aeffc2731a3506f3647f6a0ce 100644 (file)
@@ -1545,3 +1545,7 @@ ALLOWLIST
 ALLOWLISTED
 DENYLIST
 DENYLISTED
+epilog
+prolog
+proto
+ICMP
diff --git a/postfix/proto/stop.double-cc b/postfix/proto/stop.double-cc
new file mode 100644 (file)
index 0000000..3671205
--- /dev/null
@@ -0,0 +1,329 @@
+void  void rewrite_proto stream 
+ Strip trailing dot at end of domain but not dot dot or dot This
+ strip source routed addresses site site user domain 
+transport_lookup  transport_lookup finds the channel and nexthop for the given
+ Typically the nexthop specifies a hostname hostname TCP Port or the
+resolve_addr  resolve_addr resolve address according to rule set 
+ technically incorrect this is needed to stop user domain domain relay
+ needs white space but stuff stuff does not This is not a
+ where stuff stuff does not happen 
+ Strip trailing dot at end of domain but not dot dot or at dot 
+XXX  XXX Short cut invalid address forms 
+ Connect via TCP to domain domain port port The default
+ Connect via TCP to domain domain port port The default
+files  files that are owned by the wrong user or files that have world write
+ name is is not defined 
+ conditionally to value when name is is not 
+MUMBLE_TODO  MUMBLE_TODO flags must not be cleared once raised The _TODO_TO_PASS and
+psc_todo_tests  psc_todo_tests overwrites all per session flag bits and
+ Either hand off the socket to a real SMTP engine or say bye bye 
+char  char context 
+inet_pton  inet_pton 
+void  void psc_early_tests state 
+void  void psc_smtpd_init void 
+void  void psc_smtpd_tests state 
+ IP postscreen_dnsbl_max_ttl postscreen_dnsbl_ttl postscreen_dnsbl_ttl 1 h 
+ WARNING WARNING WARNING
+ WARNING WARNING WARNING
+ The event driven TLS I O implementation is founded on on line OpenSSL
+unused  unused 
+ IP f command command 
+ IP q command command 
+ IP Q command command 
+ IP r command command 
+ IP s command command 
+ TCP port port Both host and port may be
+void  void 
+ reset_cmd_flags reset per command command flags 
+ set_cmd_flags set per command command flags 
+ Connect via TCP to host host port port The default
+ Connect via TCP to host host port port The default
+argv  argv command 
+time  time of entry into active queue 
+peer  peer entries 
+FD_SETSIZE  FD_SETSIZE 
+FD_SETSIZE  FD_SETSIZE 
+FD_SETSIZE  FD_SETSIZE 
+ var spool postfix incoming incoming queue
+ var spool postfix active active queue
+ var spool postfix deferred deferred queue
+time  time of entry into active queue 
+FD_SETSIZE  FD_SETSIZE 
+FD_SETSIZE  FD_SETSIZE 
+FD_SETSIZE  FD_SETSIZE 
+ var spool postfix incoming incoming queue
+ var spool postfix active active queue
+ var spool postfix deferred deferred queue
+XXX  XXX 
+ WARNING WARNING WARNING
+ WARNING WARNING WARNING
+NOTREACHED  NOTREACHED 
+ If not connected to stdin stdin must not be a terminal 
+ WARNING WARNING WARNING 
+ WARNING WARNING WARNING 
+ WARNING WARNING WARNING 
+ WARNING WARNING WARNING 
+ WARNING WARNING WARNING 
+ WARNING WARNING WARNING 
+ WARNING WARNING WARNING 
+ WARNING WARNING WARNING 
+ If not connected to stdin stdin must not be a terminal 
+select  select 
+ If not connected to stdin stdin must not be a terminal 
+ main main program 
+this  this first 
+linkage  linkage 
+ Postfix master master cf file processing
+select  select 
+ If not connected to stdin stdin must not be a terminal 
+ response to stress level changes Doing so would would contaminate
+ IP CA_MAIL_SERVER_EXIT void void 
+ If not connected to stdin stdin must not be a terminal 
+smtp_site_fail  smtp_site_fail handles the case where the program fails to
+ We can t avoid copying copying lots of strings into VSTRING buffers 
+binding  binding properties passivated 
+endpoint  endpoint properties passivated 
+safety  safety 
+XXX  XXX 
+ See src tls tls_level c and src tls tls h Levels above encrypt require
+smtp_rcpt_done  smtp_rcpt_done 
+smtp_rcpt_done  smtp_rcpt_done 
+smtp_rcpt_done  smtp_rcpt_done 
+ Ignore out of protocol enhanced status codes codes that accompany 3XX
+ IP name name 
+void  void 
+FALLTHROUGH  FALLTHROUGH 
+HAS_PCRE  HAS_PCRE 
+HAS_PCRE  HAS_PCRE 
+ any any 
+ typedef DICT DICT_OPEN_FN const char int int 
+EDIT_FILE  EDIT_FILE edit_file_open original_path output_flags output_mode 
+void  void 
+nvtable_locate  nvtable_locate returns a pointer to the entry that was stored
+legacy  legacy 
+ for symlinks owned by root NEVER NEVER make exceptions for symlinks
+ sanitize sanitize db_get put del result 
+ simple attr attr name colon attr value newline
+void  void htable_free table free_fn 
+void  void htable_walk table action ptr 
+htable_locate  htable_locate returns a pointer to the entry that was stored
+ IP CA_VSTREAM_POPEN_WAITPID_FN pid_t pid_t WAIT_STATUS_T int 
+optimization  optimization 
+msg_fatal  msg_fatal reports an unrecoverable error and terminates the program
+ compare compare the address family and network address or
+ numbers or number number ranges 
+ v4pattern v4field v4field v4field v4field
+ v4pattern v4field v4field v4field v4field
+ v4pattern v4field v4field v4field v4field
+ v4seq_member v4octet v4octet v4octet
+ v4seq_member v4octet v4octet v4octet
+Corruption  Corruption 
+ main main program 
+privileges  privileges 
+DICT_THASH_OPEN_RETURN  DICT_THASH_OPEN_RETURN 
+ Fatal errors cannot open file file write error out of memory 
+found  found 
+found  found 
+XXX  XXX maybe earlier 
+XXX  XXX 
+ verified RedHat 3 03 
+ Bits per byte byte in vector bit offset in byte bytes per set 
+ echo echo text received on stdin 
+ request request a bunch of timer events 
+ Fatal errors cannot open file file write error out of memory 
+found  found 
+found  found 
+ concatenate concatenate null terminated list of strings 
+void  void context 
+void  void binhash_free table free_fn 
+void  void binhash_walk table action ptr 
+binhash_locate  binhash_locate returns a pointer to the entry that was stored
+width  width precision separator 
+ and whitespace characters must be replaced by XX XX being the
+ and whitespace characters and the by XX XX being the two digit
+ Fatal errors cannot open file file write error out of
+privileges  privileges 
+ Example 00000000000000000000000000000001 01 80 10 80 lo
+ text text 
+void  void 
+matched  matched text 
+SUNOS5  SUNOS5 
+ casefold casefold text for caseless comparison 
+ simple name string string simple name 
+ attribute list attribute attribute attribute list 
+ attribute list attribute attribute attribute list 
+ attribute string string 
+string  string ISO Latin 1 character set except the character
+ WARNING WARNING WARNING 
+ WARNING WARNING WARNING 
+ Example checking infrastructure for int int const int 
+ Example variables with type int int const int 
+int  int int_val 
+ host port host host 
+host  host port host host
+ host port host host
+ port port
+ host port host host 
+ host port host host port port 
+ host port host host port port 
+ simple attr attr name null attr value null
+ IP CA_SLMDB_CTL_LONGJMP_FN void void int 
+ IP CA_SLMDB_CTL_NOTIFY_FN void void int 
+ IP CA_SLMDB_CTL_ASSERT_FN void void const char 
+ DICT dict_static_open name name dict_flags 
+buffer  buffer length 
+privileges  privileges 
+key  key length 
+ simple attr attr name attr value newline
+ attr name any string without null or or newline 
+ var spool postfix maildrop maildrop queue
+ WARNING WARNING WARNING
+ WARNING WARNING WARNING
+lmdb  lmdb supports concurrent writes and reads from different
+private  private 
+private  private 
+ var spool postfix private private class endpoints
+ var spool postfix public public class endpoints
+messages  messages put on hold 
+option  option disables UTF 8 syntax checks on query keys and
+option  option disables UTF 8 syntax checks on query keys and
+lmdb  lmdb supports concurrent writes and reads from different
+peer  peer 
+void  void 
+XXX  XXX 
+ relay loopholes with user domain domain when relaying mail to a
+ Strip one trailing dot but not dot dot 
+void  void 
+headers  headers after multipart boundary 
+ by XX XX being the two digit uppercase hexadecimal equivalent 
+must  must 
+request  request completed unsuccessfully 
+DSN_BUF  DSN_BUF dsb_create void 
+DSN_SPLIT  DSN_SPLIT dsn_split dp def_dsn text 
+ that registers operators such as level level that compare
+ var_maillog_file var_maillog_file import_service_path 0 
+ IP address address family information and the numerical TCP port 
+privileges  privileges 
+void  void rcpb_reset rcpb 
+ The entire lookup key key 
+DSN  DSN dsn_create status action reason dtype dtext mtype mname 
+ When specified with a flush request request that
+storage  storage 
+message  message size 
+ starts with or or the prefix which will be used
+ with or or the prefix which will be used to obtain
+strings  strings with digits uppercase letters and lowercase
+safe_strtoul  safe_strtoul implements similar functionality as strtoul 
+ typedef LOGIN_SENDER_MATCH LOGIN_SENDER_MATCH 
+LOGIN_SENDER_MATCH  LOGIN_SENDER_MATCH login_sender_create 
+void  void anvil_clnt_free anvil_clnt 
+privileges  privileges 
+ characters specified with special with x XX XX being
+0000 0000 0000 007 F 0x xxxxxx
+0000 0000 0000 007 F 0x xxxxxx
+ https github com aox aox blob master encodings utf cpp with
+FALLTHROUGH  FALLTHROUGH 
+ Detail format is digit digit 1 3 digit 1 3 
+encoding  encoding domain 
+domain  domain 
+domain  domain 
+encoding  encoding 
+XXX  XXX EAI inspect encoded message global 
+domain  domain 
+MBOX  MBOX mbox_open path flags mode st user group lock_style 
+ incomplete address address rewriting alias expansion automatic BCC
+unquoted  unquoted form then quoted 
+ records data offset offset of the first REC_TYPE_NORM or REC_TYPE_CONT
+DELIVER_REQUEST  DELIVER_REQUEST deliver_request_read stream 
+MAIL_VERSION  MAIL_VERSION mail_version_parse version_string why 
+dict_xx_open  dict_xx_open result 
+ When specified with a flush request request that
+MAIL_STREAM  MAIL_STREAM mail_stream_file queue class service mode 
+ starts with or or the prefix which will be used to
+hosts  hosts on which databases reside 
+ or maptype mapname search name name The search
+ with or or the prefix which will be used to obtain
+the  the message delivery record 
+MKMAP  MKMAP mkmap_open type path open_flags dict_flags 
+BOUNCE_LOG  BOUNCE_LOG bounce_log_open queue id flags mode 
+ internal external external first 
+context  context for queue file changes 
+sender  sender transport 
+SMFIM_EOH  SMFIM_EOH SMFIM_EOM 
+value  value to string 
+RE  RE
+PCF_MASTER_ENT  PCF_MASTER_ENT local_scope 
+to  to instantiate legacy per dbms parameters and to examine
+ tls_digest_encode encode message digest binary blob as xx xx 
+logged  logged 
+logged  logged 
+ DNS at the dane dane only and half dane security levels or be
+void  void tls_pre_jail_init TLS_ROLE 
+TLS_ROLE  TLS_ROLE role 
+and  and the protocol version floor ceiling given a list plist of
+ of the form name name hexvalue hexvalue If plist 
+ of the form name name hexvalue hexvalue If plist 
+XXX  XXX We re ignoring the function name do we want to log it 
+ If the match is required unambiguous insist that that no other values
+ etc postfix canonical canonical mapping table
+ etc postfix virtual virtual mapping table
+void  void 
+regions  regions with body content 
+SASLv2  SASLv2 s sasl_server_new takes two new parameters to specify local and
+SASLv2  SASLv2 s sasl_client_new takes two new parameters to specify local and
+ All 5xx replies must have a 5 xx xx detail code 
+ Truncate hostnames ending in dot but not dot dot 
+ Truncate hostnames ending in dot but not dot dot 
+ Truncate hostnames ending in dot but not dot dot 
+ Truncate names ending in dot but not dot dot 
+200412  200412 
+ Reject mail to unknown addresses in local domains domains that
+client  client name 
+stuff  stuff 
+counter  counter 
+Milter  Milter initialization status 
+USE_TLSPROXY  USE_TLSPROXY 
+address  address family 
+void  void 
+probed  probed if non zero the time the currently outstanding address probe was
+ recipient lists and some MUAs even specify word word address 
+VERP  VERP 
+NOTREACHED  NOTREACHED 
+NOTREACHED  NOTREACHED 
+NOTREACHED  NOTREACHED 
+NOTREACHED  NOTREACHED 
+NOTREACHED  NOTREACHED 
+NOTREACHED  NOTREACHED 
+NOTREACHED  NOTREACHED 
+key  key 
+key  key 
+key  key 
+key  key 
+key  key 
+key  key 
+key  key 
+key  key 
+key  key 
+key  key 
+key  key 
+key  key 
+key  key 
+key  key 
+key  key 
+key  key 
+key  key 
+ Fatal error error opening existing file 
+void  void bounce_cleanup_unregister void 
+ Fatal error error opening existing file 
+BOUNCE_TEMPLATES  BOUNCE_TEMPLATES bounce_templates_create void 
+void  void bounce_templates_free templates 
+ Fatal error error opening existing file 
+ also showq showq c 
+name  name length 
+BOUNCE_INFO  BOUNCE_INFO bounce_mail_init service queue_name queue_id encoding 
+ Fatal error error opening existing file 
+more  more useful and more consistent 
+ Fatal error error opening existing file 
+ Fatal error error opening existing file 
+XXX  XXX 
+ int compar DNS_RR DNS_RR 
diff --git a/postfix/proto/stop.double-install-proto-text b/postfix/proto/stop.double-install-proto-text
new file mode 100644 (file)
index 0000000..338286e
--- /dev/null
@@ -0,0 +1,41 @@
+bind  bind no
+bind  bind sasl
+bind  bind yes
+ command_directory command_directory 
+ Content Disposition Type name es es e 2E 
+ daemon_directory daemon_directory 
+ data_directory data_directory 
+done done
+ echo 0 Error unknown type type for path in meta postfix files 1 2
+ echo echo 0 Error name should be an absolute path name 1 2 
+esac  esac
+ eval echo n name name c 
+ eval group group 
+ eval owner owner 
+example  example com uucp example
+file contains only a small subset of all parameters parameters
+group  group 
+ html_directory html_directory 
+ IP domain address address 
+ IP pattern address address 
+ IP user address address 
+ IP user domain address address 
+ mail_owner mail_owner 
+ mailq_path mailq_path 
+ manpage_directory manpage_directory 
+ meta_directory meta_directory 
+ newaliases_path newaliases_path 
+ nisplus name s name name name column
+ postmap q nisplus name s name name inputfile
+ postmap q string nisplus name s name name 
+postmaster postmaster root
+ queue_directory queue_directory 
+ readme_directory readme_directory 
+root  root you
+ sample_directory sample_directory 
+ sendmail_path sendmail_path 
+ server_host ldap ldap example com 1444
+ setgid_group setgid_group 
+ shlib_directory shlib_directory 
+ user foo domain user domain domain 
+virtual  virtual alias domain anything right hand content does not matter 
diff --git a/postfix/proto/stop.double-proto-html b/postfix/proto/stop.double-proto-html
new file mode 100644 (file)
index 0000000..a7e7824
--- /dev/null
@@ -0,0 +1,247 @@
+ 1 000 000 messages with good performance unlikely above that limit 
+ 10 10 Mandatory configuration file edits
+ 11 11 To chroot or not to chroot
+ 12 12 Care and feeding of the Postfix system
+14 rbl_domain rbl_reason rbl_reason 
+168 100 189 2 255 255 255 224
+18 rbl_domain rbl_reason rbl_reason 
+ 1 ffff ffff ffff ffff ffff ffff ffff ffff
+2001 240 587 0 2d0 b7ff fe88 2ca7 ffff ffff ffff ffff 
+ 31 sasldb Accounts are stored stored in a Cyrus SASL Berkeley DB
+ 33 ldapdb Accounts are stored stored in an LDAP database
+ 4 yes yes yes never 100 
+5 postmaster postmaster example com
+5 root root localhost
+6 abuse abuse example com
+80821 S 0 00 24 smtpd n smtp t inet u c o stress yes
+83326 S 0 00 28 smtpd n smtp t inet u c o stress 
+84345 Ss 0 00 11 usr bin perl usr libexec postfix smtpd policy pl
+ 8 SENDMAIL usr sbin sendmail G i NEVER NEVER NEVER use t here 
+address localpart as per RFC 822 so that additional or or 
+all  all Maximum per destination delivery concurrency
+and cost cost 1 times more than if the preemptive scheduler was
+ and sneak in the ten recipient mail Wait wait wait Could we Aren t
+ aNULL aNULL kEECDH kEDH RC4 eNULL EXPORT LOW STRENGTH 
+Arrival Date Sun 26 Nov 2006 17 01 01 0500 EST 
+attacks with user domain domain addresses when Postfix provides
+authzTo authzTo dn regex uniqueIdentifier ou people dc example dc com
+ AUXLIBS AUXLIBS options for LDAP or TLS etc 
+blockquote  blockquote 
+ broken smtp smtp o smtp_quote_rfc821_envelope no
+ccert_fingerprint C2 9D F4 87 71 73 73 D9 18 E7 C2 F3 C1 DA 6E 04
+command_directory command_directory
+ concurrency concurrency limit
+config_directory config_directory
+daemon_directory daemon_directory
+data_directory data_directory
+Date Sun 26 Nov 2006 17 01 01 0500 EST 
+dd  dd Alternatively check_ccert_access accepts an explicit search
+dd  dd check_ccert_access type table search_order cert_fingerprint 
+dd  dd The commas are optional dd 
+dd  dd The default algorithm is b sha256 b with Postfix ge 3 6
+ dd No TLS TLS will not be used unless enabled for specific
+Dec 4 04 30 09 hostname postfix smtpd 58549 NOQUEUE reject 
+ default_transport uucp uucp gateway
+ different client IP addresses Lookup results override the the global
+Documentation  Documentation is available as README files start with the file
+done  done
+done done
+ dt b a name check_address_map check_address_map a i a href DATABASE_RE
+ dt b a name check_ccert_access check_ccert_access a i a href DATABASE_
+ dt b a name check_client_a_access check_client_a_access a i a href DAT
+ dt b a name check_client_access check_client_access a i a href DATABAS
+ dt b a name check_client_mx_access check_client_mx_access a i a href D
+ dt b a name check_client_ns_access check_client_ns_access a i a href D
+ dt b a name check_etrn_access check_etrn_access a i a href DATABASE_RE
+ dt b a name check_helo_a_access check_helo_a_access a i a href DATABAS
+ dt b a name check_helo_access check_helo_access a i a href DATABASE_RE
+ dt b a name check_helo_mx_access check_helo_mx_access a i a href DATAB
+ dt b a name check_helo_ns_access check_helo_ns_access a i a href DATAB
+ dt b a name check_policy_service check_policy_service i servername i a 
+ dt b a name check_recipient_a_access check_recipient_a_access a i a hre
+ dt b a name check_recipient_access check_recipient_access a i a href D
+ dt b a name check_recipient_mx_access check_recipient_mx_access a i a h
+ dt b a name check_recipient_ns_access check_recipient_ns_access a i a h
+ dt b a name check_sasl_access check_sasl_access a i a href DATABASE_RE
+ dt b a name check_sender_a_access check_sender_a_access a i a href DAT
+ dt b a name check_sender_access check_sender_access a i a href DATABAS
+ dt b a name check_sender_mx_access check_sender_mx_access a i a href D
+ dt b a name check_sender_ns_access check_sender_ns_access a i a href D
+ dt b a name defer defer a b dt 
+ dt b a name defer_if_permit defer_if_permit a b dt 
+ dt b a name defer_if_reject defer_if_reject a b dt 
+ dt b a name defer_unauth_destination defer_unauth_destination a b dt 
+ dt b a name no_address_mappings no_address_mappings a b dt 
+ dt b a name no_header_body_checks no_header_body_checks a b dt 
+ dt b a name no_milters no_milters a b dt 
+ dt b a name no_unknown_recipient_checks no_unknown_recipient_checks a b 
+ dt b a name permit_auth_destination permit_auth_destination a b dt 
+ dt b a name permit_dnswl_client permit_dnswl_client i dnswl_domain d d d d
+ dt b a name permit_inet_interfaces permit_inet_interfaces a b dt 
+ dt b a name permit_mx_backup permit_mx_backup a b dt 
+ dt b a name permit_mynetworks permit_mynetworks a b dt 
+ dt b a name permit permit a b dt 
+ dt b a name permit_rhswl_client permit_rhswl_client i rhswl_domain d d d d
+ dt b a name permit_sasl_authenticated permit_sasl_authenticated a b dt
+ dt b a name permit_tls_all_clientcerts permit_tls_all_clientcerts a b 
+ dt b a name permit_tls_clientcerts permit_tls_clientcerts a b dt 
+ dt b a name reject_invalid_helo_hostname reject_invalid_helo_hostname a 
+ dt b a name reject_multi_recipient_bounce reject_multi_recipient_bounce a 
+ dt b a name reject_non_fqdn_helo_hostname reject_non_fqdn_helo_hostname a 
+ dt b a name reject_non_fqdn_recipient reject_non_fqdn_recipient a b dt
+ dt b a name reject_non_fqdn_sender reject_non_fqdn_sender a b dt 
+ dt b a name reject_plaintext_session reject_plaintext_session a b dt 
+ dt b a name reject_rbl_client reject_rbl_client i rbl_domain d d d d i 
+ dt b a name reject reject a b dt 
+ dt b a name reject_rhsbl_client reject_rhsbl_client i rbl_domain d d d d 
+ dt b a name reject_rhsbl_helo reject_rhsbl_helo i rbl_domain d d d d i 
+ dt b a name reject_rhsbl_recipient reject_rhsbl_recipient i rbl_domain d d
+ dt b a name reject_rhsbl_reverse_client reject_rhsbl_reverse_client i rbl_
+ dt b a name reject_rhsbl_sender reject_rhsbl_sender i rbl_domain d d d d 
+ dt b a name reject_sender_login_mismatch reject_sender_login_mismatch a 
+ dt b a name reject_unauth_destination reject_unauth_destination a b dt
+ dt b a name reject_unauth_pipelining reject_unauth_pipelining a b dt 
+ dt b a name reject_unknown_client_hostname reject_unknown_client_hostname 
+ dt b a name reject_unknown_helo_hostname reject_unknown_helo_hostname a 
+ dt b a name reject_unknown_recipient_domain reject_unknown_recipient_domain
+ dt b a name reject_unknown_sender_domain reject_unknown_sender_domain a 
+ dt b a name reject_unlisted_recipient reject_unlisted_recipient a b wi
+ dt b a name reject_unlisted_sender reject_unlisted_sender a b dt 
+ dt b a name reject_unverified_recipient reject_unverified_recipient a b 
+ dt b a name reject_unverified_sender reject_unverified_sender a b dt 
+ dt b a name sleep sleep i seconds i a b dt 
+ dt b a name warn_if_reject warn_if_reject a b dt 
+dt  dt b i a href DATABASE_README html type table a i b dt 
+dt  dt b i number i i number i b dt 
+ dt dt dd 0 Disable logging of TLS activity dd 
+ dt dt dd 1 Log only a summary message on TLS handshake completion
+ dt dt dd 2 Also log levels during TLS negotiation dd 
+ dt dt dd 3 Also log hexadecimal and ASCII dump of TLS negotiation
+ dt dt dd 4 Also log hexadecimal and ASCII dump of complete
+ dude dude example com 
+ eliminates the latency of the TCP handshake SYN SYN ACK ACK 
+ example com uucp uucp host
+ example MAIL RCPT BDAT BDAT MAIL RCPT BDAT without ever having to
+ export MANPATH MANPATH pwd man MANPATH 
+fe80 1 2d0 b7ff fe88 2ca7 ffff ffff ffff ffff 
+fe80 5 1 ffff ffff ffff ffff 
+file allows for robust handling of temporary delivery errors errors
+Filtered  Filtered
+for the file name when a pattern is a type table table specification 
+from host example com 192 168 0 2 TLSv1 with cipher cipher name
+generic generic a restrictions These restrictions are applicable in
+ groups msn com 63 2 1 2 4 4 14 14 14 8 0
+ highvolume com 4000 160 160 320 640 1280 1440 0 0 0 0
+host host port host port address or address port the form
+ http www umich edu dirsvcs ldap ldap html or OpenLDAP
+ id 84863BC0E5 Sun 26 Nov 2006 17 01 01 0500 EST 
+ if concurrency concurrency limit 
+ ifconfig en0 alias address netmask 255 255 255 255
+ inet_addr_local inet_addr_local configured 2 IPv4 addresses
+ inet_addr_local inet_addr_local configured 4 IPv6 addresses
+insiders_only  insiders_only check_sender_access hash etc postfix insiders reject
+in the form of a domain name hostname hostname port hostname port 
+into memory such as pcre regexp or texthash texthash is similar
+ jane jane janes preferred machine
+ joe joe joes preferred machine
+ Line 8 NEVER NEVER NEVER use the t command line option here It
+listname  listname request 
+ lists sourceforge net 2313 2313 0 0 0 0 0 0 0 0
+local  local 8 
+local_only  local_only 
+maildrop  maildrop 
+maildrop  maildrop owner cn root dc your dc com 
+make  make makefiles CC opt ansic bin cc Ae HP UX 
+make  make makefiles CC purify cc 
+ man man man5 postconf 5 less 
+master_service_disable foo inet inet
+multi_instance_enable multi_instance_enable
+multi_instance_group multi_instance_group
+multi_instance_name multi_instance_name
+mydestination myhostname localhost mydomain mydomain
+ mydomain to an incomplete address address rewriting alias
+mynetworks mynetworks 127 0 0 0 8 168 100 189 0 28 1 128 fe80 10 2001 240 587 
+mynetworks mynetworks hash etc postfix network_table
+Name lt user example com gt gt i Postfix will ignore the i User
+ name name port name or name port 
+ NOTE Postfix 3 6 also introduces support for the level level 
+number number ranges Postfix version 2 8 and later If no
+numbers or number number ranges Postfix version 2 8 and later 
+one or more separated numbers or number number ranges 
+ openssl req new key key 
+or more separated numbers or number number ranges p 
+or number number ranges Postfix version 2 8 and later If no
+ ownership of system directories such as etc usr usr bin var
+ PARAM postscreen_dnsbl_max_ttl postscreen_dnsbl_ttl postscreen_dnsbl_ttl 
+ patterns list multiple domain names as domain domain 
+ p Note 2 address information may be enclosed inside tt tt 
+ postfix 12345 12345 postfix no where no shell
+ Postfix 2 3 2 5 to hang up on clients that that match
+ Postfix has TWO sets of mail filters filters that are used for
+Postfix  Postfix can use an LDAP directory as a source for any of its lookups 
+ Postfix Postfix passes the status back to the remote SMTP
+ Postfix Postfix will send the mail back to the sender address 
+pre  pre 
+query_filter mailacceptinggeneralid s maildrop maildrop 
+queue_directory queue_directory
+Received from localhost localhost 127 0 0 1 
+Received  Received from porcupine org 
+rejected  rejected recipients are available on request by the Milter
+ rewrite 8 none none
+ Say we have ten recipient mail followed by two two recipient mails If
+ separated numbers or number number ranges If no
+smtpd_recipient_restrictions smtpd_recipient_restrictions 
+smtpd_relay_restrictions  smtpd_relay_restrictions 
+smtpd_relay_restrictions smtpd_relay_restrictions 
+ smtpd_tls_mandatory_protocols SSLv2 SSLv3 TLSv1 TLSv1 1
+smtpd_tls_mandatory_protocols SSLv2 SSLv3 TLSv1 TLSv1 1
+ smtp smtp o smtp_bind_address 11 22 33 44
+ smtp smtp o smtp_bind_address6 1 2 3 4 5 6 7 8
+ smtp_tls_mandatory_protocols SSLv2 SSLv3 TLSv1 TLSv1 1
+smtp_tls_mandatory_protocols SSLv2 SSLv3 TLSv1 TLSv1 1
+ SSLv3 TLSv1 TLSv1 1 TLSv1 2 and TLSv1 3 Starting with
+ T 5 10 20 40 80 160 320 640 1280 1280 
+ T A 5 10 20 40 80 160 320 320 
+ The and match and literally Without the the
+ The matches literally Without the the would
+Therefore 301 0301 0x301 and 0x0301 are all equivalent to
+ The syntax of name value value name value and name value 
+the  the backed up domain tld domain This prevents your mail queue
+ tls_random_source dev dev urandom
+ tls_random_source dev dev urandom 
+tls_random_source dev dev urandom
+TLS  TLS support in the LMTP delivery agent
+ TLSv1 3 with cipher TLS_AES_256_GCM_SHA384 256 256 bits 
+ to flush flush 8 Deferred
+to host example com 192 168 0 2 25 TLSv1 with cipher cipher name
+ to server example TLSv1 3 with cipher TLS_AES_256_GCM_SHA384 256 256 bits 
+ TOTAL 5000 200 200 400 800 1600 1000 200 200 200 200
+transport transport 
+ tt tt in the authorized_verp_clients value and in files
+ tt tt in the mynetworks value and in files specified with
+ tt tt in the smtpd_authorized_verp_clients value and in
+ tt tt in the smtpd_authorized_xclient_hosts value and in
+ tt tt in the smtpd_authorized_xforward_hosts value and in
+ tt tt in the smtpd_client_event_limit_exceptions value and
+ tt tt in the smtpd_sasl_exceptions_networks value and in
+ tt tt p 
+two  two recipient mails 
+ uid cn cn auth
+Unfiltered  Unfiltered 
+ unknown recipients in local domains domains that match mydestination
+ Use blockquote pre pre blockquote for examples
+ Use pre pre for the Examples section at the end
+username username
+ user sourceforge net 7678 7678 0 0 0 0 0 0 0 0
+ using TLSv1 3 with cipher TLS_AES_256_GCM_SHA384 256 256 bits 
+ using TLSv1 with cipher cipher name
+var  var spool and so on This is especially an issue if you executed
+With the standard operators lt lt etc compatibility
+ yes yes yes never 100 
+zombie  zombie tlsproxy 8 smtpd 8 
+ and 1 000 000 messages with good performance unlikely above that
+dt  dt b name value b Postfix ge 3 0 dt 
+ dt dt dd 3 Also log the hexadecimal and ASCII dump of the
+ dt dt dd 4 Also log the hexadecimal and ASCII dump of complete
+ parametername stress something something Other
+ p Note on OpenBSD systems specify dev dev arandom when dev dev urandom
diff --git a/postfix/proto/stop.spell-cc b/postfix/proto/stop.spell-cc
new file mode 100644 (file)
index 0000000..3186316
--- /dev/null
@@ -0,0 +1,1772 @@
+Aarnio
+abcd
+ABI
+ABNF
+abounce
+accessor
+ack
+acked
+acknowledgement
+acl
+ACL
+adaptor
+ADDCH
+adddr
+addenv
+addn
+Addr
+addrbuf
+ADDRFAMILY
+addrinfo
+ADDRINFO
+addrs
+adefer
+adelay
+adhoc
+adomain
+aes
+af
+AFS
+Aho
+ai
+aierr
+AIX
+al
+alg
+algbits
+algcode
+allalnum
+allascii
+allbits
+alldig
+Allgemeine
+ALLOC
+allocator
+Allowlist
+allowlisting
+ALLPERMS
+ALLPKTS
+allprint
+Allright
+allspace
+alphanum
+alphanumerics
+androsyn
+aox
+ap
+api
+APIs
+appl
+APPL
+ar
+arg
+argc
+Argh
+argi
+argl
+argp
+Args
+ARGS
+ARGV
+argvp
+arpa
+ARPA
+aRv
+ascii
+aslo
+ast
+async
+atol
+atrace
+ATTR
+attrp
+attrs
+atype
+Auch
+auths
+autoclass
+Autodetect
+Autodetection
+automagically
+AUTOUTF
+AUXULIARY
+AWK
+Axel
+Backoff
+BADFLAGS
+BADHINTS
+balpar
+basename
+Basename
+bdat
+BDAT
+bdehnoqv
+BDFORXhqu
+beh
+bfFhimnNoprsuUvw
+BH
+BINARYMIME
+binhash
+BINHASH
+BIOs
+bitclean
+BITCLEAN
+bitmasks
+bitrot
+Bitrot
+bitset
+bitwise
+Bitwise
+blackholes
+blocklisted
+bona
+bool
+BOOL
+booleans
+br
+bsmtp
+BST
+buf
+BUF
+BUFIZ
+buflen
+bufp
+BUFSIZ
+bufsize
+BUFSIZE
+bufstat
+bugtraq
+byuid
+bzero
+cachable
+cacheable
+canonicalization
+canonicalize
+Canonicalize
+canonicalized
+CANONNAME
+CAPTURECOUNT
+carriagecontrol
+carriagereturn
+Carsten
+CASEF
+Casefold
+casefolded
+casefoldx
+casemapped
+cC
+ccerts
+cdbm
+CDBM
+cdbq
+CDE
+certkey
+certmatch
+cfg
+CFG
+chainfiles
+ChangeCipherSpec
+charactersets
+charset
+checkdir
+Chroot
+CHROOT
+chrooting
+Ciphersuite
+cleanenv
+clearerr
+clist
+clnt
+CLNT
+clobbber
+closefrom
+closelog
+CLR
+clumsify
+cmalloc
+cmd
+CMD
+cmdp
+cmds
+cmp
+cmsg
+CMSG
+CNAMEs
+codepoint
+Codepoint
+codepoints
+colocated
+comingle
+compar
+COMPAT
+comsat
+COND
+CONF
+conn
+const
+Const
+conv
+cooldown
+Coverity
+cpio
+cpp
+cptr
+CPTR
+CPUs
+CREAT
+CRLF
+ctable
+CTABLE
+ctext
+ctime
+ctl
+CTL
+ctype
+CUID
+curr
+cvt
+CWD
+cz
+da
+datagram
+datagrams
+datalink
+dbms
+dbopen
+dbpath
+DCL
+dcs
+Dditvw
+dealloc
+deallocate
+deallocates
+deallocating
+deallocation
+debian
+decapsulate
+DECnet
+decrypt
+decryptable
+decrypted
+decrypting
+DEFL
+DEFLT
+deflts
+DEFNAME
+DEFNAMES
+DEFPATH
+defport
+DEFS
+defval
+del
+delim
+delims
+deliverability
+delrcpt
+DELRCPT
+denylisting
+dequote
+dereference
+dereferencing
+deserialization
+Dest
+DEST
+DESTADDR
+DESTPORT
+destructor
+df
+DFFF
+dfhHnopvx
+DFL
+DFXP
+dgram
+DGRAM
+DHparams
+dhs
+Dik
+dirent
+dirname
+dirs
+DISCONN
+DJB
+DJBDNS
+DJB's
+dlen
+dlfunc
+DLL
+DNSBLOG
+DNSBNL
+dNSName
+DNSRCH
+dnsxl
+DNSXL
+dom
+dont
+DONT
+doproto
+DORX
+dotforward
+dp
+Driehuis
+dsb
+DSB
+dsbuf
+DSNs
+dst
+dtext
+DTEXT
+DTXT
+dtype
+DTYPE
+dumpfile
+dup
+DUP
+DUPFD
+dups
+dymap
+EACCES
+EADDRINUSE
+EAGAIN
+EBADF
+ec
+ECONNABORTED
+ECONNREFUSED
+ECONNRESET
+eddd
+EDQUOT
+ee
+EEXIST
+EFBC
+EFBDA
+EFBIG
+egid
+Eindhoven
+EINTR
+EINVAL
+Elektrotechnik
+elif
+else's
+elsize
+empt
+emptive
+Emtpy
+emul
+ENDIF
+ENDIFs
+endp
+endpt
+ENOBUFS
+ENOENT
+ENOMEM
+ENOSPC
+ENOTCONN
+ent
+ENT
+entrancy
+enum
+ENUM
+env
+ENV
+ENVFROM
+envid
+ENVID
+ENVRCPT
+eob
+EOB
+eod
+eof
+EOL
+eother
+EOVERFLOW
+EPERM
+epilog
+EPIPE
+EPROTO
+epv
+eq
+EQ
+ERANGE
+errno
+errstr
+Eschborn
+especials
+ESTALE
+et
+ETIMEDOUT
+eugid
+EUGID
+euid
+EV
+eval
+EVAL
+EVP
+EXCHANGER
+exchangers
+execvp
+expar
+EXPN
+expr
+EXPR
+extern
+extpar
+EXTPAR
+FALLTHROUGH
+FALLTRHOUGH
+fam
+Fawcett
+fbck
+fchmod
+fclose
+FCNTL
+fdclose
+FDD
+FDEF
+fdopen
+fds
+fdtable
+feof
+ferror
+FFDHE
+FFF
+FFFE
+FFFF
+fflush
+fg
+fgetc
+fgets
+fh
+fhHovx
+fi
+fide
+fifo
+FIFOs
+filedes
+fileno
+filesystem
+filesystems
+filt
+FILT
+findenv
+fixme
+Fixme
+FLD
+fmt
+fn
+FN
+FoldCase
+fopen
+forcetlsa
+FOREACH
+formatter
+formfeed
+Forststrasse
+fovx
+fp
+fprint
+fprintf
+fpt
+fpurge
+fputc
+fputs
+fread
+freeaddrinfo
+fron
+fscanf
+fsck
+fseek
+fset
+fsops
+fsspace
+fsstone
+fstat
+fsync
+ftell
+ftime
+ftimeout
+ftimeval
+ftruncate
+fu
+fullname
+fullwidth
+func
+FUNC
+futimes
+fwi
+fwrite
+gai
+GECOS
+Geoff
+GETC
+GETCHAR
+getegid
+getenv
+geteuid
+getgrnam
+gethostbyaddr
+GETHOSTBYNAME
+getnameinfo
+GETNAMEINFO
+getopt
+GETOPT
+getpid
+getpw
+getsockopt
+gettimeofday
+getuid
+ghostgun
+giasbm
+gid
+GID
+ging
+github
+GLIBC
+glibc's
+globals
+gmtoff
+gn
+Goedel's
+goto
+GOTO
+gotsigchld
+gotsighup
+grey
+groupid
+grr
+Grr
+halfdane
+halfwidth
+handoff
+HaProxy
+hardlink
+hardlinks
+hbc
+HBC
+hc
+hdr
+HDR
+hdrs
+HDRS
+hdrval
+HelloRetryRequest
+helohost
+herror
+hexdump
+hexvalue
+hfrom
+HFROM
+HGMP
+Hinxton
+HMAC
+honoured
+hostaddr
+HOSTADDR
+hostmumble
+Hostname
+HOSTNAME
+hostport
+hostrr
+hport
+HPUX
+HRR
+htable
+HTABLE
+htonl
+htons
+https
+HUP
+ial
+icgroup
+ICT
+IDENT
+ideographic
+idna
+IDNA
+ifdefs
+IFF
+ifinet
+IFINET
+IFMT
+ifself
+IGN
+illumos
+IMPL
+INADDR
+incr
+INCR
+indexable
+Indexable
+indirections
+ing
+INIT
+initializations
+initializer
+inj
+Inlined
+inlining
+instantiation
+interruptible
+intra
+INTV
+intval
+inum
+INVAL
+ioctls
+iostuff
+iov
+iovlen
+ipaddr
+IPD
+ipmatch
+IPPROTO
+isalnum
+ISALNUM
+isascii
+ISASCII
+iscntrl
+isjmp
+ISMARKED
+isprint
+ISSET
+issetuid
+ISSOCK
+ISXXX
+iter
+ITER
+iterator's
+iterators's
+itty
+Jaenicke
+jbuf
+JCL
+jeffm
+JIT
+jmp
+johhny
+jq
+json
+JSON
+KAME
+Karlsruhe
+kB
+Keean
+keepalive
+keepalives
+Kellerspeicherpegelanzeiger
+Kernighan
+keyfile
+keyname
+Kilani
+killme
+Kirch
+koobera
+Kouhei
+Krahmer
+lastl
+latencies
+lateron
+ldapone
+LDH
+len
+LEV
+leven
+lex
+lexicals
+lf
+lflags
+libbind
+LIBC
+libdata
+libfuncs
+libmaster
+libmemcache
+Libmilter
+libname
+libresolv
+libtls
+libunbound
+libutil
+lims
+lineno
+liveness
+lnsl
+LOCALDOMAIN
+LOCALPART
+Logfile
+Logfiles
+logmask
+logopts
+logrotate
+logtag
+logwriter
+LOGWRITER
+LONGJMP
+longjump
+Lookups
+lowfd
+lowfrom
+lposix
+lseek
+lsm
+LSM
+lsocket
+lstat
+Lstat
+ltype
+lvalue
+lvalues
+lx
+LY
+macrps
+MAILLOG
+makedef
+malloc
+mallocs
+mapnames
+MAPNAMES
+mapsize
+maptypes
+masq
+masterp
+matchlist
+Matti
+maxdepth
+maxlen
+MAXLEN
+MaxProtocol
+MAXSEG
+maxsize
+mbox
+MBOX
+mdalg
+mdb
+MDB
+MECH
+Meer
+memcaches
+memcat
+memchr
+memcmp
+memcpy
+memmove
+memopen
+memreopen
+memset
+MERCHANTABILITY
+mesg
+MESG
+midna
+MILTER
+milter's
+MILTERS
+MinProtocol
+minrate
+minssf
+Mis
+misconfiguration
+mkdirs
+mkfifo
+mkmap
+MKMAP
+mmap
+MMNNFFPPS
+mname
+MNAME
+Montegancedo
+MQID
+MRU
+msgs
+msk
+mss
+MSS
+mtp
+MTU
+mtype
+MTYPE
+MUL
+multf
+multibyte
+multiline
+multiserver
+multivalued
+mutexes
+Muuss
+MVCC
+mvect
+MVECT
+mxrr
+MXs
+myaddrinfo
+mydest
+mydomainname
+myflock
+MYFLOCK
+myfree
+mygroup
+mymalloc
+mymemdup
+mypasswd
+mypwcache
+mypwd
+mypwenter
+mypwfree
+mypwnam
+mypwuid
+myrand
+myrealloc
+mysqlsource
+mysrand
+mystrdup
+mystrndup
+mystrtok
+mystrtokdq
+mystrtokq
+na
+Nagle
+Nagle's
+nam
+namaddr
+namadr
+NAMADR
+namechecks
+NAMELEN
+namelength
+nameser
+namespace
+namespaces
+nameval
+NAMEVAL
+namme
+nasties
+natively
+NATs
+nbbio
+NBBIO
+nbool
+NBOOL
+nbytes
+nc
+ncache
+Ncache
+NCACHE
+nd
+ndbm
+ndr
+nelm
+netblock
+netdb
+NetInfo
+Netstring
+NETSTRING
+netstrings
+newcontext
+newd
+newpath
+newqeueid
+newqueueid
+newtls
+nexhop
+NeXT
+NEXTHOP
+nexthops
+nf
+Nfinoprsuvw
+NFS
+ni
+nid
+NID
+nids
+nint
+NINT
+nlink
+nlinks
+nnn
+NOCLOSE
+NODELAY
+nodename
+noexcept
+NOEXT
+noforward
+NOKEY
+NOLOCK
+NOMEMINIT
+NONAME
+NONDEF
+nonl
+noop
+Noop
+nop
+NOP
+NORETURN
+normalizer
+NOSUB
+notfound
+NOTFOUND
+NOTHROTTLE
+NOTREACHED
+nowait
+NOWAIT
+np
+nparts
+nr
+Nr
+nscd
+ntls
+ntohs
+ntop
+NUL
+nulll
+nullmx
+nullMX
+NULLMX
+num
+NUMERICHOST
+nvtable
+NVTABLE
+nxxx
+oact
+Oaktree
+oconv
+offsetof
+OID
+oldd
+oldlog
+oldstyle
+oname
+OpenLDAP's
+openlog
+operability
+OPs
+OPTNEG
+orcpt
+ORCPT
+ord
+ot
+ourself
+overallocate
+ownreq
+ozz
+padchar
+padlen
+pagein
+pageout
+PARAM
+parametername
+params
+PARAMS
+paren
+parens
+parm
+parsable
+parseline
+parsers
+Pashkov
+passivate
+Passivate
+passivated
+passivation
+pathame
+Pathname
+pathp
+patrik
+pcf
+PCF
+pclose
+pcs
+PDDMDS
+pdelay
+PDMS
+pedantism
+peekfd
+peercert
+permited
+pfxs
+PGRES
+PGresult
+pgsqlsource
+Pieter
+Pipelining
+PKCS
+PKEY
+PKIX
+PLAINTEXT
+Plauger
+plist
+plmysql
+PLMYSQL
+plpgsql
+PLPGSQL
+PMilter
+Pn
+pname
+POB
+popen
+POPEN
+portnum
+PORTP
+pos
+posix
+Posix
+postcondition
+Postcondition
+postexpire
+POSTFIX
+postgresql
+Postgresql
+Postlog
+postlogd
+Postprocessing
+postremove
+postrename
+postrmdir
+posttls
+PPTR
+PQescapeString
+PQescapeStringConn
+prabhat
+PRE
+precedences
+pred
+predefines
+prefetch
+prefi
+pregreet
+PREGREET
+pregreeting
+preimage
+Preload
+prepended
+prepending
+Prepending
+prepends
+preprocessed
+Preprocessing
+PREREQ
+prescan
+printfck
+PRINTFLIKE
+PRINTFPTRLIKE
+PRNGD
+PROC
+procname
+procnet
+PROCNET
+progname
+programmatically
+prolog
+proto
+Proto
+protomask
+prototyped
+PROX
+proxied
+Proxied
+PROXYING
+Proxymappers
+psc
+PSC
+pseudofield
+pseudothread
+pseudothreads
+PSS
+psSv
+PTHREAD
+pton
+PTRs
+pushback
+PUTC
+PUTCHAR
+putenv
+pv
+qfile
+qflags
+qI
+qIqueueid
+qname
+qnameval
+qsort
+QSTRING
+ratbox
+raxoft
+rcode
+RCODE
+rcpb
+RCPTs
+rdb
+rdev
+rdonly
+RDONLY
+rdwr
+RDWR
+readdir
+readline
+readlline
+readllines
+readwrite
+realloc
+recdump
+recip
+RECIP
+reclen
+reconnection
+recurse
+Recurse
+RECURSE
+Recurses
+recursing
+recv
+RECV
+Redhat
+Redistributions
+reentrancy
+REENTRANCY
+reentrant
+refcounts
+refesh
+regerror
+reget
+REGSUB
+relop
+RELOP
+relops
+rendez
+repl
+replayer
+replycode
+representable
+requestor
+requestors
+requeuing
+resflags
+responder
+restartable
+resync
+resynchronize
+ret
+RET
+retransmission
+retransmit
+retryable
+retval
+revalidate
+revalidated
+rewriter
+rfind
+rflag
+rflags
+rh
+RHS
+RHSBL
+rhswl
+RHSWL
+Ribbens
+rl
+RLIM
+RMTA
+rname
+RO
+Roel
+roques
+roundtrips
+rp
+RPCs
+RQST
+rr
+RRDATA
+rrlist
+RRSIG
+rtnetlink
+ruleset
+RWR
+sa
+salen
+SAML
+sanitization
+Santize
+sb
+SCACHE
+SCANFLIKE
+SCCS
+Schoenmakers
+Schupke
+scott
+screener
+sdelay
+SDK's
+seach
+seekable
+selectable
+sendfd
+sendmsg
+sep
+serv
+SERV
+serverid
+serverout
+servers's
+servicename
+servname
+SERVNAME
+SERVPORT
+sess
+SESS
+setegid
+Setenv
+seteuid
+setgroups
+Sethi
+setrlimit
+setsid
+setsockopt
+setuid
+sgid
+sig
+SIG
+sigaction
+sigaddset
+SIGALRM
+sigchld
+SIGCHLD
+sigdeath
+sigdelay
+sigemptyset
+sighup
+SIGILL
+siginit
+SIGINT
+SIGKILL
+signum
+SIGPIPE
+sigprocmask
+SIGQUIT
+sigresume
+SIGSEGV
+sigset
+sigsetup
+sigval
+silenty
+siocgif
+SIOCGIFCONF
+SIOCGIFNETMASK
+siocglif
+SIOCGLIFCONF
+SIOCGLIFNETMASK
+SIOCLIF
+sizeof
+skipblanks
+sl
+SLMDB
+SLMs
+smap
+SMFIF
+SMFIM
+sni
+SOA
+sockaddr
+SOCKADDR
+Socketmap
+socketmapname
+socketmaps
+socketpair
+socklen
+sockmap
+socktype
+SOCKTYPE
+sofar
+softerror
+softlinks
+SOML
+soname
+sp
+SPARC
+spawner
+Spead
+SPID
+splitq
+splitter
+sqlitecon
+sqrt
+SRC
+srv
+srvr
+sscanf
+SSF
+ssize
+ssscanf
+stackable
+starttime
+STATCUR
+STATFAIL
+statp
+STATUNTRIED
+StatusOr
+statusp
+stdarg
+stderr
+STDERR
+STDIN
+stdout
+STDOUT
+steenkeeng
+stmt
+str
+STR
+strcasecmp
+strcat
+strcpy
+streamlf
+STREAMLF
+STREQ
+strerror
+STRERROR
+strflags
+strftime
+stringops
+strlen
+STRLEN
+strncasecmp
+strncat
+strncpy
+strrecord
+STRREF
+strspn
+strtol
+strtoul
+strtype
+struct
+structs
+strval
+STS
+stuffozz
+stye
+subclasses
+subcommand
+subdirectories
+Subdirectory
+subjectAltName
+subjectAltNames
+sublist
+sublists
+Subnet
+subnets
+subopen
+subpatterns
+Substring
+substrings
+subtype
+subtypes
+succ
+sudo
+sunislelodge
+superblocks
+superset
+supprt
+Sutou
+SVID
+swb
+Symas
+symlinked
+symlink's
+symlinks
+syscall
+SYSCALL
+sysconf
+Syslog
+syslogged
+syslogging
+sysv
+TAAAA
+tailp
+tas
+teardown
+Tempfail
+tempfailed
+testcase
+testname
+th
+tha
+thash
+THASH
+theadsafe
+threadsafe
+thusly
+timecmp
+timeval
+timval
+tindx
+tItp
+tkt
+TLScontext
+tlsext
+tlsfinger
+tlsmgrmem
+tlsmgr's
+tlsp
+TLSP
+TLSPKTS
+TLSPROXY
+TLVs
+tm
+tmpbuf
+ToASCII
+TOCTOU
+Todo
+TODO
+TOFILE
+tok
+TOK
+tokenize
+Tokenize
+tokenizer
+tokenizes
+tokenizing
+tokval
+toUTF
+tp
+translit
+transp
+TRANSP
+treibsand
+tresspassers
+trimblanks
+trivally
+TRNC
+TRUNC
+TRUSTAD
+trustfile
+TTL
+TTLs
+tty
+tunable
+Tunable
+Tunables
+tv
+txn
+TXT
+Typechecking
+TYPECONNSTRING
+typedef
+typedefs
+TYPEINET
+TYPEUNIX
+ucasemap
+uchar
+UDP
+ug
+ugid
+uic
+uidna
+UIDNA
+UIDs
+uint
+ULIMIT
+Ullman
+ulong
+ULONG
+ultostr
+Ultrix
+ulval
+un
+unalias
+uname
+UNAUTH
+unbuffered
+uncache
+Uncomment
+undef
+UNDEF
+Undefine
+Undeliverable
+unescape
+UNFAIL
+unformatted
+unget
+ungetc
+Unhandled
+unicode
+unimpl
+uniq
+unistd
+unitialized
+Universitaetsplatz
+UnixWare
+unk
+unlink
+Unlink
+unlinked
+unlinking
+unlockfile
+unmark
+Unmark
+unmarks
+Unoptimized
+Unparsable
+unparse
+unparsed
+unparser
+unparsing
+UNPROTO
+unprototyped
+unregister
+unregistering
+unregisters
+unselect
+unselected
+unsetenv
+unsets
+UNSPEC
+unterminated
+unthrottle
+Unthrottle
+UNTHROTTLE
+UNTRUSTED
+upass
+upd
+updatable
+UPDATABLE
+Upref
+uprefs
+URI
+URIs
+url
+useauto
+usebits
+usec
+usleep
+USR
+utf
+utime
+UTS
+uva
+uxtext
+va
+valgrind
+validator
+VALIDATOR
+variadic
+vbuf
+VBUF
+VBUFs
+vdsb
+ve
+ver
+verifier
+verpified
+VERPify
+vfprintf
+vfy
+vmailer
+Vmailer
+vmilter
+VMS
+vmsg
+Vn
+vopened
+vous
+vp
+vprint
+vprintf
+vscan
+vsmtp
+vsmtpd
+vsnl
+VSNL
+vsprintf
+vstream
+VSTREAM
+Vstreams
+VSTREAM's
+VSTREAMs
+VSTREAMS
+vstring
+VSTRING
+VSTRINGs
+vtrace
+waitpid
+WAITPID
+Wakeup
+WAKEUP
+wat
+webservers
+WeiYu
+Wformat
+whatsup
+Whitespace
+WIFSTOPPED
+wil
+wildcarded
+Wimplicit
+wireshark
+Wmissing
+Woops
+Wparentheses
+wr
+Wrappermode
+WRITEMAP
+WRONLY
+wsp
+Wstrict
+Wswitch
+WTF
+Wuninitialized
+Wunused
+XCPT
+xdelay
+xe
+xfers
+xmask
+xport
+xsasl
+XSASL
+XSH
+xt
+XTRA
+XVxy
+xxdbx
+xxgdb
+xxxx
+XXXXX
+xxxxxx
+XXXXXXX
+YASLM
+yeardays
+yyyy
+yyyymmdd
+zA
+zer
+Zmailer
+AMD
+All's
+BIO
+BTU
+CALLBACK
+CHUNKING
+CO
+CONT
+CV
+Callback
+Cert
+Compaq
+DBL
+DBMS
+DICT
+DP
+Deferrals
+ENC
+EXCL
+EXP
+EXT
+Ff
+Goode
+Grandfathered
+INST
+Inline
+Kluge
+LANG
+LIB
+LP
+MAI
+MGR
+MIPS
+MISC
+MSG
+MULTIPART
+Majordomo
+Misc
+Mn
+NB
+NR
+OBS
+ORIG
+OTOH
+PF
+PP
+PX
+Pf
+Plugins
+REC
+RR
+Rcpt
+Regexp
+SB
+SC
+SEQ
+SN
+STAT
+STATS
+STD
+Siemens
+Simplistically
+Stat
+UK
+UNICODE
+USERNAME
+UTC
+Unicode
+Username
+VA
+ab
+alphanumerical
+app
+av
+barf
+beholder's
+bidirectionally
+binding's
+bio
+builtin
+callback
+callbacks
+ch
+chg
+comm
+comp
+crappy
+def
+deferrals
+diff
+enc
+excl
+exp
+ext
+externalized
+gazillions
+ht
+incl
+instance's
+key's
+kluge
+masqueraded
+maxed
+metadata
+mgr
+mp
+neg
+op
+ops
+perms
+pf
+piggybacked
+pref
+proactive
+proactively
+proxy's
+pt
+reanimates
+rec
+refactor
+regexps
+request's
+rollover
+schlepping
+scratchpad
+seq
+singlets
+stat
+stats
+trespassing
+ts
+val
+vars
+verboten
+versioning
+wiki
diff --git a/postfix/proto/stop.spell-proto-html b/postfix/proto/stop.spell-proto-html
new file mode 100644 (file)
index 0000000..937c984
--- /dev/null
@@ -0,0 +1,348 @@
+ABNF
+ADAgECAhQSv
+adhoc
+ADME
+aes
+af
+ahQkZ
+AIX
+Allowlist
+allowlisting
+allowlists
+alphanumerics
+amavisd
+ame
+apache
+ASE
+ATABASE
+ated
+attractor
+authc
+Axel
+backported
+Backscatter
+BAQEFAASCBKcwggSjAgEAAoIBAQDc
+barelf
+bC
+BDAT
+BgBQGBg
+BINARYMIME
+bona
+BQ
+br
+CAQAwBQYDK
+Carsten
+CdUaexKP
+ce
+certN
+cflags
+cgi
+CHACHA
+chainN
+ching
+ciphe
+cldr
+cOkjtAH
+COMPAT
+concurrenc
+conn
+Crespo
+cronjob
+csie
+cve
+cvename
+Cy
+cyrusimap
+DATAB
+DATABAS
+dbpath
+DCCAeCgAwIBAgIUIUkrbk
+deduplication
+Denylist
+denylisting
+denylists
+der
+dereferencing
+DESTADDR
+destinatio
+DESTPORT
+dfn
+dgram
+dH
+DISPLA
+dll
+dom
+doma
+dont
+DONT
+dq
+ecdsacerts
+ecdsakey
+EEXIST
+eeYOxyThMA
+Efbz
+egv
+else's
+ENOENT
+exchangers
+exploder
+fb
+fe
+fg
+fi
+fide
+fifo
+filesystem
+fmsiQoRHzAFBgMrZXEwFDESMBAG
+fprint
+Fq
+GAemPCT
+ge
+gid
+GID
+github
+Gunnar
+hardlink
+hea
+hecks
+HGVNTK
+HHMMSS
+hostn
+HOSTNAME
+hre
+href
+HswDQYJKoZIhvcNAQEL
+https
+HuNn
+HUP
+iana
+IDENT
+idna
+IDNA
+ijs
+imit
+IU
+jane
+Jänicke
+Jänicke's
+jByBifpIe
+jnorell
+joe
+js
+jsp
+kali
+KAME
+KazmyRi
+keld
+keyN
+Kilani
+krcaJvDSMgvu
+KypOZPNPF
+lan
+latencies
+li
+libmemcache
+libs
+lient
+limi
+LNler
+Logfile
+logrotate
+LOGTAG
+lookahead
+Lookups
+lsqlite
+lt
+MAILLOG
+mbox
+MEcCAQAwBQYDK
+MessageLabs
+MIDDLEBOX
+MIIBdjCB
+MIIBKzCB
+MIIC
+MIIEvQIBADANBgkqhkiG
+MILTER
+mit
+mitre
+mtaadmin
+MTAADMIN
+mtadmin
+mua
+mygroup
+myinst
+NAbIJaDBqZb
+nameservers
+namespace
+nat
+nC
+ncache
+NCALLS
+NCTU
+newgroup
+NFS
+nH
+ninit
+NNTP
+noop
+nroffescape
+nullmx
+nulPzwUo
+nzHQJ
+OGvpyrMlm
+oP
+opendmarc
+orion
+oth
+overinflate
+oyE
+PARAM
+parametername
+params
+parsers
+Pathname
+pfs
+pkgsrc
+POSTFIX
+postlogd
+pQcWsx
+precedences
+pregreet
+Pregreet
+PREGREET
+prepended
+prepending
+prepends
+proble
+proxied
+Pseudocode
+PSS
+punycode
+qADAgECAhQaw
+qi
+qmznjbD
+Quanah
+QusgkahH
+Ralf
+relayhos
+RESOLV
+resolvers
+retransmission
+retransmits
+retransmitted
+rf
+rflRreYuUZBp
+rhswl
+Rirz
+rL
+rMZDAFBgMrZXAwFDESMBAG
+RolyeiE
+roundtrips
+RPCZDrPX
+rsacerts
+rsachain
+rsakey
+rsyslog
+runnable
+SASLAUTHD
+scheduler's
+schemas
+se
+selectable
+ser
+SESS
+si
+SLcOiXFHXlxp
+smarthost
+smatch
+sni
+Softw
+sp
+spamassassin
+spambot
+sqrt
+stderr
+stdout
+Stdout
+stname
+strftime
+subdirectories
+suboptimal
+suid
+suiteb
+systemd
+sz
+tDc
+tempfailing
+th
+threadm
+threadsafe
+tname
+TRE
+trusteddomain
+TTL
+tu
+tw
+TXT
+uname
+Uncomment
+Undeliverable
+unexpanded
+unextended
+unicode
+unrefreshed
+unrepliable
+Unselective
+unvalidated
+uva
+vali
+VwBCIEIEJfbbO
+VxBDsEOQf
+VZuh
+Whitespace
+wi
+wip
+wKsTGDH
+wzFd
+xhtml
+YPDWxEHom
+YWH
+yYhh
+zdlPQR
+Aren
+rejec
+debian
+prox
+vir
+AAA
+Admin
+CHUNKING
+DAT
+Downsides
+Firefox
+Inline
+Jänicke's
+LANG
+NZ
+Plugin
+Plugins
+Unicode
+WHITELIST
+bk
+ch
+chg
+chunking
+comm
+dbl
+downsides
+fer
+gt
+hos
+injectors
+kinks
+pkg
+rollover
+rs
+subj
+wiki
+JÃ
index 1cd30b3ceb9456cf9d90e7a2fc035c40cb5677a0..c5ffff2ac9f950886fc0272000151f03c182d0ce 100644 (file)
@@ -54,7 +54,7 @@
 #
 #      Alternatively, the table can be provided as a regular-expression
 #      map where patterns are given as regular expressions, or lookups
-#      can be directed to TCP-based server. In those case, the lookups
+#      can be directed to TCP-based server. In those case, the lookups
 #      are done in a slightly different way as described below under
 #      "REGULAR EXPRESSION TABLES" or "TCP-BASED TABLES".
 # CASE FOLDING
index 8f047322f675c13f59f7856ce3d76f86e1adf20c..84edde41c7b3270951c0001a87c7ca736ba2f9bc 100644 (file)
@@ -47,7 +47,7 @@
 #
 #      Alternatively, the table can be provided as a regular-expression
 #      map where patterns are given as regular expressions, or lookups
-#      can be directed to TCP-based server. In those case, the lookups
+#      can be directed to TCP-based server. In those case, the lookups
 #      are done in a slightly different way as described below under
 #      "REGULAR EXPRESSION TABLES" or "TCP-BASED TABLES".
 # CASE FOLDING
@@ -89,7 +89,7 @@
 #      $\fBmydestination\fR, or when it is listed in $\fBinet_interfaces\fR
 #      or $\fBproxy_interfaces\fR.
 #      .sp
-#      This functionality overlaps with functionality of the local
+#      This functionality overlaps with the functionality of the local
 #      \fIaliases\fR(5) database. The difference is that \fBvirtual\fR(5)
 #      mapping can be applied to non-local addresses.
 # .IP "@\fIdomain address, address, ...\fR"
 #
 #      The \fBpropagate_unmatched_extensions\fR parameter controls whether
 #      an unmatched address extension (\fI+foo\fR) is propagated to the
-#      result of table lookup.
+#      result of table lookup.
 # VIRTUAL ALIAS DOMAINS
 # .ad
 # .fi
 #      This section describes how the table lookups change when lookups
 #      are directed to a TCP-based server. For a description of the TCP
 #      client/server lookup protocol, see \fBtcp_table\fR(5).
-#      This feature is not available up to and including Postfix version 2.4.
+#      This feature is available in Postfix 2.5 and later.
 #
 #      Each lookup operation uses the entire address once.  Thus,
 #      \fIuser@domain\fR mail addresses are not broken up into their
 #      a configuration change.
 # .IP "\fBvirtual_alias_maps ($virtual_maps)\fR"
 #      Optional lookup tables that alias specific mail addresses or domains
-#      to other local or remote address.
+#      to other local or remote addresses.
 # .IP "\fBvirtual_alias_domains ($virtual_alias_maps)\fR"
-#      Postfix is final destination for the specified list of virtual
+#      Postfix is the final destination for the specified list of virtual
 #      alias domains, that is, domains for which all addresses are aliased
 #      to addresses in other local or remote domains.
 # .IP "\fBpropagate_unmatched_extensions (canonical, virtual)\fR"
index a314729ab13898ff8a900a44cf222285d7e99d2a..781a5257f95dfd61a36a239695ece210b9d8fb98 100644 (file)
@@ -816,7 +816,7 @@ int     bounce_recipient_dsn(VSTREAM *bounce, BOUNCE_INFO *bounce_info)
      * relayed.". Postfix adds an ORCPT parameter under these conditions.
      * 
      * Therefore, all down-stream MTAs will send DSNs with Original-Recipient
-     * field ontaining this same ORCPT value. When a down-stream MTA can use
+     * field containing this same ORCPT value. When a down-stream MTA can use
      * that information in their DSNs, it makes no sense that an up-stream
      * MTA can't use that same information in its own DSNs.
      * 
index 4fc5e2eac5867780fab11222b5e961ed8ea6e9ad..738bd733f2c261de304fe2a85d923cca048c9241 100644 (file)
@@ -261,7 +261,7 @@ int     cleanup_flush(CLEANUP_STATE *state)
      * (mail submitted with the Postfix sendmail command, mail forwarded by
      * the local(8) delivery agent, or mail re-queued with "postsuper -r"),
      * send a bounce notification, reset the error flags in case of success,
-     * and request deletion of the the incoming queue file and of the
+     * and request deletion of the incoming queue file and of the
      * optional DSN SUCCESS records from virtual alias expansion.
      * 
      * XXX It would make no sense to knowingly report success after we already
index 8fc0153fe7777a04eb46b3cf50673d3abcb4cbae..f2b86d05b0303dc15956f961adfa0ffb93e77654 100644 (file)
@@ -681,7 +681,7 @@ static void cleanup_header_done_callback(void *context)
     /*
      * Future proofing: the Milter client's header suppression algorithm
      * assumes that the MTA prepends its own Received: header. This
-     * assupmtion may be violated after some source-code update. The
+     * assumption may be violated after some source-code update. The
      * following check ensures consistency, at least for local submission.
      */
     if (state->hop_count < 1) {
index 94d8045f74b83ed3bf085d0b25bd6ef33ac55cee..1c12a889dd247add6e29b371408dbd8fd8c97d63 100644 (file)
@@ -295,7 +295,7 @@ typedef struct DNS_REPLY {
 #define INET6_ADDR_LEN 16              /* XXX */
 
  /*
-  * Use the theadsafe resolver API if available, not because it is theadsafe,
+  * Use the threadsafe resolver API if available, not because it is theadsafe,
   * but because it has more functionality.
   */
 #ifdef USE_RES_NCALLS
index 372f2cf20a9460411b7b880cd49a9576fdd0b8a4..b8fae7788d9b008e905d68d6d250fef43944af77 100644 (file)
@@ -479,7 +479,7 @@ static int flush_one_file(const char *queue_id, VSTRING *queue_file,
                 path, queue_name, MAIL_QUEUE_INCOMING);
 
     /*
-     * If we got here, we achieved something, so let's claim succes.
+     * If we got here, we achieved something, so let's claim success.
      */
     return (1);
 }
index 98d65c4392f7eb223c23e569f6b51df6c459fbeb..74308787c0f581a9deb676ee8dcebd948d2d8f59 100644 (file)
@@ -78,7 +78,7 @@
 /*     the major field ranges from 0..COMPAT_MAJOR_SHIFT47 or more
 /*     (11 bits or more).
 /*
-/*     This would be a great use case for fucntions returning
+/*     This would be a great use case for functions returning
 /*     StatusOr<compat_level_t> or StatusOr<string>, but is it a bit
 /*     late for a port to C++.
 /* LICENSE
index e22a90ac9fa5456628d4a7b9155007a8e3c9171e..15e7a1c1bdde0368b968c6a1c8ef58e01a84ad10 100644 (file)
@@ -46,7 +46,7 @@
 /*     same ctx argument. The context accumulates run-time lookup key and result
 /*     validation information (inapplicable keys or results are skipped) and is
 /*     needed later in each call of \fIdb_common_expand\fR. A non-zero return
-/*     value indicates that data-depedent '%' expansions were found in the input
+/*     value indicates that data-dependent '%' expansions were found in the input
 /*     template.
 /*
 /*     db_common_alloc() provides a way to use db_common_parse_domain()
@@ -56,7 +56,7 @@
 /*     When the input data lacks all fields needed for the expansion, zero
 /*     is returned and the query or result should be skipped. Otherwise
 /*     the expansion is appended to the result buffer (after a comma if the
-/*     the result buffer is not empty).
+/*     result buffer is not empty).
 /*
 /*     If not NULL, the \fBquote_func\fR callback performs database-specific
 /*     quoting of each variable before expansion.
index 591c6c6d11754250aa68418fd8303c13322f61bf..7bc5553d08a8f000abe2c31f6a2d3e25aba3eb37 100644 (file)
@@ -71,7 +71,7 @@
 /*
 /*     The \fIhop_status\fR member must be updated by the caller
 /*     when all delivery to the destination in \fInexthop\fR should
-/*     be deferred. This member is passed to to dsn_free().
+/*     be deferred. This member is passed to dsn_free().
 /*
 /*     deliver_request_done() reports the delivery status back to the
 /*     client, including the optional \fIhop_status\fR etc. information,
index 2efad14fc8a40a9de12da53c55b3e6d03a960d79..a4a4c26758a68d01a02b2c23238e0f5382501506 100644 (file)
@@ -1040,7 +1040,7 @@ static char **url_attrs(DICT_LDAP *dict_ldap, LDAPURLDesc * url)
 
     /*
      * When the LDAP URI explicitly specifies a set of attributes, we use the
-     * interection of the URI attributes and our result attributes. This way
+     * interaction of the URI attributes and our result attributes. This way
      * LDAP URIs can hide certain attributes that should not be part of the
      * query. There is no point in retrieving attributes not listed in our
      * result set, we won't make any use of those.
index 3f581abfba9ba56d62eddef94737c0bf0950c033..106731adb81c2776488f56eb398dddc4deeb5643 100644 (file)
@@ -174,7 +174,7 @@ static const char *dict_sqlite_lookup(DICT *dict, const char *name)
     }
 
     /*
-     * Optionally fold the key. Folding may be enabled on on-the-fly.
+     * Optionally fold the key. Folding may be enabled on-the-fly.
      */
     if (dict->flags & DICT_FLAG_FOLD_FIX) {
        if (dict->fold_buf == 0)
index f97846013b6b6bfbe1e0b1c3fc6151ff31ed873b..55d622aa2c731eca22c43836e15910bc99e42111 100644 (file)
@@ -311,7 +311,7 @@ void    dymap_init(const char *conf_path, const char *plugin_dir)
     VSTRING *sub_conf_path;
 
     /*
-     * Reload dynamicsmaps.cf, but don't reload already-loaded plugins.
+     * Reload dynamicmaps.cf, but don't reload already-loaded plugins.
      */
     if (dymap_info != 0)
        htable_free(dymap_info, dymap_entry_free);
index 5961dfe3c77310be680d4c8921ca36a3b0ff4834..5237dad29950a88859e91befa1d844476508ca47 100644 (file)
@@ -46,7 +46,7 @@
 /*     get_mail_conf_time() looks up the named entry in the global
 /*     configuration dictionary. The default value is returned
 /*     when no value was found. \fIdef_unit\fR supplies the default
-/*     time unit for numbers numbers specified without explicit unit.
+/*     time unit for numbers specified without explicit unit.
 /*     \fImin\fR is zero or specifies a lower limit on the integer
 /*     value or string length; \fImax\fR is zero or specifies an
 /*     upper limit on the integer value or string length.
index 8a56f84affe2b7fae7c23b7e89c532b17091d701..7c60370effa321d6abef020f603df9d0261bcd06 100644 (file)
@@ -265,7 +265,7 @@ int     mail_copy(const char *sender,
      * while fflush and fsync() succeed. Think of remote file systems such as
      * AFS that copy the file back to the server upon close. Oh well, no
      * point optimizing the error case. XXX On systems that use flock()
-     * locking, we must truncate the file file before closing it (and losing
+     * locking, we must truncate the file before closing it (and losing
      * the exclusive lock).
      */
     read_error = vstream_ferror(src);
index 781953c7bebe1f4f6987213241694d5ca10ae1bd..4b530648a4bc352f32bfd722940542ccba814486 100644 (file)
@@ -2079,7 +2079,7 @@ extern int var_mailtool_compat;
 
  /*
   * How long a daemon command may take to receive or deliver a message etc.
-  * before we assume it is wegded (should never happen).
+  * before we assume it is wedged (should never happen).
   */
 #define VAR_DAEMON_TIMEOUT     "daemon_timeout"
 #define DEF_DAEMON_TIMEOUT     "18000s"
@@ -2497,7 +2497,11 @@ extern int var_local_rcpt_code;
                                " $" VAR_SMTPD_EHLO_DIS_MAPS \
                                " $" VAR_SMTPD_MILTER_MAPS \
                                " $" VAR_VIRT_GID_MAPS \
-                               " $" VAR_VIRT_UID_MAPS
+                               " $" VAR_VIRT_UID_MAPS \
+                               " $" VAR_LOCAL_LOGIN_SND_MAPS \
+                               " $" VAR_PSC_REJ_FTR_MAPS \
+                               " $" VAR_SMTPD_REJ_FTR_MAPS \
+                               " $" VAR_TLS_SERVER_SNI_MAPS
 extern char *var_proxy_read_maps;
 
 #define VAR_PROXY_WRITE_MAPS   "proxy_write_maps"
@@ -4196,7 +4200,7 @@ extern char *var_smtp_dns_re_filter;
 extern char *var_smtpd_dns_re_filter;
 
  /*
-  * Share TLS sessions through tlproxy(8).
+  * Share TLS sessions through tlsproxy(8).
   */
 #define VAR_SMTP_TLS_CONN_REUSE                "smtp_tls_connection_reuse"
 #define DEF_SMTP_TLS_CONN_REUSE                0
index 3ffe1fcbd58ae7f0c4951fd11bacf373617499a9..b5504638e64eb3a5af30226f023ddf09cad30696 100644 (file)
@@ -32,7 +32,7 @@
 #define MAIL_PROTO_QMQP                "QMQP"
 
  /*
-  * Names of services: these are the names of the UNIX-domain socket or or
+  * Names of services: these are the names of the UNIX-domain socket or
   * FIFO that a service listens on.
   */
 #define MAIL_SERVICE_BOUNCE    "bounce"
index 21d9d1d1fd9fb3a47b4b7bd06c6f1ac6b6833247..3f46be5764de13f568979d3b8a8c4c2fa287cf90 100644 (file)
@@ -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      "20211217"
+#define MAIL_RELEASE_DATE      "20220102"
 #define MAIL_VERSION_NUMBER    "3.7"
 
 #ifdef SNAPSHOT
index 58a7e3cba7796073d2f78ef3d5a8aa427b36fef1..1290cf2ebe48dfb7c5d290e0dc3c159a1e72851b 100644 (file)
@@ -31,7 +31,7 @@
 /*     ssize_t len;
 /* DESCRIPTION
 /*     This module implements the low-level memcache protocol.
-/*     All functions return -1 on error and 0 on succcess.
+/*     All functions return -1 on error and 0 on success.
 /* SEE ALSO
 /*     smtp_proto(3) SMTP low-level protocol.
 /* AUTHOR(S)
index 640b4f3771963eadb9cab3f7f4cb5e64f81c6077..ba0f7bd1016c277a62d1d104f965a9bfd775593b 100644 (file)
@@ -34,7 +34,7 @@
 /* .IP addr_family
 /*     Null pointer, or pointer to integer for storing the address
 /*     family.
-/* DIAGNISTICS
+/* DIAGNOSTICS
 /*     normalize_mailhost_addr() returns -1 if the input is malformed,
 /*     zero otherwise.
 /* LICENSE
index 541e4f721bd7f6430fcb3588e2e7b8e560b15794..c19ee57d48a52c491ecb4a03f6b145b4c120e917 100644 (file)
@@ -231,7 +231,7 @@ VSTRING *unquote_822_local(VSTRING *dst, const char *mbox)
  /*
   * Proof-of-concept test program. Read an unquoted address from stdin, and
   * show the quoted and unquoted results. Specify <> to test behavior for an
-  * empty unquoted adress.
+  * empty unquoted address.
   */
 #include <ctype.h>
 #include <string.h>
index b3adf59471f0ef1ce0b3484cb230f96b56383e3f..a783ce354618dc79feb498f07fbda23b6987d663 100644 (file)
@@ -168,7 +168,7 @@ NORETURN test_main(int argc, char **argv, TEST_DRIVER_FN test_driver,...)
 
     /*
      * Register higher-level dictionaries and initialize the support for
-     * dynamically-loaded dictionarles.
+     * dynamically-loaded dictionaries.
      */
     mail_dict_init();
 
index c4b26be04ff7d5b252c9a84d838afa9ce0df57af..cfb5648592d7a99746e84bcca3df211b30281667 100644 (file)
@@ -102,7 +102,7 @@ int     verify_append(const char *queue_id, MSG_STATS *stats,
      * XXX No DSN check; this routine is called from bounce/defer/sent, which
      * know what the DSN initial digit should look like.
      * 
-     * XXX vrfy_stat is competely redundant because of dsn.
+     * XXX vrfy_stat is completely redundant because of dsn.
      */
     if (var_verify_neg_cache || vrfy_stat == DEL_RCPT_STAT_OK) {
        if (recipient->orig_addr[0])
index e818f90f7b268ed5bd6b564cf86b62f7b14c8089..a3eb1bbbd773fa9e564e2d76b8ef41a190dbcd5a 100644 (file)
@@ -84,7 +84,7 @@
 #define VERIFY_BASE            31
 
  /*
-  * We append the time-dependent portion to the localpart of the the address
+  * We append the time-dependent portion to the localpart of the address
   * verification probe sender address, so that the result has the form
   * ``fixed1variable@fixed2''. There is no delimiter between ``fixed1'' and
   * ``variable'', because that could make "old" time stamps valid depending
index a4133259d2790a6b839fe0ebd3fc715eba00c466..32bdea77e8c71c86972534dfe7c77bc443c66f50 100644 (file)
 /*     (complete recipient address), \fB$extension\fR (recipient address
 /*     extension), \fB$domain\fR (recipient domain), \fB$local\fR
 /*     (entire recipient address localpart) and
-/*     \fB$recipient_delimiter.\fR The forms \fI${name?value}\fR and
-/*     \fI${name:value}\fR expand conditionally to \fIvalue\fR when
-/*     \fI$name\fR is (is not) defined.
-/*     Characters that may have special meaning to the shell or file system
-/*     are replaced by underscores.  The list of acceptable characters
-/*     is specified with the \fBforward_expansion_filter\fR configuration
+/*     \fB$recipient_delimiter.\fR The forms \fI${name?value}\fR
+/*     and \fI${name?{value}}\fR (Postfix 3.0 and later) expand
+/*     conditionally to \fIvalue\fR when \fI$name\fR is defined,
+/*     and the forms \fI${name:value}\fR \fI${name:{value}}\fR
+/*     (Postfix 3.0 and later) expand conditionally to \fIvalue\fR
+/*     when \fI$name\fR is not defined.  The form
+/*     \fI${name?{value1}:{value2}}\fR (Postfix 3.0 and later)
+/*     expands conditionally to \fIvalue1\fR when \fI$name\fR is
+/*     defined, or \fIvalue2\fR otherwise. Characters that may
+/*     have special meaning to the shell or file system are replaced
+/*     with underscores. The list of acceptable characters is
+/*     specified with the \fBforward_expansion_filter\fR configuration
 /*     parameter.
 /*
 /*     An alias or ~/.\fBforward\fR file may list any combination of external
 /*     address), \fB$extension\fR (recipient address extension),
 /*     \fB$domain\fR (recipient domain), \fB$local\fR (entire
 /*     recipient address localpart) and \fB$recipient_delimiter.\fR
-/*     The forms \fI${name?value}\fR and \fI${name:value}\fR expand
-/*     conditionally to \fIvalue\fR when \fI$name\fR is (is not)
-/*     defined.  Characters that may have special meaning to the
-/*     shell or file system are replaced by underscores.  The list
-/*     of acceptable characters is specified with the
-/*     \fBexecution_directory_expansion_filter\fR configuration
-/*     parameter.
+/*     The forms \fI${name?value}\fR and \fI${name?{value}}\fR
+/*     (Postfix 3.0 and later) expand conditionally to \fIvalue\fR
+/*     when \fI$name\fR is defined, and the forms \fI${name:value}\fR
+/*     and \fI${name:{value}}\fR (Postfix 3.0 and later) expand
+/*     conditionally to \fIvalue\fR when \fI$name\fR is not defined.
+/*     The form \fI${name?{value1}:{value2}}\fR (Postfix 3.0 and
+/*     later) expands conditionally to \fIvalue1\fR when \fI$name\fR
+/*     is defined, or \fIvalue2\fR otherwise. Characters that may
+/*     have special meaning to the shell or file system are replaced
+/*     with underscores. The list of acceptable characters
+/*     is specified with the \fBexecution_directory_expansion_filter\fR
+/*     configuration parameter.
 /*
 /*     The command is executed directly where possible. Assistance by the
 /*     shell (\fB/bin/sh\fR on UNIX systems) is used only when the command
 /*
 /*     A limited amount of message context is exported via environment
 /*     variables. Characters that may have special meaning to the shell
-/*     are replaced by underscores.  The list of acceptable characters
+/*     are replaced with underscores.  The list of acceptable characters
 /*     is specified with the \fBcommand_expansion_filter\fR configuration
 /*     parameter.
 /* .IP \fBSHELL\fR
 /*     Available in Postfix version 2.2 and later:
 /* .IP "\fBcommand_execution_directory (empty)\fR"
 /*     The \fBlocal\fR(8) delivery agent working directory for delivery to
-/*     external command.
+/*     external commands.
 /* MAILBOX LOCKING CONTROLS
 /* .ad
 /* .fi
 /*     $name expansions of $mailbox_command and $command_execution_directory.
 /* .IP "\fBdefault_privs (nobody)\fR"
 /*     The default rights used by the \fBlocal\fR(8) delivery agent for delivery
-/*     to external file or command.
+/*     to an external file or command.
 /* .IP "\fBforward_expansion_filter (see 'postconf -d' output)\fR"
 /*     Restrict the characters that the \fBlocal\fR(8) delivery agent allows in
 /*     $name expansions of $forward_path.
 /*     The time limit for sending or receiving information over an internal
 /*     communication channel.
 /* .IP "\fBlocal_command_shell (empty)\fR"
-/*     Optional shell program for \fBlocal\fR(8) delivery to non-Postfix command.
+/*     Optional shell program for \fBlocal\fR(8) delivery to non-Postfix commands.
 /* .IP "\fBmax_idle (100s)\fR"
 /*     The maximum amount of time that an idle Postfix daemon process waits
 /*     for an incoming connection before terminating voluntarily.
index e643aad6882254e5d2d83516e3609e79f4e27167..96443e178f1c6fc7561bcf3128a78b785c3fe96e 100644 (file)
@@ -113,7 +113,7 @@ int     deliver_unknown(LOCAL_STATE state, USER_ATTR usr_attr)
        return (0);
 
     /*
-     * The fall-back transport specifies a delivery machanism that handles
+     * The fall-back transport specifies a delivery mechanism that handles
      * users not found in the aliases or UNIX passwd databases.
      */
     if (*var_fbck_transp_maps && transp_maps == 0)
index 2ef3a5ae01419dbf6c82201f69327b877bafb359..e49500e3490b406a1dff1b78221db2e0805f9084 100644 (file)
@@ -460,7 +460,7 @@ NORETURN dgram_server_main(int argc, char **argv, DGRAM_SERVER_FN service,...)
 
     /*
      * Register higher-level dictionaries and initialize the support for
-     * dynamically-loaded dictionarles.
+     * dynamically-loaded dictionaries.
      */
     mail_dict_init();
 
index 9f81fc672da2526f69d205f8463155562b6aab29..9802bdf2f02d368b5112b70a515f854d8ea82b0d 100644 (file)
@@ -716,7 +716,7 @@ NORETURN event_server_main(int argc, char **argv, MULTI_SERVER_FN service,...)
 
     /*
      * Register higher-level dictionaries and initialize the support for
-     * dynamically-loaded dictionarles.
+     * dynamically-loaded dictionaries.
      */
     mail_dict_init();
 
index fbdaf34cef3d71437dcc1e56634956a366f5b134..6150f229aeb537442d50fba8ea6970aa41b4b580 100644 (file)
 /*     Only the last instance of this parameter type is remembered.
 /* .IP "CA_MAIL_SERVER_POST_ACCEPT(void *(VSTREAM *stream, char *service_name, char **argv, HTABLE *attr))"
 /*     Function to be executed after accepting a new connection.
-/*     The stream, service_name and argv argunents are the same
+/*     The stream, service_name and argv arguments are the same
 /*     as with the "service" argument. The attr argument is null
 /*     or a pointer to a table with 'pass' connection attributes.
 /*     The table is destroyed after the function returns.
@@ -694,7 +694,7 @@ NORETURN multi_server_main(int argc, char **argv, MULTI_SERVER_FN service,...)
 
     /*
      * Register higher-level dictionaries and initialize the support for
-     * dynamically-loaded dictionarles.
+     * dynamically-loaded dictionaries.
      */
     mail_dict_init();
 
index f834d8b5d030112bcb76e8b2424f1a93fa936c14..38f22b724c62dbb669ea6e53e7be000a2ca1ea8e 100644 (file)
@@ -587,7 +587,7 @@ NORETURN single_server_main(int argc, char **argv, SINGLE_SERVER_FN service,...)
 
     /*
      * Register higher-level dictionaries and initialize the support for
-     * dynamically-loaded dictionarles.
+     * dynamically-loaded dictionaries.
      */
     mail_dict_init();
 
index fa6114b875b1e9796937dd8d9cd2db9156fa0e47..c483a9ecc274650a69e3e0cc4b9988f903b4e97e 100644 (file)
@@ -570,7 +570,7 @@ NORETURN trigger_server_main(int argc, char **argv, TRIGGER_SERVER_FN service,..
 
     /*
      * Register higher-level dictionaries and initialize the support for
-     * dynamically-loaded dictionarles.
+     * dynamically-loaded dictionaries.
      */
     mail_dict_init();
 
index 5a81487df40f1e9e15f855a03293935894541b93..d5f3264380888766ea3addc865d089779e527aeb 100644 (file)
@@ -331,7 +331,7 @@ QMGR_ENTRY *qmgr_entry_create(QMGR_QUEUE *queue, QMGR_MESSAGE *message)
      * 
      * XXX At this point in the code, the busy reference count is still less
      * than the concurrency limit (otherwise this code would not be invoked
-     * in the first place) so we have to make make some awkward adjustments
+     * in the first place) so we have to make some awkward adjustments
      * below.
      * 
      * XXX The queue length test below looks at the active queue share of an
index f341b9591d3b77d65472f4b669ac7feedd87638d..bf7aebb20354df3b13196d9bf0e832ad7afd27e7 100644 (file)
@@ -109,7 +109,7 @@ void    qmgr_feedback_init(QMGR_FEEDBACK *fb,
     double  enum_val;
     char    denom_str[30 + 1];
     double  denom_val;
-    char    slash;
+    char    slash[1 + 1];
     char    junk;
     char   *fbck_name;
     char   *fbck_val;
@@ -135,7 +135,7 @@ void    qmgr_feedback_init(QMGR_FEEDBACK *fb,
     fb->base = -1;                             /* assume error */
 
     switch (sscanf(fbck_val, "%lf %1[/] %30s%c",
-                  &enum_val, &slash, denom_str, &junk)) {
+                  &enum_val, slash, denom_str, &junk)) {
     case 1:
        fb->index = QMGR_FEEDBACK_IDX_NONE;
        fb->base = enum_val;
index 8ce59fbea4b2fd2c63627324051350e4fd9897c8..8a994304bb23b2ef661721cc159f49659d30a511 100644 (file)
 /* .nf
 /*         \fIRight\fR: command -f $sender -- $recipient
 /* .fi
+/* NOTE: DO NOT put quotes around the command, $sender, or $recipient.
 /* .IP
 /*     This feature is available as of Postfix 2.3.
 /* .IP "\fBsize\fR=\fIsize_limit\fR (optional)"
index 635338a7121645c0bce4b231f5da8a8e6033b8ee..95388836a9a879b35c0049463c654fb6242cba11 100644 (file)
@@ -12,7 +12,7 @@
 /*     The \fBpostalias\fR(1) command creates or queries one or more Postfix
 /*     alias databases, or updates an existing one. The input and output
 /*     file formats are expected to be compatible with Sendmail version 8,
-/*     and are expected to be suitable for the use as NIS alias maps.
+/*     and are expected to be suitable for use as NIS alias maps.
 /*
 /*     If the result files do not exist they will be created with the
 /*     same group and other read permissions as their source file.
 /*     The default database type for use in \fBnewaliases\fR(1), \fBpostalias\fR(1)
 /*     and \fBpostmap\fR(1) commands.
 /* .IP "\fBimport_environment (see 'postconf -d' output)\fR"
-/*     The list of environment parameters that a privileged Postfix
+/*     The list of environment variables that a privileged Postfix
 /*     process will import from a non-Postfix parent process, or name=value
 /*     environment overrides.
 /* .IP "\fBsmtputf8_enable (yes)\fR"
 /*     Enable preliminary SMTPUTF8 support for the protocols described
-/*     in RFC 6531..6533.
+/*     in RFC 6531, RFC 6532, and RFC 6533.
 /* .IP "\fBsyslog_facility (mail)\fR"
 /*     The syslog facility of Postfix logging.
 /* .IP "\fBsyslog_name (see 'postconf -d' output)\fR"
index e52dbc1eb8736b9346430a226eeef693f3d7c906..f598a5be6ae2453ec37fa936091c2c0dffe71758 100644 (file)
 /*     and replace one or more service fields with new values as
 /*     specified with "\fIservice/type/field=value\fR" on the
 /*     \fBpostconf\fR(1) command line. Currently, the "command"
-/*     field contains the command name and command arguments.  this
+/*     field contains the command name and command arguments.  This
 /*     may change in the near future, so that the "command" field
 /*     contains only the command name, and a new "arguments"
 /*     pseudofield contains the command arguments.
 /*     line.
 /*
 /*     The \fB-e\fR option is no longer needed with Postfix version
-/*     2.8 and later.
+/*     2.8 and later, as it is assumed whenever a value is specified
+/*     (empty or non-empty).
 /* .IP \fB-f\fR
 /*     Fold long lines when printing \fBmain.cf\fR or \fBmaster.cf\fR
 /*     configuration file entries, for human readability.
 /*
 /*     This feature is available with Postfix 2.11 and later.
 /* .IP \fB-h\fR
-/*     Show parameter or attribute values without the "\fIname\fR
-/*     = " label that normally precedes the value.
+/*     Show parameter or attribute values without the "\fIname\fR = "
+/*     label that normally precedes the value.
 /* .IP \fB-H\fR
 /*     Show parameter or attribute names without the " = \fIvalue\fR"
 /*     that normally follows the name.
 /*     later). To show settings that differ from built-in defaults
 /*     only, use the following bash syntax:
 /* .nf
-/*         comm -23 <(postconf -n) <(postconf -d)
+/*         LANG=C comm -23 <(postconf -n) <(postconf -d)
 /* .fi
 /*     Replace "-23" with "-12" to show settings that duplicate
 /*     built-in defaults.
 /* .IP "\fB-o \fIname=value\fR"
-/*     Override \fBmain.cf\fR parameter settings.
+/*     Override \fBmain.cf\fR parameter settings.  This lets you see
+/*     the effect changing a parameter would have when it is used in
+/*     other configuration parameters, e.g.:
+/*     .nf
+/*         postconf -x -o stress=yes
+/*     .fi
 /*
 /*     This feature is available with Postfix 2.10 and later.
 /* .IP \fB-p\fR
index d5dda924f2fa337548ae621186c8c2b95756ca6a..d21cad18fb2a83ecd83b41d17608061b5f294865 100644 (file)
@@ -170,7 +170,7 @@ static void pcf_check_dbms_client(const PCF_DBMS_INFO *dp, const char *cf_file)
         * Populate the dictionary with settings in this database client
         * configuration file. Don't die if a file can't be opened - some
         * files may contain passwords and should not be world-readable.
-        * Note: dict_load_fp() nags about duplicate pameter settings.
+        * Note: dict_load_fp() nags about duplicate parameter settings.
         */
        dict = dict_ht_open(dict_spec, O_CREAT | O_RDWR, 0);
        dict_register(dict_spec, dict);
index f4cb854da440f24a5dd582033fbae42aab54932a..687e03fdfe6ab61ed39d64636b8f13b46719c1f4 100644 (file)
@@ -930,7 +930,7 @@ static void pcf_show_master_any_param(VSTREAM *fp, int mode,
 
     /*
      * Print parameters in sorted order. The number of parameters per
-     * master.cf entry is small, so we optmiize for code simplicity and don't
+     * master.cf entry is small, so we optimize for code simplicity and don't
      * worry about the cost of double lookup.
      */
 
index 8d0e726d9eb0bad846cfc6f0210fd99593de7946..5942ec0986363d689afce6f18bd700aa978a1db2 100644 (file)
@@ -408,7 +408,7 @@ void    pcf_register_user_parameters(void)
     /*
      * Scan parameter values that are left at their defaults in the global
      * name space. Some defaults contain the $name of an obsolete parameter
-     * for backwards compatilility purposes. We might warn that an explicit
+     * for backwards compatibility purposes. We might warn that an explicit
      * name=value is obsolete, but we must not warn that the parameter is
      * unused.
      */
index 16657abe402dfff79b39b1b120f6d6429c824dca..e9335e99a9153356cd639b94092b2ad7f1f87669 100644 (file)
@@ -497,7 +497,7 @@ int     main(int argc, char **argv)
     for (;;) {
        /* Don't allow PTR records. */
        rec_type = rec_get_raw(VSTREAM_IN, buf, var_line_limit, REC_FLAG_NONE);
-       if (rec_type == REC_TYPE_EOF) {         /* request cancelled */
+       if (rec_type == REC_TYPE_EOF) {         /* request canceled */
            mail_stream_cleanup(dst);
            if (remove(postdrop_path))
                msg_warn("uid=%ld: remove %s: %m", (long) uid, postdrop_path);
index 0c4b6de504ce2ab76fdd62a1418cd24707606417..fed152d6595ac34aa8c50ca4cc5536ad487ecfee 100644 (file)
 /* .PP
 /*     Other configuration parameters:
 /* .IP "\fBimport_environment (see 'postconf -d' output)\fR"
-/*     The list of environment parameters that a privileged Postfix
+/*     The list of environment variables that a privileged Postfix
 /*     process will import from a non-Postfix parent process, or name=value
 /*     environment overrides.
 /* .IP "\fBsyslog_facility (mail)\fR"
 /*     postalias(1), create/update/query alias database
 /*     postcat(1), examine Postfix queue file
 /*     postconf(1), Postfix configuration utility
+/*     postdrop(1), Postfix mail posting utility
 /*     postfix(1), Postfix control program
 /*     postfix-tls(1), Postfix TLS management
 /*     postkick(1), trigger Postfix daemon
index d97425c6c19c328daebecda1cdc82e49b3a0ed31..66421d008f36da8ab5b543bc1cc28a0654e956a8 100644 (file)
 /* .PP
 /*     The \fIkey\fR and \fIvalue\fR are processed as is, except that
 /*     surrounding white space is stripped off. Whitespace in lookup
-/*     keys is supported as of Postfix 3.2.
+/*     keys is supported in Postfix 3.2 and later, by surrounding the
+/*     key with double quote characters `"'. Within the double quotes,
+/*     double quote `"' and backslash `\\' characters can be included
+/*     by quoting them with a preceding backslash.
 /*
 /*     When the \fB-F\fR option is given, the \fIvalue\fR must
 /*     specify one or more filenames separated by comma and/or
@@ -78,8 +81,8 @@
 /*     headers and for attached message/* headers.
 /* .sp
 /*     NOTE: with "smtputf8_enable = yes", the \fB-b\fR option
-/*     option disables UTF-8 syntax checks on query keys and
-/*     lookup results. Specify the \fB-U\fR option to force UTF-8
+/*     disables UTF-8 syntax checks on query keys and lookup
+/*     results. Specify the \fB-U\fR option to force UTF-8
 /*     syntax checks anyway.
 /* .sp
 /*     This feature is available in Postfix version 2.6 and later.
 /*     The default database type for use in \fBnewaliases\fR(1), \fBpostalias\fR(1)
 /*     and \fBpostmap\fR(1) commands.
 /* .IP "\fBimport_environment (see 'postconf -d' output)\fR"
-/*     The list of environment parameters that a privileged Postfix
+/*     The list of environment variables that a privileged Postfix
 /*     process will import from a non-Postfix parent process, or name=value
 /*     environment overrides.
 /* .IP "\fBsmtputf8_enable (yes)\fR"
 /*     Enable preliminary SMTPUTF8 support for the protocols described
-/*     in RFC 6531..6533.
+/*     in RFC 6531, RFC 6532, and RFC 6533.
 /* .IP "\fBsyslog_facility (mail)\fR"
 /*     The syslog facility of Postfix logging.
 /* .IP "\fBsyslog_name (see 'postconf -d' output)\fR"
@@ -657,7 +660,7 @@ static int postmap_queries(VSTREAM *in, char **maps, const int map_count,
        dicts[n] = 0;
 
     /*
-     * Perform all queries. Open maps on the fly, to avoid opening unecessary
+     * Perform all queries. Open maps on the fly, to avoid opening unnecessary
      * maps.
      */
     if ((postmap_flags & POSTMAP_FLAG_HB_KEY) == 0) {
index bffb8edfa0c852c8795562e263e49dda7022b978..5adcd272cacf43ecda41bc3becf20b23ed381912 100644 (file)
 /*     values for the private directories of the new instance. The
 /*     "\fB-G \fIgroup\fR" option may be specified to assign the
 /*     instance to a group, otherwise, the new instance is not a
-/*     member of any groups.
+/*     member of any group.
 /* .sp
 /*     The new instance main.cf is the stock main.cf with the
 /*     parameters that specify the locations of shared files cloned
 /* .RE
 /* .IP
 /*     If any of these pathnames is not supplied, the program
-/*     attempts to generate the pathname by taking the corresponding
-/*     primary instance pathname, and by replacing the last pathname
-/*     component by the value of the \fB-I\fR option.
+/*     attempts to generate the missing pathname(s) by taking the
+/*     corresponding primary instance pathname, and replacing the
+/*     last pathname component by the value of the \fB-I\fR option.
 /* .sp
 /*     If the instance configuration directory already exists, and
 /*     contains both a main.cf and master.cf file, \fBcreate\fR
 /* .IP "\fBdaemon_directory (see 'postconf -d' output)\fR"
 /*     The directory with Postfix support programs and daemon programs.
 /* .IP "\fBimport_environment (see 'postconf -d' output)\fR"
-/*     The list of environment parameters that a privileged Postfix
+/*     The list of environment variables that a privileged Postfix
 /*     process will import from a non-Postfix parent process, or name=value
 /*     environment overrides.
 /* .IP "\fBmulti_instance_directories (empty)\fR"
@@ -614,7 +614,7 @@ typedef struct {
   * To detect conflicts, each instance name and each shared or private
   * pathname is registered in one place, with its owner. Everyone must
   * register their claims when they join, and will be rejected in case of
-  * conlict.
+  * conflict.
   * 
   * Each claim value involves a parameter value (either a directory name or an
   * instance name). Each claim owner is the config_directory pathname plus
@@ -965,7 +965,7 @@ static void check_shared_dir_status(void)
 
     /*
      * XXX Avoid false conflicts with meta_directory. This usually overlaps
-     * with other directories, typcally config_directory, shlib_directory or
+     * with other directories, typically config_directory, shlib_directory or
      * daemon_directory.
      */
     for (sp = shared_dir_table; sp->param_name; ++sp) {
index 937176383f04bba56670faf5086771f107fefae6..f4afa632b3192b0d568d11675c7581904438fcaa 100644 (file)
@@ -390,7 +390,7 @@ static void show_queue(int mode)
      * Don't assume that the mail system is down when the user has
      * insufficient permission to access the showq socket.
      */
-    else if (errno == EACCES) {
+    else if (errno == EACCES || errno == EPERM) {
        msg_fatal_status(EX_SOFTWARE,
                         "Connect to the %s %s service: %m",
                         var_mail_name, var_showq_service);
@@ -405,7 +405,9 @@ static void show_queue(int mode)
        ARGV   *argv;
        int     stat;
 
-       msg_warn("Mail system is down -- accessing queue directly");
+       msg_warn("Mail system is down -- accessing queue directly"
+                " (Connect to the %s %s service: %m)",
+                var_mail_name, var_showq_service);
        showq_path = concatenate(var_daemon_dir, "/", var_showq_service,
                                 (char *) 0);
        argv = argv_alloc(6);
@@ -436,7 +438,9 @@ static void show_queue(int mode)
      */
     else {
        msg_fatal_status(EX_UNAVAILABLE,
-                        "Queue report unavailable - mail system is down");
+                        "Queue report unavailable - mail system is down"
+                        " (Connect to the %s %s service: %m)",
+                        var_mail_name, var_showq_service);
     }
 }
 
index c902b9c5d4e6e17691c7f709f61ff1042985a541..f5ca05991ceda91e00c40374152762d432c7a8e6 100644 (file)
@@ -2,7 +2,7 @@
 /* NAME
 /*     showq_compat 8
 /* SUMMARY
-/*     Sendmail mailq compatibitily adapter
+/*     Sendmail mailq compatibility adapter
 /* SYNOPSIS
 /*     void    showq_compat(
 /*     VSTREAM *showq)
index 1c8a749fefbccb076db5bbc26448527b33dd8952..5e544ae0c011dd309d202a6b1dfda533995dbe6a 100644 (file)
@@ -213,7 +213,7 @@ static void psc_smtpd_read_event(int, void *);
  /*
   * Encapsulation. The STARTTLS, EHLO and AUTH command handlers temporarily
   * suspend SMTP command events, send an asynchronous proxy request, and
-  * resume SMTP command events after receiving the asynchrounous proxy
+  * resume SMTP command events after receiving the asynchronous proxy
   * response (the EHLO handler must asynchronously talk to the auth server
   * before it can announce the SASL mechanism list; the list can depend on
   * the client IP address and on the presence on TLS encryption).
index 67dd3c1e1b5a0a166023d56e08a6c5ae023e0f2d..4036a3dcd2a21b475c4a2ad625d831b4f79ba864 100644 (file)
@@ -76,7 +76,7 @@
   */
 
  /*
-  * Transient state for the portscreen(8)-to-tlsproxy(8) hand-off protocol.
+  * Transient state for the postscreen(8)-to-tlsproxy(8) hand-off protocol.
   */
 typedef struct {
     VSTREAM *tlsproxy_stream;          /* hand-off negotiation */
index 28e204856139a846423435ce0700d7f6ba38c03b..8b34444e9ebd69e185d5df0326493aaa8a7aae1c 100644 (file)
@@ -12,7 +12,7 @@
 /*     and reports TLS-related information about the server. With SMTP, the
 /*     destination is a domainname; with LMTP it is either a domainname
 /*     prefixed with \fBinet:\fR or a pathname prefixed with \fBunix:\fR.  If
-/*     Postfix is built without TLS support, the resulting posttls-finger
+/*     Postfix is built without TLS support, the resulting \fBposttls-finger\fR(1)
 /*     program has very limited functionality, and only the \fB-a\fR, \fB-c\fR,
 /*     \fB-h\fR, \fB-o\fR, \fB-S\fR, \fB-t\fR, \fB-T\fR and \fB-v\fR options
 /*     are available.
@@ -78,9 +78,9 @@
 /*     Arguments:
 /* .IP "\fB-a\fR \fIfamily\fR (default: \fBany\fR)"
 /*     Address family preference: \fBipv4\fR, \fBipv6\fR or \fBany\fR.  When
-/*     using \fBany\fR, posttls-finger will randomly select one of the two as
-/*     the more preferred, and exhaust all MX preferences for the first
-/*     address family before trying any addresses for the other.
+/*     using \fBany\fR, \fBposttls-finger\fR(1) will randomly select one of
+/*     the two as the more preferred, and exhaust all MX preferences for the
+/*     first address family before trying any addresses for the other.
 /* .IP "\fB-A\fR \fItrust-anchor.pem\fR (default: none)"
 /*     A list of PEM trust-anchor files that overrides CAfile and CApath
 /*     trust chain verification.  Specify the option multiple times to
 /*     fingerprints and matching against user provided certificate
 /*     fingerprints (with DANE TLSA records the algorithm is specified
 /*     in the DNS).  In Postfix versions prior to 3.6, the default value
-/*     was "sha1".
+/*     was "md5".
 /* .IP "\fB-f\fR"
 /*     Lookup the associated DANE TLSA RRset even when a hostname is not an
 /*     alias and its address records lie in an unsigned zone.  See
 /*     verification.  By default no CAfile is used and no public CAs
 /*     are trusted.
 /* .IP "\fB-g \fIgrade\fR (default: medium)"
-/*     The minimum TLS cipher grade used by posttls-finger.  See
-/*     smtp_tls_mandatory_ciphers for details.
+/*     The minimum TLS cipher grade used by \fBposttls-finger\fR(1).
+/*     See smtp_tls_mandatory_ciphers for details.
 /* .IP "\fB-h \fIhost_lookup\fR (default: \fBdns\fR)"
 /*     The hostname lookup methods used for the connection.  See the
 /*     documentation of smtp_host_lookup for syntax and semantics.
 /*     security level allows you to test certificate or public-key
 /*     fingerprint matches before you deploy them in the policy table.
 /* .IP
-/*     Note, since \fBposttls-finger\fR does not actually deliver any email,
+/*     Note, since \fBposttls-finger\fR(1) does not actually deliver any email,
 /*     the \fBnone\fR, \fBmay\fR and \fBencrypt\fR security levels are not
 /*     very useful.  Since \fBmay\fR and \fBencrypt\fR don't require peer
 /*     certificates, they will often negotiate anonymous TLS ciphersuites,
 /*     The TLS policy for MX hosts with "secure" TLSA records when the
 /*     nexthop destination security level is \fBdane\fR, but the MX
 /*     record was found via an "insecure" MX lookup.  See the main.cf
-/*     documentation for smtp_tls_insecure_mx_policy for details.
+/*     documentation for smtp_tls_dane_insecure_mx_policy for details.
 /* .IP "\fB-o \fIname=value\fR"
 /*     Specify zero or more times to override the value of the main.cf
 /*     parameter \fIname\fR with \fIvalue\fR.  Possible use-cases include
 /*     overriding the values of TLS library parameters, or "myhostname" to
 /*     configure the SMTP EHLO name sent to the remote server.
 /* .IP "\fB-p \fIprotocols\fR (default: >=TLSv1)"
-/*     TLS protocols that posttls-finger will exclude or include.  See
+/*     TLS protocols that \fBposttls-finger\fR(1) will exclude or include.  See
 /*     smtp_tls_mandatory_protocols for details.
 /* .IP "\fB-P \fICApath/\fR (default: none)"
 /*     The OpenSSL CApath/ directory (indexed via c_rehash(1)) for remote
 /*     Enable verbose Postfix logging.  Specify more than once to increase
 /*     the level of verbose logging.
 /* .IP "\fB-w\fR"
-/*     Enable outgoing TLS wrapper mode, or SMTPS support.  This is typically
-/*     provided on port 465 by servers that are compatible with the ad-hoc
-/*     SMTP in SSL protocol, rather than the standard STARTTLS protocol.
-/*     The destination \fIdomain\fR:\fIport\fR should of course provide such
+/*     Enable outgoing TLS wrapper mode, or SUBMISSIONS/SMTPS support.  This
+/*     is typically provided on port 465 by servers that are compatible with
+/*     the SMTP-in-SSL protocol, rather than the STARTTLS protocol.
+/*     The destination \fIdomain\fR:\fIport\fR must of course provide such
 /*     a service.
 /* .IP "\fB-X\fR"
 /*     Enable \fBtlsproxy\fR(8) mode. This is an unsupported mode,
@@ -1393,7 +1393,7 @@ static DNS_RR *host_addr(STATE *state, const char *host)
     return (addr_list);
 }
 
-/* dane_host_level - canidate host "dane" or degraded security level */
+/* dane_host_level - candidate host "dane" or degraded security level */
 
 static int dane_host_level(STATE *state, DNS_RR *addr)
 {
index a42ee73b873b8cabf8b987123236da21b54e912e..abdcf3af7a435c132711838b9c5c9b51de264ebd 100644 (file)
@@ -303,7 +303,7 @@ static char *get_nested_dict_name(char *type_name)
 {
     const struct {
        const char *type_col;
-       ssize_t type_col_len
+       ssize_t type_col_len;
     }      *prefix, prefixes[] = {
        DICT_TYPE_UNION ":", (sizeof(DICT_TYPE_UNION ":") - 1),
        DICT_TYPE_PIPE ":", (sizeof(DICT_TYPE_PIPE ":") - 1),
@@ -793,7 +793,7 @@ static void pre_accept(char *unused_name, char **unused_argv)
     }
 }
 
-/* post_accept - anounce our protocol name */
+/* post_accept - announce our protocol name */
 
 static void post_accept(VSTREAM *stream, char *unused_name, char **unused_argv,
                                HTABLE *unused_attr)
index 61b3434876ddff59e4e204f94d9a28f86fedd035..e0673a93d57dc521753aa5e5cc5299c510d86057 100644 (file)
@@ -392,7 +392,7 @@ QMGR_ENTRY *qmgr_entry_create(QMGR_PEER *peer, QMGR_MESSAGE *message)
      * 
      * XXX At this point in the code, the busy reference count is still less
      * than the concurrency limit (otherwise this code would not be invoked
-     * in the first place) so we have to make make some awkward adjustments
+     * in the first place) so we have to make some awkward adjustments
      * below.
      * 
      * XXX The queue length test below looks at the active queue share of an
index f341b9591d3b77d65472f4b669ac7feedd87638d..bf7aebb20354df3b13196d9bf0e832ad7afd27e7 100644 (file)
@@ -109,7 +109,7 @@ void    qmgr_feedback_init(QMGR_FEEDBACK *fb,
     double  enum_val;
     char    denom_str[30 + 1];
     double  denom_val;
-    char    slash;
+    char    slash[1 + 1];
     char    junk;
     char   *fbck_name;
     char   *fbck_val;
@@ -135,7 +135,7 @@ void    qmgr_feedback_init(QMGR_FEEDBACK *fb,
     fb->base = -1;                             /* assume error */
 
     switch (sscanf(fbck_val, "%lf %1[/] %30s%c",
-                  &enum_val, &slash, denom_str, &junk)) {
+                  &enum_val, slash, denom_str, &junk)) {
     case 1:
        fb->index = QMGR_FEEDBACK_IDX_NONE;
        fb->base = enum_val;
index 14893ddb5f6027359d651841d4bd8171c5ffd22f..41cd009532d716416991a06f4e1461f1722a0d9d 100644 (file)
@@ -199,7 +199,7 @@ void    qmqpd_peer_init(QMQPD_STATE *state)
            /*
             * Following RFC 2821 section 4.1.3, an IPv6 address literal gets
             * a prefix of 'IPv6:'. We do this consistently for all IPv6
-            * addresses that that appear in headers or envelopes. The fact
+            * addresses that appear in headers or envelopes. The fact
             * that valid_mailhost_addr() enforces the form helps of course.
             * We use the form without IPV6: prefix when doing access
             * control, or when accessing the connection cache.
index e060e58b40f3d179a1224a263d4bbb6b9c15b313..27b3543457dd09e6e45aa7e40018425a4ef445de 100644 (file)
@@ -81,7 +81,7 @@
 /*     command above.
 /* .IP \fB-bl\fR
 /*     Go into daemon mode. To accept only local connections as
-/*     with Sendmail\'s \fB-bl\fR option, specify "\fBinet_interfaces
+/*     with Sendmail's \fB-bl\fR option, specify "\fBinet_interfaces
 /*     = loopback\fR" in the Postfix \fBmain.cf\fR configuration
 /*     file.
 /* .IP \fB-bm\fR
 /*     Initialize alias database. See the \fBnewaliases\fR
 /*     command above.
 /* .IP "\fB-i\fR"
-/*     When reading a message from standard input, don\'t treat a line
+/*     When reading a message from standard input, don't treat a line
 /*     with only a \fB.\fR character as the end of input.
 /* .IP "\fB-L \fIlabel\fR (ignored)"
 /*     The logging label. Use the \fBsyslog_name\fR configuration
 /*     To send 8-bit or binary content, use an appropriate MIME encapsulation
 /*     and specify the appropriate \fB-B\fR command-line option.
 /* .IP "\fB-oi\fR"
-/*     When reading a message from standard input, don\'t treat a line
+/*     When reading a message from standard input, don't treat a line
 /*     with only a \fB.\fR character as the end of input.
 /* .IP "\fB-om\fR (ignored)"
 /*     The sender is never eliminated from alias etc. expansions.
 /*     The time after which the sender receives a copy of the message
 /*     headers of mail that is still queued.
 /* .IP "\fBimport_environment (see 'postconf -d' output)\fR"
-/*     The list of environment parameters that a privileged Postfix
+/*     The list of environment variables that a privileged Postfix
 /*     process will import from a non-Postfix parent process, or name=value
 /*     environment overrides.
 /* .IP "\fBmail_owner (postfix)\fR"
index 07b3b3a81d67467be1c5a5a61c1d3473b531310a..137ccc8028af6bc8e7286c3425a6f5dace0907c4 100644 (file)
@@ -303,7 +303,7 @@ extern MAPS *smtp_ehlo_dis_maps;    /* ehlo keyword filter */
 extern MAPS *smtp_pix_bug_maps;                /* PIX workarounds */
 
 extern MAPS *smtp_generic_maps;                /* make internal address valid */
-extern int smtp_ext_prop_mask;         /* address externsion propagation */
+extern int smtp_ext_prop_mask;         /* address extension propagation */
 extern unsigned smtp_dns_res_opt;      /* DNS query flags */
 
 #ifdef USE_TLS
@@ -471,7 +471,7 @@ extern HBC_CALL_BACKS smtp_hbc_callbacks[];
        (session->expire_time = (when))
 
  /*
-  * Encapsulate the following so that we don't expose details of of
+  * Encapsulate the following so that we don't expose details of
   * connection management and error handling to the SMTP protocol engine.
   */
 #ifdef USE_SASL_AUTH
index d110fc287fdfb6f9a9c73cf9c707afee35bcd99f..650b5306fb619a31ab02246714ecf5eb46e4bfb3 100644 (file)
@@ -888,7 +888,7 @@ static int smtp_start_tls(SMTP_STATE *state)
      * either the transport name or the values of CAfile and CApath. We use
      * the transport name.
      * 
-     * XXX: We store only one session per lookup key. Ideally the the key maps
+     * XXX: We store only one session per lookup key. Ideally the key maps
      * 1-to-1 to a server TLS session cache. We use the IP address, port and
      * ehlo response name to build a lookup key that works for split caches
      * (that announce distinct names) behind a load balancer.
@@ -1935,7 +1935,7 @@ static int smtp_loop(SMTP_STATE *state, NOCLOBBER int send_state,
                 * not clobber this non-zero value once it is set. The
                 * variable need not survive longjmp() calls, since the only
                 * setjmp() which does not return early is the one sets this
-                * condition, subquent failures always return early.
+                * condition, subsequent failures always return early.
                 */
 #define LOST_CONNECTION_INSIDE_DATA (except == SMTP_ERR_EOF)
 
index 5bbee93b24d745f38f380b2560d303435ce3d412..a4a6af0633309e1260c03ef78d1860a44728fa90 100644 (file)
@@ -5098,7 +5098,7 @@ char   *smtpd_check_rcpt(SMTPD_STATE *state, char *recipient)
      * value would block the request, without logging REJECT messages.
      * Approach: evaluate fake relay restrictions (permit_mynetworks,
      * permit_sasl_authenticated, permit_auth_destination) and log a warning
-     * if the result is DUNNO instead of OK, i.e. a reject_unauth_destinatin
+     * if the result is DUNNO instead of OK, i.e. a reject_unauth_destination
      * at the end would have blocked the request.
      * 
      * If warn_compat_break_relay_restrictions is true, always evaluate
index 179e19d8f5149def563f30ee993da30819bfd09f..3a5c1d46bb3ce87a004c0fecf8e52649033dfb93 100644 (file)
@@ -264,7 +264,7 @@ static int smtpd_peer_sockaddr_to_hostaddr(SMTPD_STATE *state)
            /*
             * Following RFC 2821 section 4.1.3, an IPv6 address literal gets
             * a prefix of 'IPv6:'. We do this consistently for all IPv6
-            * addresses that that appear in headers or envelopes. The fact
+            * addresses that appear in headers or envelopes. The fact
             * that valid_mailhost_addr() enforces the form helps of course.
             * We use the form without IPV6: prefix when doing access
             * control, or when accessing the connection cache.
index 2ebff92c99bd0592406a9817df279be837dac98d..c34f21df68ab6fc6da4dfd541c1d346baa75bce4 100644 (file)
 /* .IP \fBunix:\fR\fIpathname\fR
 /*     Listen on the UNIX-domain socket at \fIpathname\fR.
 /* .IP \fIbacklog\fR
-/*     The maximum length the queue of pending connections,
+/*     The maximum length of the queue of pending connections,
 /*     as defined by the \fBlisten\fR(2) system call.
 /* DUMP FILE FORMAT
 /* .ad
index c9f5ae047925bfb77b9b423d3bffe993ea8e170d..686b0da15192f18f59b5f0238f09ecc38573c8f0 100644 (file)
@@ -12,7 +12,7 @@
 /*     and spawns an external command whenever a connection is established.
 /*     The connection can be made over local IPC (such as UNIX-domain
 /*     sockets) or over non-local IPC (such as TCP sockets).
-/*     The command\'s standard input, output and error streams are connected
+/*     The command's standard input, output and error streams are connected
 /*     directly to the communication endpoint.
 /*
 /*     This daemon expects to be run from the \fBmaster\fR(8) process
index 489c3557be3e6f36446aa574999d350afe72a970..09a35e0171d87b2868ec910638c5324d27cd85b7 100644 (file)
@@ -319,7 +319,7 @@ static void load_pkey(pem_load_state_t *st, int pkey_type,
        if (pkey)
            EVP_PKEY_free(pkey);
 
-       /* XXX: Legacy behaviour was silent, should we stay silent? */
+       /* XXX: Legacy behavior was silent, should we stay silent? */
        if (st->mixed) {
            msg_warn("ignoring 2nd key at index %d in %s after 1st at %d",
                     st->objnum, st->source, st->keynum);
index c9f259916b368099e3e2e1605c5f61db3bbef391..b6065649b19a34d01226e16f0083625b2a95036b 100644 (file)
@@ -534,7 +534,7 @@ static int tls_auth_enable(TLS_SESS_STATE *TLScontext,
         * associated TLSA RRs.
         * 
         * Since the hostname is DNSSEC-validated, it must be a DNS FQDN and
-        * thererefore valid for use with SNI.
+        * therefore valid for use with SNI.
         */
        if (SSL_dane_enable(TLScontext->con, 0) <= 0) {
            msg_warn("%s: error enabling DANE-based certificate validation",
index 5c7a4efddafb9c44918540ca8a83a58250fb99e4..4f2f015b56a7af80dbcc31652dcf02298fabcd1b 100644 (file)
@@ -28,7 +28,7 @@
 /*     The return value is dynamically allocated with mymalloc(),
 /*     and the caller must eventually free it with myfree().
 /*
-/*     tls_cert_fprint() returns a fingerprint of the the given
+/*     tls_cert_fprint() returns a fingerprint of the given
 /*     certificate using the requested message digest, formatted
 /*     with tls_digest_encode(). Panics if the
 /*     (previously verified) digest algorithm is not found. The return
@@ -153,7 +153,7 @@ static int tlsa_cmp(const void *a, const void *b)
     return (memcmp(p->data, q->data, p->length));
 }
 
-/* tls_digest_tlsa - fold in digest of sorced TLSA records */
+/* tls_digest_tlsa - fold in digest of TLSA records */
 
 static int tls_digest_tlsa(EVP_MD_CTX *mdctx, TLS_TLSA *tlsa)
 {
@@ -293,7 +293,7 @@ char   *tls_digest_encode(const unsigned char *md_buf, int md_len)
     if (md_len > EVP_MAX_MD_SIZE || md_len >= INT_MAX / 3)
        msg_panic("unexpectedly large message digest size: %u", md_len);
 
-    /* No risk of overrunes, len is bounded by OpenSSL digest length */
+    /* No risk of overruns, len is bounded by OpenSSL digest length */
     for (i = 0; i < md_len; i++) {
        result[i * 3] = hexcodes[(md_buf[i] & 0xf0) >> 4U];
        result[(i * 3) + 1] = hexcodes[(md_buf[i] & 0x0f)];
index 338a63be4fe9eb576e6153588b677448972e1d1d..d1685136bc335d3e754aa3ec54c04e4c6c9a5b02 100644 (file)
@@ -1453,7 +1453,7 @@ void    tls_info_callback(const SSL *s, int where, int ret)
   * 
   * Modified to save a lot of strcpy and strcat by Matti Aarnio.
   * 
-  * Rewritten by Wietse to elimate fixed-size stack buffer, array index
+  * Rewritten by Wietse to eliminate fixed-size stack buffer, array index
   * multiplication and division, sprintf() and strcpy(), and lots of strlen()
   * calls. We could make it a little faster by using a fixed-size stack-based
   * buffer.
index 5b549f34edf047013239d41a3f0487ce749322ce..9cfa34a80a67e1445471252e235fd6d95d62d4d9 100644 (file)
 /* Application-specific. */
 
  /*
-  * The session_id_context indentifies the service that created a session.
+  * The session_id_context identifies the service that created a session.
   * This information is used to distinguish between multiple TLS-based
   * servers running on the same server. We use the name of the mail system.
   */
index 3b937339380d8d00b444fbfae0ef4dc918a04995..28ca96128efb2dd8cd300a563763952092cf8ca4 100644 (file)
@@ -503,7 +503,7 @@ static int tlsmgr_key(VSTRING *buffer, int timeout)
            return (TLS_MGR_STAT_ERR);
        }
     }
-    /* Return value overrites name buffer */
+    /* Return value overwrites name buffer */
     vstring_memcpy(buffer, (char *) key, sizeof(*key));
     return (TLS_MGR_STAT_OK);
 }
index a2a01b77c4645566a203482eaa20c495562336ab..8361776298abc31943ff835cb74e2f34c35cad2c 100644 (file)
 /* .IP "\fBtlsproxy_enforce_tls ($smtpd_enforce_tls)\fR"
 /*     Mandatory TLS: announce STARTTLS support to remote SMTP clients, and
 /*     require that clients use TLS encryption.
+/* .IP "\fBtlsproxy_client_use_tls ($smtp_use_tls)\fR"
+/*     Opportunistic mode: use TLS when a remote server announces TLS
+/*     support.
+/* .IP "\fBtlsproxy_client_enforce_tls ($smtp_enforce_tls)\fR"
+/*     Enforcement mode: require that SMTP servers use TLS encryption.
 /* RESOURCE CONTROLS
 /* .ad
 /* .fi
@@ -923,7 +928,7 @@ static void tlsp_strategy(TLSP_STATE *state)
      * block. In practice, postscreen(8) limits the number of client
      * commands, and thus postscreen(8)'s output will fit in a kernel buffer.
      * A remote SMTP server is not supposed to flood the local SMTP client
-     * with massive replies; it it does, then the local SMTP client should
+     * with massive replies; if it does, then the local SMTP client should
      * deal with it.
      */
     if (NBBIO_WRITE_PEND(plaintext_buf) > 0) {
@@ -971,7 +976,7 @@ static void tlsp_ciphertext_event(int event, void *context)
     TLSP_STATE *state = (TLSP_STATE *) context;
 
     /*
-     * Without a TLS quivalent of the NBBIO layer, we must decode the events
+     * Without a TLS equivalent of the NBBIO layer, we must decode the events
      * ourselves and do the ciphertext I/O. Then, we can decide if we want to
      * read or write more ciphertext.
      */
index 4e9ea2a4d7f22577897d99c4d346672affc75d7a..40e6aa5701e3c419021ab54c4425b07732cd0932 100644 (file)
@@ -222,7 +222,7 @@ static void resolve_addr(RES_CONTEXT *rp, char *sender, char *addr,
      * This suggests that we parse the address in internalized (unquoted) form.
      * Unfortunately, if we do that, the unparser generates incorrect white
      * space between adjacent non-operator tokens. Example: ``first last''
-     * needs white space, but ``stuff[stuff]'' does not. This is is not a
+     * needs white space, but ``stuff[stuff]'' does not. This is not a
      * problem when unparsing the result from parsing externalized forms,
      * because the parser/unparser were designed for valid externalized forms
      * where ``stuff[stuff]'' does not happen.
index cd62d672015381313f4d1de92ce0ca99fc31cc38..90a2c4f91dfd1f2231d63f5f35f99f3509d3d78b 100644 (file)
@@ -31,7 +31,7 @@
 /*     before calling transport_lookup().
 /*
 /*     transport_post_init() can be invoked after entering the chroot
-/*     jail, and must be called before before calling transport_lookup().
+/*     jail, and must be called before calling transport_lookup().
 /*
 /*     transport_lookup() finds the channel and nexthop for the given
 /*     domain, and returns 1 if something was found.   Otherwise, 0
index d5706545661a895b819596ee7bc49d883baf7bd0..675af80f8f088b0e7f7ab6d37d5346d3162d0330 100644 (file)
@@ -48,7 +48,7 @@
 /* .ad
 /* .fi
 /*     The \fBtrivial-rewrite\fR(8) servers run under control by
-/*     the Postfix master
+/*     the Postfix master(8)
 /*     server.  Each server can handle multiple simultaneous connections.
 /*     When all servers are busy while a client connects, the master
 /*     creates a new server process, provided that the trivial-rewrite
@@ -521,7 +521,7 @@ static void pre_accept(char *unused_name, char **unused_argv)
 
 #endif
 
-/* post_accept - anounce our protocol name */
+/* post_accept - announce our protocol name */
 
 static void post_accept(VSTREAM *stream, char *unused_name, char **unused_argv,
                                HTABLE *unused_attr)
index d6a4ef3eb72fc1e0282a748a3f953485ed1629f4..a364e243998a63d1d145dc5c0b321414e268af45 100644 (file)
@@ -80,7 +80,7 @@
 /*
 /*     argv_terminate() null-terminates its string array argument.
 /*
-/*     argv_truncate() trucates its argument to the specified
+/*     argv_truncate() truncates its argument to the specified
 /*     number of entries, but does not reallocate memory. The
 /*     result is null-terminated.
 /*
index d3bd10317fa28d2d25d27334557b85088b93e0fb..ae58e5d4cb1e8d4e3665300dfd746f4fccf32b10 100644 (file)
 /*     behind" strategy does not interfere with database access,
 /*     allow dict_cache_sequence() to run to completion.
 /* .IP table
-/*     A bare dictonary handle.
+/*     A bare dictionary handle.
 /* DIAGNOSTICS
 /*     When a request is satisfied, the lookup routine returns
 /*     non-null, and the update, delete and sequence routines
index 85e49a4ca644ba65877736d74215cb9e5f3c323c..a9133cc3555f9361cbfa224d082fb19ffb2c91eb 100644 (file)
@@ -387,7 +387,7 @@ static DICT *dict_cdbm_open(const char *path, int dict_flags)
        if (st0.st_ino == st1.st_ino && st0.st_dev == st1.st_dev
            && st0.st_rdev == st1.st_rdev && st0.st_nlink == st1.st_nlink
            && st0.st_nlink > 0)
-           break;                              /* successefully opened */
+           break;                              /* successfully opened */
 
        close(fd);
 
index 706d397a0f215b13bc24a06392fca8fa7c3ec378..9cd1128ee71355eb08684c3ba2e695f34da7a632 100644 (file)
@@ -687,7 +687,8 @@ static DICT *dict_db_open(const char *class, const char *path, int open_flags,
        if (dbenv) dbenv->close(dbenv, 0); \
        if (lock_fd >= 0) (void) close(lock_fd); \
        if (db_base_buf) vstring_free(db_base_buf); \
-       if (db_path) myfree(db_path); return (_dict); \
+       if (db_path) myfree(db_path); \
+       return (_dict); \
     } while (0)
 #endif
 
index eb86b3522b301caf0212cf4f4039b3211a3b1b0f..c6ea74c9af12c1e2aa51c81ad488b84681a02ad3 100644 (file)
@@ -45,7 +45,7 @@
 /*     memory that are associated with this DICT.
 /*
 /*     dict_file_get_error() should be called only after error;
-/*     it returns a desciption of the problem. Storage is owned
+/*     it returns a description of the problem. Storage is owned
 /*     by the caller.
 /*
 /*     dict_file_lookup() wraps the dictionary lookup method and
index 5fab965897273c40bbe28bab4cc7de6dbe2af2a7..36f79b355c39b9e48ac92f3fadee54f32a1f69a4 100644 (file)
@@ -154,7 +154,7 @@ DICT   *dict_random_open(const char *name, int open_flags, int dict_flags)
     dict_random->dict.owner.uid = 0;
 
     /*
-     * Split the name name into its constituent parts.
+     * Split the table name into its constituent parts.
      */
     if ((len = balpar(name, CHARS_BRACE)) == 0 || name[len] != 0
        || *(saved_name = mystrndup(name + 1, len - 2)) == 0
index 4aa08b1404f666629489b72ccb2927c29df0e4fd..b143d11cc53f8062a94e12eeac693a2a0a280a6e 100644 (file)
@@ -5,7 +5,7 @@
 /* NAME
 /*     dict_random 3h
 /* SUMMARY
-/*     dictionary manager interface for ramdomized tables
+/*     dictionary manager interface for randomized tables
 /* SYNOPSIS
 /*     #include <dict_random.h>
 /* DESCRIPTION
index 5012fb9e2739a1dbb35f89b89db976508d042265..69eb17b6ff52f76378d1928aaaaf945646c63cb6 100644 (file)
@@ -202,7 +202,7 @@ DICT   *dict_thash_open(const char *path, int open_flags, int dict_flags)
             * Store the value under the key. Handle duplicates
             * appropriately. XXX Move this into dict_ht, but 1) that map
             * ignores duplicates by default and we would have to check that
-            * we won't break existing code that depends on such benavior; 2)
+            * we won't break existing code that depends on such behavior; 2)
             * by inlining the checks here we can degrade gracefully instead
             * of terminating with a fatal error. See comment in
             * dict_inline.c.
index efdc2079907b2f7a3f8ef559b0460d74c01e719b..26ca0dd9a3e83c77cc9e2e5209aa881ca562f9b1 100644 (file)
@@ -2,5 +2,5 @@ postmap: warning: dict_thash.in, line 1: unbalanced '"' in '"the answer is 42' -
 postmap: warning: dict_thash.in, line 2: record is in "key: value" format; is this an alias file?
 postmap: warning: dict_thash.in, line 3: expected format: key whitespace value -- ignoring this line
 postmap: warning: dict_thash.in, line 5: duplicate entry: "aaa"
-aaa    bbb
 xxx:   yyy
+aaa    bbb
index df0e21cd37f0c907f9f9c4a57c7d1c3446d6aa80..5286e5bca28b77bdcf20c4b7a7329b49f7188e56 100644 (file)
@@ -2,7 +2,7 @@
 /* NAME
 /*     dup2_pass_on_exec 1
 /* SUMMARY
-/*     dup2 close-on-exec behaviour test program
+/*     dup2 close-on-exec behavior test program
 /* SYNOPSIS
 /*     dup2_pass_on_exec
 /* DESCRIPTION
index a7c1059cc00b705be321f6b55bc418fc89ae78d0..9d76b9314cd03b1c98284d76dbbdd7f9d5ec0732 100644 (file)
@@ -262,7 +262,7 @@ EDIT_FILE *edit_file_open(const char *path, int flags, mode_t mode)
         * content and its temporary pathname (within the rules of the
         * cooperative protocol). But wait, there is more.
         * 
-        * There are many opportunies for trouble when opening a pre-existing
+        * There are many opportunities for trouble when opening a pre-existing
         * output file. Here are just a few.
         * 
         * - Victor observes that a system crash in the middle of the
@@ -315,7 +315,7 @@ void    edit_file_cleanup(EDIT_FILE *ep)
     EDIT_FILE_FREE(ep);
 }
 
-/* edit_file_close - rename the file into place and and close the file */
+/* edit_file_close - rename the file into place and close the file */
 
 int     edit_file_close(EDIT_FILE *ep)
 {
index 13e22c8d3ca74a6c529239dd6d1ca41ab4e08ec7..0b106bac825b8fc8a796148e568a171c83ce74d9 100644 (file)
@@ -25,8 +25,8 @@
 /*     EXTPAR_FLAG_NONE, or the bitwise OR of one or more flags:
 /* .RS
 /* .IP EXTPAR_FLAG_EXTRACT
-/*     This flag is intended to instruct expar() callers that
-/*     expar() should be invoked. It has no effect on expar()
+/*     This flag is intended to instruct extpar() callers that
+/*     extpar() should be invoked. It has no effect on expar()
 /*     itself.
 /* .IP EXTPAR_FLAG_STRIP
 /*     Skip whitespace after the opening parenthesis, and trim
index d3421fe592f7eca7c17a63e9facf0872380ba70a..d3fd9852ef45ce3f9a61dddfdcdc80d91263e913 100644 (file)
@@ -1,5 +1,5 @@
  /*
-  * This is is a regression test for all the things that gcc is meant to warn
+  * This is a regression test for all the things that gcc is meant to warn
   * about.
   * 
   * gcc version 3 breaks several tests:
index 48838e5a63395128d2e574cc73091a3e2c2c3afc..addb511461276ca1e20212084fda39a36ff2ee8e 100644 (file)
 /*     values to be remembered are not character pointers, proper casts
 /*     should be used or the code will not be portable.
 /*
+/*     To thwart collision attacks, the hash function is seeded
+/*     once from /dev/urandom, and if that is unavailable, from
+/*     wallclock-time and monotonic system clocks. To disable
+/*     seeding for tests, specify NORANDOMIZE in the environment
+/*     (the value does not matter).
+/*
 /*     htable_create() creates a table of the specified size and returns a
 /*     pointer to the result. The lookup keys are saved with mystrdup().
 /*     htable_enter() stores a (key, value) pair into the specified table
 
 #include <sys_defs.h>
 #include <string.h>
+#include <sys/time.h>
+#include <time.h>
+#include <stdint.h>
+#include <fcntl.h>
+#include <unistd.h>
 
 /* Local stuff */
 
 #include "msg.h"
 #include "htable.h"
 
+ /*
+  * Fall back to a mix of absolute and time-since-boot information in the
+  * rare case that /dev/urandom is unavailable.
+  */
+#ifdef CLOCK_UPTIME
+#define NON_WALLTIME_CLOCK      CLOCK_UPTIME
+#elif defined(CLOCK_BOOTTIME)
+#define NON_WALLTIME_CLOCK      CLOCK_BOOTTIME
+#elif defined(CLOCK_MONOTONIC)
+#define NON_WALLTIME_CLOCK      CLOCK_MONOTONIC
+#elif defined(CLOCK_HIGHRES)
+#define NON_WALLTIME_CLOCK      CLOCK_HIGHRES
+#endif
+
+/* htable_seed - randomize the hash function */
+
+static size_t htable_seed(void)
+{
+    uint32_t result = 0;
+
+    /*
+     * Medium-quality seed, for defenses against local and remote attacks.
+     */
+    int     fd;
+    int     count;
+
+    if ((fd = open("/dev/urandom", O_RDONLY)) > 0) {
+       count = read(fd, &result, sizeof(result));
+       (void) close(fd);
+       if (count == sizeof(result))
+           return (result);
+    }
+
+    /*
+     * Low-quality seed, for defenses against remote attacks. Based on 1) the
+     * time since boot (good when an attacker knows the program start time
+     * but not the system boot time), and 2) absolute time (good when an
+     * attacker does not know the program start time). Assumes a system with
+     * better than microsecond resolution, and a network stack that does not
+     * leak the time since boot, for example, through TCP or ICMP timestamps.
+     * With those caveats, this seed is good for 20-30 bits of randomness.
+     */
+#ifdef NON_WALLTIME_CLOCK
+    {
+       struct timespec ts;
+
+       if (clock_gettime(NON_WALLTIME_CLOCK, &ts) != 0)
+           msg_fatal("clock_gettime() failed: %m");
+       result += (size_t) ts.tv_sec ^ (size_t) ts.tv_nsec;
+    }
+#elif defined(USE_GETHRTIME)
+    result += gethrtime();
+#endif
+
+#ifdef CLOCK_REALTIME
+    {
+       struct timespec ts;
+
+       if (clock_gettime(CLOCK_REALTIME, &ts) != 0)
+           msg_fatal("clock_gettime() failed: %m");
+       result += (size_t) ts.tv_sec ^ (size_t) ts.tv_nsec;
+    }
+#else
+    {
+       struct timeval tv;
+
+       if (GETTIMEOFDAY(&tv) != 0)
+           msg_fatal("gettimeofday() failed: %m");
+       result += (size_t) tv.tv_sec + (size_t) tv.tv_usec;
+    }
+#endif
+    return (result + getpid());
+}
+
 /* htable_hash - hash a string */
 
 static size_t htable_hash(const char *s, size_t size)
 {
-    size_t  h = 0;
+    static size_t seed = 0;
+    static int randomize = 1;
+    size_t  h;
     size_t  g;
 
     /*
-     * From the "Dragon" book by Aho, Sethi and Ullman.
+     * Initialize.
      */
+    if (seed == 0 && randomize) {
+       if (getenv("NORANDOMIZE"))
+           randomize = 0;
+       else
+           seed = htable_seed();
+#if 0
+       if (msg_verbose)
+           msg_info("htable_hash: seed=0x%lx", (long) seed);
+#endif
+    }
 
+    /*
+     * Inspired the "Dragon" book by Aho, Sethi and Ullman. Updated to use a
+     * seed, and to maintain 32+ bit state.
+     */
+    h = seed;
     while (*s) {
-       h = (h << 4U) + *(unsigned const char *) s++;
-       if ((g = (h & 0xf0000000)) != 0) {
-           h ^= (g >> 24U);
-           h ^= g;
-       }
+       g = h & 0xf0000000;
+       h = ((h << 4U) | (g >> 28U)) + *(unsigned const char *) s++;
     }
     return (h % size);
 }
@@ -392,6 +491,7 @@ int     main(int unused_argc, char **unused_argv)
     /*
      * Load a large number of strings and delete them in a random order.
      */
+    msg_verbose = 1;
     hash = htable_create(10);
     while (vstring_get(buf, VSTREAM_IN) != VSTREAM_EOF)
        htable_enter(hash, vstring_str(buf), CAST_INT_TO_VOID_PTR(count++));
index 013c952542f8f6af896a5e38d2bd6e664483df39..44e540d646103d4f965126f2c60d970f14905d93 100644 (file)
@@ -19,9 +19,9 @@
 /* .IP libname
 /*     shared-library pathname.
 /* .IP libfuncs
-/*     Array of LIB_FN strucures. The last name member must be null.
+/*     Array of LIB_FN structures. The last name member must be null.
 /* .IP libdata
-/*     Array of LIB_DP strucures. The last name member must be null.
+/*     Array of LIB_DP structures. The last name member must be null.
 /* SEE ALSO
 /*     msg(3) diagnostics interface
 /* DIAGNOSTICS
index 8817e910287305139f5182a9e22d0b551a6641e3..f40819eb5d133214af965b85c331e869edd40e61 100644 (file)
 /*
 /*     The following substitutions are supported:
 /* .IP "$name, ${name}"
-/*     Unconditional attribute-based substition. The result is the
+/*     Unconditional attribute-based substitution. The result is the
 /*     named attribute value (empty if the attribute is not defined)
 /*     after optional further named attribute substitution.
 /* .IP "${name?text}, ${name?{text}}"
-/*     Conditional attribute-based substition. If the named attribute
+/*     Conditional attribute-based substitution. If the named attribute
 /*     value is non-empty, the result is the given text, after
 /*     named attribute expansion and relational expression evaluation.
 /*     Otherwise, the result is empty.  Whitespace before or after
 /*     {text} is ignored.
 /* .IP "${name:text}, ${name:{text}}"
-/*     Conditional attribute-based substition. If the attribute
+/*     Conditional attribute-based substitution. If the attribute
 /*     value is empty or undefined, the expansion is the given
 /*     text, after named attribute expansion and relational expression
 /*     evaluation.  Otherwise, the result is empty.  Whitespace
 /*     before or after {text} is ignored.
 /* .IP "${name?{text1}:{text2}}, ${name?{text1}:text2}"
-/*     Conditional attribute-based substition. If the named attribute
+/*     Conditional attribute-based substitution. If the named attribute
 /*     value is non-empty, the result is text1.  Otherwise, the
 /*     result is text2. In both cases the result is subject to
 /*     named attribute expansion and relational expression evaluation.
 /*     Whitespace before or after {text1} or {text2} is ignored.
 /* .IP "${{text1} == ${text2} ? {text3} : {text4}}"
-/*     Relational expression-based substition.  First, the content
+/*     Relational expression-based substitution.  First, the content
 /*     of {text1} and ${text2} is subjected to named attribute and
 /*     relational expression-based substitution.  Next, the relational
 /*     expression is evaluated. If it evaluates to "true", the
@@ -620,7 +620,7 @@ static int mac_expand_callback(int type, VSTRING *buf, void *ptr)
 
            /*
             * Look up the named parameter. Todo: allow the lookup function
-            * to specify if the result is safe for $name expanson.
+            * to specify if the result is safe for $name expansion.
             */
            lookup = mc->lookup(start, lookup_mode, mc->context);
        }
index 4a2398218997434598b532c30afaccc054b0ce4f..fbe6347935867fbd817f78a67610db48978e7b88 100644 (file)
@@ -38,7 +38,7 @@
 #define MAC_EXP_OP_TOK_GT      6       /* > */
 
  /*
-  * Relational operator results. An enum to discourage asuming that 0 is
+  * Relational operator results. An enum to discourage assuming that 0 is
   * false, !0 is true.
   */
 typedef enum MAC_EXP_OP_RES {
index a80eb2f79050d08a152625e4294b5f0a29d2f28f..5edafde8d11d5c803a493a588b173d95a4261367 100644 (file)
@@ -762,7 +762,7 @@ void    freeaddrinfo(struct addrinfo * ai)
     struct addrinfo *next;
 
     /*
-     * Artefact of implementation: tolerate a null pointer argument.
+     * Artifact of implementation: tolerate a null pointer argument.
      */
     for (ap = ai; ap != 0; ap = next) {
        next = ap->ai_next;
index 92e956fa2afeb1b0b2a54be9d3f2c002659dc6d5..284d4fa9d308c166f08e47e69d820fd16473affb 100644 (file)
@@ -72,7 +72,7 @@
 /*     comma and/or whitespace characters. The "long_" version returns
 /*     a "long int" bitmask, rather than an "int" bitmask.
 /*
-/*     str_name_mask() translates a mask into its equlvalent names.
+/*     str_name_mask() translates a mask into its equivalent names.
 /*     The result is written to a static buffer that is overwritten
 /*     upon each call. The "long_" version converts a "long int"
 /*     bitmask, rather than an "int" bitmask.
index de83564cde4d72e32dc3026b2319aa36d6565eee..40fd56d3bad78b8fcbb53144e333889f001d8367 100644 (file)
@@ -52,7 +52,7 @@ int     sane_link(const char *from, const char *to)
        return (0);
 
     /*
-     * Woops. Save errno, and see if the error is an NFS artefact. If it is,
+     * Woops. Save errno, and see if the error is an NFS artifact. If it is,
      * pretend the error never happened.
      */
     saved_errno = errno;
index 4c551605ab0ff4e4984f1731431f0da2d4c58e03..3b301bda618007f284afa3e2bea6793d5ecb8e1e 100644 (file)
@@ -51,7 +51,7 @@ int     sane_rename(const char *from, const char *to)
        return (0);
 
     /*
-     * Woops. Save errno, and see if the error is an NFS artefact. If it is,
+     * Woops. Save errno, and see if the error is an NFS artifact. If it is,
      * pretend the error never happened.
      */
     saved_errno = errno;
index 83a035e76c2ef9140cf02f053a352b1debe2b585..3df8963a932dc75e9dddb0dcc9f444b6ae6f2f2c 100644 (file)
@@ -19,7 +19,7 @@
 /* .IP block_mode
 /*     Either NON_BLOCKING for a non-blocking socket, or BLOCKING for
 /*     blocking mode.
-/* DIAGNOSIICS
+/* DIAGNOSTICS
 /*     Fatal errors: path too large, can't create socket.
 /*
 /*     Other errors result in a -1 result value, with errno indicating
index 3dc677b1ecfc9c3fe966d9893b1b3d0100561abf..e73ad4e4e02b18013e68e31ccf8a8001ef8c20de 100644 (file)
@@ -19,7 +19,7 @@
 /* .IP backlog
 /*     Either NON_BLOCKING for a non-blocking socket, or BLOCKING for
 /*     blocking mode.
-/* DIAGNOSIICS
+/* DIAGNOSTICS
 /*     Fatal errors: path too large, can't create socket.
 /* LICENSE
 /* .ad
index d59f0898202ba6ea52d37b6ac152451ebb72175c..9522e6151557f4940e144d8994147fe335869170 100644 (file)
@@ -13,7 +13,7 @@
 /*     for sending or receiving file descriptors over UNIX-domain
 /*     sockets.
 /*
-/*     set_unix_pass_fd_fix() takes a list of workarouds in external
+/*     set_unix_pass_fd_fix() takes a list of workarounds in external
 /*     form, and stores their internal representation. The result
 /*     is used by unix_send_fd() and unix_recv_fd().
 /*
index 941d476a97e1f9ad9e5b3a9066bb15e3b5bf9bb9..43897eb82556f3a3b44d58631e18eee586dcaa43 100644 (file)
 /*     Specifies a hard upper limit on a string's length. When the
 /*     length would be exceeded, the program simulates a memory
 /*     allocation problem (i.e. it terminates through msg_fatal()).
-/*     This fuctionality is currently unimplemented.
+/*     This functionality is currently unimplemented.
 /* .IP "CA_VSTRING_CTL_EXACT (no argument)"
 /*     Allocate the requested amounts, instead of rounding up.
 /*     This should be used for tests only.
index 9665b5597423f7a6fb9f1639433911233b2f87d4..6fa9f1e67e4a43f3dfb1db0832d3ea78388ff74c 100644 (file)
 /*     RFC 822 (ARPA Internet Text Messages)
 /* DIAGNOSTICS
 /*     Mail bounces when the recipient has no mailbox or when the
-/*     recipient is over disk quota. In all other cases, mail for
+/*     recipient is over disk quota. In all other problem cases, mail for
 /*     an existing recipient is deferred and a warning is logged.
 /*
 /*     Problems and transactions are logged to \fBsyslogd\fR(8)
 /* .PP
 /*     Available in Postfix version 2.0 and later:
 /* .IP "\fBvirtual_mailbox_domains ($virtual_mailbox_maps)\fR"
-/*     Postfix is final destination for the specified list of domains;
+/*     Postfix is the final destination for the specified list of domains;
 /*     mail is delivered via the $virtual_transport mail delivery transport.
 /* .IP "\fBvirtual_transport (virtual)\fR"
 /*     The default mail delivery transport and next-hop destination for
index 601f7874bc914d2d05438bf5a5c13f2e20360c37..1d1c570637cd48342eef22ab369fae45eaa1d6ed 100644 (file)
@@ -89,7 +89,7 @@
 #define AUTH_PROTOCOL_MINOR_VERSION 0
 
  /*
-  * Encorce read/write time limits, so that we can produce accurate
+  * Enforce read/write time limits, so that we can produce accurate
   * diagnostics instead of getting killed by the watchdog timer.
   */
 #define AUTH_TIMEOUT   10
@@ -278,7 +278,8 @@ static int xsasl_dovecot_server_connect(XSASL_DOVECOT_SERVER_IMPL *xp)
        fd = unix_connect(path, BLOCKING, AUTH_TIMEOUT);
     }
     if (fd < 0) {
-       msg_warn("SASL: Connect to %s failed: %m", xp->socket_path);
+       msg_warn("SASL: Connect to Dovecot auth socket '%s' failed: %m",
+                xp->socket_path);
        return (-1);
     }
     sasl_stream = vstream_fdopen(fd, O_RDWR);