]> git.ipfire.org Git - thirdparty/postfix.git/commitdiff
postfix-3.12-20251222
authorWietse Z Venema <wietse@porcupine.org>
Mon, 22 Dec 2025 05:00:00 +0000 (00:00 -0500)
committerViktor Dukhovni <ietf-dane@dukhovni.org>
Tue, 23 Dec 2025 02:06:18 +0000 (13:06 +1100)
59 files changed:
postfix/HISTORY
postfix/README_FILES/COMPATIBILITY_README
postfix/RELEASE_NOTES
postfix/RELEASE_NOTES-3.11 [new file with mode: 0644]
postfix/conf/main.cf
postfix/conf/relocated
postfix/conf/transport
postfix/html/COMPATIBILITY_README.html
postfix/html/cleanup.8.html
postfix/html/postconf.5.html
postfix/html/relocated.5.html
postfix/html/smtpd.8.html
postfix/html/transport.5.html
postfix/man/man5/postconf.5
postfix/man/man5/relocated.5
postfix/man/man5/transport.5
postfix/man/man8/cleanup.8
postfix/man/man8/smtpd.8
postfix/mantools/postlink
postfix/proto/COMPATIBILITY_README.html
postfix/proto/postconf.proto
postfix/proto/relocated
postfix/proto/stop
postfix/proto/stop.double-history
postfix/proto/transport
postfix/src/cleanup/cleanup.c
postfix/src/cleanup/cleanup_milter.c
postfix/src/discard/discard.c
postfix/src/global/ascii_header_text.c
postfix/src/global/ascii_header_text.h
postfix/src/global/dict_proxy.c
postfix/src/global/dict_sqlite_test.c
postfix/src/global/haproxy_srvr.c
postfix/src/global/haproxy_srvr.h
postfix/src/global/mail_params.c
postfix/src/global/mail_params.h
postfix/src/global/mail_version.h
postfix/src/global/pol_stats.h
postfix/src/global/rfc2047_code.c
postfix/src/global/rfc2047_code.h
postfix/src/global/sendopts.c
postfix/src/milter/milter8.c
postfix/src/milter/test-milter.c
postfix/src/postconf/postconf_edit.c
postfix/src/smtp/smtp.c
postfix/src/smtp/smtp_reqtls_policy_test.c
postfix/src/smtpd/smtpd.c
postfix/src/smtpd/smtpd_chat.c
postfix/src/smtpd/smtpd_peer_test.c
postfix/src/tls/tls_client.c
postfix/src/tls/tls_dh.c
postfix/src/util/dict_open.c
postfix/src/util/myaddrinfo.c
postfix/src/util/myaddrinfo.h
postfix/src/util/normalize_v4mapped_addr.c
postfix/src/util/normalize_v4mapped_addr_test.c
postfix/src/util/normalize_ws.c
postfix/src/util/ossl_digest.c
postfix/src/util/sys_defs.h

index ac2103930480e70e9d1dbd333ab409e092bc5461..f6578bba8e704a1ba3e445d695d72e132ef4800f 100644 (file)
@@ -29185,6 +29185,8 @@ Apologies for any names omitted.
        after processing the key_format feature. This prevents a
        database access error when keys may exceed the memcache
        server's key length limit (usually, 250 bytes). Files:
+       global/dict_memcache.c, proto/memcache_table, util/ossl_digest.c,
+       ossl_digest.h, ossl_digest_test.c.
 
 20250523
 
@@ -30208,3 +30210,61 @@ Apologies for any names omitted.
        protocol mismatch, caused by a missing update for a code
        path in the showq daemon. Problem reported by Florian
        Piekert, diagnosed by John Fawcett. File: showq/showq.c.
+
+20241221
+
+       Cleanup: re-indented postfix source code to make it easier
+       to maintain. No change in compiler output. Files:
+       discard/discard.c, global/ascii_header_text.c,
+       global/ascii_header_text.h, global/dict_proxy.c,
+       global/dict_sqlite_test.c, global/haproxy_srvr.c,
+       global/haproxy_srvr.h, global/pol_stats.h, global/rfc2047_code.c,
+       global/rfc2047_code.h, global/sendopts.c, milter/milter8.c,
+       milter/test-milter.c, postconf/postconf_edit.c, smtp/smtp.c,
+       smtp/smtp_reqtls_policy_test.c, smtpd/smtpd.c, smtpd/smtpd_chat.c,
+       smtpd/smtpd_peer_test.c, tls/tls_client.c, tls/tls_dh.c,
+       util/dict_open.c, util/myaddrinfo.c, util/myaddrinfo.h,
+       util/normalize_v4mapped_addr.c,
+       util/normalize_v4mapped_addr_test.c, util/normalize_ws.c,
+       util/ossl_digest.c, util/sys_defs.h, global/ascii_header_text.c,
+       global/ascii_header_text.h, global/dict_proxy.c,
+       global/dict_sqlite_test.c, global/haproxy_srvr.c,
+       global/haproxy_srvr.h, global/pol_stats.h, global/rfc2047_code.c,
+       global/rfc2047_code.h, global/sendopts.c, milter/milter8.c,
+       milter/test-milter.c, postconf/postconf_edit.c, smtp/smtp.c,
+       smtp/smtp_reqtls_policy_test.c, smtpd/smtpd.c, smtpd/smtpd_chat.c,
+       smtpd/smtpd_peer_test.c, tls/tls_client.c, tls/tls_dh.c,
+       util/dict_open.c, util/myaddrinfo.c, util/myaddrinfo.h,
+       util/normalize_v4mapped_addr.c,
+       util/normalize_v4mapped_addr_test.c, util/normalize_ws.c,
+       util/ossl_digest.c, util/sys_defs.h.
+
+       Documentation: update the transport(5) manpage text for the
+       case that transport maps specify no transport or no nexthop.
+       In the presentation of address classes, identify the relative
+       precedence of transport_maps on next-hop destination
+       selection. File: proto/transport.
+
+       Cleanup: change a non_smtpd_milters 'shutdown' response
+       from a hard error ('message content rejected') into a soft
+       error ('queue file write error') for consistency with
+       smtpd_milters. File: cleanup/cleanup_milter.c.
+
+       Documentation: regenerated manpages, and propagated parameter
+       changes from postconf(5) to on-line parameter summaries in
+       program manpages. Files: cleanup/cleanup.c, smtpd/smtpd.c.
+
+20251222
+
+       Revert the 20250623 change to the default value for
+       lmtp_tls_security_level, back to its Postfix 3.10 empty
+       value. There is no default TLS security level that makes
+       sense for connections over UNIX-domain, loopback TCP, and
+       non-loopback TCP sockets. Files: global/mail_params.[hc],
+       smtp/smtp.c.
+
+       Documentation: added RELEASE_NOTES_3.11, added example to
+       relocated(5) manpage; updated examples for opportunistic
+       TLS status logging in postconf(5).
+
+       Opened the postfix-3.12-yyyymmdd development series.
index 8c3a0b71b4dd2c182cda530f8bad114ffb13df36..145c6825f48b7080eb0e85930f15add779f44eea 100644 (file)
@@ -403,10 +403,10 @@ permanent in main.cf:
 
 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\bde\bef\bfa\bau\bul\blt\bt s\bse\bet\btt\bti\bin\bng\bg x\bxx\bxx\bx_\b_s\bse\bec\bcu\bur\bri\bit\bty\by_\b_l\ble\bev\bve\bel\bl=\b=(\b(e\bem\bmp\bpt\bty\by)\b)
 
-Postfix version 3.11 changes the default value for client TLS security levels
-from "empty" to "may". The backwards-compatibility safety net is designed to
-prevent an unexpected change in mail sending behavior when Postfix is updated
-from an older version.
+When built with TLS support, Postfix version 3.11 changes the default SMTP
+client TLS security level from "empty" to "may". The backwards-compatibility
+safety net is designed to prevent an unexpected change in mail sending behavior
+when Postfix is updated from an older version.
 
 There is no equivalent change for Postfix server TLS security levels, because
 changing the level alone is not sufficient. Server-side TLS requires that at
index 3a4e08fa00c71a599272951166622c91dac81c6b..392f191d2a93b3192aab9dfeeace324c6eaf6f5e 100644 (file)
@@ -1,19 +1,19 @@
-This is the Postfix 3.11 experimental release.
+This is the Postfix 3.12 snapshot release.
 
-The stable Postfix release is called postfix-3.10.x where 3=major
-release number, 10=minor release number, x=patchlevel. The stable
+The stable Postfix release is called postfix-3.11.x where 3=major
+release number, 11=minor release number, x=patchlevel. The stable
 release never changes except for patches that address bugs or
 emergencies. Patches change the patchlevel and the release date.
 
 New features are developed in snapshot releases. These are called
-postfix-3.11-yyyymmdd where yyyymmdd is the release date (yyyy=year,
+postfix-3.12-yyyymmdd where yyyymmdd is the release date (yyyy=year,
 mm=month, dd=day). Patches are never issued for snapshot releases;
 instead, a new snapshot is released.
 
 The mail_release_date configuration parameter (format: yyyymmdd)
 specifies the release date of a stable release or snapshot release.
 
-If you upgrade from Postfix 3.9 or earlier, please read RELEASE_NOTES-3.10
+If you upgrade from Postfix 3.10 or earlier, please read RELEASE_NOTES-3.11
 before proceeding.
 
 Dual license
diff --git a/postfix/RELEASE_NOTES-3.11 b/postfix/RELEASE_NOTES-3.11
new file mode 100644 (file)
index 0000000..2af5f42
--- /dev/null
@@ -0,0 +1,277 @@
+This is the Postfix 3.11 stable release.
+
+The stable Postfix release is called postfix-3.11.x where 3=major
+release number, 11=minor release number, x=patchlevel. The stable
+release never changes except for patches that address bugs or
+emergencies. Patches change the patchlevel and the release date.
+
+New features are developed in snapshot releases. These are called
+postfix-3.12-yyyymmdd where yyyymmdd is the release date (yyyy=year,
+mm=month, dd=day). Patches are never issued for snapshot releases;
+instead, a new snapshot is released.
+
+The mail_release_date configuration parameter (format: yyyymmdd)
+specifies the release date of a stable release or snapshot release.
+
+If you upgrade from Postfix 3.9 or earlier, please read RELEASE_NOTES-3.10
+before proceeding.
+
+Dual license
+------------
+
+As of Postfix 3.2.5 this software is distributed with a dual license:
+in addition to the historical IBM Public License (IPL) 1.0, it is
+now also distributed with the more recent Eclipse Public License
+(EPL) 2.0. Recipients can choose to take the software under the
+license of their choice. Those who are more comfortable with the
+IPL can continue with that license.
+
+Major changes - database
+------------------------
+
+[Feature 20250321] Safety: the SQLite client now logs a warning
+when a query uses double quotes instead of the Postfix-recommended
+single quotes. The non-recommended form is not protected against
+SQL injection.
+
+[Feature 20250509] Support to run all memcache lookup keys through
+an OpenSSL digest function. This prevents a database access error
+when lookup keys may exceed the memcache server's key length limit
+(usually, 250 bytes).
+
+[Feature 20250624] Support for a new "debug:" pseudo lookup table.
+Specify debug:maptype:mapname to encapsulate a maptype:mapname
+lookup table and log all access. This builds on existing but unused
+code to log table access. Contributed by Richard Hansen.
+
+[Infrastructure 20250626] Overhauled in-memory lookup table life-cycle
+management; overhauled sharing/isolation for proxied lookup tables.
+
+Major changes - deprecation
+---------------------------
+
+[Feature 20250609] smtp_tls_enforce_peername and lmtp_tls_enforce_peername
+are now officially deprecated. Postfix will log a warning until the
+features are deleted. See DEPRECATION_README for a summary of
+deprecated and deleted features.
+
+[Feature 20251027] This adds 12 more deprecation warnings for
+parameters that have been renamed in the past, and that still provide
+a backwards-compatible default value for their replacement. The
+parameters deprecated by this change are: authorized_verp_clients,
+fallback_relay, lmtp_per_record_deadline, postscreen_blacklist_action,
+postscreen_dnsbl_ttl, postscreen_dnsbl_whitelist_threshold,
+postscreen_whitelist_interfaces, smtpd_client_connection_limit_exceptions,
+smtp_per_record_deadline, tlsproxy_client_level, tlsproxy_client_policy,
+virtual_maps.
+
+[Feature 20251028] Deprecate the smtp_cname_overrides_servername
+and lmtp_cname_overrides_servername parameters, and delete documentation
+that has been obsolete since Postfix 2.11.
+
+Major changes - logging
+-----------------------
+
+[Feature 20250910] TLS feature policy status summary in delivery
+status logging. This shows the desired and actual TLS security level
+enforcement status and, if a message requests REQUIRETLS, the
+REQUIRETLS policy enforcement status. For a list of examples see
+https://www.postfix.org/postconf.5.html#smtp_log_tls_feature_status
+
+[Feature 20251216] After a delivery failure, the bounce daemon
+logged "<old-queue-id>: sender non-delivery notification: <new-queue-id>"
+only if the notification was queued successfully. The bounce daemon
+now always logs this, making Postfix behavior easier to understand.
+
+Visible changes for logfile analyzers:
+
+- The bounce daemon now logs "<old-queue-id>: sender non-delivery
+notification: <new-queue-id>" BEFORE the cleanup daemon logs activity
+with "<new-queue-id>". Previously, the bounce daemon logged the
+old<=>new queue ID connection later, which made logfile analysis
+more difficult.
+
+- The bounce daemon now logs a logfile record "<old-queue-id>:
+sender notification failed to <address>: <reason>" when the
+notification was not queued. In some cases it will log "<old-queue-id>:
+sender notification failed to <address>" (without the reason). In
+those cases the failure reason was already logged by lower-level
+code, but without the queue ID.
+
+Major changes - management tool integration
+-------------------------------------------
+
+[Feature 20251124] Basic JSON output support with "postconf
+-j|-jM|-jF|-jP", "postalias -jq|-js", "postmap -jq|-js", and
+"postmulti -jl". No support is planned for JSON input support.
+
+Major changes - milter support
+------------------------------
+
+[Feature 20251208] Improved Milter error handling for messages that
+arrive over a long-lived SMTP connection, by changing the default
+milter_default_action from "tempfail" to the new "shutdown" action
+(i.e. disconnect the remote SMTP client).
+
+This avoids a worst-case scenario where after a single Milter error,
+Postfix would tempfail all messages that the client sends over a
+long-lived connection, even if the Milter error was only temporary.
+
+The bounce daemon now logs "<old-queue-id>: sender non-delivery
+notification: <new-queue-id>" *before* the cleanup daemon logs
+activity with <new-queue-id>, instead of after. This makes the
+logging easier to analyze.
+
+Major changes - mime support
+----------------------------
+
+[Feature 20251104] New non_empty_end_of_header_action parameter
+with the cleanup(8) server action when a primary message header is
+terminated with a non-empty line:
+
+1) fix_quietly: Insert an empty line before the offending text (the
+backwards-compatible default),
+
+2) add_header: Insert a MIME-Error: header before inserting an empty
+line, or
+
+3) reject: Log a "mime-error" and reject the message.
+
+Note that the 'empty line' separator is not used for DKIM signature
+checks, so it does not matter that Postfix inserts one if it is
+missing.
+
+Major changes - mta-sts
+-----------------------
+
+[Feature 20250906] Workaround for an interface mis-match between
+the Postfix SMTP client and MTA-STS policy plugins. This introduces
+a new parameter "smtp_tls_enforce_sts_mx_patterns" (default: "yes").
+The MTA-STS plugin configuration needs to enable TLSRPT support,
+so that it forwards STS policy attributes to Postfix. This works
+even if Postfix TLSRPT support is disabled at build time or at
+runtime.
+
+With the above two configurations, the Postfix SMTP client will
+connect to an MX host only if its name matches any STS policy MX
+host pattern, and will match a server certificate against the MX
+hostname. Otherwise, the old behavior stays in effect: connect to
+any MX host listed in DNS, and match a server certificate against
+any STS policy MX host pattern.
+
+This code was published first in Postfix 3.11, and later back-ported
+to Postfix 3.10.5.
+
+Major changes - portability
+---------------------------
+
+[Feature 20241201] Support for the C23 built-in bool type. Older
+Postfix releases have been updated with a makedefs script that
+disables C23 built-in bool support.
+
+Major changes - postqueue
+-------------------------
+
+[Feature 20251218] the postqueue (and mailq) command now also lists
+recipients in bounce logfiles (in JSON output, this uses a new
+object member 'bounce_reason' instead of the existing 'delay_reason').
+Such recipients have already been deleted from the message queue
+file, but they are still pending the creation of a non-delivery
+status notification message that will be returned to the sender.
+
+Major changes - relocated_maps
+------------------------------
+
+[Feature 20250608] Specify "relocated_prefix_enable = no" to disable
+the hard-coded prefix "5.1.6 User has moved to " that is by default
+prepended to all relocated_maps lookup results. This setting requires
+that the table contains responses with both custom enhanced status
+code (X.Y.Z) and text. For details, see "man 5 relocated" or
+https://www.postfix.org/relocated.5.html .
+
+Major changes - requiretls
+--------------------------
+
+[Feature 20241111] Support for the REQUIRETLS verb in SMTP. This,
+and everything that was added later through 2025, is described in
+REQUIRETLS_README.
+
+[Feature 20250120] After a certificate check fails, or a remote
+SMTP server does not announce REQUIRETLS support, the Postfix SMTP
+client will override the RFC 8689 5.x.x.  status and treat it as a
+soft error, until there are no more alternate MX servers to try.
+
+[Feature 20250827] New parameter requiretls_redact_dsn (default:
+yes) to redact bounce messages as described in RFC 8689 section 5,
+so that they don't need REQUIRETLS support on every hop in the
+return path.
+
+[Feature 20250827] smtp_requiretls_policy and lmtp_requiretls_policy
+for responsible REQUIRETLS policy enforcement. REQUIRETLS must be
+enforced with care, because at this time most domains do not publish
+DANE or MTA-STS policies, and most MTAs and content filters do not
+support REQUIRETLS.
+
+[Feature 20250916] support for a "Require-TLS-ESMTP: yes" header
+to propagate an ESMTP REQUIRETLS request through a FILTER_README
+or SMTPD_PROXY_README style content filter. This header is detected
+or added by the cleanup daemon and by the before-proxy-filter Postfix
+SMTP server. This feature is enabled by default with
+"requiretls_esmtp_header = yes". The Require-TLS-ESMTP header will
+be visible to local and remote recipients. This feature can safely
+be disabled when a configuration does not use REQUIRETLS, or does
+not use FILTER_README or SMTPD_PROXY_README style content filters.
+
+Major changes - smtp server
+---------------------------
+
+[Feature 20250801] smtpd_reject_filter_maps support to selectively
+replace a reject response from the Postfix SMTP server, or from a
+program that replies through the Postfix SMTP server.
+
+Major changes - smtputf8
+------------------------
+
+[Feature 20250122] New Postfix sendmail command option "-O smtputf8"
+to request that deliveries over SMTP use the SMTPUTF8 extension.
+This reuses logic that was introduced for REQUIRETLS.
+
+[Feature 20250824] When a message needs to be delivered with SMTPUTF8,
+but a remote server does not support it, the Postfix SMTP client
+will try alternate servers instead of returning the message
+immediately. This reuses on new code that was implemented for
+REQUIRETLS,
+
+Major changes - tls support
+---------------------------
+
+[Feature 20250623] This changes the Postfix SMTP client
+smtp_tls_security_level default value to "may" if Postfix was built
+with TLS support, and the compatibility_level is 3.11 or higher.
+
+There is no change to the default lmtp_tls_security_level value.
+It remains empty, because there is no default TLS security level
+that makes sense for connections over UNIX-domain and loopback TCP
+and non-loopback TCP sockets.
+
+There also is no equivalent change for Postfix SMTP server TLS
+security levels, because changing smtpd_tls_security_level is not
+sufficient. Server-side TLS requires that at least one private key
+and corresponding public-key certificate chain are configured.
+
+[Feature 20251029] Debugging: depending on OpenSSL build options,
+"posttls-finger -L ssl-debug" will decode TLS handshake messages.
+
+[Feature 20251102] Post-quantum cryptography support: with OpenSSL
+3.5 and later, change the tls_eecdh_auto_curves default value to
+avoid problems with network infrastructure that mis-handles TLS
+hello messages larger than one (Ethernet) TCP segment. This problem
+is mre generally known as "protocol ossification".
+
+Major changes - tlsrpt
+----------------------
+
+[Incompat 20250601] the default smtp_tlsrpt_skip_reused_handshakes
+setting was changed from "yes" to "no". The new default is enabled
+with compatibility level >= 3.11.
+
index f61060ef26cc3aeafd8afc8de2c3a80dc423c216..2b51635c73d4543ff966f7734705b1b6fa4b0f62 100644 (file)
@@ -31,7 +31,7 @@
 #
 # The level below is what should be used with new (not upgrade) installs.
 #
-compatibility_level = 3.11
+compatibility_level = 3.12
 
 # SOFT BOUNCE
 #
index f3d9f8bfd7ad70838a97e9f6382e8a5719896060..891021fa6b338c2577a4cb339cca47cf8cc867fb 100644 (file)
@@ -55,6 +55,7 @@
 #               entries with your own RFC  3463-compliant  enhanced
 #               status code and text, for example:
 # 
+#                    pattern      5.1.6 Mailbox has moved to user@example
 #                    pattern      5.2.0 Mailbox is unavailable
 #                    pattern      5.2.1 Mailbox is disabled
 # 
index bad7739512c352ebf4b9d2f141d4991d939cb5a7..f624da5e014a71fa72302b6362aeec83da249620 100644 (file)
 #               This  is  the default for final delivery to domains
 #               listed with mydestination, and for [ipaddress] des-
 #               tinations    that    match    $inet_interfaces   or
-#               $proxy_interfaces. The default nexthop  destination
-#               is the MTA hostname.
+#               $proxy_interfaces.
+# 
+#               In order of decreasing precedence, the nexthop des-
+#               tination is taken from transport_maps, local_trans-
+#               port, or from the recipient domain.
 # 
 #        virtual_transport (default: virtual:)
-#               This  is  the default for final delivery to domains
-#               listed with  virtual_mailbox_domains.  The  default
-#               nexthop destination is the recipient domain.
+#               This is the default for final delivery  to  domains
+#               listed with virtual_mailbox_domains.
+# 
+#               In order of decreasing precedence, the nexthop des-
+#               tination  is  taken   from   transport_maps,   vir-
+#               tual_transport, or from the recipient domain.
 # 
 #        relay_transport (default: relay:)
 #               This  is the default for remote delivery to domains
-#               listed with relay_domains. In order  of  decreasing
-#               precedence,  the  nexthop destination is taken from
-#               relay_transport,   sender_dependent_relayhost_maps,
-#               relayhost, or from the recipient domain.
+#               listed with relay_domains.
+# 
+#               In order of decreasing precedence, the nexthop des-
+#               tination is taken from transport_maps, relay_trans-
+#               port,  sender_dependent_relayhost_maps,  relayhost,
+#               or from the recipient domain.
 # 
 #        default_transport (default: smtp:)
 #               This  is  the  default for remote delivery to other
-#               destinations.  In order of  decreasing  precedence,
-#               the nexthop destination is taken from sender_depen-
-#               dent_default_transport_maps,     default_transport,
-#               sender_dependent_relayhost_maps, relayhost, or from
-#               the recipient domain.
+#               destinations.
+# 
+#               In order of decreasing precedence, the nexthop des-
+#               tination     is    taken    from    transport_maps,
+#               sender_dependent_default_transport_maps,
+#               default_transport, sender_dependent_relayhost_maps,
+#               relayhost, or from the recipient domain.
 # 
 #        Normally, the transport(5) table is specified  as  a  text
 #        file  that serves as input to the postmap(1) command.  The
 #             example.com      uucp:example
 #             .example.com     uucp:example
 # 
-#        When no nexthop host name is  specified,  the  destination
-#        domain  name  is  used instead. For example, the following
-#        directs mail for user@example.com via the  slow  transport
-#        to  a  mail exchanger for example.com.  The slow transport
+#        When no nexthop destination  is  specified,  Postfix  uses
+#        (from  low  to high precedence): the recipient domain, the
+#        nexthop  specified  with  relayhost,  with   sender_depen-
+#        dent_relayhost_maps (for remote deliveries only), with the
+#        transport for the address domain  class  (see  DESCRIPTION
+#        above),  or  with  sender_dependent_default_transport_maps
+#        (for remote deliveries only). For example,  the  following
+#        directs  mail  for user@example.com via the slow transport
+#        to a mail exchanger for example.com.  The  slow  transport
 #        could be configured to run at most one delivery process at
 #        a time:
 # 
 #             example.com      slow:
 # 
 #        When no transport is specified, Postfix uses the transport
-#        that matches the address  domain  class  (see  DESCRIPTION
-#        above).   The following sends all mail for example.com and
-#        its subdomains to host gateway.example.com:
+#        that  matches  the  address  domain class (see DESCRIPTION
+#        above), or  the  transport  specified  with  sender_depen-
+#        dent_default_transport_maps  (for remote deliveries only).
+#        The following sends all mail for example.com and its  sub-
+#        domains to host gateway.example.com:
 # 
 #             example.com      :[gateway.example.com]
 #             .example.com     :[gateway.example.com]
 # 
-#        In the above example, the [] suppress  MX  lookups.   This
-#        prevents  mail  routing loops when your machine is primary
+#        In  the  above  example, the [] suppress MX lookups.  This
+#        prevents mail routing loops when your machine  is  primary
 #        MX host for example.com.
 # 
-#        In the case of delivery via SMTP or LMTP, one may  specify
+#        In  the case of delivery via SMTP or LMTP, one may specify
 #        host:service instead of just a host:
 # 
 #             example.com      smtp:bar.example:2025
 #        be used. Specify [] around the hostname if MX lookups must
 #        be disabled.
 # 
-#        Deliveries via SMTP or LMTP support multiple  destinations
+#        Deliveries  via SMTP or LMTP support multiple destinations
 #        (Postfix >= 3.5):
 # 
 #             example.com      smtp:bar.example, foo.example
 # 
-#        This  tries  to  deliver  to  bar.example before trying to
+#        This tries to deliver  to  bar.example  before  trying  to
 #        deliver to foo.example.
 # 
 #        The error mailer can be used to bounce mail:
 # 
 #             .example.com     error:mail for *.example.com is not deliverable
 # 
-#        This causes all mail for user@anything.example.com  to  be
+#        This  causes  all mail for user@anything.example.com to be
 #        bounced.
 # 
 # REGULAR EXPRESSION TABLES
-#        This  section  describes how the table lookups change when
+#        This section describes how the table lookups  change  when
 #        the table is given in the form of regular expressions. For
-#        a  description  of regular expression lookup table syntax,
+#        a description of regular expression lookup  table  syntax,
 #        see regexp_table(5) or pcre_table(5).
 # 
-#        Each pattern is a regular expression that  is  applied  to
-#        the    entire    address    being    looked    up.   Thus,
-#        some.domain.hierarchy is not  looked  up  via  its  parent
-#        domains,  nor is user+foo@domain looked up as user@domain.
+#        Each  pattern  is  a regular expression that is applied to
+#        the   entire    address    being    looked    up.    Thus,
+#        some.domain.hierarchy  is  not  looked  up  via its parent
+#        domains, nor is user+foo@domain looked up as  user@domain.
 # 
-#        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.
 # 
 #        The trivial-rewrite(8) server disallows regular expression
-#        substitution  of  $1  etc.  in  regular  expression lookup
-#        tables, because that could open a security  hole  (Postfix
+#        substitution of  $1  etc.  in  regular  expression  lookup
+#        tables,  because  that could open a security hole (Postfix
 #        version 2.3 and later).
 # 
 # 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.
 # 
-#        Each  lookup  operation  uses the entire recipient address
-#        once.  Thus, some.domain.hierarchy is not  looked  up  via
-#        its  parent  domains,  nor is user+foo@domain looked up as
+#        Each lookup operation uses the  entire  recipient  address
+#        once.   Thus,  some.domain.hierarchy  is not looked up via
+#        its parent domains, nor is user+foo@domain  looked  up  as
 #        user@domain.
 # 
 #        Results are the same as with indexed file lookups.
 # 
 # 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.
 # 
 #        empty_address_recipient (MAILER-DAEMON)
-#               The  recipient  of  mail  addressed  to  the   null
+#               The   recipient  of  mail  addressed  to  the  null
 #               address.
 # 
-#        parent_domain_matches_subdomains  (see  'postconf -d' out-
+#        parent_domain_matches_subdomains (see 'postconf  -d'  out-
 #        put)
 #               A list of Postfix features where the pattern "exam-
-#               ple.com" also matches  subdomains  of  example.com,
-#               instead  of  requiring  an  explicit ".example.com"
+#               ple.com"  also  matches  subdomains of example.com,
+#               instead of  requiring  an  explicit  ".example.com"
 #               pattern.
 # 
 #        transport_maps (empty)
 #               Optional lookup tables with mappings from recipient
-#               address  to  (message  delivery transport, next-hop
+#               address to (message  delivery  transport,  next-hop
 #               destination).
 # 
 # SEE ALSO
 #        postmap(1), Postfix lookup table manager
 # 
 # README FILES
-#        Use "postconf readme_directory" or  "postconf  html_direc-
+#        Use  "postconf  readme_directory" or "postconf html_direc-
 #        tory" to locate this information.
 #        ADDRESS_REWRITING_README, address rewriting guide
 #        DATABASE_README, Postfix lookup table overview
 #        FILTER_README, external content filter
 # 
 # LICENSE
-#        The  Secure  Mailer  license must be distributed with this
+#        The Secure Mailer license must be  distributed  with  this
 #        software.
 # 
 # AUTHOR(S)
index 39dcad68177b0e163260e2ea355c03ea04db4713..c0c9453219698e727f0630df3fc8d3f0257551a1 100644 (file)
@@ -613,8 +613,9 @@ make the backwards-compatible setting "<a href="postconf.5.html#smtp_tlsrpt_skip
 <h2> <a name="xxx_tls_level"> Using backwards-compatible
 default setting <i>xxx</i>_security_level=(empty)</a> </h2>
 
-<p> Postfix version 3.11 changes the default value for client TLS
-security levels from "empty" to "may". The backwards-compatibility
+<p> When built with TLS support, Postfix version 3.11 changes the
+default SMTP client TLS
+security level from "empty" to "may". The backwards-compatibility
 safety net is designed to prevent an unexpected change in mail
 sending behavior when Postfix is updated from an older version.
 </p>
index 421543134fd6174cd6d3cde340ad0f5c22333679..5763510105328791db006db927dd458a43422270 100644 (file)
@@ -200,7 +200,8 @@ CLEANUP(8)                                                          CLEANUP(8)
               sions  for  communication  with  a  Milter application; prior to
               Postfix 2.6 the default protocol is 2.
 
-       <b><a href="postconf.5.html#milter_default_action">milter_default_action</a> (tempfail)</b>
+       <b><a href="postconf.5.html#milter_default_action">milter_default_action</a> (Postfix</b> &gt;<b>= 3.11: shutdown; Postfix</b> &lt; <b>3.11: temp-</b>
+       <b>fail)</b>
               The default action when  a  Milter  (mail  filter)  response  is
               unavailable  (for  example,  bad Postfix configuration or Milter
               failure).
index 360b94e7446821145a4902f1eb5fb7ce48868f02..9fee2f5195849146b7f9e000773529f1000df050 100644 (file)
@@ -7473,8 +7473,9 @@ with a permanent status code.</dd>
 <dt>tempfail</dt> <dd>Reject all further commands in this session
 with a temporary status code. </dd>
 
-<dt>shutdown</dt> <dd>Close the SMTP connection after sending a 421
-SMTP reply. Available in Postfix 3.11 and later. </dd>
+<dt>shutdown</dt> <dd>With <a href="postconf.5.html#smtpd_milters">smtpd_milters</a>, close the SMTP connection
+after sending a 421 SMTP reply; with <a href="postconf.5.html#non_smtpd_milters">non_smtpd_milters</a>, report a
+queue file write error. Available in Postfix 3.11 and later. </dd>
 
 <dt>quarantine</dt> <dd>Like "accept", but freeze the message in
 the "<a href="QSHAPE_README.html#hold_queue">hold" queue</a>. Available with Postfix 2.6 and later. </dd>
@@ -12395,7 +12396,7 @@ connection or an incorrect configuration. </p>
 
 <dl>
 
-<dt> tls=none </dt> <dd> A connection that did not use TLS. </dd>
+<dt> tls=none </dt> <dd> A connection with TLS disabled. </dd>
 
 <dt> tls=may </dt> <dd> Opportunistic TLS. The connection was used
 after a successful TLS handshake. </dd>
@@ -12403,9 +12404,10 @@ after a successful TLS handshake. </dd>
 <dt> tls=may? </dt> <dd> Opportunistic TLS. The status was undecided
 because no connection was made, or no server could be reached. </dd>
 
-<dt> tls=may:none </dt> <dd> The client was willing to use TLS, but
-the remote server did not support STARTTLS, and the connection was
-used in plaintext as permitted by the opportunistic TLS policy. </dd>
+<dt> tls=may:none </dt> <dd> Opportunistic TLS. The client was
+willing to use TLS, but the remote server did not support STARTTLS,
+and the connection was used in plaintext as permitted by the
+opportunistic TLS policy. </dd>
 
 <dt> tls=dane </dt> <dd> DANE policy compliant, no downgrade. </dd>
 
@@ -17268,7 +17270,7 @@ header has one of the following forms: </p>
 Received: by mail.example.com (Postfix) id postfix-queue-id
         for &lt;user@example.com&gt;; Day, dd Mon yyyy hh:mm:ss tz-offset (zone)
 <br>
-Received: by mail.example.com (Postfix) id postfix-queue-id
+Received: by mail.example.com (Postfix) id postfix-queue-id;
         Day, dd Mon yyyy hh:mm:ss tz-offset (zone)
 </pre>
 </blockquote>
index a6397fe62b8c867e026cc11b678c3928c2e8072f..7f04aa0c4da5c73c656ced175e7da802b69698ad 100644 (file)
@@ -55,6 +55,7 @@ RELOCATED(5)                                                      RELOCATED(5)
               specify <a href="postconf.5.html#relocated_maps">relocated_maps</a> entries with your own <a href="https://tools.ietf.org/html/rfc3463">RFC  3463</a>-compliant
               enhanced status code and text, for example:
 
+                   <i>pattern</i>      5.1.6 Mailbox has moved to user@example
                    <i>pattern</i>      5.2.0 Mailbox is unavailable
                    <i>pattern</i>      5.2.1 Mailbox is disabled
 
index 9ea4b210d43093be882743fbf5427b0a6a75aa4d..d4ae0a078a939d658c27ec5f4d178b1bff3970fc 100644 (file)
@@ -265,7 +265,8 @@ SMTPD(8)                                                              SMTPD(8)
               sions for communication with  a  Milter  application;  prior  to
               Postfix 2.6 the default protocol is 2.
 
-       <b><a href="postconf.5.html#milter_default_action">milter_default_action</a> (tempfail)</b>
+       <b><a href="postconf.5.html#milter_default_action">milter_default_action</a> (Postfix</b> &gt;<b>= 3.11: shutdown; Postfix</b> &lt; <b>3.11: temp-</b>
+       <b>fail)</b>
               The  default  action  when  a  Milter  (mail filter) response is
               unavailable (for example, bad Postfix  configuration  or  Milter
               failure).
index 0b5a1017548552d8579660f61b671dd2bdd2c0c5..9407a6512b688e02f7f809c220dc8ae6dbebb75c 100644 (file)
@@ -30,72 +30,81 @@ TRANSPORT(5)                                                      TRANSPORT(5)
        <b><a href="postconf.5.html#local_transport">local_transport</a> (default: <a href="local.8.html">local</a>:$<a href="postconf.5.html#myhostname">myhostname</a>)</b>
               This is the default for final delivery to  domains  listed  with
               <b><a href="postconf.5.html#mydestination">mydestination</a></b>,  and  for  [<i>ipaddress</i>]  destinations  that  match
-              <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>. The default <i>nexthop</i>  des-
-              tination is the MTA hostname.
+              <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>.
+
+              In order of decreasing precedence, the  <i>nexthop</i>  destination  is
+              taken  from <b><a href="postconf.5.html#transport_maps">transport_maps</a></b>, <b><a href="postconf.5.html#local_transport">local_transport</a></b>, or from the recipi-
+              ent domain.
 
        <b><a href="postconf.5.html#virtual_transport">virtual_transport</a> (default: <a href="virtual.8.html">virtual</a>:)</b>
-              This  is  the  default for final delivery to domains listed with
-              <b><a href="postconf.5.html#virtual_mailbox_domains">virtual_mailbox_domains</a></b>. The default <i>nexthop</i> destination is  the
-              recipient domain.
+              This is the default for final delivery to  domains  listed  with
+              <b><a href="postconf.5.html#virtual_mailbox_domains">virtual_mailbox_domains</a></b>.
+
+              In  order  of  decreasing precedence, the <i>nexthop</i> destination is
+              taken from <b><a href="postconf.5.html#transport_maps">transport_maps</a></b>, <b><a href="postconf.5.html#virtual_transport">virtual_transport</a></b>, or from the recip-
+              ient domain.
 
        <b><a href="postconf.5.html#relay_transport">relay_transport</a> (default: relay:)</b>
               This  is  the default for remote delivery to domains listed with
-              <b><a href="postconf.5.html#relay_domains">relay_domains</a></b>. In order of decreasing  precedence,  the  <i>nexthop</i>
-              destination   is   taken   from  <b><a href="postconf.5.html#relay_transport">relay_transport</a></b>,  <b><a href="postconf.5.html#sender_dependent_relayhost_maps">sender_depen</a>-</b>
+              <b><a href="postconf.5.html#relay_domains">relay_domains</a></b>.
+
+              In order of decreasing precedence, the  <i>nexthop</i>  destination  is
+              taken   from   <b><a href="postconf.5.html#transport_maps">transport_maps</a></b>,   <b><a href="postconf.5.html#relay_transport">relay_transport</a></b>,  <b><a href="postconf.5.html#sender_dependent_relayhost_maps">sender_depen</a>-</b>
               <b><a href="postconf.5.html#sender_dependent_relayhost_maps">dent_relayhost_maps</a></b>, <b><a href="postconf.5.html#relayhost">relayhost</a></b>, or from the recipient domain.
 
        <b><a href="postconf.5.html#default_transport">default_transport</a> (default: <a href="smtp.8.html">smtp</a>:)</b>
-              This is the default for remote delivery to  other  destinations.
-              In  order  of  decreasing precedence, the <i>nexthop</i> destination is
-              taken       from        <b><a href="postconf.5.html#sender_dependent_default_transport_maps">sender_dependent_default_transport_maps</a>,</b>
-              <b><a href="postconf.5.html#default_transport">default_transport</a></b>,  <b><a href="postconf.5.html#sender_dependent_relayhost_maps">sender_dependent_relayhost_maps</a></b>,  <b><a href="postconf.5.html#relayhost">relayhost</a></b>,
-              or from the recipient domain.
+              This is the default for remote delivery to other destinations.
+
+              In order of decreasing precedence, the  <i>nexthop</i>  destination  is
+              taken   from   <b><a href="postconf.5.html#transport_maps">transport_maps</a></b>,   <b><a href="postconf.5.html#sender_dependent_default_transport_maps">sender_dependent_default_trans</a>-</b>
+              <b><a href="postconf.5.html#sender_dependent_default_transport_maps">port_maps</a>,  <a href="postconf.5.html#default_transport">default_transport</a></b>,  <b><a href="postconf.5.html#sender_dependent_relayhost_maps">sender_dependent_relayhost_maps</a></b>,
+              <b><a href="postconf.5.html#relayhost">relayhost</a></b>, or from the recipient domain.
 
-       Normally, the <a href="transport.5.html"><b>transport</b>(5)</a> table is  specified  as  a  text  file  that
+       Normally,  the  <a href="transport.5.html"><b>transport</b>(5)</a>  table  is  specified  as a text file that
        serves as input to the <a href="postmap.1.html"><b>postmap</b>(1)</a> command.  The result, an indexed file
-       in <b>dbm</b> or <b>db</b> format, is used for fast searching  by  the  mail  system.
-       Execute  the  command  "<b>postmap  /etc/postfix/transport</b>"  to rebuild an
+       in  <b>dbm</b>  or  <b>db</b>  format, is used for fast searching by the mail system.
+       Execute the command  "<b>postmap  /etc/postfix/transport</b>"  to  rebuild  an
        indexed file after changing the corresponding transport table.
 
-       When the table is provided via other means such as NIS,  LDAP  or  SQL,
+       When  the  table  is provided via other means such as NIS, LDAP 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 a TCP-based server. In those case, the lookups are done in
-       a slightly different way as described below under  "REGULAR  EXPRESSION
+       Alternatively, the table can be provided as  a  regular-expression  map
+       where  patterns  are  given  as  regular 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".
 
 <b><a name="case_folding">CASE FOLDING</a></b>
-       The  search string is folded to lowercase before database lookup. As of
-       Postfix 2.3, the search string is not case folded with  database  types
-       such  as  <a href="regexp_table.5.html">regexp</a>: or <a href="pcre_table.5.html">pcre</a>: whose lookup fields can match both upper and
+       The search string is folded to lowercase before database lookup. As  of
+       Postfix  2.3,  the search string is not case folded with database types
+       such as <a href="regexp_table.5.html">regexp</a>: or <a href="pcre_table.5.html">pcre</a>: whose lookup fields can match both  upper  and
        lower case.
 
 <b><a name="table_format">TABLE FORMAT</a></b>
        The input format for the <a href="postmap.1.html"><b>postmap</b>(1)</a> command is as follows:
 
        <i>pattern result</i>
-              When <i>pattern</i> matches the recipient address or  domain,  use  the
+              When  <i>pattern</i>  matches  the recipient address or domain, use the
               corresponding <i>result</i>.
 
        blank lines and comments
-              Empty  lines and whitespace-only lines are ignored, as are lines
+              Empty lines and whitespace-only lines are ignored, as are  lines
               whose first non-whitespace character is a `#'.
 
        multi-line text
-              A logical line starts with  non-whitespace  text.  A  line  that
+              A  logical  line  starts  with  non-whitespace text. A line that
               starts with whitespace continues a logical line.
 
        The <i>pattern</i> specifies an email address, a domain name, or a domain name
        hierarchy, as described in section "TABLE SEARCH ORDER".
 
-       The <i>result</i> is of the form <i>transport:nexthop</i> and specifies how or  where
+       The  <i>result</i> is of the form <i>transport:nexthop</i> and specifies how or where
        to deliver mail. This is described in section "RESULT FORMAT".
 
 <b><a name="table_search_order">TABLE SEARCH ORDER</a></b>
-       With  lookups  from  indexed files such as DB or DBM, or from networked
-       tables such as NIS, LDAP or SQL, patterns are tried  in  the  order  as
+       With lookups from indexed files such as DB or DBM,  or  from  networked
+       tables  such  as  NIS,  LDAP or SQL, patterns are tried in the order as
        listed below:
 
        <i>user+extension@domain transport</i>:<i>nexthop</i>
@@ -109,35 +118,35 @@ TRANSPORT(5)                                                      TRANSPORT(5)
               Deliver mail for <i>domain</i> through <i>transport</i> to <i>nexthop</i>.
 
        <i>.domain transport</i>:<i>nexthop</i>
-              Deliver mail for any subdomain of <i>domain</i>  through  <i>transport</i>  to
+              Deliver  mail  for  any subdomain of <i>domain</i> through <i>transport</i> to
               <i>nexthop</i>. This applies only when the string <b><a href="postconf.5.html#transport_maps">transport_maps</a></b> is not
               listed  in  the  <b><a href="postconf.5.html#parent_domain_matches_subdomains">parent_domain_matches_subdomains</a></b>  configuration
               setting.  Otherwise, a domain name matches itself and its subdo-
               mains.
 
        <b>*</b> <i>transport</i>:<i>nexthop</i>
-              The special pattern <b>*</b> represents any address (i.e. it  functions
-              as  the  wild-card  pattern,  and is unique to Postfix transport
+              The  special pattern <b>*</b> represents any address (i.e. it functions
+              as the wild-card pattern, and is  unique  to  Postfix  transport
               tables).
 
-       Note   1:   the   null   recipient   address   is    looked    up    as
+       Note    1:    the    null   recipient   address   is   looked   up   as
        <b>$<a href="postconf.5.html#empty_address_recipient">empty_address_recipient</a></b>@<b>$<a href="postconf.5.html#myhostname">myhostname</a></b> (default: mailer-daemon@hostname).
 
-       Note 2: <i>user@domain</i> or <i>user+extension@domain</i>  lookup  is  available  in
+       Note  2:  <i>user@domain</i>  or  <i>user+extension@domain</i> lookup is available in
        Postfix 2.0 and later.
 
 <b><a name="result_format">RESULT FORMAT</a></b>
-       The  lookup  result  is  of  the form <i>transport</i><b>:</b><i>nexthop</i>.  The <i>transport</i>
-       field specifies a mail delivery transport such as <b>smtp</b>  or  <b>local</b>.  The
+       The lookup result is of  the  form  <i>transport</i><b>:</b><i>nexthop</i>.   The  <i>transport</i>
+       field  specifies  a  mail delivery transport such as <b>smtp</b> or <b>local</b>. The
        <i>nexthop</i> field specifies where and how to deliver mail.
 
-       The  transport  field  specifies  the name of a mail delivery transport
-       (the first name of a mail delivery service entry in  the  Postfix  <a href="master.5.html"><b>mas-</b>
+       The transport field specifies the name of  a  mail  delivery  transport
+       (the  first  name  of a mail delivery service entry in the Postfix <a href="master.5.html"><b>mas-</b>
        <b>ter.cf</b></a> file).
 
-       The  nexthop  field usually specifies one recipient domain or hostname.
+       The nexthop field usually specifies one recipient domain  or  hostname.
        In the case of the Postfix SMTP/LMTP client, the nexthop field may con-
-       tain  a  list  of nexthop destinations separated by comma or whitespace
+       tain a list of nexthop destinations separated by  comma  or  whitespace
        (Postfix 3.5 and later).
 
        The syntax of a nexthop destination is transport dependent.  With SMTP,
@@ -145,19 +154,19 @@ TRANSPORT(5)                                                      TRANSPORT(5)
        (mail exchanger) DNS lookups with [<i>host</i>] or [<i>host</i>]:<i>port</i>. The [] form is
        required when you specify an IP address instead of a hostname.
 
-       A  null <i>transport</i> and null <i>nexthop</i> field means "do not change": use the
-       delivery transport and nexthop information that would be used when  the
+       A null <i>transport</i> and null <i>nexthop</i> field means "do not change": use  the
+       delivery  transport and nexthop information that would be used when the
        entire transport table did not exist.
 
        A non-null <i>transport</i> field with a null <i>nexthop</i> field resets the nexthop
        information to the recipient domain.
 
-       A null <i>transport</i> field with non-null <i>nexthop</i> field does not modify  the
+       A  null <i>transport</i> field with non-null <i>nexthop</i> field does not modify the
        transport information.
 
 <b><a name="examples">EXAMPLES</a></b>
-       In  order  to  deliver internal mail directly, while using a mail relay
-       for all other mail, specify a null entry for internal destinations  (do
+       In order to deliver internal mail directly, while using  a  mail  relay
+       for  all other mail, specify a null entry for internal destinations (do
        not change the delivery transport or the nexthop information) and spec-
        ify a wildcard for all other destinations.
 
@@ -165,24 +174,29 @@ TRANSPORT(5)                                                      TRANSPORT(5)
             <b>.my.domain   :</b>
             <b>*            <a href="smtp.8.html">smtp</a>:outbound-relay.my.domain</b>
 
-       In order to send mail for <b>example.com</b> and its subdomains via  the  <b>uucp</b>
+       In  order  to send mail for <b>example.com</b> and its subdomains via the <b>uucp</b>
        transport to the UUCP host named <b>example</b>:
 
             <b>example.com      uucp:example</b>
             <b>.example.com     uucp:example</b>
 
-       When  no nexthop host name is specified, the destination domain name is
-       used instead. For example, the following directs  mail  for  <i>user</i>@<b>exam-</b>
-       <b>ple.com</b>  via  the  <b>slow</b>  transport to a mail exchanger for <b>example.com</b>.
-       The <b>slow</b> transport could be configured to  run  at  most  one  delivery
-       process at a time:
+       When no nexthop destination is specified, Postfix  uses  (from  low  to
+       high  precedence):  the  recipient  domain,  the nexthop specified with
+       <a href="postconf.5.html#relayhost">relayhost</a>, with <a href="postconf.5.html#sender_dependent_relayhost_maps">sender_dependent_relayhost_maps</a> (for remote  deliveries
+       only), with the transport for the address domain class (see DESCRIPTION
+       above), or  with  <a href="postconf.5.html#sender_dependent_default_transport_maps">sender_dependent_default_transport_maps</a>  (for  remote
+       deliveries   only).   For  example,  the  following  directs  mail  for
+       <i>user</i>@<b>example.com</b> via the <b>slow</b> transport to a mail exchanger  for  <b>exam-</b>
+       <b>ple.com</b>.  The  <b>slow</b>  transport  could  be configured to run at most one
+       delivery process at a time:
 
             <b>example.com      slow:</b>
 
        When no transport is specified, Postfix uses the transport that matches
-       the address domain class (see DESCRIPTION above).  The following  sends
-       all  mail  for  <b>example.com</b>  and  its  subdomains to host <b>gateway.exam-</b>
-       <b>ple.com</b>:
+       the  address  domain  class  (see  DESCRIPTION above), or the transport
+       specified  with  <a href="postconf.5.html#sender_dependent_default_transport_maps">sender_dependent_default_transport_maps</a>  (for   remote
+       deliveries  only). The following sends all mail for <b>example.com</b> and its
+       subdomains to host <b>gateway.example.com</b>:
 
             <b>example.com      :[gateway.example.com]</b>
             <b>.example.com     :[gateway.example.com]</b>
index 47110492852c35c2c1908711b98064a4b7c8603c..5d10da670f16dba65dcac3c6440af44934c6b03c 100644 (file)
@@ -4585,8 +4585,9 @@ Reject all further commands in this session
 with a temporary status code.
 .br
 .IP "shutdown"
-Close the SMTP connection after sending a 421
-SMTP reply. Available in Postfix 3.11 and later.
+With smtpd_milters, close the SMTP connection
+after sending a 421 SMTP reply; with non_smtpd_milters, report a
+queue file write error. Available in Postfix 3.11 and later.
 .br
 .IP "quarantine"
 Like "accept", but freeze the message in
@@ -7871,7 +7872,7 @@ connection or an incorrect configuration.
 .PP
 Examples for TLS security levels:
 .IP "tls=none"
-A connection that did not use TLS.
+A connection with TLS disabled.
 .br
 .IP "tls=may"
 Opportunistic TLS. The connection was used
@@ -7882,9 +7883,10 @@ Opportunistic TLS. The status was undecided
 because no connection was made, or no server could be reached.
 .br
 .IP "tls=may:none"
-The client was willing to use TLS, but
-the remote server did not support STARTTLS, and the connection was
-used in plaintext as permitted by the opportunistic TLS policy.
+Opportunistic TLS. The client was
+willing to use TLS, but the remote server did not support STARTTLS,
+and the connection was used in plaintext as permitted by the
+opportunistic TLS policy.
 .br
 .IP "tls=dane"
 DANE policy compliant, no downgrade.
@@ -11858,7 +11860,7 @@ header has one of the following forms:
 Received: by mail.example.com (Postfix) id postfix\-queue\-id
         for <user@example.com>; Day, dd Mon yyyy hh:mm:ss tz\-offset (zone)
 .br
-Received: by mail.example.com (Postfix) id postfix\-queue\-id
+Received: by mail.example.com (Postfix) id postfix\-queue\-id;
         Day, dd Mon yyyy hh:mm:ss tz\-offset (zone)
 .fi
 .ad
index 768b592b139ea7eb56b55fab61f2cd1cf821ffd6..ecc77748e0997692752fd29d9f2d07c4295e5c76 100644 (file)
@@ -64,6 +64,7 @@ specify relocated_maps entries with your own RFC 3463\-compliant
 enhanced status code and text, for example:
 
 .nf
+     \fIpattern\fR      5.1.6 Mailbox has moved to user@example
      \fIpattern\fR      5.2.0 Mailbox is unavailable
      \fIpattern\fR      5.2.1 Mailbox is disabled
 .fi
index 223b9582445df3e9500e34f0f2f26905ffe9755e..88f5b24ed01b493cc5fb1fe13100c8abba3e5172 100644 (file)
@@ -29,22 +29,32 @@ selection that is built into Postfix:
 This is the default for final delivery to domains listed
 with \fBmydestination\fR, and for [\fIipaddress\fR]
 destinations that match \fB$inet_interfaces\fR or
-\fB$proxy_interfaces\fR. The default \fInexthop\fR destination
-is the MTA hostname.
+\fB$proxy_interfaces\fR.
+
+In order of decreasing precedence, the \fInexthop\fR destination
+is taken from \fBtransport_maps\fR, \fBlocal_transport\fR,
+or from the recipient domain.
 .IP "\fBvirtual_transport (default: virtual:)\fR"
-This is the default for final delivery to domains listed
-with \fBvirtual_mailbox_domains\fR. The default \fInexthop\fR
-destination is the recipient domain.
+This is the default for final delivery to domains listed with
+\fBvirtual_mailbox_domains\fR.
+
+In order of decreasing precedence, the \fInexthop\fR destination
+is taken from \fBtransport_maps\fR, \fBvirtual_transport\fR,
+or from the recipient domain.
 .IP "\fBrelay_transport (default: relay:)\fR"
 This is the default for remote delivery to domains listed
-with \fBrelay_domains\fR. In order of decreasing precedence,
-the \fInexthop\fR destination is taken from \fBrelay_transport\fR,
-\fBsender_dependent_relayhost_maps\fR, \fBrelayhost\fR, or from the
-recipient domain.
+with \fBrelay_domains\fR.
+
+In order of decreasing precedence, the \fInexthop\fR destination
+is taken from \fBtransport_maps\fR, \fBrelay_transport\fR,
+\fBsender_dependent_relayhost_maps\fR, \fBrelayhost\fR, or from
+the recipient domain.
 .IP "\fBdefault_transport (default: smtp:)\fR"
 This is the default for remote delivery to other destinations.
+
 In order of decreasing precedence, the \fInexthop\fR
-destination is taken from \fBsender_dependent_default_transport_maps,
+destination is taken from \fBtransport_maps\fR,
+\fBsender_dependent_default_transport_maps,
 \fBdefault_transport\fR, \fBsender_dependent_relayhost_maps\fR,
 \fBrelayhost\fR, or from the recipient domain.
 .PP
@@ -189,19 +199,26 @@ via the \fBuucp\fR transport to the UUCP host named \fBexample\fR:
      \fB\&.example.com     uucp:example\fR
 .fi
 
-When no nexthop host name is specified, the destination domain
-name is used instead. For example, the following directs mail for
-\fIuser\fR@\fBexample.com\fR via the \fBslow\fR transport to a mail
-exchanger for \fBexample.com\fR.  The \fBslow\fR transport could be
-configured to run at most one delivery process at a time:
+When no nexthop destination is specified, Postfix uses (from low
+to high precedence): the recipient domain, the nexthop specified
+with relayhost, with sender_dependent_relayhost_maps (for remote
+deliveries only), with the transport for the address domain class
+(see DESCRIPTION above), or with
+sender_dependent_default_transport_maps (for remote deliveries
+only). For example, the following directs mail for
+\fIuser\fR@\fBexample.com\fR via the \fBslow\fR transport to a
+mail exchanger for \fBexample.com\fR. The \fBslow\fR transport
+could be configured to run at most one delivery process at a time:
 
 .nf
      \fBexample.com      slow:\fR
 .fi
 
 When no transport is specified, Postfix uses the transport that
-matches the address domain class (see DESCRIPTION
-above).  The following sends all mail for \fBexample.com\fR and its
+matches the address domain class (see DESCRIPTION above), or
+the transport specified with
+sender_dependent_default_transport_maps (for remote deliveries
+only). The following sends all mail for \fBexample.com\fR and its
 subdomains to host \fBgateway.example.com\fR:
 
 .nf
index a0d093bec8adf5dcbed1fd7ee410081d41e7e11c..6d1ebff68cbd29afe078614d16325fc45c16e417 100644 (file)
@@ -207,7 +207,7 @@ does not arrive via the Postfix \fBsmtpd\fR(8) server.
 The mail filter protocol version and optional protocol extensions
 for communication with a Milter application; prior to Postfix 2.6
 the default protocol is 2.
-.IP "\fBmilter_default_action (tempfail)\fR"
+.IP "\fBmilter_default_action (Postfix >= 3.11: shutdown; Postfix < 3.11: tempfail)\fR"
 The default action when a Milter (mail filter) response is
 unavailable (for example, bad Postfix configuration or Milter
 failure).
index 3324eceb0af3df471e62f53b68db0b45036aae90..3b50146500aefe288d65f737ac9375babcd4f20c 100644 (file)
@@ -260,7 +260,7 @@ arrives via the Postfix \fBsmtpd\fR(8) server.
 The mail filter protocol version and optional protocol extensions
 for communication with a Milter application; prior to Postfix 2.6
 the default protocol is 2.
-.IP "\fBmilter_default_action (tempfail)\fR"
+.IP "\fBmilter_default_action (Postfix >= 3.11: shutdown; Postfix < 3.11: tempfail)\fR"
 The default action when a Milter (mail filter) response is
 unavailable (for example, bad Postfix configuration or Milter
 failure).
index 63670377ae102e123f7bff88e224aca6817ff68d..b76078b9eb2bf5b02238986700b69fad7e212a11 100755 (executable)
@@ -664,7 +664,7 @@ while (<>) {
     s;\bvir[-</bB>]*\n*[ <bB>]*tual_mail[-</bB>]*\n* *[<bB>]*box_lock\b;<a href="postconf.5.html#virtual_mailbox_lock">$&</a>;g;
     s;\bvir[-</bB>]*\n*[ <bB>]*tual_mail[-</bB>]*\n* *[<bB>]*box_maps\b;<a href="postconf.5.html#virtual_mailbox_maps">$&</a>;g;
     s;\bvir[-</bB>]*\n*[ <bB>]*tual_minimum_uid\b;<a href="postconf.5.html#virtual_minimum_uid">$&</a>;g;
-    s;\bvir[-</bB>]*\n*[ <bB>]*tual_transport\b;<a href="postconf.5.html#virtual_transport">$&</a>;g;
+    s;\bvir[-</bB>]*\n*[ <bB>]*tual_trans[-</bB>]*\n*[ <bB>]*port\b;<a href="postconf.5.html#virtual_transport">$&</a>;g;
     s;\bvir[-</bB>]*\n*[ <bB>]*tual_uid_maps\b;<a href="postconf.5.html#virtual_uid_maps">$&</a>;g;
 
     s;\bsmtp_enforce_tls\b;<a href="postconf.5.html#smtp_enforce_tls">$&</a>;g;
index 20d72b423e7ce5e27c4e758fa5be39bcdc78af45..952b190f1d844a7916e9eb3ea587acac9038fe21 100644 (file)
@@ -613,8 +613,9 @@ make the backwards-compatible setting "smtp_tlsrpt_skip_reused_handshakes
 <h2> <a name="xxx_tls_level"> Using backwards-compatible
 default setting <i>xxx</i>_security_level=(empty)</a> </h2>
 
-<p> Postfix version 3.11 changes the default value for client TLS
-security levels from "empty" to "may". The backwards-compatibility
+<p> When built with TLS support, Postfix version 3.11 changes the
+default SMTP client TLS
+security level from "empty" to "may". The backwards-compatibility
 safety net is designed to prevent an unexpected change in mail
 sending behavior when Postfix is updated from an older version.
 </p>
index 071989b8a370db1cdf98f5e196bb7a56e886959d..fcf4573053046d14397643fc842cfdd248c2e8db 100644 (file)
@@ -12358,8 +12358,9 @@ with a permanent status code.</dd>
 <dt>tempfail</dt> <dd>Reject all further commands in this session
 with a temporary status code. </dd>
 
-<dt>shutdown</dt> <dd>Close the SMTP connection after sending a 421 
-SMTP reply. Available in Postfix 3.11 and later. </dd>
+<dt>shutdown</dt> <dd>With smtpd_milters, close the SMTP connection
+after sending a 421 SMTP reply; with non_smtpd_milters, report a
+queue file write error. Available in Postfix 3.11 and later. </dd>
 
 <dt>quarantine</dt> <dd>Like "accept", but freeze the message in
 the "hold" queue. Available with Postfix 2.6 and later. </dd>
@@ -20029,7 +20030,7 @@ connection or an incorrect configuration. </p>
 
 <dl>
 
-<dt> tls=none </dt> <dd> A connection that did not use TLS. </dd>
+<dt> tls=none </dt> <dd> A connection with TLS disabled. </dd>
 
 <dt> tls=may </dt> <dd> Opportunistic TLS. The connection was used
 after a successful TLS handshake. </dd>
@@ -20037,9 +20038,10 @@ after a successful TLS handshake. </dd>
 <dt> tls=may? </dt> <dd> Opportunistic TLS. The status was undecided
 because no connection was made, or no server could be reached. </dd>
 
-<dt> tls=may:none </dt> <dd> The client was willing to use TLS, but
-the remote server did not support STARTTLS, and the connection was
-used in plaintext as permitted by the opportunistic TLS policy. </dd>
+<dt> tls=may:none </dt> <dd> Opportunistic TLS. The client was
+willing to use TLS, but the remote server did not support STARTTLS,
+and the connection was used in plaintext as permitted by the
+opportunistic TLS policy. </dd>
 
 <dt> tls=dane </dt> <dd> DANE policy compliant, no downgrade. </dd>
 
@@ -20148,7 +20150,7 @@ header has one of the following forms: </p>
 Received: by mail.example.com (Postfix) id postfix-queue-id
         for &lt;user@example.com&gt;; Day, dd Mon yyyy hh:mm:ss tz-offset (zone)
 <br>
-Received: by mail.example.com (Postfix) id postfix-queue-id
+Received: by mail.example.com (Postfix) id postfix-queue-id;
         Day, dd Mon yyyy hh:mm:ss tz-offset (zone)
 </pre>
 </blockquote>
index f48b53093dce5d1d42bcaa6259d921062e5b402b..f90c9146cda9d0363c9b27e3f4f1bc456c9bc7d6 100644 (file)
@@ -54,6 +54,7 @@
 #      enhanced status code and text, for example:
 #
 # .nf
+#           \fIpattern\fR      5.1.6 Mailbox has moved to user@example
 #           \fIpattern\fR      5.2.0 Mailbox is unavailable
 #           \fIpattern\fR      5.2.1 Mailbox is disabled
 # .fi
index 9c70fdfe6dcd78066d750de65318d36946bc3a9c..36264d31d6f89d7e418ba2312b60a1849df9dc7e 100644 (file)
@@ -1696,3 +1696,11 @@ unnormalized
 xa
 ascii
 halfdane
+JSON
+bool
+jl
+jq
+js
+posttls
+prepended
+sts
index bf96a7fae8a6cf3d1f5b511516e79c2f509243cf..f9cc469ba60fd1dcd77f056865cd898027048009 100644 (file)
- message from the postqueue command File postqueue postqueue c 
- or kernel bug emits a weird error File postqueue postqueue c 
- Dukhovni File auxiliary collate collate pl 
- sanitization File showq showq c 
- with setgid permissions File postlogd postlogd c 
- cleanup server enters the chroot jail Files cleanup cleanup h 
- global maps c global maps h smtp smtp c 
- cleanup cleanup h cleanup cleanup_init c 
- src global mail_dict c src postalias postalias c 
- src postmap postmap c 
- manpage File postqueue postqueue c 
- Fix by Viktor Dukhovni Files tls tls h tls tls_dane c 
- Discovered by Benny Pedersen File postscreen postscreen c 
- proto postconf proto src tlsproxy tlsproxy c src smtpd smtpd c 
- src tls tls h src tls tls_proxy_client_misc c src tls tls_misc c 
- src global mail_params h src smtp smtp c 
+ address failed due to a database error File verify verify c 
+ a dependency for html html File html Makefile in 
+ a domain File postalias postalias c 
+ aliasing Files proto aliases proto virtual postfix postfix c 
+ a list of comma separated names Files smtpd smtpd hc 
+ and JSON output Files postmulti postmulti c 
+ an unknown or unimplemented command File smtpd smtpd c 
+ are no more alternate MX servers to try Files smtp smtp h 
  attacks Fix by Viktor Dukhovni Files tls tls h tls_client c 
- proto stop spell proto html dns dns h dns dns_lookup c 
- smtp smtp_addr h smtp smtp c smtp smtp_connect c 
- smtp smtp h smtp smtp_params c smtp smtp_session c 
- File smtpd smtpd c 
- smtp smtp_addr c smtp smtp_addr h smtp smtp c 
- smtp smtp_connect c smtp smtp h smtp smtp_params c 
- arguments Files src dns dns h src dns dns_rr_eq_sa c 
- only a subset of all arguments Files src dns dns h 
- global mail_params h smtp smtp c smtpd smtpd c tls tls_misc c 
- tls tls_proxy_client_scan c tls tls_proxy h tlsproxy tlsproxy c 
- smtp smtp c smtpd smtpd c tls tls_misc c 
-proto  proto SASL_README html proto SQLITE_README html 
- proto postconf proto global mail_params h smtp smtp c 
- smtpd smtpd c tls tls_misc c tls tls_proxy_client_misc c 
- tls tls_proxy h tlsproxy tlsproxy c 
- postfix postfix c postlog postlog c 
- util net_mask_top hc smtpd smtpd c smtpd smtpd_peer c 
- util inet_prefix_top hc smtpd smtpd c smtpd smtpd_peer c 
- File smtp smtp h 
- manpage File postscreen postscreen c 
- Files postconf postconf h postconf postconf_dbms c 
-proto  proto ADDRESS_REWRITING_README html 
- proto postconf proto proto ADDRESS_REWRITING_README html 
+ available Files local command c local local c 
+ bounce bounce c bounce bounce_notify_util c cleanup cleanup c 
+ bounce bounce_one_service c cleanup cleanup c 
+ Christophe Kalt Files postqueue postqueue c 
+ cleanup cleanup c cleanup cleanup_init c proto postconf proto 
  cleanup cleanup c local local c smtpd smtpd c 
- postfix postfix c 
- aliasing Files proto aliases proto virtual postfix postfix c 
-proto  proto aliases proto virtual proto ADDRESS_REWRITING_README html 
- master master c postlog postlog c postlogd postlogd c 
- proto postconf proto proto aliases proto virtual 
- posttls finger posttls finger c smtp smtp c smtp smtp_proto c 
- tls tls_client c tls tls h tls tls_misc c 
- tls tls_proxy h tls tls_server c tlsproxy tlsproxy c 
+ cleanup cleanup h cleanup cleanup_addr c cleanup cleanup_api c 
+ cleanup cleanup h cleanup cleanup_extracted c 
+ cleanup cleanup h cleanup cleanup_init c 
+ cleanup cleanup_message c smtp smtp c smtp smtp_connect c 
+ cleanup cleanup_out_recipient c discard discard c error error c 
  Cleanup removed some the the instances Files 
- clients Files posttls finger posttls finger c smtp smtp c 
- smtp smtp c smtp smtp_proto c tls tls_client c tls tls h 
- smtp smtp c smtpd smtpd c tls tls_client c tls tls h 
- smtp smtp_proto c tls tls h tls tls_proxy_client_misc c 
- tls tls_server c tlsproxy tlsproxy c 
- tlsproxy tlsproxy c 
- proto postconf proto smtp smtp c smtpd smtpd c 
- pipelining before the server greeting File smtpd smtpd c 
- before the server greeting File smtpd smtpd c 
- global mail_params h smtpd smtpd c proto postconf proto 
- Typo fix by Trent W Buck Files proto postconf proto proto stop 
- smtp smtp c smtp smtp h smtp smtp_params c smtp smtp_proto c 
- smtp smtp_tls_policy c smtpd smtpd c smtpd smtpd_check c 
- tls tls h tls tls_client c tls tls_dane c tls tls_fprint c 
- reported by Serg File smtp smtp h 
- smtp lmtp_params c smtp smtp c smtp smtp_params c 
- plaintext Problem reported by Serg File smtp smtp h 
- cleanup cleanup c cleanup cleanup_init c proto postconf proto 
- smtpd smtpd c 
- proto postconf proto postscreen postscreen c 
- global maillog_client c master master c smtp smtp c 
- src postalias postalias c src postmap postmap c 
- src postalias postalias c src postmap postmap c 
- src smtpd smtpd c src smtpd smtpd_check c 
- not proxymap or proxywrite File proxymap proxymap c 
- still has its all zero SIZE record File postcat postcat c 
- manpage text File smtp smtp c 
- manpage text Files smtp smtp c global mail_proto h 
- File proxymap proxymap c 
- on process name Files smtp smtp c global mail_proto h 
+ cleanup server enters the chroot jail Files cleanup cleanup h 
+ Cleanup tlsmgr c fix 20240124 File tlsmgr tlsmgr c 
+ client Files dict h dict_proxy c proxymap proxymap c 
  client process name File proxymap proxymap c 
- available Files local command c local local c 
- ID if available File pipe pipe c 
- global smtp_stream h smtpd smtpd c 
- global smtp_stream c global smtp_stream h smtpd smtpd c 
- log the helo mail and rcpt information Files smtpd smtpd c 
- LF LF or LF CR LF before responding This increases
- smtpd smtpd c global smtp_stream hc global cleanup_user h 
- smtpd smtpd c smtpd smtpd_check c 
- keep reading message content after an unexpected LF LF 
- forms Files proto postconf proto smtpd smtpd c 
- CR LF CR CR LF File global smtp_stream c 
+ clients Files posttls finger posttls finger c smtp smtp c 
+ conf postfix tls script discard discard c error error c 
  CR LF CR CR LF There is no smuggling vulnerability
- sequence mail systems send CR LF CR CR LF instead 
- global mail_params h cleanup cleanup c cleanup cleanup_message c 
- Files smtpd smtpd c proto postconf proto RELEASE_NOTES 
- stable releases Files global smtp_stream hc smtpd smtpd c
- Files global smtp_stream hc smtpd smtpd c 
- Files smtpd smtpd c proto postconf proto 
- names Files smtpd smtpd hc 
- or access control limitations Files smtpd smtpd hc 
- spam the log with a warning message File tlsmgr tlsmgr c 
- Cleanup tlsmgr c fix 20240124 File tlsmgr tlsmgr c 
- MX or SRV records File smtp smtp c 
- a list of comma separated names Files smtpd smtpd hc 
+ cross talk between different clients File proxymap proxymap c 
+ discard discard c global ascii_header_text c 
+ Discovered by Benny Pedersen File postscreen postscreen c 
  dnsblog dnsblog c postkick postkick c postlock postlock c 
- postdrop postdrop c postsuper postsuper c sendmail sendmail c 
- postlogd postlogd c 
- qmgr qmgr c qmqpd qmqpd c trivial rewrite trivial rewrite c 
- strategies File smtp smtp c 
- postconf postconf c postconf postconf_dbms c postconf postconf h 
- postconf postconf c postconf postconf_unused c 
- postfix start start fg check reload status Files 
- Files postconf postconf c postconf postconf_unused c 
- the commands postfix start start fg check reload or
- status Files postconf postconf c postconf postconf_dbms c 
- postconf postconf h conf postfix script conf post install 
- postconf postconf c postconf postconf_dbms c 
- File tlsmgr tlsmgr c 
- restrictions Files dns dns h dns dns_lookup c dns dns_rr c 
- systems 6 bytes for LP64 File dns dns h 
- xxfi_unknown return values File smtpd smtpd c 
- or unimplemented commands File smtpd smtpd c 
-proto  proto mysql_table proto pgsql_table proto ldap_table 
+ dns dns h dns dns_lookup c dns dns_rr_filter c dns dns_sec c 
+ dns dns h examples smtpd policy README SPF html index html 
+ Documentation edited for clarity Files pipe pipe c 
+ don t satisfy connection requirements Files smtp smtp h 
+ dual purpose field File tls tls h 
+ Dukhovni File auxiliary collate collate pl 
+ each other Files global mail_conf c postdrop postdrop c 
+ failures Fix by Viktor Dukhovni Wietse Files smtp smtp h 
+ features File postqueue postqueue c 
  File pickup pickup c 
- a domain File postalias postalias c 
- File spawn spawn c 
- an unknown or unimplemented command File smtpd smtpd c 
- inside more consistent Files proto master pipe pipe c 
- unimplemented commands in the SMTP server File smtpd smtpd c 
- cleanup cleanup h cleanup cleanup_extracted c 
  File postcat postcat c 
+ File postscreen postscreen c 
+ File proxymap proxymap c 
+ Files bounce bounce c bounce bounce_notify_service c 
+ Files global smtp_stream hc smtpd smtpd c 
+ Files makedefs bounce bounce c cleanup cleanup_init c 
+ Files Makefile in smtp smtp h smtp smtp_connect c 
+ Files mantools postlink proto postconf proto cleanup cleanup c 
+ File smtpd smtpd c 
+ File smtp smtp h 
+ File spawn spawn c 
+ Files postconf postconf c postconf postconf_unused c 
+ Files postconf postconf h postconf postconf_dbms c 
+ Files proto postconf proto proto DEPRECATION_README html 
+ Files smtpd smtpd c proto postconf proto RELEASE_NOTES 
+ Files smtp smtp h 
+ Files smtp smtp h smtp smtp_key c smtp smtp_proto c 
  Files src tls tls h src tls tls_dh c src tls tls_misc c 
- proto TLSRPT_README html proto postconf proto smtp smtp c 
- proto aliases cleanup cleanup c local local c smtpd smtpd c 
- bounce bounce_one_service c cleanup cleanup c 
- dns dns h dns dns_lookup c dns dns_rr_filter c dns dns_sec c 
+ File tlsmgr tlsmgr c 
+ File tls tls h
+ filters Files cleanup cleanup c cleanup cleanup_message c 
+ Fix by Viktor Dukhovni Files tls tls h tls tls_dane c 
+ forms Files proto postconf proto smtpd smtpd c 
+ for the h option Robert Hansen File postmap postmap c 
+ global maillog_client c master master c smtp smtp c 
+ global mail_params h bounce bounce c 
+ global mail_params h cleanup cleanup c cleanup cleanup_message c 
+ global mail_params h proto postconf proto smtp smtp c 
+ global mail_params h smtpd smtpd c 
+ global mail_params h smtpd smtpd c proto postconf proto 
+ global mail_params h smtp lmtp_params c smtp smtp c 
+ global maps c global maps h smtp smtp c 
+ global pol_stats c global pol_stats_test c smtp smtp h 
+ global pol_stats_test c smtp smtp h smtp smtp_connect c 
+ global rec_types h pickup pickup c 
+ global smtp_stream c global smtp_stream h smtpd smtpd c 
+ global trace h global verify c global verify h local local h 
+ ID if available File pipe pipe c 
+ inside more consistent Files proto master pipe pipe c 
+ is case insensitive Files sendmail sendmail c 
+ keep reading message content after an unexpected LF LF 
  local command c master master c master master h 
- pipe pipe c postfix postfix c postscreen postscreen_dnsbl c 
- qmgr qmgr_entry c qmqpd qmqpd_peer c smtp smtp h 
- Piekert File tlsproxy tlsproxy c
- dns dns h examples smtpd policy README SPF html index html 
- postfix postfix c proto ADDRESS_CLASS_README html 
-proto  proto socketmap_table qmqpd qmqpd c tls tls_misc c 
- proto socketmap_table qmqpd qmqpd c tls tls_misc c 
- a dependency for html html File html Makefile in 
- master dgram_server c master mail_server h postlogd postlogd c 
- reload etc File spawn spawn c 
- proto postconf proto cleanup cleanup c cleanup cleanup_init c 
+ local forward c local local c local local h oqmgr qmgr h 
+ local local c oqmgr qmgr c postconf extract awk qmgr qmgr c 
  logging to the standard error stream File postlog postlog c 
- Files mantools postlink proto postconf proto cleanup cleanup c 
+ long long which just like time_t is a 64 bit type on many
+ manpage File postqueue postqueue c 
+ manpage File postscreen postscreen c 
  many errors I O timeout lost connection File smtpd smtpd c 
that is unknown or known but disabled File smtpd smtpd c 
-proto  proto socketmap_table 
Files bounce bounce c bounce bounce_notify_service c 
cleanup cleanup h cleanup cleanup_addr c cleanup cleanup_api c 
- local forward c local local c local local h oqmgr qmgr h 
pickup pickup c qmgr qmgr h qmgr qmgr_active c 
- qmgr qmgr_deliver c qmgr qmgr_message c qmqpd qmqpd c 
- smtp smtp_proto c smtpd smtpd c verify verify c 
master dgram_server c master mail_server h postlogd postlogd c 
+ master master c postlog postlog c postlogd postlogd c 
message from the postqueue command File postqueue postqueue c 
milter test milter c postconf postconf_edit c smtp smtp c 
+ MX or SRV records File smtp smtp c 
not proxymap or proxywrite File proxymap proxymap c 
+ only a subset of all arguments Files src dns dns h 
+ on process name Files smtp smtp c global mail_proto h 
  operations Files cleanup cleanup h cleanup cleanup_message c 
- global ehlo_mask_test c local forward c smtpd smtpd c 
- more alternate MX servers to try Files smtp smtp h 
- Files sendmail sendmail c global rec_types h 
- Files sendmail sendmail c 
- Files sendmail sendmail c global rec_types h pickup pickup c 
- pipe pipe c sendmail sendmail c 
- smtp smtp c smtp smtp_proto c 
- bounce bounce c bounce bounce_notify_util c cleanup cleanup c 
- cleanup cleanup_message c smtp smtp c smtp smtp_connect c 
- Documentation edited for clarity Files pipe pipe c 
- servers to try Files smtp smtp h smtp smtp_proto c 
- global mail_params h smtpd smtpd c 
- global mail_params h proto postconf proto smtp smtp c 
- proto postconf proto proto TLS_README html 
- the command line Files postmap postmap c postalias postalias c 
- verification in progress File verify verify c 
-+ address failed File verify verify c 
- address failed File verify verify c 
- address failed due to a database error File verify verify c 
- failures Fix by Viktor Dukhovni Wietse Files smtp smtp h 
- Files smtp smtp h 
-proto  proto COMPATIBILITY_README html 
- smtp smtp c tlsproxy tlsproxy c proto postconf proto 
- rhansen rhansen org Files proto DATABASE_README html 
+ oqmgr qmgr c postmulti postmulti c qmgr qmgr c 
+ or access control limitations Files smtpd smtpd hc 
+ or kernel bug emits a weird error File postqueue postqueue c 
+ or unimplemented commands File smtpd smtpd c 
+ pickup pickup c qmgr qmgr h qmgr qmgr_active c 
+ Piekert diagnosed by John Fawcett File showq showq c 
+ Piekert File tlsproxy tlsproxy c
+ pipelining before the server greeting File smtpd smtpd c 
+ pipe pipe c postfix postfix c postscreen postscreen_dnsbl c 
+ pipe pipe c qmgr qmgr_bounce c qmgr qmgr_defer c 
+ Portability makedefs postalias postalias c util dict_debug c 
+ postalias postalias c 
+ postalias postalias c There is more time handling code in
  postconf Makefile in postconf postconf c 
- dict_open Files util dict hc proxymap proxymap c 
- proxymap proxymap c 
+ postconf postconf c postconf postconf_dbms c 
+ postconf postconf h conf postfix script conf post install 
+ postconf postconf hc postconf postconf_main c 
+ postdrop postdrop c postsuper postsuper c sendmail sendmail c 
+ postfix postfix c 
+ postfix postfix c postlog postlog c 
+ postfix postfix c proto ADDRESS_CLASS_README html 
+ postlogd postlogd c 
+ postlog postlog c postqueue postqueue c 
+ postmap Makefile in postmap postmap c postalias Makefile in 
  postmap postmap c postalias postalias c 
client Files dict h dict_proxy c proxymap proxymap c 
cross talk between different clients File proxymap proxymap c 
postmulti Makefile in postmulti postmulti c 
postqueue showq_compat c postqueue showq_json c showq showq c 
  postscreen postscreen c 
- for the h option Robert Hansen File postmap postmap c 
- Support for the ll long long etc and j intmax_t 
- postalias postalias c There is more time handling code in
- long long which just like time_t is a 64 bit type on many
- File tls tls h
- dual purpose field File tls tls h 
- conf postfix tls script discard discard c error error c 
- oqmgr qmgr c postmulti postmulti c qmgr qmgr c 
- src global config_known_tcp_ports c postmulti postmulti c 
- virtual virtual c 
+ program manpages Files cleanup cleanup c smtpd smtpd c 
+ proto aliases cleanup cleanup c local local c smtpd smtpd c 
+ proto postconf proto global mail_params h smtp smtp c 
+ proto postconf proto postscreen postscreen c 
+ proto postconf proto proto ADDRESS_REWRITING_README html 
+ proto postconf proto proto aliases proto virtual 
+ proto postconf proto proto TLS_README html 
+ proto postconf proto smtp smtp c smtpd smtpd c 
+ proto postconf proto src tlsproxy tlsproxy c src smtpd smtpd c 
+proto  proto ADDRESS_REWRITING_README html 
+proto  proto aliases proto virtual proto ADDRESS_REWRITING_README html 
+proto  proto COMPATIBILITY_README html 
+proto  proto mysql_table proto pgsql_table proto ldap_table 
+proto  proto REQUIRETLS_README html global mail_params hc 
+proto  proto REQUIRETLS_README html smtp smtp_reqtls_policy c 
+proto  proto SASL_README html proto SQLITE_README html 
+proto  proto socketmap_table 
+proto  proto socketmap_table qmqpd qmqpd c tls tls_misc c 
+ proto socketmap_table qmqpd qmqpd c tls tls_misc c 
+ proto stop spell proto html dns dns h dns dns_lookup c 
+ proto TLSRPT_README html proto postconf proto smtp smtp c 
+ proxymap proxymap c 
+ qmgr qmgr c qmqpd qmqpd c trivial rewrite trivial rewrite c 
+ qmgr qmgr_deliver c qmgr qmgr_message c qmqpd qmqpd c 
+ qmgr qmgr_entry c qmqpd qmqpd_peer c smtp smtp h 
+ qmgr qmgr_message c smtp smtp h smtp smtp_connect c 
+ reload etc File spawn spawn c 
  request Reported by John Doe File tlsproxy tlsproxy c 
+ restrictions Files dns dns h dns dns_lookup c dns dns_rr c 
+ returned to the sender Files showq showq c 
+ rhansen rhansen org Files proto DATABASE_README html 
+ role is received File tlsproxy tlsproxy c 
+ sanitization File showq showq c 
+ sendmail sendmail c global rec_types h postcat postcat c 
+ sequence mail systems send CR LF CR CR LF instead 
+ showq showq c Ditto for sendmail O smtputf8 yes no 
+ smtpd smtpd c 
+ smtpd smtpd c global smtp_stream hc global cleanup_user h 
  smtpd smtpd c smtpd smtpd_chat c global mail_params h 
- Files Makefile in smtp smtp h smtp smtp_connect c 
- global mail_params h bounce bounce c 
+ smtpd smtpd c smtpd smtpd_check c 
+ smtpd smtpd c smtp smtp_connect c smtp smtp_proto c 
+ smtpd smtpd c tls tls_misc c tls tls_proxy_client_misc c 
  smtp lmtp_params c smtp smtp c smtp smtp_connect c 
+ smtp lmtp_params c smtp smtp c smtp smtp_params c 
+ smtp lmtp_params c smtp smtp h smtp smtp_params c 
+ smtp smtp_addr c smtp smtp_addr h smtp smtp c 
+ smtp smtp c 
+ smtp smtp_connect c smtp smtp h smtp smtp_params c 
+ smtp smtp c smtpd smtpd c tls tls_client c tls tls h 
+ smtp smtp c smtpd smtpd c trivial rewrite trivial rewrite c 
+ smtp smtp c smtp smtp h smtp smtp_params c smtp smtp_proto c 
+ smtp smtp c smtp smtp_proto c tls tls_client c tls tls h 
+ smtp smtp c tlsproxy tlsproxy c proto postconf proto 
+ smtp smtp h smtp smtp_connect c smtp smtp_params c 
  smtp smtp h smtp smtp_params c smtp smtp_proto c 
- information Files sendmail sendmail c pickup pickup c 
- postcat postcat c showq showq c 
- discard discard c error error c global Makefile in 
- global verify c global verify h local local h 
- pipe pipe c qmgr qmgr_bounce c qmgr qmgr_defer c 
- qmgr qmgr_message c smtp smtp h smtp smtp_connect c 
+ smtp smtp_proto c smtpd smtpd c verify verify c 
+ smtp smtp_proto c tls tls h tls tls_proxy_client_misc c 
+ smtp smtp_reqtls_policy_test c smtpd smtpd c smtpd smtpd_chat c 
+ smtp smtp_tls_policy c smtpd smtpd c smtpd smtpd_check c 
  smtp smtp_trouble c virtual virtual h 
- connection requirements Files smtp smtp h smtp smtp_key c 
- Files smtp smtp h smtp smtp_key c smtp smtp_proto c 
- smtp smtp c smtp smtp h smtp smtp_connect c smtp smtp_params c 
- smtp smtp h smtp smtp_connect c smtp smtp_proto c 
- sendmail sendmail c pipe pipe c postcat postcat c 
- showq showq c 
- content filters Files cleanup cleanup c 
+ src global config_known_tcp_ports c postmulti postmulti c 
+ src global mail_dict c src postalias postalias c 
+ src global mail_params h src smtp smtp c 
+ src postalias postalias c src postmap postmap c 
+ src postmap postmap c 
+ src smtpd smtpd c src smtpd smtpd_check c 
+ src tls tls h src tls tls_proxy_client_misc c src tls tls_misc c 
+ status Files postconf postconf c postconf postconf_dbms c 
+ still has its all zero SIZE record File postcat postcat c 
+ strategies File smtp smtp c 
  style content filter Files smtpd smtpd c smtp smtpd_proto c 
- global pol_stats_test c smtp smtp h smtp smtp_connect c 
- global mail_params h smtp lmtp_params c smtp smtp c 
-proto  proto REQUIRETLS_README html 
-proto  proto REQUIRETLS_README html global mail_params c 
-proto  proto REQUIRETLS_README html smtp smtp_reqtls_policy c 
- sendmail sendmail c global rec_types h postcat postcat c 
- smtp smtp h smtp smtp_connect c smtp smtp_params c 
+ Support for the ll long long etc and j intmax_t 
+ systems 6 bytes for LP64 File dns dns h 
+ the command line Files postmap postmap c postalias postalias c 
+ the commands postfix start start fg check reload or
  the policies policy policy domain value This ignores
+ tlsproxy tlsproxy c 
  TLSRPT Workaround when policies policy policy type is
- proto postconf proto proto REQUIRETLS_README html 
- Christophe Kalt Files postqueue postqueue c 
- postqueue showq_compat c postqueue showq_json c showq showq c 
- role is received File tlsproxy tlsproxy c 
- Files proto postconf proto proto DEPRECATION_README html 
- features File postqueue postqueue c 
-proto  proto Makefile in 
- are no more alternate MX servers to try Files smtp smtp h 
- cleanup cleanup_out_recipient c discard discard c error error c 
- don t satisfy connection requirements Files smtp smtp h 
- File postscreen postscreen c 
- filters Files cleanup cleanup c cleanup cleanup_message c 
- global pol_stats c global pol_stats_test c smtp smtp h 
- global rec_types h pickup pickup c 
- global trace h global verify c global verify h local local h 
- is case insensitive Files sendmail sendmail c 
-proto  proto REQUIRETLS_README html global mail_params hc 
- showq showq c Ditto for sendmail O smtputf8 yes no 
- smtpd smtpd c smtp smtp_connect c smtp smtp_proto c 
- util mac_expand ref proto postconf proto proto Makefile in 
- smtp lmtp_params c smtp smtp h smtp smtp_params c 
- postmap Makefile in postmap postmap c postalias Makefile in 
- postalias postalias c 
- postconf postconf hc postconf postconf_main c 
- and JSON output Files postmulti postmulti c 
- postmulti Makefile in postmulti postmulti c 
+ tls tls h tls tls_client c tls tls_dane c tls tls_fprint c 
+ tls tls_proxy h tlsproxy tlsproxy c 
+ tls tls_server c tlsproxy tlsproxy c 
  to integrate into test scripts File postmulti postmulti c 
- local local c oqmgr qmgr c postconf extract awk qmgr qmgr c 
- makedefs bounce bounce c cleanup cleanup_init c 
- smtp smtp c smtpd smtpd c trivial rewrite trivial rewrite c 
- Files makedefs bounce bounce c cleanup cleanup_init c 
- Portability makedefs postalias postalias c util dict_debug c 
- returned to the sender Files showq showq c 
- Piekert diagnosed by John Fawcett File showq showq c 
- each other Files global mail_conf c postdrop postdrop c 
- postlog postlog c postqueue postqueue c 
+ Typo fix by Trent W Buck Files proto postconf proto proto stop 
+ unimplemented commands in the SMTP server File smtpd smtpd c 
+ util inet_prefix_top hc smtpd smtpd c smtpd smtpd_peer c 
+ util mac_expand ref proto postconf proto proto Makefile in 
+ verification in progress File verify verify c 
+ virtual virtual c 
+ with setgid permissions File postlogd postlogd c 
index c5ffff2ac9f950886fc0272000151f03c182d0ce..3354113d280ab43f00d72759f56d43f17da5a238 100644 (file)
 #      This is the default for final delivery to domains listed
 #      with \fBmydestination\fR, and for [\fIipaddress\fR]
 #      destinations that match \fB$inet_interfaces\fR or
-#      \fB$proxy_interfaces\fR. The default \fInexthop\fR destination
-#      is the MTA hostname.
+#      \fB$proxy_interfaces\fR.
+#
+#      In order of decreasing precedence, the \fInexthop\fR destination
+#      is taken from \fBtransport_maps\fR, \fBlocal_transport\fR,
+#      or from the recipient domain.
 # .IP "\fBvirtual_transport (default: virtual:)\fR"
-#      This is the default for final delivery to domains listed
-#      with \fBvirtual_mailbox_domains\fR. The default \fInexthop\fR
-#      destination is the recipient domain.
+#      This is the default for final delivery to domains listed with
+#      \fBvirtual_mailbox_domains\fR.
+#
+#      In order of decreasing precedence, the \fInexthop\fR destination
+#      is taken from \fBtransport_maps\fR, \fBvirtual_transport\fR,
+#      or from the recipient domain.
 # .IP "\fBrelay_transport (default: relay:)\fR"
 #      This is the default for remote delivery to domains listed
-#      with \fBrelay_domains\fR. In order of decreasing precedence,
-#      the \fInexthop\fR destination is taken from \fBrelay_transport\fR,
-#      \fBsender_dependent_relayhost_maps\fR, \fBrelayhost\fR, or from the
-#      recipient domain.
+#      with \fBrelay_domains\fR.
+#
+#      In order of decreasing precedence, the \fInexthop\fR destination
+#      is taken from \fBtransport_maps\fR, \fBrelay_transport\fR,
+#      \fBsender_dependent_relayhost_maps\fR, \fBrelayhost\fR, or from
+#      the recipient domain.
 # .IP "\fBdefault_transport (default: smtp:)\fR"
 #      This is the default for remote delivery to other destinations.
+#
 #      In order of decreasing precedence, the \fInexthop\fR
-#      destination is taken from \fBsender_dependent_default_transport_maps,
+#      destination is taken from \fBtransport_maps\fR,
+#      \fBsender_dependent_default_transport_maps,
 #      \fBdefault_transport\fR, \fBsender_dependent_relayhost_maps\fR,
 #      \fBrelayhost\fR, or from the recipient domain.
 # .PP
 #           \fB\&.example.com     uucp:example\fR
 # .fi
 #
-#      When no nexthop host name is specified, the destination domain
-#      name is used instead. For example, the following directs mail for
-#      \fIuser\fR@\fBexample.com\fR via the \fBslow\fR transport to a mail
-#      exchanger for \fBexample.com\fR.  The \fBslow\fR transport could be
-#      configured to run at most one delivery process at a time:
+#      When no nexthop destination is specified, Postfix uses (from low
+#      to high precedence): the recipient domain, the nexthop specified
+#      with relayhost, with sender_dependent_relayhost_maps (for remote
+#      deliveries only), with the transport for the address domain class
+#      (see DESCRIPTION above), or with
+#      sender_dependent_default_transport_maps (for remote deliveries
+#      only). For example, the following directs mail for
+#      \fIuser\fR@\fBexample.com\fR via the \fBslow\fR transport to a
+#      mail exchanger for \fBexample.com\fR. The \fBslow\fR transport
+#      could be configured to run at most one delivery process at a time:
 #
 # .nf
 #           \fBexample.com      slow:\fR
 # .fi
 #
 #      When no transport is specified, Postfix uses the transport that
-#      matches the address domain class (see DESCRIPTION
-#      above).  The following sends all mail for \fBexample.com\fR and its
+#      matches the address domain class (see DESCRIPTION above), or
+#      the transport specified with
+#      sender_dependent_default_transport_maps (for remote deliveries
+#      only). The following sends all mail for \fBexample.com\fR and its
 #      subdomains to host \fBgateway.example.com\fR:
 #
 # .nf
index 7ade5c6c6d99bfdc0f5e1bcb23baec7ddbd01784..7f0ce193b30f07fbab80596743206ed5f9522b64 100644 (file)
 /*     The mail filter protocol version and optional protocol extensions
 /*     for communication with a Milter application; prior to Postfix 2.6
 /*     the default protocol is 2.
-/* .IP "\fBmilter_default_action (tempfail)\fR"
+/* .IP "\fBmilter_default_action (Postfix >= 3.11: shutdown; Postfix < 3.11: tempfail)\fR"
 /*     The default action when a Milter (mail filter) response is
 /*     unavailable (for example, bad Postfix configuration or Milter
 /*     failure).
index 9fe7aa1320ce64003f50d754976450736bb237ce..4819c712d03117a4ee3402e7713114714d44830f 100644 (file)
@@ -2079,10 +2079,12 @@ static const char *cleanup_milter_apply(CLEANUP_STATE *state, const char *event,
     case 'S':
        if (state->flags & CLEANUP_STAT_CONT)
            return (0);
-       /* XXX Can this happen after end-of-message? */
-       state->flags |= CLEANUP_STAT_CONT;
+       /* Shutdown' may be the default action for an I/O error. */
+       CLEANUP_MILTER_SET_SMTP_REPLY(state, resp);
+       ret = state->reason;
+       state->errs |= CLEANUP_STAT_WRITE;
        action = "milter-reject";
-       text = cleanup_strerror(CLEANUP_STAT_CONT);
+       text = resp + 4;
        break;
 
        /*
index 43b728a9c077b1737c1ac0eef66ca98ed60cc85d..ffaf0a690718b18acbfc72a09e3e74ee8c442589 100644 (file)
@@ -186,7 +186,7 @@ static int deliver_message(DELIVER_REQUEST *request)
     for (nrcpt = 0; nrcpt < request->rcpt_list.len; nrcpt++) {
        rcpt = request->rcpt_list.info + nrcpt;
        status = sent(BOUNCE_FLAGS(request), request->queue_id,
-                     &request->msg_stats, rcpt, "none", 
+                     &request->msg_stats, rcpt, "none",
                      NO_TLS_STATS, &dsn);
        if (status == 0 && (request->flags & DEL_REQ_FLAG_SUCCESS))
            deliver_completed(src, rcpt->offset);
index 76839133d4d7547f8ef7fe74d8ddc84d283b0274..773730416e9ae7cefb86f631a3a0238f2af157ba 100644 (file)
@@ -193,7 +193,7 @@ char   *make_ascii_header_text(VSTRING *result, int flags, const char *str)
 typedef struct TEST_CASE {
     const char *label;
     int     (*action) (const struct TEST_CASE *);
-    int        flags;
+    int     flags;
     const char *input;
     const char *exp_output;
 } TEST_CASE;
@@ -209,19 +209,19 @@ static int test_make_ascii_header_text(const TEST_CASE *tp)
     const char *got;
 
     if (result == 0)
-        result = vstring_alloc(100);
+       result = vstring_alloc(100);
 
     got = make_ascii_header_text(result, tp->flags, tp->input);
 
     if (!got != !tp->exp_output) {
-        msg_warn("got result ``%s'', want ``%s''",
-                 got ? got : "null",
-                 tp->exp_output ? tp->exp_output : "null");
-        return (FAIL);
+       msg_warn("got result ``%s'', want ``%s''",
+                got ? got : "null",
+                tp->exp_output ? tp->exp_output : "null");
+       return (FAIL);
     }
     if (got && strcmp(got, tp->exp_output) != 0) {
-        msg_warn("got result ``%s'', want ``%s''", got, tp->exp_output);
-        return (FAIL);
+       msg_warn("got result ``%s'', want ``%s''", got, tp->exp_output);
+       return (FAIL);
     }
     return (PASS);
 }
@@ -291,17 +291,17 @@ int     main(int argc, char **argv)
     msg_vstream_init(sane_basename((VSTRING *) 0, argv[0]), VSTREAM_ERR);
 
     for (tp = test_cases; tp->label != 0; tp++) {
-        int     test_failed;
+       int     test_failed;
 
-        msg_info("RUN  %s", tp->label);
-        test_failed = tp->action(tp);
-        if (test_failed) {
-            msg_info("FAIL %s", tp->label);
-            fail++;
-        } else {
-            msg_info("PASS %s", tp->label);
-            pass++;
-        }
+       msg_info("RUN  %s", tp->label);
+       test_failed = tp->action(tp);
+       if (test_failed) {
+           msg_info("FAIL %s", tp->label);
+           fail++;
+       } else {
+           msg_info("PASS %s", tp->label);
+           pass++;
+       }
     }
     msg_info("PASS=%d FAIL=%d", pass, fail);
     exit(fail != 0);
index 4b574bdd126d9050c183ac93210de5bde443c0ac..c302e94ddfb67fd33867ec80b34e347d57a5135c 100644 (file)
@@ -53,4 +53,3 @@ extern char *make_ascii_header_text(VSTRING *result, int flags, const char *in);
 /*--*/
 
 #endif
-
index a0ce1b2e0070a8e04c6725ac38db21a386a6a1f4..cf3a2f5c3eda182ebb3f1b3388bc2f99e77e12a2 100644 (file)
@@ -512,7 +512,7 @@ DICT   *dict_proxy_open(const char *map, int open_flags, int dict_flags)
            || attr_print(stream, ATTR_FLAG_NONE,
                          SEND_ATTR_STR(MAIL_ATTR_REQ, PROXY_REQ_OPEN),
                      SEND_ATTR_STR(MAIL_ATTR_TABLE, dict_proxy->dict.name),
-                SEND_ATTR_INT(MAIL_ATTR_INST_FLAGS, dict_proxy->inst_flags),
+               SEND_ATTR_INT(MAIL_ATTR_INST_FLAGS, dict_proxy->inst_flags),
                          ATTR_TYPE_END) != 0
            || vstream_fflush(stream)
            || attr_scan(stream, ATTR_FLAG_STRICT,
index e3cce1e4de8b25f4cc01239b854ddbc01f484ab1..b546300f9c35bbf1f87c8fee047b9db83cd11d4f 100644 (file)
@@ -21,7 +21,6 @@
 /*     Wietse Venema porcupine.org
 /*--*/
 
-/*     
  /*
   * System library.
   */
@@ -89,8 +88,8 @@ static void create_and_populate_db(char *dbpath, const char *commands)
        msg_fatal("close %s: %m", dbpath);
 
     /*
-     * TODO(wietse) Open the database file, prepare and execute commands
-     * to populate the database, and close the database.
+     * TODO(wietse) Open the database file, prepare and execute commands to
+     * populate the database, and close the database.
      */
     if (commands) {
        msg_fatal("commands are not yet supported");
@@ -100,7 +99,7 @@ static void create_and_populate_db(char *dbpath, const char *commands)
 /* create_and_populate_cf - create sqlite_table(5) configuration file */
 
 static void create_and_populate_cf(char *cfpath, const char *dbpath,
-                                         const char *cftext)
+                                          const char *cftext)
 {
     int     fd;
     VSTREAM *fp;
index c52941a59c81f5ef64ac44aac89ee41dfc40d255..0f09bf03ea9165593e931c6a1001eb4a630d0460 100644 (file)
@@ -229,7 +229,7 @@ static int haproxy_srvr_parse_addr(const char *str, MAI_HOSTADDR_STR *addr,
        ss_len = sizeof(ss);
        sa_len = &ss_len;
     } else {
-       if (sa_len == 0) 
+       if (sa_len == 0)
            msg_panic("haproxy_srvr_parse: sockaddr length not specified");
     }
     if (*sa_len < res->ai_addrlen)
@@ -302,7 +302,7 @@ static int haproxy_srvr_parse_v2_addr_v4(uint32_t sin_addr,
        sin_len = sizeof(sin);
        sa_len = &sin_len;
     } else {
-       if (sa_len == 0) 
+       if (sa_len == 0)
            msg_panic("haproxy_srvr_parse: sockaddr length not specified");
        if (*sa_len < sizeof(sin))
            msg_panic("haproxy_srvr_parse: sockaddr size %d too small",
index 8a21f79606af8dcb3194833c2d84ec2f4df90e19..5536c6bb16edbe09f00b1abe8a8f295ae37d6fd2 100644 (file)
@@ -131,7 +131,7 @@ struct proxy_hdr_v2 {
   * End protocol v2 definitions from haproxy/include/types/connection.h.
   */
 
-#endif /* _HAPROXY_SRVR_INTERNAL_ */
+#endif                                 /* _HAPROXY_SRVR_INTERNAL_ */
 
 /* LICENSE
 /* .ad
index cafd74092858a51b9e17097263908b4a071ddec1..6d346ad3d24a9e379829b4e87c3d06213a39250a 100644 (file)
@@ -401,7 +401,6 @@ const char null_format_string[1] = "";
   */
 int     warn_compat_break_smtp_tlsrpt_skip_reused_hs;
 int     warn_compat_break_smtp_tls_level;
-int     warn_compat_break_lmtp_tls_level;
 int     warn_compat_break_tlsp_clnt_level;
 
  /*
@@ -698,8 +697,6 @@ static void check_legacy_defaults(void)
            warn_compat_break_smtp_tlsrpt_skip_reused_hs = 1;
        if (mail_conf_lookup(VAR_SMTP_TLS_LEVEL) == 0)
            warn_compat_break_smtp_tls_level = 1;
-       if (mail_conf_lookup(VAR_LMTP_TLS_LEVEL) == 0)
-           warn_compat_break_lmtp_tls_level = 1;
        if (mail_conf_lookup(VAR_TLSP_CLNT_LEVEL) == 0)
            warn_compat_break_tlsp_clnt_level = 1;
 #endif
index ce450a434557932a338c3557a0552a8351086b25..c7ab0f205f45943205b7479f09bf1f1876caf7e6 100644 (file)
@@ -82,7 +82,6 @@ extern int warn_compat_respectful_logging;
 
 extern int warn_compat_break_smtp_tlsrpt_skip_reused_hs;
 extern int warn_compat_break_smtp_tls_level;
-extern int warn_compat_break_lmtp_tls_level;
 extern int warn_compat_break_tlsp_clnt_level;
 
 extern long compat_level;
@@ -1491,8 +1490,7 @@ extern bool var_smtp_tls_wrappermode;
 #ifdef USE_TLS
 #define DEF_SMTP_TLS_LEVEL     "${{$compatibility_level} <level {3.11} ?" \
                                " {} : {may}}"
-#define DEF_LMTP_TLS_LEVEL     "${{$compatibility_level} <level {3.11} ?" \
-                               " {} : {may}}"
+#define DEF_LMTP_TLS_LEVEL     ""
 #else
 #define DEF_SMTP_TLS_LEVEL     ""
 #define DEF_LMTP_TLS_LEVEL     ""
index 7d495424c80ef2e79102773cfba110b00841888b..50d92529ba53e2636a068750f918d8c6d3d1afea 100644 (file)
@@ -20,8 +20,8 @@
   * Patches change both the patchlevel and the release date. Snapshots have no
   * patchlevel; they change the release date only.
   */
-#define MAIL_RELEASE_DATE      "20251219"
-#define MAIL_VERSION_NUMBER    "3.11"
+#define MAIL_RELEASE_DATE      "20251222"
+#define MAIL_VERSION_NUMBER    "3.12"
 
 #ifdef SNAPSHOT
 #define MAIL_VERSION_DATE      "-" MAIL_RELEASE_DATE
index e842cd6ea93bf1808ebd984f8de161d299e01dbc..d52bb8e77b75169b18d71fcb44f1df096f7474e0 100644 (file)
@@ -50,6 +50,7 @@ extern void pol_stats_free(POL_STATS *);
 extern void pol_stat_activate(POL_STATS *, int, const char *);
 extern void pol_stat_decide(POL_STATS *, int, const char *, int);
 extern void pol_stats_format(VSTRING *, const POL_STATS *);
+
 #endif                                 /* USE_TLS */
 
 #define NO_TLS_STATS   ((POL_STATS *) 0)
index b7caaeab7fb6486e835eeca7635100b1f773884d..9a9da5eb856326d83b6c2afd2110df38549d1b85 100644 (file)
@@ -318,10 +318,10 @@ char   *rfc2047_encode(VSTRING *result, int header_context,
     }
 
     /*
-     * Choose between quoted-printable or base64 encoding. 
-     *
-     * Header strings are short, so making multiple passes over the input is
-     * not a disaster. How many bytes would the encoder produce using
+     * Choose between quoted-printable or base64 encoding.
+     * 
+     * Header strings are short, so making multiple passes over the input is not
+     * a disaster. How many bytes would the encoder produce using
      * quoted-printable? We don't optimize for the shortest encoding but for
      * compromised readability. If the input is not short, and more than 1/2
      * of the input bytes need to be encoded, then the content is mostly not
index 77365bf8a2612c876bce270a0ae1ec4d9603745e..6b40d4286f1451c11df6397d6b79f58ac4877667 100644 (file)
@@ -23,9 +23,9 @@
 #define RFC2047_HEADER_CONTEXT_PHRASE  (2)
 
 extern char *rfc2047_encode(VSTRING *result, int header_context,
-                                     const char *charset,
-                                     const char *in, ssize_t len,
-                                     const char *out_separator);
+                                   const char *charset,
+                                   const char *in, ssize_t len,
+                                   const char *out_separator);
 
 /* LICENSE
 /* .ad
index f8570db275804fef34232657d8c3b2d75208b7e8..4bd1c9f8b65ee364b7a61799f4a59a1ce56f2059 100644 (file)
@@ -90,4 +90,3 @@ const char *sendopts_strflags(unsigned flags, int delim)
     return (str_name_mask_opt(result, "sendopts_strflags", sendopts_flag_map,
                              flags, NAME_MASK_FATAL | dflags[cp - delims]));
 }
-
index 4ecac4ea923085a31dc08b00f0321de96773d7d5..05bd1e1c7ae838bfb90133738d6e53b61638d151 100644 (file)
@@ -1347,7 +1347,7 @@ static const char *milter8_event(MILTER8 *milter, int event,
                /* XXX This should be reported with a call-back. */
                reply = vstring_alloc(100);
                if (saved_size > 100)
-                   saved_size=100;
+                   saved_size = 100;
                vstring_sprintf(reply, "H%.*s", (int) saved_size,
                                STR(milter->buf));
                milter8_def_reply(milter, STR(reply));
index 49c1bacedbe15eb24637b57890b43d0889cf9a12..107b88443b61c1ff674a70b2fd30e954ff7c4a32 100644 (file)
@@ -342,7 +342,7 @@ static sfsistat test_eom(SMFICTX *ctx)
                len = strcspn(buf, "\n");
                buf[len + 0] = '\r';
                buf[len + 1] = '\n';
-               if (smfi_replacebody(ctx,(unsigned char *) buf, len + 2) == MI_FAILURE) {
+               if (smfi_replacebody(ctx, (unsigned char *) buf, len + 2) == MI_FAILURE) {
                    fprintf(stderr, "body replace failure\n");
                    exit(1);
                }
index 2808290bf444685a416947d19d16cc14a88076f7..958014abd34b82511dace2751137a75f2b7f4455 100644 (file)
@@ -209,7 +209,7 @@ void    pcf_edit_main(int mode, int argc, char **argv)
            msg_panic("pcf_edit_main: unknown mode %d", mode);
        }
        if ((cvalue = htable_find(table, pattern)) != 0) {
-           if (edit_value && cvalue->value 
+           if (edit_value && cvalue->value
                && strcmp(edit_value, cvalue->value) != 0)
                msg_warn("ignoring earlier request: '%s = %s'",
                         pattern, cvalue->value);
index 2391d41c47cfe5bb5dcd9b3584741d17372f6812..9a7bcaeb7c3ab2b28650e758075a21381f4ff6dd 100644 (file)
@@ -1183,7 +1183,7 @@ bool    var_smtp_tlsrpt_enable;
 char   *var_smtp_tlsrpt_sockname;
 bool    var_smtp_tlsrpt_skip_reused_hs;
 char   *var_smtp_reqtls_policy;
-bool   var_log_tls_feature_status;
+bool    var_log_tls_feature_status;
 
  /* Special handling of 535 AUTH errors. */
 char   *var_smtp_sasl_auth_cache_name;
@@ -1571,9 +1571,9 @@ static void pre_init(char *unused_name, char **unused_argv)
 
 #ifdef USE_TLS
     /* Postfix <= 3.10 backwards compatibility. */
-    if (WARN_COMPAT_BREAK_LMTP_SMTP(tls_level))
+    if (smtp_mode && warn_compat_break_smtp_tls_level)
        msg_info("using backwards-compatible default setting %s=(empty)",
-                VAR_LMTP_SMTP(TLS_LEVEL));
+                VAR_SMTP_TLS_LEVEL);
 #endif
     if (*var_smtp_tls_level != 0)
        switch (tls_level_lookup(var_smtp_tls_level)) {
index 2e6d88bbd6e912adfa9d9d8630de236e9586299e..eb445eb9decc18d3f920c24479727be102ab8ae2 100644 (file)
@@ -261,9 +261,9 @@ static int converts_good_u_label_query(const TEST_CASE *tp)
     const char *ext_policy = "inline:{{foo.xn--1xa.example = opportunistic}} enforce";
     const struct QUERY_REPLY qr[] = {
         {"foo.xn--1xa.example", SMTP_REQTLS_POLICY_ACT_OPPORTUNISTIC},
-        {"foo.π.example", SMTP_REQTLS_POLICY_ACT_OPPORTUNISTIC},
+        {"foo.\xcf\x80.example", SMTP_REQTLS_POLICY_ACT_OPPORTUNISTIC},
         {"x.foo.xn--1xa.example", SMTP_REQTLS_POLICY_ACT_ENFORCE},
-        {"x.foo.π.example", SMTP_REQTLS_POLICY_ACT_ENFORCE},
+        {"x.foo.\xcf\x80.example", SMTP_REQTLS_POLICY_ACT_ENFORCE},
         {"example", SMTP_REQTLS_POLICY_ACT_ENFORCE},
         {0},
     };
@@ -289,8 +289,8 @@ static int fails_bad_u_label_query(const TEST_CASE *tp)
 {
     const char *ext_policy = "inline:{{foo.xn--1xa.example = opportunistic}} disable";
     const struct QUERY_REPLY qr[] = {
-        {"foo.π.example", SMTP_REQTLS_POLICY_ACT_OPPORTUNISTIC},
-        {"foo.-π.example", SMTP_REQTLS_POLICY_ACT_ENFORCE},
+        {"foo.\xcf\x80.example", SMTP_REQTLS_POLICY_ACT_OPPORTUNISTIC},
+        {"foo.-\xcf\x80.example", SMTP_REQTLS_POLICY_ACT_ENFORCE},
         {"example", SMTP_REQTLS_POLICY_ACT_DISABLE},
         {0},
     };
index 6f2d918e37c274dae360331fd9b5ce32f36eae29..5cf24780893bd531b7aff4f5e2b8bc31f8798edb 100644 (file)
 /*     The mail filter protocol version and optional protocol extensions
 /*     for communication with a Milter application; prior to Postfix 2.6
 /*     the default protocol is 2.
-/* .IP "\fBmilter_default_action (tempfail)\fR"
+/* .IP "\fBmilter_default_action (Postfix >= 3.11: shutdown; Postfix < 3.11: tempfail)\fR"
 /*     The default action when a Milter (mail filter) response is
 /*     unavailable (for example, bad Postfix configuration or Milter
 /*     failure).
@@ -6713,7 +6713,7 @@ static void post_jail_init(char *unused_name, char **unused_argv)
      * recipient checks, address mapping, header_body_checks?.
      */
     smtpd_input_transp_mask =
-       input_transp_mask(VAR_INPUT_TRANSP, var_input_transp);
+    input_transp_mask(VAR_INPUT_TRANSP, var_input_transp);
 
     /*
      * Initialize before-queue filter options: do we want speed-matching
index ab4ad83c87fa7f57e852ce1816dc026df9d76f66..32ec77048176a432d4693cc881f57477c659c72b 100644 (file)
@@ -134,8 +134,8 @@ void    smtpd_chat_pre_jail_init(void)
      */
     if (*var_smtpd_reject_filter_maps)
        smtpd_reject_filter_maps = maps_create(VAR_SMTPD_REJECT_FILTER_MAPS,
-                                        var_smtpd_reject_filter_maps,
-                                        DICT_FLAG_LOCK);
+                                              var_smtpd_reject_filter_maps,
+                                              DICT_FLAG_LOCK);
 
     /*
      * SMTP server reject footer.
index d1e42cc48e82a4d50cf64e89f525afad8c080258..5e3bb29dcd6c5a244000d408a0873b83fa412af4 100644 (file)
@@ -98,9 +98,9 @@ static void reset_global_variables(void)
 
  /*
   * Basic tests that smtpd_peer_init() will update the SMTPD_STATE structure
-  * with the expected error info or endpoint info. This needs to be subclassed
-  * to support different input sources (local client, no open connection,
-  * HaProxy, postscreen, etc.).
+  * with the expected error info or endpoint info. This needs to be
+  * subclassed to support different input sources (local client, no open
+  * connection, HaProxy, postscreen, etc.).
   */
 typedef struct TEST_BASE {
     const char *label;
@@ -623,8 +623,8 @@ typedef struct PEER_FROM_HAPROXY_CASE {
 
  /*
   * We need only two tests to show that smtpd_haproxy.c propagates errors and
-  * non-error endpoint info. We don't need to duplicate each individual test in
-  * haproxy_srvr_test.c for different IP protocols, HaProxy protocol
+  * non-error endpoint info. We don't need to duplicate each individual test
+  * in haproxy_srvr_test.c for different IP protocols, HaProxy protocol
   * versions, and error modes.
   */
 static const PEER_FROM_HAPROXY_CASE peer_from_haproxy_caes[] = {
index 02db1d56f2667a7da3f75f8958716044354496fa..a721376884473e584e5262a3102f311b2c22479e 100644 (file)
@@ -365,9 +365,10 @@ static void verify_x509(TLS_SESS_STATE *TLScontext, X509 *peercert,
        }
     } else if (TLS_MUST_MATCH(TLScontext->level) &&
               x509_err == X509_V_ERR_HOSTNAME_MISMATCH) {
+
        /*
-        * If the only error is a hostname mismatch, the certificate must have
-        * been trusted.
+        * If the only error is a hostname mismatch, the certificate must
+        * have been trusted.
         */
        TLScontext->peer_status |= TLS_CERT_FLAG_TRUSTED;
     }
index 247b67d45720b72a415a3b018dd282157595de35..835a43370b01a78009fbeb2c62e463047beed1ec 100644 (file)
@@ -408,7 +408,7 @@ void    tls_auto_groups(SSL_CTX *ctx, const char *eecdh, const char *ffdhe)
 
     /* Use OpenSSL defaults */
     if (!*eecdh && !*ffdhe)
-        return;
+       return;
 
     /*
      * Try the user-specified list first. If that fails (empty list or no
index e951f52f6526b49ae58a5fa86ba373dc4aaa3acf..a6327853a1d84f045dcdee92a81d81daa78e171e 100644 (file)
@@ -496,7 +496,7 @@ DICT   *dict_open3(const char *dict_type, const char *dict_name,
     VSTRING *reg_name = vstring_alloc(100);
     DICT   *dict;
 
-       /* Workaround for dict_proxy_open() with DICT_FLAG_NO_FILE. */
+    /* Workaround for dict_proxy_open() with DICT_FLAG_NO_FILE. */
 #define DICT_OPEN3_RETURN(d) do { \
        DICT *_d = (d); \
        dict_register(_d->reg_name? _d->reg_name : vstring_str(reg_name), _d); \
@@ -512,7 +512,7 @@ DICT   *dict_open3(const char *dict_type, const char *dict_name,
                               open_flags, dict_flags);
     if ((dict = dict_handle(vstring_str(reg_name))) != 0)
        DICT_OPEN3_RETURN(dict);
+
     if (*dict_type == 0 || *dict_name == 0)
        msg_fatal("open dictionary: expecting \"type:name\" form instead of \"%s:%s\"",
                  dict_type, dict_name);
index 192506e19e3225baf189e7a1143fbf6082401b7e..dc24c58ac5cdf265381675aa8f5880751eef78a9 100644 (file)
@@ -871,7 +871,7 @@ int     main(int argc, char **argv)
                continue;
            }
            msg_info("%s:%s -> family=%d sock=%d proto=%d %s:%s",
-                    argv[2], STR_OR_NULL(aport), ip->ai_family, 
+                    argv[2], STR_OR_NULL(aport), ip->ai_family,
                     ip->ai_socktype, ip->ai_protocol, addr.buf, port.buf);
            if ((err = sockaddr_to_hostname(ip->ai_addr, ip->ai_addrlen, &host,
                                            &serv, 0)) != 0) {
@@ -890,7 +890,7 @@ int     main(int argc, char **argv)
     aport = split_at(argv[3], ':');
     if ((err = hostaddr_to_sockaddr(argv[3], aport, 0, &ip)) != 0) {
        msg_warn("hostaddr_to_sockaddr(%s:%s): %s",
-                argv[3], STR_OR_NULL(aport), err == EAI_SYSTEM ? 
+                argv[3], STR_OR_NULL(aport), err == EAI_SYSTEM ?
                 strerror(errno) : gai_strerror(err));
     } else {
        if ((err = sockaddr_to_hostaddr(ip->ai_addr, ip->ai_addrlen, &addr,
@@ -899,9 +899,9 @@ int     main(int argc, char **argv)
                   err == EAI_SYSTEM ? strerror(errno) : gai_strerror(err));
        } else {
            msg_info("%s:%s -> family=%d sock=%d proto=%d %s:%s", argv[3], STR_OR_NULL(aport),
-                ip->ai_family, ip->ai_socktype, ip->ai_protocol, addr.buf, port.buf);
+                    ip->ai_family, ip->ai_socktype, ip->ai_protocol, addr.buf, port.buf);
            if ((err = sockaddr_to_hostname(ip->ai_addr, ip->ai_addrlen, &host,
-                                        &serv, 0)) != 0) {
+                                           &serv, 0)) != 0) {
                msg_warn("sockaddr_to_hostname: %s",
                   err == EAI_SYSTEM ? strerror(errno) : gai_strerror(err));
            } else
index 7b3f5785fc4a449597aaf3dac8ec9b155722576a..275c76046371ccf89a01e37cdc374fd900927d0b 100644 (file)
@@ -215,7 +215,7 @@ extern void myaddrinfo_control(int,...);
   * sane_sockaddr_to_hostaddr.c
   */
 extern int WARN_UNUSED_RESULT sane_sockaddr_to_hostaddr(struct sockaddr *,
-               SOCKADDR_SIZE *, MAI_HOSTADDR_STR *, MAI_SERVPORT_STR *, int);
+              SOCKADDR_SIZE *, MAI_HOSTADDR_STR *, MAI_SERVPORT_STR *, int);
 
 /* LICENSE
 /* .ad
index 0186a29f8be7a75d28426b742c4397f63319ba28..d92c790868a03ac7bc89e06d6e0914e1d56de724 100644 (file)
@@ -60,7 +60,7 @@ int     normalize_v4mapped_sockaddr(struct sockaddr *sa, SOCKADDR_SIZE *sa_len)
 
     if (sa->sa_family == AF_INET6
        && IN6_IS_ADDR_V4MAPPED(&SOCK_ADDR_IN6_ADDR(sa))
-       && strchr((char *) inet_proto_info()->sa_family_list, AF_INET) != 0) {
+      && strchr((char *) inet_proto_info()->sa_family_list, AF_INET) != 0) {
        memset((void *) &sin, 0, sizeof(sin));
        sin.sin_family = AF_INET;
        sin.sin_port = SOCK_ADDR_IN6_PORT(sa);
@@ -81,7 +81,7 @@ int     normalize_v4mapped_hostaddr(MAI_HOSTADDR_STR *addr)
 #ifdef HAS_IPV6
     if (addr->buf[0] == ':'
        && strncasecmp("::ffff:", addr->buf, 7) == 0
-       && strchr((char *) inet_proto_info()->sa_family_list, AF_INET) != 0) {
+      && strchr((char *) inet_proto_info()->sa_family_list, AF_INET) != 0) {
        memmove(addr->buf, addr->buf + 7, strlen(addr->buf) + 1 - 7);
        return (1);
     }
index 1a438f4682b7f42e8f3a8f33900ab6be96d1c606..bf149e9e18f5502d7a3e9e0762fcd241355933ae 100644 (file)
@@ -14,8 +14,8 @@
 #include <stringops.h>
 
  /*
-  * Test cases are used twice, first to test normalize_v4mapped_hostaddr(), and
-  * then  normalize_v4mapped_sockaddr().
+  * Test cases are used twice, first to test normalize_v4mapped_hostaddr(),
+  * and then  normalize_v4mapped_sockaddr().
   */
 typedef struct TEST_CASE {
     const char *label;
index f41de4e82b434311e7dfe52d5b80d4043cc99a9f..cdf7ac852299214ce372070749b44b3f762e8917 100644 (file)
@@ -44,7 +44,7 @@
 
 char   *normalize_ws(char *str)
 {
-    char *cp;
+    char   *cp;
 
     for (cp = str; *(cp += strcspn(cp, "\t\n\v\f\r")); *cp = ' ')
         /* void */ ;
index 61746953b0511fbd27172b245997ca373f68f20f..36cd6911cf5f3ac83daa9c6402eb22cebb6bbca8 100644 (file)
@@ -214,7 +214,7 @@ ARGV   *ossl_digest_get_errors(void)
 
 /* ossl_digest_log_errors - log and clear OpenSSL error stack */
 
-void   ossl_digest_log_errors(void (*logger)(const char *, ...))
+void    ossl_digest_log_errors(void (*logger) (const char *,...))
 {
     unsigned long err;
     char    buffer[1024];              /* XXX */
index 294f078b95c640eadc8e6a6b5b2aea3956a6fa30..4d27ea7c3f408ba3b9e5d822658386f334534260 100644 (file)
@@ -1800,6 +1800,7 @@ extern int REMOVE(const char *);
 #include <stdbool.h>
 #else
 typedef int bool;
+
 #endif
 
 /* LICENSE