diff --git a/postfix/HISTORY b/postfix/HISTORY index 55a3c3e9b..3380077b2 100644 --- a/postfix/HISTORY +++ b/postfix/HISTORY @@ -22345,7 +22345,7 @@ Apologies for any names omitted. Cleanup: integer wrap-around detection in the MySQL and PostgreSQL clients. This is totally non-critical because Postfix strings are size-limited by design. Files: - global/dict_mysqql.c, global/dict_pgsql.c. + global/dict_mysql.c, global/dict_pgsql.c. 20160607 @@ -28110,6 +28110,45 @@ Apologies for any names omitted. Documentation: in the rbl_reply_maps description,added text how it handles reject_rbl_* or reject_rhsbl_* queries with - an address filter. Also added text to clarify te differences + an address filter. Also added text to clarify the differences between rbl_reply_maps and postscreen_dnsbl_reply_map. File: proto/postconf.proto. + +20240623 + + Feature: improved rbl_reply_maps usability. After a query + with the form domain=address-filter returns no result, + rbl_reply_maps will query the tables with the domain (i.e. + without the =address-filter). Files: smtpd/smtpd_check.c, + proto/postconf.proto, smtpd/smtpd_check_access, smtpd/smtpd_exp.in, + smtpd/smtpd_exp.ref. + +20240626 + + Cleanup: updated SMTP server regression tests for last-minute + changes to the wording of deprecation messages. Files: + smtpd/smtpd_check_backup.ref, smtpd/smtpd_deprecated.ref, + smtpd/smtpd_exp.ref. + +20240719 + + Bitrot: with MySQL 8.0.35 and later set TLS options with + mysql_options() instead of mysql_ssl_set(). Researched by + Robert Fuhrer. Files: global/dict_mysql.c, proto/mysql_table. + +20240720 + + Bitrot: MariaDB Connector/C 3.0.0 lists mysql_options() as + deprecated, and recommends using mysql_optionsv() instead. + Option names and semantics have not changed. Peter Ajamian. + Files: global/dict_mysql.c, proto/mysql_table. + +20240721 + + Reproducible build: sort the output from 'env'. Scott + Kitterman. File: makedefs. + +20240722 + + Bitrot: some groff version complains about ".ft C" directives + in postconf(5) manpages. File: mantools/postconf2man. diff --git a/postfix/WISHLIST b/postfix/WISHLIST index f8cb62ffa..fb78b25b8 100644 --- a/postfix/WISHLIST +++ b/postfix/WISHLIST @@ -16,6 +16,16 @@ Wish list: using FIFOs anymore, and trigger servers could use a proper (attribute, value) protocol. + Send XFORWARD attributes in the SMTPD policy delegation + protocol. + + With "smtpd_reject_unlisted_mumble = no" the Postfix SMTP + server should still reject recipients that resolve to the + error or retry transport. + + bounce/annotate.sh should include the 'QUICK INSTRUCTIONS' + into the bounce.cf.default file. + The postsceen NON-SMTP test should log the command in the same format as the BARE NEWLINE and PREGREET tests. Consider logging the entire unadulterated command line. diff --git a/postfix/html/mysql_table.5.html b/postfix/html/mysql_table.5.html index c572cf535..5761b26e4 100644 --- a/postfix/html/mysql_table.5.html +++ b/postfix/html/mysql_table.5.html @@ -258,6 +258,11 @@ MYSQL_TABLE(5) MYSQL_TABLE(5) This parameter is available with Postfix 3.2 and later. +TLS-RELATED SETTINGS + See https://dev.mysql.com/doc/c-api/en/mysql-options.html or + https://mariadb.com/kb/en/mysql_optionsv/ for details of the underlying + MYSQL_OPT_SSL_* features. + tls_cert_file File containing client's X509 certificate. @@ -269,7 +274,7 @@ MYSQL_TABLE(5) MYSQL_TABLE(5) This parameter is available with Postfix 2.11 and later. tls_CAfile - File containing certificates for all of the X509 Certification + File containing X509 certificates for all of the Certification Authorities the client will recognize. Takes precedence over tls_CApath. diff --git a/postfix/html/postconf.5.html b/postfix/html/postconf.5.html index 3734c5e89..a7c3e53bf 100644 --- a/postfix/html/postconf.5.html +++ b/postfix/html/postconf.5.html @@ -2610,7 +2610,8 @@ by an RFC 3463 enhanced status
$rbl_domain
-
The RBL domain where $rbl_what is denylisted.
+
The RBL domain (without any =address-filter) where +$rbl_what is denylisted.
$rbl_reason
@@ -8800,7 +8801,7 @@ the file is read).

NOTE: This feature differs from the Postfix SMTP server's rbl_reply_maps feature, where 1) the table search key includes the -optional "=address" filter, and where 2) the lookup result +optional "=address-filter", and where 2) the lookup result contains free text with $name variables.

This feature is available in Postfix 2.8.

@@ -9814,7 +9815,10 @@ This feature is available in Postfix 2.0 and later.

Optional lookup tables with RBL or RHSBL response templates. The table search key is the reject_rbl_* or reject_rhsbl_* argument, -including any optional "=address-pattern" filter.

+including any optional "=address-filter". With Postfix 3.10 +and later, if the result is "not found" and the search key has the +form domain=address-filter, then rbl_reply_maps will also +search with the domain.

By default, Postfix uses the template as specified with the default_rbl_reply configuration @@ -9838,20 +9842,26 @@ syntax. # variables. secret.zen.dq.spamhaus.net=127.0.0.[2..11] 554 $rbl_class $rbl_what blocked using ZEN - see https://www.spamhaus.org/query/ip/$client_address for details + + +

+    # Postfix ≥ 3.10: if a search key domain=address-filter
+    # is not found, then rbl_reply_maps will also search with the
+    # domain.
     secret.zen.dq.spamhaus.net
         554 $rbl_class $rbl_what blocked using ZEN - see https://www.spamhaus.org/query/ip/$client_address for details
 

NOTE: This feature differs from postscreen_dnsbl_reply_map where -the table search key is a domain name (no "=address" filter, -no "*weight" factor) and where the lookup result should be -a domain name (no free text, no $name variables). +the table search key is only a domain name (no "=address-filter", +no "*weight" factor) and where the lookup result +should be only a domain name (no free text, no $name variables).

This feature is available in Postfix 2.0 and later. -The "=address-pattern" filter is available in Postfix 2.8 and later. +The "=address-filter" feature is available in Postfix 2.8 and later.

diff --git a/postfix/makedefs b/postfix/makedefs index 430324d4e..e21e648ad 100644 --- a/postfix/makedefs +++ b/postfix/makedefs @@ -220,7 +220,7 @@ echo "#----------------------------------------------------------------" echo "# Start of summary of user-configurable 'make makefiles' options." echo "# CCARGS=$CCARGS" echo "# AUXLIBS=$AUXLIBS" -env | grep '^AUXLIBS_' | sed 's/^/# /' +env | grep '^AUXLIBS_' | sed 's/^/# /' | sort echo "# shared=$shared" echo "# dynamicmaps=$dynamicmaps" echo "# pie=$pie" diff --git a/postfix/man/man5/mysql_table.5 b/postfix/man/man5/mysql_table.5 index d6e64e231..1aba09ed6 100644 --- a/postfix/man/man5/mysql_table.5 +++ b/postfix/man/man5/mysql_table.5 @@ -277,6 +277,14 @@ set. If "\fBno\fR", treat the absence of a result set as "not found". .sp This parameter is available with Postfix 3.2 and later. +.SH "TLS-RELATED SETTINGS" +.na +.nf +.ad +.fi +See https://dev.mysql.com/doc/c\-api/en/mysql\-options.html +or https://mariadb.com/kb/en/mysql_optionsv/ for details of +the underlying MYSQL_OPT_SSL_* features. .IP "\fBtls_cert_file\fR" File containing client's X509 certificate. .sp @@ -286,7 +294,7 @@ File containing the private key corresponding to \fBtls_cert_file\fR. .sp This parameter is available with Postfix 2.11 and later. .IP "\fBtls_CAfile\fR" -File containing certificates for all of the X509 Certification +File containing X509 certificates for all of the Certification Authorities the client will recognize. Takes precedence over \fBtls_CApath\fR. .sp diff --git a/postfix/man/man5/postconf.5 b/postfix/man/man5/postconf.5 index 04bba9d91..3237a6c2a 100644 --- a/postfix/man/man5/postconf.5 +++ b/postfix/man/man5/postconf.5 @@ -154,12 +154,10 @@ Examples: .PP .nf .na -.ft C address_verify_map = hash:/var/lib/postfix/verify address_verify_map = btree:/var/lib/postfix/verify .fi .ad -.ft R .PP This feature is available in Postfix 2.1 and later. .SH address_verify_negative_cache (default: yes) @@ -217,14 +215,12 @@ Examples: .PP .nf .na -.ft C # Postfix <= 2.6 default address_verify_poll_count = 3 # Poor man's greylisting address_verify_poll_count = 1 .fi .ad -.ft R .PP This feature is available in Postfix 2.1 and later. .SH address_verify_poll_delay (default: 3s) @@ -285,12 +281,10 @@ Examples: .PP .nf .na -.ft C address_verify_sender = <> address_verify_sender = postmaster@mydomain .fi .ad -.ft R .PP This feature is available in Postfix 2.1 and later. .SH address_verify_sender_dependent_default_transport_maps (default: $sender_dependent_default_transport_maps) @@ -351,12 +345,10 @@ Examples: .PP .nf .na -.ft C alias_database = hash:/etc/aliases alias_database = hash:/etc/mail/aliases .fi .ad -.ft R .SH alias_maps (default: see "postconf \-d" output) Optional lookup tables that are searched only with an email address localpart (no domain) and that apply only to \fBlocal\fR(8) recipients; @@ -392,12 +384,10 @@ Examples: .PP .nf .na -.ft C alias_maps = hash:/etc/aliases, nis:mail.aliases alias_maps = hash:/etc/aliases .fi .ad -.ft R .SH allow_mail_to_commands (default: alias, forward) Restrict \fBlocal\fR(8) mail delivery to external commands. The default is to disallow delivery to "|command" in :include: files (see @@ -411,11 +401,9 @@ Example: .PP .nf .na -.ft C allow_mail_to_commands = alias,forward,include .fi .ad -.ft R .SH allow_mail_to_files (default: alias, forward) Restrict \fBlocal\fR(8) mail delivery to external files. The default is to disallow "/file/name" destinations in :include: files (see @@ -429,11 +417,9 @@ Example: .PP .nf .na -.ft C allow_mail_to_files = alias,forward,include .fi .ad -.ft R .SH allow_min_user (default: no) Allow a sender or recipient address to have `\-' as the first character. By @@ -470,11 +456,9 @@ Example: .PP .nf .na -.ft C allow_percent_hack = no .fi .ad -.ft R .SH allow_srv_lookup_fallback (default: no) When SRV record lookup fails or no SRV record exists, fall back to MX or IP address lookup as if SRV record lookup was not enabled. @@ -677,11 +661,9 @@ Example: .PP .nf .na -.ft C authorized_submit_users = !www, static:all .fi .ad -.ft R .PP This feature is available in Postfix 2.2 and later. .SH authorized_verp_clients (default: $mynetworks) @@ -879,12 +861,10 @@ Examples: .PP .nf .na -.ft C canonical_maps = dbm:/etc/postfix/canonical canonical_maps = hash:/etc/postfix/canonical .fi .ad -.ft R .SH cleanup_replace_stray_cr_lf (default: yes) Replace each stray or character in message content with a space character, to prevent outbound SMTP smuggling, @@ -998,7 +978,6 @@ message when a backwards\-compatible default setting is required. .in +4 .nf .na -.ft C using backwards\-compatible default setting \fIname=value\fR to [accept a specific client request] .sp @@ -1006,7 +985,6 @@ using backwards\-compatible default setting \fIname=value\fR to [enable specific Postfix behavior] .fi .ad -.ft R .in -4 .PP See COMPATIBILITY_README for specific message details. If such @@ -1017,12 +995,10 @@ permanent in main.cf or master.cf, for example: .in +4 .nf .na -.ft C # \fBpostconf\fR \fIname=value\fR # \fBpostfix reload\fR .fi .ad -.ft R .in -4 .PP When no more backwards\-compatible settings need to be made @@ -1032,12 +1008,10 @@ by updating the compatibility_level setting in main.cf: .in +4 .nf .na -.ft C # \fBpostconf compatibility_level=\fIN\fR\fR # \fBpostfix reload\fR .fi .ad -.ft R .in -4 .PP For \fIN\fR specify the number that is logged in your \fBpostfix\fR(1) @@ -1046,12 +1020,10 @@ warning message: .in +4 .nf .na -.ft C warning: To disable backwards compatibility use "postconf compatibility_level=\fIN\fR" and "postfix reload" .fi .ad -.ft R .in -4 .PP Starting with Postfix version 3.6, the compatibility level in @@ -1213,12 +1185,10 @@ Examples: .PP .nf .na -.ft C debug_peer_list = 127.0.0.1 debug_peer_list = example.com .fi .ad -.ft R .SH debugger_command (default: empty) The external command to execute when a Postfix daemon program is invoked with the \-D option. @@ -1235,13 +1205,11 @@ Example: .PP .nf .na -.ft C debugger_command = PATH=/usr/bin:/usr/X11R6/bin ddd $daemon_directory/$process_name $process_id & sleep 5 .fi .ad -.ft R .SH default_database_type (default: see "postconf \-d" output) The default database type for use in \fBnewaliases\fR(1), \fBpostalias\fR(1) and \fBpostmap\fR(1) commands. On many UNIX systems the default type is @@ -1252,12 +1220,10 @@ Examples: .PP .nf .na -.ft C default_database_type = hash default_database_type = dbm .fi .ad -.ft R .SH default_delivery_slot_cost (default: 5) How often the Postfix queue manager's scheduler is allowed to preempt delivery of one message with another. @@ -1293,12 +1259,10 @@ Examples: .PP .nf .na -.ft C default_delivery_slot_cost = 0 default_delivery_slot_cost = 2 .fi .ad -.ft R .SH default_delivery_slot_discount (default: 50) The default value for transport\-specific _delivery_slot_discount settings. @@ -1369,18 +1333,15 @@ by overriding the first number in the enhanced status code. .in +4 .nf .na -.ft C /etc/postfix/main.cf: smtp_delivery_status_filter = pcre:/etc/postfix/smtp_dsn_filter .fi .ad -.ft R .in -4 .sp .in +4 .nf .na -.ft C /etc/postfix/smtp_dsn_filter: /^4(\e.\ed+\e.\ed+ TLS is required, but host \eS+ refused to start TLS: .+)/ 5$1 @@ -1393,7 +1354,6 @@ by overriding the first number in the enhanced status code. # 4.\ed+.\ed+ Cannot start TLS: handshake failure .fi .ad -.ft R .in -4 .PP Example 2: censor the per\-recipient delivery status text so @@ -1403,24 +1363,20 @@ when a remote sender requests confirmation of successful delivery. .in +4 .nf .na -.ft C /etc/postfix/main.cf: local_delivery_status_filter = pcre:/etc/postfix/local_dsn_filter .fi .ad -.ft R .in -4 .sp .in +4 .nf .na -.ft C /etc/postfix/local_dsn_filter: /^(2\eS+ delivered to file).+/ $1 /^(2\eS+ delivered to command).+/ $1 .fi .ad -.ft R .in -4 .PP Notes: @@ -1687,7 +1643,8 @@ reply. With Postfix version 2.3 and later this information may be followed by an RFC 3463 enhanced status code. .br .IP "\fB$rbl_domain\fR" -The RBL domain where $rbl_what is denylisted. +The RBL domain (without any \fI=address\-filter\fR) where +$rbl_what is denylisted. .br .IP "\fB$rbl_reason\fR" The reason why $rbl_what is denylisted, or an empty string. @@ -1811,11 +1768,9 @@ Example: .PP .nf .na -.ft C default_transport = uucp:relayhostname .fi .ad -.ft R .SH default_transport_rate_delay (default: 0s) The default amount of delay that is inserted between individual message deliveries over the same message delivery transport, @@ -1831,12 +1786,10 @@ per minute. .PP .nf .na -.ft C /etc/postfix/main.cf: smtp_transport_rate_delay = 20s .fi .ad -.ft R .PP To enable the delay, specify a non\-zero time value (an integral value plus an optional one\-letter suffix that specifies the time @@ -1877,11 +1830,9 @@ Example: .PP .nf .na -.ft C defer_transports = smtp .fi .ad -.ft R .SH delay_logging_resolution_limit (default: 2) The maximal number of digits after the decimal point when logging sub\-second delay values. Specify a number in the range 0..6. @@ -1989,11 +1940,9 @@ Example: .PP .nf .na -.ft C disable_vrfy_command = no .fi .ad -.ft R .SH dns_ncache_ttl_fix_enable (default: no) Enable a workaround for future libc incompatibility. The Postfix implementation of RFC 2308 negative reply caching relies on the @@ -2038,13 +1987,11 @@ Example: .PP .nf .na -.ft C warning: DNSSEC validation may be unavailable warning: reason: dnssec_probe 'ns:.' received a response that is not DNSSEC validated warning: reason: dnssec_probe 'ns:.' received no response: Server failure .fi .ad -.ft R .PP Possible reasons why DNSSEC validation may be unavailable: .IP \(bu @@ -2178,13 +2125,11 @@ are required to convert long queue file names into short names: .PP .nf .na -.ft C # postfix stop # postconf enable_long_queue_ids=no # postsuper .fi .ad -.ft R .PP Repeat the postsuper command until it reports no more queue file name changes. @@ -2280,11 +2225,9 @@ Example: .PP .nf .na -.ft C export_environment = TZ PATH=/bin:/usr/bin .fi .ad -.ft R .SH extract_recipient_limit (default: 10240) The maximal number of recipient addresses that Postfix will extract from message headers when mail is submitted with "\fBsendmail \-t\fR". @@ -2476,14 +2419,12 @@ Examples: .PP .nf .na -.ft C forward_path = /var/forward/$user forward_path = /var/forward/$user/.forward$recipient_delimiter$extension, /var/forward/$user/.forward .fi .ad -.ft R .SH frozen_delivered_to (default: yes) Update the \fBlocal\fR(8) delivery agent's idea of the Delivered\-To: address (see prepend_delivered_header) only once, at the start of @@ -2592,12 +2533,10 @@ Examples: .PP .nf .na -.ft C home_mailbox = Mailbox home_mailbox = Maildir/ .fi .ad -.ft R .SH hopcount_limit (default: 50) The maximal number of Received: message headers that is allowed in the primary message headers. A message that exceeds the limit @@ -2730,7 +2669,6 @@ Examples: .PP .nf .na -.ft C inet_interfaces = all (DEFAULT) inet_interfaces = loopback\-only (Postfix version 2.2 and later) inet_interfaces = 127.0.0.1 @@ -2738,7 +2676,6 @@ inet_interfaces = 127.0.0.1, [::1] (Postfix version 2.2 and later) inet_interfaces = 192.168.1.2, 127.0.0.1 .fi .ad -.ft R .SH inet_protocols (default: see 'postconf \-d' output) The Internet protocols Postfix will attempt to use when making or accepting connections. Specify one or more of "ipv4" @@ -2782,14 +2719,12 @@ Examples: .PP .nf .na -.ft C inet_protocols = ipv4 inet_protocols = all (DEFAULT) inet_protocols = ipv6 inet_protocols = ipv4, ipv6 .fi .ad -.ft R .SH info_log_address_format (default: external) The email address form that will be used in non\-debug logging (info, warning, etc.). As of Postfix 3.5 when an address localpart @@ -2799,11 +2734,9 @@ quoted, for example: .in +4 .nf .na -.ft C from=<"name with spaces"@example.com> .fi .ad -.ft R .in -4 .PP Older Postfix versions would log the internal (unquoted) form: @@ -2811,11 +2744,9 @@ Older Postfix versions would log the internal (unquoted) form: .in +4 .nf .na -.ft C from= .fi .ad -.ft R .in -4 .PP The external and internal forms are identical for the vast @@ -3024,11 +2955,9 @@ Example: .PP .nf .na -.ft C lmtp_connect_timeout = 30s .fi .ad -.ft R .SH lmtp_connection_cache_destinations (default: empty) The LMTP\-specific version of the smtp_connection_cache_destinations configuration parameter. See there for details. @@ -3200,12 +3129,10 @@ client, for example: .in +4 .nf .na -.ft C /etc/postfix/master.cf: mylmtp ... lmtp \-o lmtp_lhlo_name=foo.bar.com .fi .ad -.ft R .in -4 .PP This feature is available in Postfix 2.3 and later. @@ -3389,11 +3316,9 @@ Example: .PP .nf .na -.ft C lmtp_sasl_security_options = noplaintext .fi .ad -.ft R .SH lmtp_sasl_tls_security_options (default: $lmtp_sasl_security_options) The LMTP\-specific version of the smtp_sasl_tls_security_options configuration parameter. See there for details. @@ -3665,12 +3590,10 @@ Example: .PP .nf .na -.ft C local_command_shell = /some/where/smrsh \-c local_command_shell = /bin/bash \-c .fi .ad -.ft R .SH local_delivery_status_filter (default: $default_delivery_status_filter) Optional filter for the \fBlocal\fR(8) delivery agent to change the status code or explanatory text of successful or unsuccessful @@ -3769,11 +3692,9 @@ header addresses. .in +4 .nf .na -.ft C local_header_rewrite_clients = static:all .fi .ad -.ft R .in -4 .PP The purist (and default) setting: rewrite headers only in mail @@ -3782,11 +3703,9 @@ from Postfix sendmail and in SMTP mail from this machine. .in +4 .nf .na -.ft C local_header_rewrite_clients = permit_inet_interfaces .fi .ad -.ft R .in -4 .PP The intermediate setting: rewrite header addresses and append @@ -3800,13 +3719,11 @@ system. .in +4 .nf .na -.ft C local_header_rewrite_clients = permit_mynetworks, permit_sasl_authenticated permit_tls_clientcerts check_address_map hash:/etc/postfix/pop\-before\-smtp .fi .ad -.ft R .in -4 .SH local_login_sender_maps (default: static:*) A list of lookup tables that are searched by the UNIX login name, @@ -3843,7 +3760,6 @@ Examples: .PP .nf .na -.ft C /etc/postfix/main.cf: # Allow root and postfix full control, anyone else can only # send mail as themselves. Use "uid:" followed by the numerical @@ -3853,17 +3769,14 @@ Examples: pcre:/etc/postfix/login_senders .fi .ad -.ft R .PP .nf .na -.ft C /etc/postfix/login_senders: # Allow both the bare username and the user@domain forms. /(.+)/ $1 $1@example.com .fi .ad -.ft R .PP This feature is available in Postfix 3.6 and later. .SH local_recipient_maps (default: proxy:unix:passwd.byname $alias_maps) @@ -3909,11 +3822,9 @@ Examples: .PP .nf .na -.ft C local_recipient_maps = .fi .ad -.ft R .SH local_transport (default: local:$myhostname) The default mail delivery transport and next\-hop destination for final delivery to domains listed with mydestination, and for @@ -3993,13 +3904,11 @@ Examples: .PP .nf .na -.ft C luser_relay = $user@other.host luser_relay = $local@other.host luser_relay = admin+$local .fi .ad -.ft R .SH mail_name (default: Postfix) The mail system name that is displayed in Received: headers, in the SMTP greeting banner, and in bounced mail. @@ -4030,12 +3939,10 @@ Examples: .PP .nf .na -.ft C mail_spool_directory = /var/mail mail_spool_directory = /var/spool/mail .fi .ad -.ft R .SH mail_version (default: see "postconf \-d" output) The version of the mail system. Stable releases are named \fImajor\fR.\fIminor\fR.\fIpatchlevel\fR. Experimental releases @@ -4135,14 +4042,12 @@ Examples: .PP .nf .na -.ft C mailbox_command = /some/where/procmail mailbox_command = /some/where/procmail \-a "$EXTENSION" mailbox_command = /some/where/maildrop \-d "$USER" \-f "$SENDER" "$EXTENSION" .fi .ad -.ft R .SH mailbox_command_maps (default: empty) Optional lookup tables with per\-recipient external commands to use for \fBlocal\fR(8) mailbox delivery. Behavior is as with mailbox_command. @@ -4280,11 +4185,9 @@ first match. Thus, .in +4 .nf .na -.ft C masquerade_domains = foo.example.com example.com .fi .ad -.ft R .in -4 .PP strips "user@any.thing.foo.example.com" to "user@foo.example.com", @@ -4296,11 +4199,9 @@ or its subdomains. Thus, .in +4 .nf .na -.ft C masquerade_domains = !foo.example.com example.com .fi .ad -.ft R .in -4 .PP does not change "user@any.thing.foo.example.com" or "user@foo.example.com", @@ -4325,11 +4226,9 @@ Example: .PP .nf .na -.ft C masquerade_domains = $mydomain .fi .ad -.ft R .SH masquerade_exceptions (default: empty) Optional list of user names that are not subjected to address masquerading, even when their addresses match $masquerade_domains. @@ -4350,12 +4249,10 @@ Examples: .PP .nf .na -.ft C masquerade_exceptions = root, mailer\-daemon masquerade_exceptions = root .fi .ad -.ft R .SH master_service_disable (default: empty) Selectively disable \fBmaster\fR(8) listener ports by service type or by service name and type. Specify a list of service types @@ -4373,7 +4270,6 @@ Examples: .PP .nf .na -.ft C # With Postfix 2.6..2.10 use '.' instead of '/'. # Turn on all \fBmaster\fR(8) listener ports (the default). master_service_disable = @@ -4385,7 +4281,6 @@ master_service_disable = inet master_service_disable = !foo/inet, inet .fi .ad -.ft R .PP This feature is available in Postfix 2.6 and later. .SH max_idle (default: 100s) @@ -4452,11 +4347,9 @@ Example: .PP .nf .na -.ft C message_reject_characters = \e0 .fi .ad -.ft R .PP This feature is available in Postfix 2.3 and later. .SH message_size_limit (default: 10240000) @@ -4484,11 +4377,9 @@ Example: .PP .nf .na -.ft C message_strip_characters = \e0 .fi .ad -.ft R .PP This feature is available in Postfix 2.3 and later. .SH meta_directory (default: see 'postconf \-d' output) @@ -4593,21 +4484,17 @@ by default. .PP .nf .na -.ft C /etc/postfix/main.cf: milter_header_checks = pcre:/etc/postfix/milter_header_checks .fi .ad -.ft R .PP .nf .na -.ft C /etc/postfix/milter_header_checks: /^X\-SPAM\-FLAG:\es+YES/ FILTER mysmtp:sanitizer.example.com:25 .fi .ad -.ft R .PP The milter_header_checks mechanism could also be used for allowlisting. For example it could be used to skip heavy content @@ -4832,12 +4719,10 @@ Examples: .PP .nf .na -.ft C mydestination = $myhostname, localhost.$mydomain $mydomain mydestination = $myhostname, localhost.$mydomain www.$mydomain, ftp.$mydomain .fi .ad -.ft R .SH mydomain (default: see "postconf \-d" output) The internet domain name of this mail system. The default is to use $myhostname minus the first component, or "localdomain" (Postfix @@ -4848,11 +4733,9 @@ Example: .PP .nf .na -.ft C mydomain = domain.tld .fi .ad -.ft R .SH myhostname (default: see "postconf \-d" output) The internet hostname of this mail system. The default is to use the fully\-qualified domain name (FQDN) from gethostname(), or to @@ -4864,11 +4747,9 @@ Example: .PP .nf .na -.ft C myhostname = host.example.com .fi .ad -.ft R .SH mynetworks (default: see "postconf \-d" output) The list of "trusted" remote SMTP clients that have more privileges than "strangers". @@ -4916,7 +4797,6 @@ Examples: .PP .nf .na -.ft C mynetworks = 127.0.0.0/8 168.100.189.0/28 mynetworks = !192.168.0.1, 192.168.0.0/28 mynetworks = 127.0.0.0/8 168.100.189.0/28 [::1]/128 [2001:240:587::]/64 @@ -4925,7 +4805,6 @@ mynetworks = hash:/etc/postfix/network_table mynetworks = cidr:/etc/postfix/network_table.cidr .fi .ad -.ft R .SH mynetworks_style (default: Postfix >= 3.0: host, Postfix < 3.0: subnet) The method to generate the default value for the mynetworks parameter. This is the list of trusted networks for relay access control etc. @@ -4957,11 +4836,9 @@ Example: .PP .nf .na -.ft C myorigin = $mydomain .fi .ad -.ft R .SH nested_header_checks (default: $header_checks) Optional lookup tables for content inspection of non\-MIME message headers in attached messages, as described in the \fBheader_checks\fR(5) @@ -5053,12 +4930,10 @@ Examples: .PP .nf .na -.ft C notify_classes = bounce, delay, policy, protocol, resource, software notify_classes = 2bounce, resource, software .fi .ad -.ft R .SH openssl_path (default: openssl) The location of the OpenSSL command line program \fBopenssl\fR(1). This is used by the "\fBpostfix tls\fR" command to create private keys, @@ -5072,7 +4947,6 @@ Example: .in +4 .nf .na -.ft C /etc/postfix/main.cf: # NetBSD pkgsrc: openssl_path = /usr/pkg/bin/openssl @@ -5080,7 +4954,6 @@ Example: openssl_path = /usr/local/bin/openssl .fi .ad -.ft R .in -4 .PP This feature is available in Postfix 3.1 and later. @@ -5234,7 +5107,6 @@ Example: .PP .nf .na -.ft C /etc/postfix/main.cf: postscreen_access_list = permit_mynetworks, cidr:/etc/postfix/postscreen_access.cidr @@ -5242,11 +5114,9 @@ Example: postscreen_denylist_action = enforce .fi .ad -.ft R .PP .nf .na -.ft C /etc/postfix/postscreen_access.cidr: # Rules are evaluated in the order as specified. # Denylist 192.168.* except 192.168.0.1. @@ -5254,7 +5124,6 @@ Example: 192.168.0.0/16 reject .fi .ad -.ft R .PP This feature is available in Postfix 2.8. .SH postscreen_allowlist_interfaces (default: static:all) @@ -5297,14 +5166,12 @@ Example: .PP .nf .na -.ft C /etc/postfix/main.cf: # Don't allowlist connections to the backup IP address. # Postfix < 3.6 use postscreen_whitelist_interfaces. postscreen_allowlist_interfaces = !168.100.189.8, static:all .fi .ad -.ft R .PP This feature is available in Postfix 3.6 and later. .PP @@ -5554,25 +5421,21 @@ Example: .PP .nf .na -.ft C /etc/postfix/main.cf: postscreen_dnsbl_reply_map = texthash:/etc/postfix/dnsbl_reply .fi .ad -.ft R .PP .nf .na -.ft C /etc/postfix/dnsbl_reply: secret.zen.spamhaus.org zen.spamhaus.org .fi .ad -.ft R .PP NOTE: This feature differs from the Postfix SMTP server's rbl_reply_maps feature, where 1) the table search key includes the -optional "\fI=address\fR" filter, and where 2) the lookup result +optional "\fI=address\-filter\fR", and where 2) the lookup result contains free text with \fI$name\fR variables. .PP This feature is available in Postfix 2.8. @@ -5620,22 +5483,18 @@ block mail with example.net and example.org only when both agree: .PP .nf .na -.ft C postscreen_dnsbl_threshold = 2 postscreen_dnsbl_sites = example.com*2, example.net, example.org .fi .ad -.ft R .PP To filter only DNSBL replies containing 127.0.0.4: .PP .nf .na -.ft C postscreen_dnsbl_sites = example.com=127.0.0.4 .fi .ad -.ft R .PP This feature is available in Postfix 2.8. .SH postscreen_dnsbl_threshold (default: 1) @@ -5930,11 +5789,9 @@ Example: .PP .nf .na -.ft C prepend_delivered_header = forward .fi .ad -.ft R .SH process_id (read\-only) The process ID of a Postfix command or daemon process. .SH process_id_directory (default: pid) @@ -5966,13 +5823,11 @@ Examples: .PP .nf .na -.ft C propagate_unmatched_extensions = canonical, virtual, alias, forward, include propagate_unmatched_extensions = canonical, virtual .fi .ad -.ft R .SH proxy_interfaces (default: empty) The remote network interface addresses that this mail system receives mail on by way of a proxy or network address translation unit. @@ -5987,11 +5842,9 @@ Example: .PP .nf .na -.ft C proxy_interfaces = 1.2.3.4 .fi .ad -.ft R .SH proxy_read_maps (default: see "postconf \-d" output) The lookup tables that the \fBproxymap\fR(8) server is allowed to access for the read\-only service. @@ -6098,11 +5951,9 @@ Example: .PP .nf .na -.ft C qmqpd_authorized_clients = !192.168.0.1, 192.168.0.0/24 .fi .ad -.ft R .SH qmqpd_client_port_logging (default: no) Enable logging of the remote QMQP client port in addition to the hostname and IP address. The logging format is "host[address]:port". @@ -6167,7 +6018,10 @@ This feature is available in Postfix 2.0 and later. .SH rbl_reply_maps (default: empty) Optional lookup tables with RBL or RHSBL response templates. The table search key is the reject_rbl_* or reject_rhsbl_* argument, -including any optional "\fI=address\-pattern\fR" filter. +including any optional "\fI=address\-filter\fR". With Postfix 3.10 +and later, if the result is "not found" and the search key has the +form \fIdomain=address\-filter\fR, then rbl_reply_maps will also +search with the \fIdomain\fR. .PP By default, Postfix uses the template as specified with the default_rbl_reply configuration @@ -6178,7 +6032,6 @@ Example: .PP .nf .na -.ft C /etc/postfix/main.cf: rbl_reply_maps = hash:/etc/postfix/rbl_reply smtpd_recipient_restrictions = @@ -6192,19 +6045,26 @@ Example: # variables. \fIsecret\fR.zen.dq.spamhaus.net=127.0.0.[2..11] 554 $rbl_class $rbl_what blocked using ZEN \- see https://www.spamhaus.org/query/ip/$client_address for details +.fi +.ad +.PP +.nf +.na + # Postfix >= 3.10: if a search key \fIdomain=address\-filter\fR + # is not found, then rbl_reply_maps will also search with the + # \fIdomain\fR. \fIsecret\fR.zen.dq.spamhaus.net 554 $rbl_class $rbl_what blocked using ZEN \- see https://www.spamhaus.org/query/ip/$client_address for details .fi .ad -.ft R .PP NOTE: This feature differs from postscreen_dnsbl_reply_map where -the table search key is a domain name (no "\fI=address\fR" filter, -no "\fI*weight\fR" factor) and where the lookup result should be -a domain name (no free text, no \fI$name\fR variables). +the table search key is only a domain name (no "\fI=address\-filter\fR", +no "\fI*weight\fR" factor) and where the lookup result +should be only a domain name (no free text, no \fI$name\fR variables). .PP This feature is available in Postfix 2.0 and later. -The "=address\-pattern" filter is available in Postfix 2.8 and later. +The "=address\-filter" feature is available in Postfix 2.8 and later. .SH readme_directory (default: see "postconf \-d" output) The location of Postfix README files that describe how to build, configure or operate a specific Postfix subsystem or feature. @@ -6247,13 +6107,11 @@ Examples: .PP .nf .na -.ft C receive_override_options = no_unknown_recipient_checks, no_header_body_checks receive_override_options = no_address_mappings .fi .ad -.ft R .PP This feature is available in Postfix 2.1 and later. .SH recipient_bcc_maps (default: empty) @@ -6300,11 +6158,9 @@ Example: .PP .nf .na -.ft C recipient_bcc_maps = hash:/etc/postfix/recipient_bcc .fi .ad -.ft R .PP After a change, run "\fBpostmap /etc/postfix/recipient_bcc\fR". .PP @@ -6329,11 +6185,9 @@ Example: .PP .nf .na -.ft C recipient_canonical_maps = hash:/etc/postfix/recipient_canonical .fi .ad -.ft R .SH recipient_delimiter (default: empty) The set of characters that can separate an email address localpart, user name, or a .forward file name from its extension. @@ -6371,32 +6225,26 @@ Examples: .PP .nf .na -.ft C # Handle Postfix\-style extensions. recipient_delimiter = + .fi .ad -.ft R .PP .nf .na -.ft C # Handle both Postfix and qmail extensions (Postfix 2.11 and later). recipient_delimiter = +\- .fi .ad -.ft R .PP .nf .na -.ft C # Use .forward for mail without address extension, and for mail with # an unrecognized address extension. forward_path = $home/.forward${recipient_delimiter}${extension}, $home/.forward .fi .ad -.ft R .SH reject_code (default: 554) The numerical Postfix SMTP server response code when a remote SMTP client request is rejected by the "reject" restriction. @@ -6441,11 +6289,9 @@ Example: .PP .nf .na -.ft C relay_clientcerts = hash:/etc/postfix/relay_clientcerts .fi .ad -.ft R .PP For more fine\-grained control, use check_ccert_access to select an appropriate \fBaccess\fR(5) policy for each client. @@ -6529,11 +6375,9 @@ Example: .PP .nf .na -.ft C relay_recipient_maps = hash:/etc/postfix/relay_recipients .fi .ad -.ft R .PP This feature is available in Postfix 2.0 and later. .SH relay_transport (default: relay) @@ -6607,14 +6451,12 @@ Examples: .PP .nf .na -.ft C relayhost = $mydomain relayhost = [gateway.example.com] relayhost = mail1.example:587, mail2.example:587 relayhost = [an.ip.add.ress] .fi .ad -.ft R .SH relocated_maps (default: empty) Optional lookup tables with new contact information for users or domains that no longer exist. The table format and lookups are @@ -6632,12 +6474,10 @@ Examples: .PP .nf .na -.ft C relocated_maps = dbm:/etc/postfix/relocated relocated_maps = hash:/etc/postfix/relocated .fi .ad -.ft R .SH remote_header_rewrite_domain (default: empty) Rewrite or add message headers in mail from remote clients if the remote_header_rewrite_domain parameter value is non\-empty, @@ -6657,11 +6497,9 @@ be confused with local addresses. .in +4 .nf .na -.ft C remote_header_rewrite_domain = domain.invalid .fi .ad -.ft R .in -4 .PP The default, purist, setting: don't rewrite headers from remote @@ -6670,11 +6508,9 @@ clients at all. .in +4 .nf .na -.ft C remote_header_rewrite_domain = .fi .ad -.ft R .in -4 .SH require_home_directory (default: no) Require that a \fBlocal\fR(8) recipient's home directory exists @@ -6835,11 +6671,9 @@ Example: .PP .nf .na -.ft C sender_bcc_maps = hash:/etc/postfix/sender_bcc .fi .ad -.ft R .PP After a change, run "\fBpostmap /etc/postfix/sender_bcc\fR". .PP @@ -6867,11 +6701,9 @@ Example: .PP .nf .na -.ft C sender_canonical_maps = hash:/etc/postfix/sender_canonical .fi .ad -.ft R .SH sender_dependent_default_transport_maps (default: empty) A sender\-dependent override for the global default_transport parameter setting. The tables are searched by the envelope sender @@ -6975,7 +6807,6 @@ Example master.cf entries: .PP .nf .na -.ft C # Distinguish inbound MTA logging from submission and smtps logging. smtp inet n \- n \- \- smtpd submission inet n \- n \- \- smtpd @@ -6984,18 +6815,15 @@ smtps inet n \- n \- \- smtpd \-o syslog_name=postfix/$service_name .fi .ad -.ft R .PP .nf .na -.ft C # Distinguish outbound MTA logging from inbound relay logging. smtp unix \- \- n \- \- smtp relay unix \- \- n \- \- smtp \-o syslog_name=postfix/$service_name .fi .ad -.ft R .PP This feature is available in Postfix 3.3 and later. .SH service_throttle_time (default: 60s) @@ -7085,23 +6913,19 @@ only IPv4. .in +4 .nf .na -.ft C /etc/postfix/main.cf: inet_protocols = all .fi .ad -.ft R .in -4 .sp .in +4 .nf .na -.ft C /etc/postfix/master.cf smtp ...other fields... smtp \-o inet_protocols=ipv4 .fi .ad -.ft R .in -4 .br .PP @@ -7116,30 +6940,25 @@ transport_maps to apply this feature selectively: .in +4 .nf .na -.ft C /etc/postfix/main.cf: transport_maps = hash:/etc/postfix/transport .fi .ad -.ft R .in -4 .sp .in +4 .nf .na -.ft C /etc/postfix/transport: smtp\-domain\-that\-verifies\-after\-data smtp\-data\-target: lmtp\-domain\-that\-verifies\-after\-data lmtp\-data\-target: .fi .ad -.ft R .in -4 .sp .in +4 .nf .na -.ft C /etc/postfix/master.cf: smtp\-data\-target unix \- \- n \- \- smtp \-o smtp_address_verify_target=data @@ -7147,7 +6966,6 @@ transport_maps to apply this feature selectively: \-o lmtp_address_verify_target=data .fi .ad -.ft R .in -4 .PP Unselective use of the "data" target does no harm, but will @@ -7184,12 +7002,10 @@ for example: .in +4 .nf .na -.ft C /etc/postfix/master.cf: smtp ... smtp \-o smtp_bind_address=11.22.33.44 .fi .ad -.ft R .in -4 .PP See smtp_bind_address_enforce for how Postfix should handle @@ -7216,12 +7032,10 @@ for example: .in +4 .nf .na -.ft C /etc/postfix/master.cf: smtp ... smtp \-o smtp_bind_address6=1:2:3:4:5:6:7:8 .fi .ad -.ft R .in -4 .PP See smtp_bind_address_enforce for how Postfix should handle @@ -7475,11 +7289,9 @@ to the following form: .PP .nf .na -.ft C \fIname ttl class type preference value\fR .fi .ad -.ft R .PP The \fIclass\fR field is always "IN", the \fIpreference\fR field exists only for MX records, the names of hosts, domains, etc. @@ -7521,23 +7333,19 @@ with valid PTR etc. records. .PP .nf .na -.ft C /etc/postfix/main.cf: smtp_dns_reply_filter = pcre:/etc/postfix/smtp_dns_reply_filter .fi .ad -.ft R .PP .nf .na -.ft C /etc/postfix/smtp_dns_reply_filter: # /domain ttl IN AAAA address/ action, all case\-insensitive. # Note: the domain name ends in ".". /^\eS+\e.google\e.com\e.\es+\eS+\es+\eS+\es+AAAA\es+/ IGNORE .fi .ad -.ft R .PP This feature is available in Postfix 3.0 and later. .SH smtp_dns_resolver_options (default: empty) @@ -7719,12 +7527,10 @@ client, for example: .in +4 .nf .na -.ft C /etc/postfix/master.cf: mysmtp ... smtp \-o smtp_helo_name=foo.bar.com .fi .ad -.ft R .in -4 .PP This feature is available in Postfix 2.0 and later. @@ -7940,12 +7746,10 @@ a broken SMTP server, configure a special SMTP client in master.cf: .in +4 .nf .na -.ft C /etc/postfix/master.cf: broken\-smtp . . . smtp \-o smtp_quote_rfc821_envelope=no .fi .ad -.ft R .in -4 .PP and route mail for the destination in question to the "broken\-smtp" @@ -7993,16 +7797,13 @@ Examples: .PP .nf .na -.ft C /etc/postfix/main.cf: smtp_reply_filter = pcre:/etc/postfix/reply_filter .fi .ad -.ft R .PP .nf .na -.ft C /etc/postfix/reply_filter: # Transform garbage into "250\-filler..." so that it looks like # one line from a multi\-line reply. It does not matter what we @@ -8012,7 +7813,6 @@ Examples: !/^([2\-5][0\-9][0\-9]($|[\- ]))/ 250\-filler for garbage .fi .ad -.ft R .PP This feature is available in Postfix 2.7. .SH smtp_rset_timeout (default: 20s) @@ -8058,11 +7858,9 @@ Example: .PP .nf .na -.ft C smtp_sasl_auth_cache_name = proxy:btree:/var/lib/postfix/sasl_auth_cache .fi .ad -.ft R .PP This feature is available in Postfix 2.5 and later. .SH smtp_sasl_auth_cache_time (default: 90d) @@ -8083,11 +7881,9 @@ Example: .PP .nf .na -.ft C smtp_sasl_auth_enable = yes .fi .ad -.ft R .SH smtp_sasl_auth_soft_bounce (default: yes) When a remote SMTP server rejects a SASL authentication request with a 535 reply code, defer mail delivery instead of returning @@ -8101,14 +7897,12 @@ Example: .PP .nf .na -.ft C # Default as of Postfix 2.5 smtp_sasl_auth_soft_bounce = yes # The old hard\-coded default smtp_sasl_auth_soft_bounce = no .fi .ad -.ft R .PP This feature is available in Postfix 2.5 and later. .SH smtp_sasl_mechanism_filter (default: empty) @@ -8131,13 +7925,11 @@ Examples: .PP .nf .na -.ft C smtp_sasl_mechanism_filter = plain, login smtp_sasl_mechanism_filter = /etc/postfix/smtp_mechs smtp_sasl_mechanism_filter = !gssapi, !login, static:rest .fi .ad -.ft R .SH smtp_sasl_password_maps (default: empty) Optional Postfix SMTP client lookup tables with one username:password entry per sender, remote hostname or next\-hop domain. Per\-sender @@ -8200,11 +7992,9 @@ Example: .PP .nf .na -.ft C smtp_sasl_security_options = noplaintext .fi .ad -.ft R .SH smtp_sasl_tls_security_options (default: $smtp_sasl_security_options) The SASL authentication security options that the Postfix SMTP client uses for TLS encrypted SMTP sessions. @@ -8320,11 +8110,9 @@ Example: .PP .nf .na -.ft C smtp_tls_CAfile = /etc/postfix/CAcert.pem .fi .ad -.ft R .PP This feature is available in Postfix 2.2 and later. .SH smtp_tls_CApath (default: empty) @@ -8347,11 +8135,9 @@ Example: .PP .nf .na -.ft C smtp_tls_CApath = /etc/postfix/certs .fi .ad -.ft R .PP This feature is available in Postfix 2.2 and later. .SH smtp_tls_block_early_mail_reply (default: no) @@ -8378,7 +8164,6 @@ well without them. The recommended setting is to let the defaults stand: .in +4 .nf .na -.ft C smtp_tls_cert_file = smtp_tls_key_file = smtp_tls_eccert_file = @@ -8390,7 +8175,6 @@ smtp_tls_dkey_file = smtp_tls_chain_files = .fi .ad -.ft R .in -4 .PP The best way to use the default settings is to comment out the above @@ -8409,12 +8193,10 @@ As the "root" super\-user create the client.pem file with: .in +4 .nf .na -.ft C # \fBumask 077\fR # \fBcat client_key.pem client_cert.pem intermediate_CA.pem > chain.pem \fR .fi .ad -.ft R .in -4 .PP If you also want to verify remote SMTP server certificates issued by @@ -8429,11 +8211,9 @@ Example: .PP .nf .na -.ft C smtp_tls_cert_file = /etc/postfix/chain.pem .fi .ad -.ft R .PP This feature is available in Postfix 2.2 and later. .SH smtp_tls_chain_files (default: empty) @@ -8485,7 +8265,6 @@ Example (separate files for each key and corresponding certificate chain): .in +4 .nf .na -.ft C /etc/postfix/main.cf: smtp_tls_chain_files = ${config_directory}/ed25519.pem, @@ -8493,13 +8272,11 @@ Example (separate files for each key and corresponding certificate chain): ${config_directory}/rsa.pem .fi .ad -.ft R .in -4 .sp .in +4 .nf .na -.ft C /etc/postfix/ed25519.pem: \-\-\-\-\-BEGIN PRIVATE KEY\-\-\-\-\- MC4CAQAwBQYDK2VwBCIEIEJfbbO4BgBQGBg9NAbIJaDBqZb4bC4cOkjtAH+Efbz3 @@ -8511,13 +8288,11 @@ Example (separate files for each key and corresponding certificate chain): \-\-\-\-\-END CERTIFICATE\-\-\-\-\- .fi .ad -.ft R .in -4 .sp .in +4 .nf .na -.ft C /etc/postfix/ed448.pem: \-\-\-\-\-BEGIN PRIVATE KEY\-\-\-\-\- MEcCAQAwBQYDK2VxBDsEOQf+m0P+G0qi+NZ0RolyeiE5zdlPQR8h8y4jByBifpIe @@ -8530,13 +8305,11 @@ Example (separate files for each key and corresponding certificate chain): \-\-\-\-\-END CERTIFICATE\-\-\-\-\- .fi .ad -.ft R .in -4 .sp .in +4 .nf .na -.ft C /etc/postfix/rsa.pem: \-\-\-\-\-BEGIN PRIVATE KEY\-\-\-\-\- MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDc4QusgkahH9rL @@ -8550,7 +8323,6 @@ Example (separate files for each key and corresponding certificate chain): \-\-\-\-\-END CERTIFICATE\-\-\-\-\- .fi .ad -.ft R .in -4 .PP Example (all keys and certificates in a single file): @@ -8558,18 +8330,15 @@ Example (all keys and certificates in a single file): .in +4 .nf .na -.ft C /etc/postfix/main.cf: smtp_tls_chain_files = ${config_directory}/chains.pem .fi .ad -.ft R .in -4 .sp .in +4 .nf .na -.ft C /etc/postfix/chains.pem: \-\-\-\-\-BEGIN PRIVATE KEY\-\-\-\-\- MC4CAQAwBQYDK2VwBCIEIEJfbbO4BgBQGBg9NAbIJaDBqZb4bC4cOkjtAH+Efbz3 @@ -8600,7 +8369,6 @@ Example (all keys and certificates in a single file): \-\-\-\-\-END CERTIFICATE\-\-\-\-\- .fi .ad -.ft R .in -4 .PP This feature is available in Postfix 3.4 and later. @@ -8689,11 +8457,9 @@ Example: .PP .nf .na -.ft C smtp_tls_dcert_file = /etc/postfix/client\-dsa.pem .fi .ad -.ft R .PP This feature is available in Postfix 2.2 and later. .SH smtp_tls_dkey_file (default: $smtp_tls_dcert_file) @@ -8720,11 +8486,9 @@ Example: .PP .nf .na -.ft C smtp_tls_eccert_file = /etc/postfix/ecdsa\-ccert.pem .fi .ad -.ft R .PP This feature is available in Postfix 2.6 and later, when Postfix is compiled and linked with OpenSSL 1.0.0 or later. @@ -8797,32 +8561,26 @@ Sample commands to compute certificate and public key SHA256 digests: .PP .nf .na -.ft C # SHA256 digest of the first certificate in "cert.pem" $ openssl x509 \-in cert.pem \-outform DER | openssl dgst \-sha256 \-c .fi .ad -.ft R .PP .nf .na -.ft C # SHA256 digest of the SPKI of the first certificate in "cert.pem" $ openssl x509 \-in cert.pem \-pubkey \-noout | openssl pkey \-pubin \-outform DER | openssl dgst \-sha256 \-c .fi .ad -.ft R .PP .nf .na -.ft C # SHA256 digest of the SPKI of the first private key in "pkey.pem" $ openssl pkey \-in pkey.pem \-pubout \-outform DER | openssl dgst \-sha256 \-c .fi .ad -.ft R .PP This feature is available in Postfix 3.9 and later. .SH smtp_tls_enforce_peername (default: yes) @@ -8855,7 +8613,6 @@ Examples (some of these will cause problems): .in +4 .nf .na -.ft C smtp_tls_exclude_ciphers = aNULL smtp_tls_exclude_ciphers = MD5, DES smtp_tls_exclude_ciphers = DES+MD5 @@ -8863,7 +8620,6 @@ smtp_tls_exclude_ciphers = AES256\-SHA, DES\-CBC3\-MD5 smtp_tls_exclude_ciphers = kEDH+aRSA .fi .ad -.ft R .in -4 .PP The first setting disables anonymous ciphers. The next setting @@ -8905,7 +8661,6 @@ another, and both keys are trusted just prior to the transition. .in +4 .nf .na -.ft C relayhost = [mailhub.example.com] smtp_tls_security_level = fingerprint smtp_tls_fingerprint_digest = sha256 @@ -8914,7 +8669,6 @@ smtp_tls_fingerprint_cert_match = dd:5c:ef:f5:c3:bc:64:25:36:...:99:36:06:ce:40:ef:de:2e:ad:a4 .fi .ad -.ft R .in -4 .PP Example: Certificate fingerprint verification with selected destinations. @@ -8923,26 +8677,22 @@ As in the example above, we show two matching fingerprints: .in +4 .nf .na -.ft C /etc/postfix/main.cf: smtp_tls_policy_maps = hash:/etc/postfix/tls_policy smtp_tls_fingerprint_digest = sha256 .fi .ad -.ft R .in -4 .sp .in +4 .nf .na -.ft C /etc/postfix/tls_policy: example.com fingerprint match=51:e9:af:2e:1e:40:1f:...:64:0a:30:35:2d:09:16:31:5a:eb:82:76 match=b6:b4:72:34:e2:59:cd:...:c2:ca:63:0d:4d:cc:2c:7d:84:de:e6:2f .fi .ad -.ft R .in -4 .PP This feature is available in Postfix 2.5 and later. @@ -8978,11 +8728,9 @@ specific digest algorithm, run: .in +4 .nf .na -.ft C $ openssl x509 \-noout \-fingerprint \-\fIdigest\fR \-in \fIcertfile\fR.pem .fi .ad -.ft R .in -4 .PP The text to the right of the "=" sign is the desired fingerprint. @@ -8991,12 +8739,10 @@ For example: .in +4 .nf .na -.ft C $ openssl x509 \-noout \-fingerprint \-sha256 \-in cert.pem SHA256 Fingerprint=D4:6A:AB:19:24:...:BB:A6:CB:66:82:C0:8E:9B:EE:29:A8:1A .fi .ad -.ft R .in -4 .PP To extract the public key fingerprint from an X.509 certificate, @@ -9014,7 +8760,6 @@ all key types. .in +4 .nf .na -.ft C # OpenSSL >= 1.0 with SHA\-256 fingerprints. $ openssl x509 \-in cert.pem \-noout \-pubkey | openssl pkey \-pubin \-outform DER | @@ -9022,7 +8767,6 @@ $ openssl x509 \-in cert.pem \-noout \-pubkey | (stdin)= 64:3f:1f:f6:e5:1e:d4:2a:56:...:fc:09:1a:61:98:b5:bc:7c:60:58 .fi .ad -.ft R .in -4 .PP The Postfix SMTP server and client log the peer (leaf) certificate @@ -9058,11 +8802,9 @@ Example: .PP .nf .na -.ft C smtp_tls_key_file = $smtp_tls_cert_file .fi .ad -.ft R .PP This feature is available in Postfix 2.2 and later. .SH smtp_tls_loglevel (default: 0) @@ -9212,7 +8954,6 @@ Hexadecimal example (Postfix >= 3.6): .in +4 .nf .na -.ft C # Allow only TLS 1.2 through (hypothetical) TLS 1.4, once supported # in some future version of OpenSSL (presently a warning is logged). smtp_tls_mandatory_protocols = >=TLSv1.2, <=0305 @@ -9220,7 +8961,6 @@ smtp_tls_mandatory_protocols = >=TLSv1.2, <=0305 smtp_tls_mandatory_protocols = >=0x0303 .fi .ad -.ft R .in -4 .PP With Postfix < 3.6 there is no support for a minimum or maximum @@ -9238,11 +8978,9 @@ disables all versions above that higher version. Thus, for example: .in +4 .nf .na -.ft C smtp_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1.1 .fi .ad -.ft R .in -4 .PP also disables any protocol versions higher than TLSv1.1 leaving @@ -9264,14 +9002,12 @@ TLS_README for more information about security levels. Example: .nf .na -.ft C # Preferred syntax with Postfix >= 3.6: smtp_tls_mandatory_protocols = >=TLSv1.2, <=TLSv1.3 # Legacy syntax: smtp_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1 .fi .ad -.ft R .PP This feature is available in Postfix 2.3 and later. .SH smtp_tls_note_starttls_offer (default: no) @@ -9282,11 +9018,9 @@ The logfile record looks like: .PP .nf .na -.ft C postfix/smtp[pid]: Host offered STARTTLS: [name.of.host] .fi .ad -.ft R .PP This feature is available in Postfix 2.2 and later. .SH smtp_tls_per_site (default: empty) @@ -9546,7 +9280,6 @@ Example: .PP .nf .na -.ft C /etc/postfix/main.cf: smtp_tls_policy_maps = hash:/etc/postfix/tls_policy # Postfix 2.5 and later. @@ -9557,11 +9290,9 @@ Example: smtp_tls_fingerprint_digest = sha256 .fi .ad -.ft R .PP .nf .na -.ft C /etc/postfix/tls_policy: example.edu none example.mil may @@ -9576,7 +9307,6 @@ Example: match=51:e9:af:2e:1e:40:1f:...:64:0a:30:35:2d:09:16:31:5a:eb:82:76 .fi .ad -.ft R .PP \fBNote:\fR The "hostname" strategy if listed in a non\-default setting of smtp_tls_secure_cert_match or in the "match" attribute @@ -9624,7 +9354,6 @@ Hexadecimal example (Postfix >= 3.6): .in +4 .nf .na -.ft C # Allow only TLS 1.0 through (hypothetical) TLS 1.4, once supported # in some future version of OpenSSL (presently a warning is logged). smtp_tls_protocols = >=TLSv1, <=0305 @@ -9632,7 +9361,6 @@ smtp_tls_protocols = >=TLSv1, <=0305 smtp_tls_protocols = >=0x0301 .fi .ad -.ft R .in -4 .PP With Postfix < 3.6 there is no support for a minimum or maximum @@ -9650,11 +9378,9 @@ versions above that higher version. Thus, for example: .in +4 .nf .na -.ft C smtp_tls_protocols = !SSLv2, !SSLv3, !TLSv1.1 .fi .ad -.ft R .in -4 also disables any protocols version higher than TLSv1.1 leaving only "TLSv1" enabled. @@ -9666,14 +9392,12 @@ releases >= 3.0.14, 3.1.10, 3.2.7 and 3.3.2). Example: .nf .na -.ft C # Preferred syntax with Postfix >= 3.6: smtp_tls_protocols = >=TLSv1, <=TLSv1.3 # Legacy syntax: smtp_tls_protocols = !SSLv2, !SSLv3 .fi .ad -.ft R .PP This feature is available in Postfix 2.6 and later. .SH smtp_tls_scert_verifydepth (default: 9) @@ -9712,11 +9436,9 @@ Sample main.cf setting: .in +4 .nf .na -.ft C smtp_tls_secure_cert_match = nexthop .fi .ad -.ft R .in -4 .PP Sample policy table override: @@ -9724,12 +9446,10 @@ Sample policy table override: .in +4 .nf .na -.ft C example.net secure match=example.com:.example.com \&.example.net secure match=example.com:.example.com .fi .ad -.ft R .in -4 .PP This feature is available in Postfix 2.3 and later. @@ -9841,16 +9561,13 @@ Examples: .PP .nf .na -.ft C # No TLS. Formerly: smtp_use_tls=no and smtp_enforce_tls=no. smtp_tls_security_level = none .fi .ad -.ft R .PP .nf .na -.ft C # Opportunistic TLS. smtp_tls_security_level = may # Do not tweak opportunistic ciphers or protocols unless it is essential @@ -9863,21 +9580,17 @@ smtp_tls_protocols = >=TLSv1 smtp_tls_protocols = !SSLv2, !SSLv3 .fi .ad -.ft R .PP .nf .na -.ft C # Mandatory (high\-grade) TLS encryption. smtp_tls_security_level = encrypt smtp_tls_mandatory_ciphers = high .fi .ad -.ft R .PP .nf .na -.ft C # Authenticated TLS 1.2 or better matching the nexthop domain or a # subdomain. smtp_tls_security_level = secure @@ -9886,11 +9599,9 @@ smtp_tls_mandatory_protocols = >=TLSv1.2 smtp_tls_secure_cert_match = nexthop, dot\-nexthop .fi .ad -.ft R .PP .nf .na -.ft C # Certificate fingerprint verification (Postfix >= 2.5). # The CA\-less "fingerprint" security level only scales to a limited # number of destinations. As a global default rather than a per\-site @@ -9905,7 +9616,6 @@ smtp_tls_fingerprint_cert_match = EC:3B:2D:B0:...:A3:9D:72:F6 .fi .ad -.ft R .PP This feature is available in Postfix 2.3 and later. .SH smtp_tls_servername (default: empty) @@ -9965,11 +9675,9 @@ Example: .PP .nf .na -.ft C smtp_tls_session_cache_database = btree:/var/lib/postfix/smtp_scache .fi .ad -.ft R .PP This feature is available in Postfix 2.2 and later. .SH smtp_tls_session_cache_timeout (default: 3600s) @@ -10029,11 +9737,9 @@ containing a single certificate, as follows: .in +4 .nf .na -.ft C $ openssl x509 \-in cert.pem \-out ta\-key.pem \-noout \-pubkey .fi .ad -.ft R .in -4 .PP This feature is available in Postfix 2.11 and later. @@ -10094,22 +9800,18 @@ Sample main.cf setting: .PP .nf .na -.ft C smtp_tls_verify_cert_match = hostname, nexthop, dot\-nexthop .fi .ad -.ft R .PP Sample policy table override: .PP .nf .na -.ft C example.com verify match=hostname:nexthop \&.example.com verify match=example.com:.example.com:hostname .fi .ad -.ft R .PP This feature is available in Postfix 2.3 and later. .SH smtp_tls_wrappermode (default: no) @@ -10124,7 +9826,6 @@ Example: deliver all remote mail via a provider's server .PP .nf .na -.ft C /etc/postfix/main.cf: # Client\-side SMTPS requires "encrypt" or stronger. smtp_tls_security_level = encrypt @@ -10133,7 +9834,6 @@ Example: deliver all remote mail via a provider's server relayhost = [mail.example.com]:465 .fi .ad -.ft R .PP More examples are in TLS_README, including examples for older Postfix versions. @@ -10253,11 +9953,9 @@ Example: .PP .nf .na -.ft C smtpd_banner = $myhostname ESMTP $mail_name ($mail_version) .fi .ad -.ft R .SH smtpd_client_auth_rate_limit (default: 0) The maximal number of AUTH commands that any client is allowed to send to this service per time unit, regardless of whether or not @@ -10303,11 +10001,9 @@ Example: .PP .nf .na -.ft C smtpd_client_connection_rate_limit = 1000 .fi .ad -.ft R .SH smtpd_client_event_limit_exceptions (default: $mynetworks) Clients that are excluded from smtpd_client_*_count/rate_limit restrictions. See the mynetworks parameter @@ -10363,11 +10059,9 @@ Example: .PP .nf .na -.ft C smtpd_client_message_rate_limit = 1000 .fi .ad -.ft R .SH smtpd_client_new_tls_session_rate_limit (default: 0) The maximal number of new (i.e., uncached) TLS sessions that a remote SMTP client is allowed to negotiate with this service per @@ -10390,11 +10084,9 @@ Example: .PP .nf .na -.ft C smtpd_client_new_tls_session_rate_limit = 100 .fi .ad -.ft R .SH smtpd_client_port_logging (default: no) Enable logging of the remote SMTP client port in addition to the hostname and IP address. The logging format is "host[address]:port". @@ -10420,11 +10112,9 @@ Example: .PP .nf .na -.ft C smtpd_client_recipient_rate_limit = 1000 .fi .ad -.ft R .SH smtpd_client_restrictions (default: empty) Optional restrictions that the Postfix SMTP server applies in the context of a client connection request. @@ -10773,14 +10463,12 @@ the next restriction in the list, if any. This may stop zombie mail when used as: .nf .na -.ft C /etc/postfix/main.cf: smtpd_client_restrictions = sleep 1, reject_unauth_pipelining smtpd_delay_reject = no .fi .ad -.ft R This feature is available in Postfix 2.3. .br .IP "\fBwarn_if_reject\fR" @@ -10810,11 +10498,9 @@ Example: .PP .nf .na -.ft C smtpd_client_restrictions = permit_mynetworks, reject_unknown_client_hostname .fi .ad -.ft R .SH smtpd_command_filter (default: empty) A mechanism to transform commands from remote SMTP clients. This is a last\-resort tool to work around client commands that break @@ -10847,62 +10533,50 @@ feature: .PP .nf .na -.ft C /etc/postfix/main.cf: smtpd_command_filter = pcre:/etc/postfix/command_filter .fi .ad -.ft R .PP .nf .na -.ft C /etc/postfix/command_filter: # Work around clients that send malformed HELO commands. /^HELO\es*$/ HELO domain.invalid .fi .ad -.ft R .PP .nf .na -.ft C # Work around clients that send empty lines. /^\es*$/ NOOP .fi .ad -.ft R .PP .nf .na -.ft C # Work around clients that send RCPT TO:<'user@domain'>. # WARNING: do not lose the parameters that follow the address. /^(RCPT\es+TO:\es*<)'([^[:space:]]+)'(>.*)/ $1$2$3 .fi .ad -.ft R .PP .nf .na -.ft C # Append XVERP to MAIL FROM commands to request VERP\-style delivery. # See VERP_README for more information on how to use Postfix VERP. /^(MAIL\es+FROM:\es*.*)/ $1 XVERP .fi .ad -.ft R .PP .nf .na -.ft C # Bounce\-never mail sink. Use notify_classes=bounce,resource,software # to send bounced mail to the postmaster (with message body removed). /^(RCPT\es+TO:\es*<.*>.*)\es+NOTIFY=\eS+(.*)/ $1 NOTIFY=NEVER$2 /^(RCPT\es+TO:.*)/ $1 NOTIFY=NEVER .fi .ad -.ft R .PP This feature is available in Postfix 2.7. .SH smtpd_data_restrictions (default: empty) @@ -10938,12 +10612,10 @@ Examples: .PP .nf .na -.ft C smtpd_data_restrictions = reject_unauth_pipelining smtpd_data_restrictions = reject_multi_recipient_bounce .fi .ad -.ft R .SH smtpd_delay_open_until_valid_rcpt (default: yes) Postpone the start of an SMTP mail transaction until a valid RCPT TO command is received. Specify "no" to create a mail transaction @@ -11087,11 +10759,9 @@ Example: .PP .nf .na -.ft C smtpd_etrn_restrictions = permit_mynetworks, reject .fi .ad -.ft R .SH smtpd_expansion_filter (default: see "postconf \-d" output) What characters are allowed in $name expansions of RBL reply templates. Characters not in the allowed set are replaced by "_". @@ -11182,7 +10852,6 @@ Recommended settings: .in +4 .nf .na -.ft C # Require the standard End\-of\-DATA sequence .. # Otherwise, allow bare and process it as if the client sent # . @@ -11200,7 +10869,6 @@ smtpd_forbid_bare_newline = normalize smtpd_forbid_bare_newline_exclusions = $mynetworks .fi .ad -.ft R .in -4 .PP Alternative: @@ -11208,7 +10876,6 @@ Alternative: .in +4 .nf .na -.ft C # Reject input lines that contain and log a "bare received" # error. Require that input lines end in , and require the # standard End\-of\-DATA sequence .. @@ -11238,7 +10905,6 @@ smtpd_forbid_bare_newline_exclusions = $mynetworks # smtpd_discard_ehlo_keywords = chunking, silent\-discard .fi .ad -.ft R .in -4 .PP This feature with settings \fByes\fR and \fBno\fR is available @@ -11296,11 +10962,9 @@ Example: .PP .nf .na -.ft C smtpd_helo_required = yes .fi .ad -.ft R .SH smtpd_helo_restrictions (default: empty) Optional restrictions that the Postfix SMTP server applies in the context of a client HELO command. @@ -11431,12 +11095,10 @@ Examples: .PP .nf .na -.ft C smtpd_helo_restrictions = permit_mynetworks, reject_invalid_helo_hostname smtpd_helo_restrictions = permit_mynetworks, reject_unknown_helo_hostname .fi .ad -.ft R .SH smtpd_history_flush_threshold (default: 100) The maximal number of lines in the Postfix SMTP server command history before it is flushed upon receipt of EHLO, RSET, or end of DATA. @@ -11468,23 +11130,19 @@ Examples: .PP .nf .na -.ft C /etc/postfix/main.cf: # Log all "permit" actions. smtpd_log_access_permit_actions = static:all .fi .ad -.ft R .PP .nf .na -.ft C /etc/postfix/main.cf: # Log "permit_dnswl_client" only. smtpd_log_access_permit_actions = permit_dnswl_client .fi .ad -.ft R .PP This feature is available in Postfix 2.10 and later. .SH smtpd_milter_maps (default: empty) @@ -11500,17 +11158,14 @@ Example to disable Milters for local clients: .PP .nf .na -.ft C /etc/postfix/main.cf: smtpd_milter_maps = cidr:/etc/postfix/smtpd_milter_map smtpd_milters = inet:host:port, { inet:host:port, ... }, ... .fi .ad -.ft R .PP .nf .na -.ft C /etc/postfix/smtpd_milter_map: # Disable Milters for local clients. 127.0.0.0/8 DISABLE @@ -11519,7 +11174,6 @@ Example to disable Milters for local clients: 2001:db8::/32 DISABLE .fi .ad -.ft R .PP This feature is available in Postfix 3.2 and later. .SH smtpd_milters (default: empty) @@ -11762,21 +11416,17 @@ refuse to receive mail: .in +4 .nf .na -.ft C reject, reject_unauth_destination .fi .ad -.ft R .in -4 .sp .in +4 .nf .na -.ft C defer, defer_if_permit, defer_unauth_destination .fi .ad -.ft R .in -4 .PP Specify a list of restrictions, separated by commas and/or whitespace. @@ -11953,13 +11603,11 @@ Example: .PP .nf .na -.ft C # The Postfix before 2.10 default mail relay policy. Later Postfix # versions implement this preferably with smtpd_relay_restrictions. smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination .fi .ad -.ft R .SH smtpd_reject_footer (default: empty) Optional information that is appended after each Postfix SMTP server @@ -11973,7 +11621,6 @@ is output literally. .PP .nf .na -.ft C /etc/postfix/main.cf: smtpd_reject_footer = \ec. For assistance, call 800\-555\-0101. Please provide the following information in your problem report: @@ -11981,20 +11628,17 @@ is output literally. ($server_name). .fi .ad -.ft R .PP Server response: .PP .nf .na -.ft C 550\-5.5.1 Recipient address rejected: User unknown. For assistance, call 800\-555\-0101. Please provide the following information in your problem report: time (Jan 4 15:42:00), client (192.168.1.248) and server (mail1.example.com). .fi .ad -.ft R .PP Note: the above text is meant to make it easier to find the Postfix logfile records for a failed SMTP session. The text itself @@ -12144,21 +11788,17 @@ refuse to receive mail: .in +4 .nf .na -.ft C reject, reject_unauth_destination .fi .ad -.ft R .in -4 .sp .in +4 .nf .na -.ft C defer, defer_if_permit, defer_unauth_destination .fi .ad -.ft R .in -4 .PP Specify a list of restrictions, separated by commas and/or whitespace. @@ -12193,25 +11833,21 @@ access restriction can be used to permit relay access, like this: .in +4 .nf .na -.ft C # With Postfix 2.10 and later, the mail relay policy is # preferably specified under smtpd_relay_restrictions. smtpd_relay_restrictions = permit_mynetworks, permit_sasl_authenticated, ... .fi .ad -.ft R .PP .nf .na -.ft C # With Postfix before 2.10, the relay policy can be # specified only under smtpd_recipient_restrictions. smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, ... .fi .ad -.ft R .in -4 .PP To reject all SMTP connections from unauthenticated clients, @@ -12220,11 +11856,9 @@ specify "smtpd_delay_reject = yes" (which is the default) and use: .in +4 .nf .na -.ft C smtpd_client_restrictions = permit_sasl_authenticated, reject .fi .ad -.ft R .in -4 .PP See the SASL_README file for SASL configuration and operation details. @@ -12263,11 +11897,9 @@ Example: .PP .nf .na -.ft C smtpd_sasl_exceptions_networks = $mynetworks .fi .ad -.ft R .PP This feature is available in Postfix 2.1 and later. .SH smtpd_sasl_local_domain (default: empty) @@ -12280,12 +11912,10 @@ Examples: .PP .nf .na -.ft C smtpd_sasl_local_domain = $mydomain smtpd_sasl_local_domain = $myhostname .fi .ad -.ft R .SH smtpd_sasl_mechanism_filter (default: !external, static:rest) If non\-empty, a filter for the SASL mechanism names that the Postfix SMTP server will announce in the EHLO response. By default, @@ -12301,13 +11931,11 @@ Examples: .PP .nf .na -.ft C smtpd_sasl_mechanism_filter = !external, !gssapi, static:rest smtpd_sasl_mechanism_filter = login, plain smtpd_sasl_mechanism_filter = /etc/postfix/smtpd_mechs .fi .ad -.ft R .PP This feature is available in Postfix 3.6 and later. .SH smtpd_sasl_path (default: smtpd) @@ -12382,11 +12010,9 @@ Example: .PP .nf .na -.ft C smtpd_sasl_security_options = noanonymous, noplaintext .fi .ad -.ft R .SH smtpd_sasl_service (default: smtp) The service name that is passed to the SASL plug\-in that is selected with \fBsmtpd_sasl_type\fR and \fBsmtpd_sasl_path\fR. @@ -12602,13 +12228,11 @@ Examples: .PP .nf .na -.ft C smtpd_sender_restrictions = reject_unknown_sender_domain smtpd_sender_restrictions = reject_unknown_sender_domain, check_sender_access hash:/etc/postfix/access .fi .ad -.ft R .SH smtpd_service_name (default: smtpd) The internal service that \fBpostscreen\fR(8) hands off allowed connections to. In a future version there may be different @@ -12699,11 +12323,9 @@ Example: .PP .nf .na -.ft C smtpd_tls_CAfile = /etc/postfix/CAcert.pem .fi .ad -.ft R .PP This feature is available in Postfix 2.2 and later. .SH smtpd_tls_CApath (default: empty) @@ -12735,11 +12357,9 @@ Example: .PP .nf .na -.ft C smtpd_tls_CApath = /etc/postfix/certs .fi .ad -.ft R .PP This feature is available in Postfix 2.2 and later. .SH smtpd_tls_always_issue_session_ids (default: yes) @@ -12761,11 +12381,9 @@ Example: .PP .nf .na -.ft C smtpd_tls_always_issue_session_ids = no .fi .ad -.ft R .PP This feature is available in Postfix 2.3 and later. .SH smtpd_tls_ask_ccert (default: no) @@ -12859,11 +12477,9 @@ Example: .PP .nf .na -.ft C smtpd_tls_cert_file = /etc/postfix/server.pem .fi .ad -.ft R .PP This feature is available in Postfix 2.2 and later. .SH smtpd_tls_chain_files (default: empty) @@ -12921,7 +12537,6 @@ Example (separate files for each key and corresponding certificate chain): .in +4 .nf .na -.ft C /etc/postfix/main.cf: smtpd_tls_chain_files = ${config_directory}/ed25519.pem, @@ -12929,13 +12544,11 @@ Example (separate files for each key and corresponding certificate chain): ${config_directory}/rsa.pem .fi .ad -.ft R .in -4 .sp .in +4 .nf .na -.ft C /etc/postfix/ed25519.pem: \-\-\-\-\-BEGIN PRIVATE KEY\-\-\-\-\- MC4CAQAwBQYDK2VwBCIEIEJfbbO4BgBQGBg9NAbIJaDBqZb4bC4cOkjtAH+Efbz3 @@ -12947,13 +12560,11 @@ Example (separate files for each key and corresponding certificate chain): \-\-\-\-\-END CERTIFICATE\-\-\-\-\- .fi .ad -.ft R .in -4 .sp .in +4 .nf .na -.ft C /etc/postfix/ed448.pem: \-\-\-\-\-BEGIN PRIVATE KEY\-\-\-\-\- MEcCAQAwBQYDK2VxBDsEOQf+m0P+G0qi+NZ0RolyeiE5zdlPQR8h8y4jByBifpIe @@ -12966,13 +12577,11 @@ Example (separate files for each key and corresponding certificate chain): \-\-\-\-\-END CERTIFICATE\-\-\-\-\- .fi .ad -.ft R .in -4 .sp .in +4 .nf .na -.ft C /etc/postfix/rsa.pem: \-\-\-\-\-BEGIN PRIVATE KEY\-\-\-\-\- MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDc4QusgkahH9rL @@ -12986,7 +12595,6 @@ Example (separate files for each key and corresponding certificate chain): \-\-\-\-\-END CERTIFICATE\-\-\-\-\- .fi .ad -.ft R .in -4 .PP Example (all keys and certificates in a single file): @@ -12994,18 +12602,15 @@ Example (all keys and certificates in a single file): .in +4 .nf .na -.ft C /etc/postfix/main.cf: smtpd_tls_chain_files = ${config_directory}/chains.pem .fi .ad -.ft R .in -4 .sp .in +4 .nf .na -.ft C /etc/postfix/chains.pem: \-\-\-\-\-BEGIN PRIVATE KEY\-\-\-\-\- MC4CAQAwBQYDK2VwBCIEIEJfbbO4BgBQGBg9NAbIJaDBqZb4bC4cOkjtAH+Efbz3 @@ -13036,7 +12641,6 @@ Example (all keys and certificates in a single file): \-\-\-\-\-END CERTIFICATE\-\-\-\-\- .fi .ad -.ft R .in -4 .PP This feature is available in Postfix 3.4 and later. @@ -13080,11 +12684,9 @@ Example: .PP .nf .na -.ft C smtpd_tls_dcert_file = /etc/postfix/server\-dsa.pem .fi .ad -.ft R .PP This feature is available in Postfix 2.2 and later. .SH smtpd_tls_dh1024_param_file (default: empty) @@ -13113,7 +12715,6 @@ set of parameters with something like the following commands: .in +4 .nf .na -.ft C openssl dhparam \-out /etc/postfix/dh2048.pem 2048 openssl dhparam \-out /etc/postfix/dh1024.pem 1024 # As of Postfix 3.6, export\-grade 512\-bit DH parameters are no longer @@ -13121,7 +12722,6 @@ openssl dhparam \-out /etc/postfix/dh1024.pem 1024 openssl dhparam \-out /etc/postfix/dh512.pem 512 .fi .ad -.ft R .in -4 .PP It is safe to share the same DH parameters between multiple @@ -13140,11 +12740,9 @@ Example: .PP .nf .na -.ft C smtpd_tls_dh1024_param_file = /etc/postfix/dh2048.pem .fi .ad -.ft R .PP This feature is available in Postfix 2.2 and later. .SH smtpd_tls_dh512_param_file (default: empty) @@ -13163,11 +12761,9 @@ Example: .PP .nf .na -.ft C smtpd_tls_dh512_param_file = /etc/postfix/dh_512.pem .fi .ad -.ft R .PP This feature is available in Postfix 2.2 and later, but is ignored in Postfix 3.6 and later. @@ -13195,11 +12791,9 @@ Example: .PP .nf .na -.ft C smtpd_tls_eccert_file = /etc/postfix/ecdsa\-scert.pem .fi .ad -.ft R .PP This feature is available in Postfix 2.6 and later, when Postfix is compiled and linked with OpenSSL 1.0.0 or later. @@ -13284,32 +12878,26 @@ Sample commands to compute certificate and public key SHA256 digests: .PP .nf .na -.ft C # SHA256 digest of the first certificate in "cert.pem" $ openssl x509 \-in cert.pem \-outform DER | openssl dgst \-sha256 \-c .fi .ad -.ft R .PP .nf .na -.ft C # SHA256 digest of the SPKI of the first certificate in "cert.pem" $ openssl x509 \-in cert.pem \-pubkey \-noout | openssl pkey \-pubin \-outform DER | openssl dgst \-sha256 \-c .fi .ad -.ft R .PP .nf .na -.ft C # SHA256 digest of the SPKI of the first private key in "pkey.pem" $ openssl pkey \-in pkey.pem \-pubout \-outform DER | openssl dgst \-sha256 \-c .fi .ad -.ft R .PP This feature is available in Postfix 3.9 and later. .SH smtpd_tls_exclude_ciphers (default: empty) @@ -13326,7 +12914,6 @@ Examples (some of these will cause problems): .in +4 .nf .na -.ft C smtpd_tls_exclude_ciphers = aNULL smtpd_tls_exclude_ciphers = MD5, DES smtpd_tls_exclude_ciphers = DES+MD5 @@ -13334,7 +12921,6 @@ smtpd_tls_exclude_ciphers = AES256\-SHA, DES\-CBC3\-MD5 smtpd_tls_exclude_ciphers = kEDH+aRSA .fi .ad -.ft R .in -4 .PP The first setting disables anonymous ciphers. The next setting @@ -13370,11 +12956,9 @@ specific digest algorithm, run: .in +4 .nf .na -.ft C $ openssl x509 \-noout \-fingerprint \-\fIdigest\fR \-in \fIcertfile\fR.pem .fi .ad -.ft R .in -4 .PP The text to the right of "=" sign is the desired fingerprint. @@ -13383,12 +12967,10 @@ For example: .in +4 .nf .na -.ft C $ openssl x509 \-noout \-fingerprint \-sha256 \-in cert.pem SHA256 Fingerprint=D4:6A:AB:19:24:...:A6:CB:66:82:C0:8E:9B:EE:29:A8:1A .fi .ad -.ft R .in -4 .PP To extract the public key fingerprint from an X.509 certificate, @@ -13404,14 +12986,12 @@ Example: .in +4 .nf .na -.ft C $ openssl x509 \-in cert.pem \-noout \-pubkey | openssl pkey \-pubin \-outform DER | openssl dgst \-sha256 \-c (stdin)= 64:3f:1f:f6:e5:1e:d4:2a:56:8b:fc:09:1a:61:98:b5:bc:7c:60:58 .fi .ad -.ft R .in -4 .PP The Postfix SMTP server and client log the peer (leaf) certificate @@ -13423,7 +13003,6 @@ Example: client\-certificate access table, with sha256 fingerprints: .in +4 .nf .na -.ft C /etc/postfix/main.cf: smtpd_tls_fingerprint_digest = sha256 smtpd_client_restrictions = @@ -13431,10 +13010,8 @@ Example: client\-certificate access table, with sha256 fingerprints: reject .fi .ad -.ft R .nf .na -.ft C /etc/postfix/access: # Action folded to next line... AF:88:7C:AD:51:95:6F:36:96:...:01:FB:2E:48:CD:AB:49:25:A2:3B @@ -13443,7 +13020,6 @@ Example: client\-certificate access table, with sha256 fingerprints: permit_auth_destination .fi .ad -.ft R .in -4 .PP This feature is available in Postfix 2.5 and later. @@ -13608,7 +13184,6 @@ Hexadecimal example (Postfix >= 3.6): .in +4 .nf .na -.ft C # Allow only TLS 1.2 through (hypothetical) TLS 1.4, once supported # in some future version of OpenSSL (presently a warning is logged). smtpd_tls_mandatory_protocols = >=TLSv1.2, <=0305 @@ -13616,7 +13191,6 @@ smtpd_tls_mandatory_protocols = >=TLSv1.2, <=0305 smtpd_tls_mandatory_protocols = >=0x0303 .fi .ad -.ft R .in -4 .PP With Postfix < 3.6 there is no support for a minimum or maximum @@ -13634,14 +13208,12 @@ Example: .PP .nf .na -.ft C # Preferred syntax with Postfix >= 3.6: smtpd_tls_mandatory_protocols = >=TLSv1.2, <=TLSv1.3 # Legacy syntax: smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1 .fi .ad -.ft R .PP This feature is available in Postfix 2.3 and later. .SH smtpd_tls_protocols (default: see 'postconf \-d' output) @@ -13682,7 +13254,6 @@ Hexadecimal example (Postfix >= 3.6): .in +4 .nf .na -.ft C # Allow only TLS 1.0 through (hypothetical) TLS 1.4, once supported # in some future version of OpenSSL (presently a warning is logged). smtpd_tls_protocols = >=TLSv1, <=0305 @@ -13690,7 +13261,6 @@ smtpd_tls_protocols = >=TLSv1, <=0305 smtpd_tls_protocols = >=0x0301 .fi .ad -.ft R .in -4 .PP With Postfix < 3.6 there is no support for a minimum or maximum @@ -13707,14 +13277,12 @@ releases >= 3.0.14, 3.1.10, 3.2.7 and 3.3.2). Example: .nf .na -.ft C # Preferred syntax with Postfix >= 3.6: smtpd_tls_protocols = >=TLSv1, <=TLSv1.3 # Legacy syntax: smtpd_tls_protocols = !SSLv2, !SSLv3 .fi .ad -.ft R .PP This feature is available in Postfix 2.6 and later. .SH smtpd_tls_received_header (default: no) @@ -13808,11 +13376,9 @@ Example: .PP .nf .na -.ft C smtpd_tls_session_cache_database = btree:/var/lib/postfix/smtpd_scache .fi .ad -.ft R .PP This feature is available in Postfix 2.2 and later. .SH smtpd_tls_session_cache_timeout (default: 3600s) @@ -13967,11 +13533,9 @@ Example: .PP .nf .na -.ft C soft_bounce = yes .fi .ad -.ft R .SH stale_lock_time (default: 500s) The time after which a stale exclusive mailbox lockfile is removed. This is used for delivery to file or mailbox. @@ -14067,11 +13631,9 @@ Example: .PP .nf .na -.ft C swap_bangpath = no .fi .ad -.ft R .SH syslog_facility (default: mail) The syslog facility of Postfix logging. Specify a facility as defined in syslog.\fBconf\fR(5). The default facility is "mail". @@ -14102,12 +13664,10 @@ first terminate all Postfix TCP servers: .in +4 .nf .na -.ft C # postconf \-e master_service_disable=inet # postfix reload .fi .ad -.ft R .in -4 .PP This immediately terminates all processes that accept network @@ -14117,12 +13677,10 @@ tcp_windowsize setting: .in +4 .nf .na -.ft C # postconf \-e tcp_windowsize=65535 master_service_disable= # postfix reload .fi .ad -.ft R .in -4 .PP If you skip these steps with a running Postfix system, then the @@ -14181,7 +13739,6 @@ Example: Default settings for all applications. .in +4 .nf .na -.ft C # The name 'openssl_conf' is the default application name # The section name to the right of the '=' sign is arbitrary, # any name will do, so long as it refers to the desired section. @@ -14201,7 +13758,6 @@ system_default = initial_ssl_settings MinProtocol = TLSv1.2 .fi .ad -.ft R .in -4 .PP Example: Custom settings for an application named "postfix". @@ -14209,7 +13765,6 @@ Example: Custom settings for an application named "postfix". .in +4 .nf .na -.ft C # The mapping from an application name to the corresponding configuration # section must appear near the top of the file, (in what is sometimes called # the "default section") prior to the start of any explicitly named @@ -14224,7 +13779,6 @@ system_default = baseline_postfix_settings MinProtocol = TLSv1 .fi .ad -.ft R .in -4 .PP This feature is available in Postfix >= 3.9, 3.8.1, 3.7.6, @@ -14683,7 +14237,6 @@ Example: .in +4 .nf .na -.ft C /etc/postfix/main.cf: # # The indexed SNI table must be created with "postmap \-F" @@ -14692,13 +14245,11 @@ Example: tls_server_sni_maps = ${indexed}sni .fi .ad -.ft R .in -4 .sp .in +4 .nf .na -.ft C /etc/postfix/sni: # # The example.com domain has both an RSA and ECDSA certificate @@ -14719,7 +14270,6 @@ Example: example.org /etc/postfix/sni\-chains/example.net.pem .fi .ad -.ft R .in -4 .PP Note that the SNI lookup tables should also have entries for @@ -14866,12 +14416,10 @@ may be: .in +4 .nf .na -.ft C example.com. IN MX 0 example.com.mx1.example.net. example.com. IN MX 0 example.com.mx2.example.net. .fi .ad -.ft R .in -4 .PP and the TLS certificate may be for "*.example.net". The "*" @@ -15416,12 +14964,10 @@ Examples: .PP .nf .na -.ft C transport_maps = dbm:/etc/postfix/transport transport_maps = hash:/etc/postfix/transport .fi .ad -.ft R .SH transport_minimum_delivery_slots (default: $default_minimum_delivery_slots) A transport\-specific override for the default_minimum_delivery_slots parameter value, where \fItransport\fR is the master.cf name of @@ -15524,13 +15070,11 @@ Example: .PP .nf .na -.ft C # Default value before Postfix 2.8. # Note: the ":" and ";" are both required. undisclosed_recipients_header = To: undisclosed\-recipients:; .fi .ad -.ft R .SH unknown_address_reject_code (default: 450) The numerical response code when the Postfix SMTP server rejects a sender or recipient address because its domain is unknown. This @@ -15584,11 +15128,9 @@ Example: .PP .nf .na -.ft C unknown_local_recipient_reject_code = 450 .fi .ad -.ft R .PP This feature is available in Postfix 2.0 and later. .SH unknown_relay_recipient_reject_code (default: 550) @@ -15639,11 +15181,9 @@ Example: .PP .nf .na -.ft C unverified_recipient_reject_reason = Recipient address lookup failed .fi .ad -.ft R .PP This feature is available in Postfix 2.6 and later. .SH unverified_recipient_tempfail_action (default: $reject_tempfail_action) @@ -15685,11 +15225,9 @@ Example: .PP .nf .na -.ft C unverified_sender_reject_reason = Sender address lookup failed .fi .ad -.ft R .PP This feature is available in Postfix 2.6 and later. .SH unverified_sender_tempfail_action (default: $reject_tempfail_action) @@ -15726,7 +15264,6 @@ for "_submission._tcp.example.com". .PP .nf .na -.ft C /etc/postfix/main.cf: use_srv_lookup = submission relayhost = example.com:submission @@ -15734,7 +15271,6 @@ for "_submission._tcp.example.com". ...see SASL_README for sasl configuration... .fi .ad -.ft R .PP Example 2: MUA\-to\-MTA submission using SRV record lookup for the "submissions" service for domain "example.org". This uses a @@ -15747,25 +15283,21 @@ instead of "_submissions._tcp.example.org". .PP .nf .na -.ft C /etc/postfix/main.cf: use_srv_lookup = submissions default_transport = smtp\-wraptls:example.org:submissions ...see SASL_README for sasl configuration... .fi .ad -.ft R .PP .nf .na -.ft C /etc/postfix/master.cf: smtp\-wraptls unix ... ... ... ... ... smtp \-o { smtp_tls_wrappermode = yes } \-o { smtp_tls_security_level = encrypt } .fi .ad -.ft R .PP Example 3: Sender\-dependent selection for a combination of MUA\-to\-MTA submission services. This combines examples 1 and 2 with @@ -15777,7 +15309,6 @@ of "_submissions._tcp.example.org". .PP .nf .na -.ft C /etc/postfix/main.cf: use_srv_lookup = submission, submissions sender_dependent_default_transport_maps = inline:{ @@ -15791,7 +15322,6 @@ of "_submissions._tcp.example.org". ...see SASL_README for sasl configuration... .fi .ad -.ft R .PP Example 4: MTA\-to\-MTA traffic, using SRV record lookup for the SMTP service. This is useful for Postfix tests, and may be useful @@ -15799,7 +15329,6 @@ in environments where ports are dynamically assigned to servers. .PP .nf .na -.ft C /etc/postfix/main.cf: use_srv_lookup = smtp # Fall back to MX record lookup when SRV records are unavailable. @@ -15807,7 +15336,6 @@ in environments where ports are dynamically assigned to servers. #ignore_srv_lookup_error = yes .fi .ad -.ft R .PP This feature is available in Postfix 3.8 and later. .SH verp_delimiter_filter (default: \-=+) @@ -15855,11 +15383,9 @@ Example: .PP .nf .na -.ft C virtual_alias_domains = virtual1.tld virtual2.tld .fi .ad -.ft R .SH virtual_alias_expansion_limit (default: 1000) The maximal number of addresses that virtual alias expansion produces from each original recipient. @@ -15890,12 +15416,10 @@ Examples: .PP .nf .na -.ft C virtual_alias_maps = dbm:/etc/postfix/virtual virtual_alias_maps = hash:/etc/postfix/virtual .fi .ad -.ft R .SH virtual_alias_recursion_limit (default: 1000) The maximal nesting depth of virtual alias expansion. Currently the recursion limit is applied only to the left branch of the @@ -15968,11 +15492,9 @@ Example: .PP .nf .na -.ft C virtual_mailbox_base = /var/mail .fi .ad -.ft R .SH virtual_mailbox_domains (default: $virtual_mailbox_maps) Postfix is the final destination for the specified list of domains; mail is delivered via the $virtual_transport mail delivery transport. diff --git a/postfix/mantools/postconf2man b/postfix/mantools/postconf2man index cf5e16128..c3e7f8113 100755 --- a/postfix/mantools/postconf2man +++ b/postfix/mantools/postconf2man @@ -58,8 +58,8 @@ while(<>) { $block =~ s/^()/.PP\n\1/ if ($wantpp); $block =~ s/

*/\n/g; $block =~ s/ *<\/p>/\n/g; - $block =~ s/

/\n.nf\n.na\n.ft C\n/g;
-    $block =~ s/<\/pre>/\n.fi\n.ad\n.ft R\n/g;
+    $block =~ s/
/\n.nf\n.na\n/g;
+    $block =~ s/<\/pre>/\n.fi\n.ad\n/g;
     $block =~ s/]*>/\n/g;
     $block =~ s/
    /\n/g; #$block =~ s/<\/dl>/\n.PP\n/g; diff --git a/postfix/proto/mysql_table b/postfix/proto/mysql_table index e68e0aea8..4274ed4ea 100644 --- a/postfix/proto/mysql_table +++ b/postfix/proto/mysql_table @@ -267,6 +267,12 @@ # "not found". # .sp # This parameter is available with Postfix 3.2 and later. +# TLS-RELATED SETTINGS +# .ad +# .fi +# See https://dev.mysql.com/doc/c-api/en/mysql-options.html +# or https://mariadb.com/kb/en/mysql_optionsv/ for details of +# the underlying MYSQL_OPT_SSL_* features. # .IP "\fBtls_cert_file\fR" # File containing client's X509 certificate. # .sp @@ -276,7 +282,7 @@ # .sp # This parameter is available with Postfix 2.11 and later. # .IP "\fBtls_CAfile\fR" -# File containing certificates for all of the X509 Certification +# File containing X509 certificates for all of the Certification # Authorities the client will recognize. Takes precedence over # \fBtls_CApath\fR. # .sp diff --git a/postfix/proto/postconf.proto b/postfix/proto/postconf.proto index 36aab443e..34ea749d7 100644 --- a/postfix/proto/postconf.proto +++ b/postfix/proto/postconf.proto @@ -1194,7 +1194,8 @@ by an RFC 3463 enhanced status code.
    $rbl_domain
    -
    The RBL domain where $rbl_what is denylisted.
    +
    The RBL domain (without any =address-filter) where +$rbl_what is denylisted.
    $rbl_reason
    @@ -3588,7 +3589,10 @@ The default time unit is s (seconds).

    Optional lookup tables with RBL or RHSBL response templates. The table search key is the reject_rbl_* or reject_rhsbl_* argument, -including any optional "=address-pattern" filter.

    +including any optional "=address-filter". With Postfix 3.10 +and later, if the result is "not found" and the search key has the +form domain=address-filter, then rbl_reply_maps will also +search with the domain.

    By default, Postfix uses the template as specified with the default_rbl_reply configuration @@ -3612,20 +3616,26 @@ syntax. # variables. secret.zen.dq.spamhaus.net=127.0.0.[2..11] 554 $rbl_class $rbl_what blocked using ZEN - see https://www.spamhaus.org/query/ip/$client_address for details +

+ +
+    # Postfix ≥ 3.10: if a search key domain=address-filter
+    # is not found, then rbl_reply_maps will also search with the
+    # domain.
     secret.zen.dq.spamhaus.net
         554 $rbl_class $rbl_what blocked using ZEN - see https://www.spamhaus.org/query/ip/$client_address for details 
 

NOTE: This feature differs from postscreen_dnsbl_reply_map where -the table search key is a domain name (no "=address" filter, -no "*weight" factor) and where the lookup result should be -a domain name (no free text, no $name variables). +the table search key is only a domain name (no "=address-filter", +no "*weight" factor) and where the lookup result +should be only a domain name (no free text, no $name variables).

This feature is available in Postfix 2.0 and later. -The "=address-pattern" filter is available in Postfix 2.8 and later. +The "=address-filter" feature is available in Postfix 2.8 and later.

%PARAM receive_override_options @@ -15451,7 +15461,7 @@ the file is read).

NOTE: This feature differs from the Postfix SMTP server's rbl_reply_maps feature, where 1) the table search key includes the -optional "=address" filter, and where 2) the lookup result +optional "=address-filter", and where 2) the lookup result contains free text with $name variables.

This feature is available in Postfix 2.8.

diff --git a/postfix/proto/stop b/postfix/proto/stop index fb1da4859..88bf64609 100644 --- a/postfix/proto/stop +++ b/postfix/proto/stop @@ -1606,3 +1606,7 @@ GTEST javascript SMFI RHSBL +Ajamian +groff +MariaDB +Fuhrer diff --git a/postfix/proto/stop.spell-cc b/postfix/proto/stop.spell-cc index a554e48b3..1314e0c0e 100644 --- a/postfix/proto/stop.spell-cc +++ b/postfix/proto/stop.spell-cc @@ -1840,3 +1840,4 @@ fhHoqvx foqvx ILP xxfi +optionsv diff --git a/postfix/src/global/dict_mysql.c b/postfix/src/global/dict_mysql.c index 133cc0d44..7d113d299 100644 --- a/postfix/src/global/dict_mysql.c +++ b/postfix/src/global/dict_mysql.c @@ -119,6 +119,15 @@ #define DICT_MYSQL_SSL_VERIFY_SERVER_CERT MYSQL_OPT_SSL_VERIFY_SERVER_CERT #elif MYSQL_VERSION_ID >= 80000 #define DICT_MYSQL_SSL_VERIFY_SERVER_CERT MYSQL_OPT_SSL_MODE +#endif + + /* + * MariaDB Connector/C 3.0.0 lists mysql_options() as deprecated and + * recommends using mysql_optionsv() instead. Option names and semantics + * have not changed. + */ +#if defined(MARIADB_PACKAGE_VERSION_ID) && MARIADB_PACKAGE_VERSION_ID >= 30000 +#define mysql_options mysql_optionsv #endif /* need some structs to help organize things */ @@ -598,12 +607,27 @@ static void plmysql_connect_single(DICT_MYSQL *dict_mysql, HOST *host) mysql_options(host->db, MYSQL_READ_DEFAULT_FILE, dict_mysql->option_file); if (dict_mysql->option_group && dict_mysql->option_group[0]) mysql_options(host->db, MYSQL_READ_DEFAULT_GROUP, dict_mysql->option_group); +#if MYSQL_VERSION_ID >= 80035 + /* Preferred API. */ + if (dict_mysql->tls_key_file) + mysql_options(host->db, MYSQL_OPT_SSL_KEY, dict_mysql->tls_key_file); + if (dict_mysql->tls_cert_file) + mysql_options(host->db, MYSQL_OPT_SSL_CERT, dict_mysql->tls_cert_file); + if (dict_mysql->tls_CAfile) + mysql_options(host->db, MYSQL_OPT_SSL_CA, dict_mysql->tls_CAfile); + if (dict_mysql->tls_CApath) + mysql_options(host->db, MYSQL_OPT_SSL_CAPATH, dict_mysql->tls_CApath); + if (dict_mysql->tls_ciphers) + mysql_options(host->db, MYSQL_OPT_SSL_CIPHER, dict_mysql->tls_ciphers); +#else + /* Deprecated API. */ if (dict_mysql->tls_key_file || dict_mysql->tls_cert_file || dict_mysql->tls_CAfile || dict_mysql->tls_CApath || dict_mysql->tls_ciphers) mysql_ssl_set(host->db, dict_mysql->tls_key_file, dict_mysql->tls_cert_file, dict_mysql->tls_CAfile, dict_mysql->tls_CApath, dict_mysql->tls_ciphers); +#endif #if defined(DICT_MYSQL_SSL_VERIFY_SERVER_CERT) if (dict_mysql->tls_verify_cert != -1) mysql_options(host->db, DICT_MYSQL_SSL_VERIFY_SERVER_CERT, diff --git a/postfix/src/global/mail_version.h b/postfix/src/global/mail_version.h index d23ed6640..69627fd39 100644 --- a/postfix/src/global/mail_version.h +++ b/postfix/src/global/mail_version.h @@ -20,7 +20,7 @@ * Patches change both the patchlevel and the release date. Snapshots have no * patchlevel; they change the release date only. */ -#define MAIL_RELEASE_DATE "20240622" +#define MAIL_RELEASE_DATE "20240722" #define MAIL_VERSION_NUMBER "3.10" #ifdef SNAPSHOT diff --git a/postfix/src/smtpd/smtpd_check.c b/postfix/src/smtpd/smtpd_check.c index 6aeda7475..607c6be7c 100644 --- a/postfix/src/smtpd/smtpd_check.c +++ b/postfix/src/smtpd/smtpd_check.c @@ -3570,15 +3570,21 @@ static int rbl_reject_reply(SMTPD_STATE *state, const SMTPD_RBL_STATE *rbl, /* * Use the server-specific reply template or use the default one. */ + rbl_exp.domain = mystrdup(rbl_domain); + (void) split_at(rbl_exp.domain, '='); if (*var_rbl_reply_maps) { template = maps_find(rbl_reply_maps, rbl_domain, DICT_FLAG_NONE); - if (rbl_reply_maps->error) + if (template == 0 && rbl_reply_maps->error == 0 + && strcmp(rbl_domain, rbl_exp.domain) != 0) + template = maps_find(rbl_reply_maps, rbl_exp.domain, + DICT_FLAG_NONE); + if (template == 0 && rbl_reply_maps->error != 0) { + myfree(rbl_exp.domain); reject_server_error(state); + } } why = vstring_alloc(100); rbl_exp.state = state; - rbl_exp.domain = mystrdup(rbl_domain); - (void) split_at(rbl_exp.domain, '='); rbl_exp.what = what; rbl_exp.class = reply_class; rbl_exp.txt = (rbl->txt == 0 ? "" : rbl->txt); diff --git a/postfix/src/smtpd/smtpd_check_access b/postfix/src/smtpd/smtpd_check_access index 788276adf..232e67d79 100644 --- a/postfix/src/smtpd/smtpd_check_access +++ b/postfix/src/smtpd/smtpd_check_access @@ -41,6 +41,10 @@ blackholes.mail-abuse.org $rbl_code client=$client rbl_code=$rbl_code rbl_domain=$rbl_domain rbl_txt=$rbl_txt rbl_what=$rbl_what rbl_class=$rbl_class +dnsbltest.porcupine.org=127.0.0.3 $rbl_code service unavailable; $rbl_class [$rbl_what] blocked using $rbl_domain=127.0.0.3 ${rbl_reason?; $rbl_reason} + +dnsbltest.porcupine.org $rbl_code SERVICE UNAVAILABLE; $rbl_class [$rbl_what] blocked using $rbl_domain${rbl_reason?; $rbl_reason} + rhsbl.porcupine.org $rbl_code client=$client client_address=$client_address client_name=$client_name helo_name=$helo_name diff --git a/postfix/src/smtpd/smtpd_check_backup.ref b/postfix/src/smtpd/smtpd_check_backup.ref index c15be35f3..4beafd3e2 100644 --- a/postfix/src/smtpd/smtpd_check_backup.ref +++ b/postfix/src/smtpd/smtpd_check_backup.ref @@ -17,7 +17,7 @@ OK >>> recipient_restrictions permit_mx_backup,reject OK >>> rcpt wietse@wzv.porcupine.org -./smtpd_check: warning: support for restriction "permit_mx_backup" will be removed from Postfix; instead, use "relay_domains" +./smtpd_check: warning: support for restriction "permit_mx_backup" will be removed from Postfix; instead, specify "relay_domains" OK >>> rcpt wietse@backup.porcupine.org OK diff --git a/postfix/src/smtpd/smtpd_deprecated.ref b/postfix/src/smtpd/smtpd_deprecated.ref index d64f1b3d5..2832460f7 100644 --- a/postfix/src/smtpd/smtpd_deprecated.ref +++ b/postfix/src/smtpd/smtpd_deprecated.ref @@ -10,7 +10,7 @@ OK >>> mail sname@sdomain.example OK >>> rcpt rname@rdomain.example -./smtpd_check: warning: restriction permit_naked_ip_address has been removed in Postfix 3.9; use permit_mynetworks or permit_sasl_authenticated instead +./smtpd_check: warning: support for restriction "permit_naked_ip_address" has been removed in Postfix 3.9; instead, specify "permit_mynetworks" or "permit_sasl_authenticated" ./smtpd_check: : reject: RCPT from foo[127.0.0.2]: 451 4.3.5 Server configuration error; from= to= proto=SMTP helo=<127.0.0.2> 451 4.3.5 Server configuration error >>> # @@ -27,7 +27,7 @@ OK >>> mail sname@sdomain.example OK >>> rcpt rname@rdomain.example -./smtpd_check: warning: support for restriction "check_relay_domains" has been removed in Postfix 3.9; use "reject_unauth_destination" instead +./smtpd_check: warning: support for restriction "check_relay_domains" has been removed in Postfix 3.9; instead, specify "reject_unauth_destination" ./smtpd_check: : reject: RCPT from foo[127.0.0.2]: 451 4.3.5 Server configuration error; from= to= proto=SMTP helo=<127.0.0.2> 451 4.3.5 Server configuration error >>> # diff --git a/postfix/src/smtpd/smtpd_exp.in b/postfix/src/smtpd/smtpd_exp.in index 8370404b4..4ddf45b87 100644 --- a/postfix/src/smtpd/smtpd_exp.in +++ b/postfix/src/smtpd/smtpd_exp.in @@ -29,6 +29,9 @@ client foo 127.0.0.2 rcpt rname@rdomain client foo 127.0.0.1 rcpt rname@rdomain +recipient_restrictions reject_rbl_client,dnsbltest.porcupine.org=127.0.0.3 +client foo 127.0.0.3 +rcpt rname@rdomain # # RHSBL sender domain name # @@ -60,3 +63,15 @@ recipient_restrictions reject_rhsbl_helo,rhsbl.porcupine.org helo example.tld mail sname@sdomain rcpt rname@rdomain +# +# rbl_reply_maps lookup error +# +smtpd_delay_reject 0 +mynetworks 127.0.0.0/8,168.100.3.0/28 +relay_domains porcupine.org +rbl_reply_maps fail:1_rbl_reply_maps +helo foobar +mail sname@sdomain +recipient_restrictions reject_rbl_client,dnsbltest.porcupine.org +client foo 127.0.0.2 +rcpt rname@rdomain diff --git a/postfix/src/smtpd/smtpd_exp.ref b/postfix/src/smtpd/smtpd_exp.ref index 00848a538..38d9daf9a 100644 --- a/postfix/src/smtpd/smtpd_exp.ref +++ b/postfix/src/smtpd/smtpd_exp.ref @@ -25,13 +25,13 @@ OK >>> client spike.porcupine.org 168.100.3.2 OK >>> rcpt rname@rdomain -./smtpd_check: warning: support for restriction "reject_maps_rbl" has been removed in Postfix 3.9; use "reject_rbl_client domain-name" instead +./smtpd_check: warning: support for restriction "reject_maps_rbl" has been removed in Postfix 3.9; instead, specify "reject_rbl_client domain-name" ./smtpd_check: : reject: RCPT from spike.porcupine.org[168.100.3.2]: 451 4.3.5 Server configuration error; from= to= proto=SMTP helo= 451 4.3.5 Server configuration error >>> client foo 127.0.0.2 OK >>> rcpt rname@rdomain -./smtpd_check: warning: support for restriction "reject_maps_rbl" has been removed in Postfix 3.9; use "reject_rbl_client domain-name" instead +./smtpd_check: warning: support for restriction "reject_maps_rbl" has been removed in Postfix 3.9; instead, specify "reject_rbl_client domain-name" ./smtpd_check: : reject: RCPT from foo[127.0.0.2]: 451 4.3.5 Server configuration error; from= to= proto=SMTP helo= 451 4.3.5 Server configuration error >>> # @@ -44,19 +44,26 @@ OK >>> client foo 127.0.0.2 OK >>> rcpt rname@rdomain -./smtpd_check: : reject: RCPT from foo[127.0.0.2]: 554 5.7.1 Service unavailable; Client host [127.0.0.2] blocked using dnsbltest.porcupine.org; DNS blocklist test; from= to= proto=SMTP helo= -554 5.7.1 Service unavailable; Client host [127.0.0.2] blocked using dnsbltest.porcupine.org; DNS blocklist test +./smtpd_check: : reject: RCPT from foo[127.0.0.2]: 554 5.7.1 SERVICE UNAVAILABLE; Client host [127.0.0.2] blocked using dnsbltest.porcupine.org; DNS blocklist test; from= to= proto=SMTP helo= +554 5.7.1 SERVICE UNAVAILABLE; Client host [127.0.0.2] blocked using dnsbltest.porcupine.org; DNS blocklist test >>> recipient_restrictions reject_rbl_client,dnsbltest.porcupine.org=127.0.0.2 OK >>> client foo 127.0.0.2 OK >>> rcpt rname@rdomain -./smtpd_check: : reject: RCPT from foo[127.0.0.2]: 554 5.7.1 Service unavailable; Client host [127.0.0.2] blocked using dnsbltest.porcupine.org; DNS blocklist test; from= to= proto=SMTP helo= -554 5.7.1 Service unavailable; Client host [127.0.0.2] blocked using dnsbltest.porcupine.org; DNS blocklist test +./smtpd_check: : reject: RCPT from foo[127.0.0.2]: 554 5.7.1 SERVICE UNAVAILABLE; Client host [127.0.0.2] blocked using dnsbltest.porcupine.org; DNS blocklist test; from= to= proto=SMTP helo= +554 5.7.1 SERVICE UNAVAILABLE; Client host [127.0.0.2] blocked using dnsbltest.porcupine.org; DNS blocklist test >>> client foo 127.0.0.1 OK >>> rcpt rname@rdomain OK +>>> recipient_restrictions reject_rbl_client,dnsbltest.porcupine.org=127.0.0.3 +OK +>>> client foo 127.0.0.3 +OK +>>> rcpt rname@rdomain +./smtpd_check: : reject: RCPT from foo[127.0.0.3]: 554 5.7.1 service unavailable; Client host [127.0.0.3] blocked using dnsbltest.porcupine.org=127.0.0.3 ; DNS blocklist test; from= to= proto=SMTP helo= +554 5.7.1 service unavailable; Client host [127.0.0.3] blocked using dnsbltest.porcupine.org=127.0.0.3 ; DNS blocklist test >>> # >>> # RHSBL sender domain name >>> # @@ -111,3 +118,26 @@ OK >>> rcpt rname@rdomain ./smtpd_check: : reject: RCPT from spike.porcupine.org[168.100.3.2]: 554 5.7.1 client=spike.porcupine.org[168.100.3.2] client_address=168.100.3.2 client_name=spike.porcupine.org helo_name=example.tld sender=sname@sdomain sender_name=sname sender_domain=sdomain recipient=rname@rdomain recipient_name=rname recipient_domain=rdomain rbl_code=554 rbl_domain=rhsbl.porcupine.org rbl_txt=RHSBL test rbl_what=example.tld rbl_class=Helo command; from= to= proto=SMTP helo= 554 5.7.1 client=spike.porcupine.org[168.100.3.2] client_address=168.100.3.2 client_name=spike.porcupine.org helo_name=example.tld sender=sname@sdomain sender_name=sname sender_domain=sdomain recipient=rname@rdomain recipient_name=rname recipient_domain=rdomain rbl_code=554 rbl_domain=rhsbl.porcupine.org rbl_txt=RHSBL test rbl_what=example.tld rbl_class=Helo command +>>> # +>>> # rbl_reply_maps lookup error +>>> # +>>> smtpd_delay_reject 0 +OK +>>> mynetworks 127.0.0.0/8,168.100.3.0/28 +OK +>>> relay_domains porcupine.org +OK +>>> rbl_reply_maps fail:1_rbl_reply_maps +OK +>>> helo foobar +OK +>>> mail sname@sdomain +OK +>>> recipient_restrictions reject_rbl_client,dnsbltest.porcupine.org +OK +>>> client foo 127.0.0.2 +OK +>>> rcpt rname@rdomain +./smtpd_check: warning: fail:1_rbl_reply_maps lookup error for "dnsbltest.porcupine.org" +./smtpd_check: : reject: RCPT from foo[127.0.0.2]: 451 4.3.5 Server configuration error; from= to= proto=SMTP helo= +451 4.3.5 Server configuration error