Set mainlog_name and rejectlog_name unconditionally.
[exim.git] / doc / doc-docbook / spec.xfpt
index 2938de5761645f7fc7fcf229e43d9f98683405c2..5c42afc93f6163ba6cd4f02410658bdcf4ed0eba 100644 (file)
 .macro index
 .echo "** Don't use .index; use .cindex or .oindex or .vindex"
 .endmacro
 .macro index
 .echo "** Don't use .index; use .cindex or .oindex or .vindex"
 .endmacro
+
+
+. use this for a concept-index entry for a header line
+.macro chindex
+.cindex "&'$1'& header line"
+.cindex "header lines" $1
+.endmacro
 . ////////////////////////////////////////////////////////////////////////////
 
 
 . ////////////////////////////////////////////////////////////////////////////
 
 
 . This chunk of literal XML implements index entries of the form "x, see y" and
 . "x, see also y". However, the DocBook DTD doesn't allow <indexterm> entries
 . at the top level, so we have to put the .chapter directive first.
 . This chunk of literal XML implements index entries of the form "x, see y" and
 . "x, see also y". However, the DocBook DTD doesn't allow <indexterm> entries
 . at the top level, so we have to put the .chapter directive first.
+
+. These do not turn up in the HTML output, unfortunately.  The PDF does get them.
 . /////////////////////////////////////////////////////////////////////////////
 
 .chapter "Introduction" "CHID1"
 . /////////////////////////////////////////////////////////////////////////////
 
 .chapter "Introduction" "CHID1"
   <primary>zero, binary</primary>
   <see><emphasis>binary zero</emphasis></see>
 </indexterm>
   <primary>zero, binary</primary>
   <see><emphasis>binary zero</emphasis></see>
 </indexterm>
+<indexterm role="concept">
+  <primary>headers</primary>
+  <see><emphasis>header lines</emphasis></see>
+</indexterm>
 
 .literal off
 
 
 .literal off
 
@@ -2683,10 +2696,8 @@ Exim through the local interface (see the &%-bm%& and &%-f%& options below).
 See the &%untrusted_set_sender%& option for a way of permitting non-trusted
 users to set envelope senders.
 
 See the &%untrusted_set_sender%& option for a way of permitting non-trusted
 users to set envelope senders.
 
-.cindex "&'From:'& header line"
-.cindex "&'Sender:'& header line"
-.cindex "header lines" "From:"
-.cindex "header lines" "Sender:"
+.chindex From:
+.chindex Sender:
 For a trusted user, there is never any check on the contents of the &'From:'&
 header line, and a &'Sender:'& line is never added. Furthermore, any existing
 &'Sender:'& line in incoming local (non-TCP/IP) messages is not removed.
 For a trusted user, there is never any check on the contents of the &'From:'&
 header line, and a &'Sender:'& line is never added. Furthermore, any existing
 &'Sender:'& line in incoming local (non-TCP/IP) messages is not removed.
@@ -3935,6 +3946,15 @@ This option is not intended for use by external callers. It is used internally
 by Exim in conjunction with the &%-MC%& option. It signifies that the server to
 which Exim is connected supports pipelining.
 
 by Exim in conjunction with the &%-MC%& option. It signifies that the server to
 which Exim is connected supports pipelining.
 
+.new
+.vitem &%-MCp%&
+.oindex "&%-MCp%&"
+This option is not intended for use by external callers. It is used internally
+by Exim in conjunction with the &%-MC%& option. It signifies that the connection
+t a remote server is via a SOCKS proxy, using addresses and ports given by
+the following four arguments.
+.wen
+
 .vitem &%-MCQ%&&~<&'process&~id'&>&~<&'pipe&~fd'&>
 .oindex "&%-MCQ%&"
 This option is not intended for use by external callers. It is used internally
 .vitem &%-MCQ%&&~<&'process&~id'&>&~<&'pipe&~fd'&>
 .oindex "&%-MCQ%&"
 This option is not intended for use by external callers. It is used internally
@@ -4784,9 +4804,9 @@ recognized when Exim is run normally. It allows for the setting up of explicit
 .vitem &%-t%&
 .oindex "&%-t%&"
 .cindex "recipient" "extracting from header lines"
 .vitem &%-t%&
 .oindex "&%-t%&"
 .cindex "recipient" "extracting from header lines"
-.cindex "&'Bcc:'& header line"
-.cindex "&'Cc:'& header line"
-.cindex "&'To:'& header line"
+.chindex Bcc:
+.chindex Cc:
+.chindex To:
 When Exim is receiving a locally-generated, non-SMTP message on its standard
 input, the &%-t%& option causes the recipients of the message to be obtained
 from the &'To:'&, &'Cc:'&, and &'Bcc:'& header lines in the message instead of
 When Exim is receiving a locally-generated, non-SMTP message on its standard
 input, the &%-t%& option causes the recipients of the message to be obtained
 from the &'To:'&, &'Cc:'&, and &'Bcc:'& header lines in the message instead of
@@ -5478,8 +5498,8 @@ local_interfaces = 127.0.0.1 : ::::1
 contains two IP addresses, the IPv4 address 127.0.0.1 and the IPv6 address ::1.
 
 &*Note*&: Although leading and trailing white space is ignored in individual
 contains two IP addresses, the IPv4 address 127.0.0.1 and the IPv6 address ::1.
 
 &*Note*&: Although leading and trailing white space is ignored in individual
-list items, it is not ignored when parsing the list. The space after the first
-colon in the example above is necessary. If it were not there, the list would
+list items, it is not ignored when parsing the list. The spaces around the first
+colon in the example above are necessary. If they were not there, the list would
 be interpreted as the two items 127.0.0.1:: and 1.
 
 .section "Changing list separators" "SECTlistsepchange"
 be interpreted as the two items 127.0.0.1:: and 1.
 
 .section "Changing list separators" "SECTlistsepchange"
@@ -6413,9 +6433,9 @@ smarthost_smtp:
   # request with your smarthost provider to get things fixed:
   hosts_require_tls = *
   tls_verify_hosts = *
   # request with your smarthost provider to get things fixed:
   hosts_require_tls = *
   tls_verify_hosts = *
-  # As long as tls_verify_hosts is enabled, this won't matter, but if you
-  # have to comment it out then this will at least log whether you succeed
-  # or not:
+  # As long as tls_verify_hosts is enabled, this this will have no effect,
+  # but if you have to comment it out then this will at least log whether
+  # you succeed or not:
   tls_try_verify_hosts = *
   #
   # The SNI name should match the name which we'll expect to verify;
   tls_try_verify_hosts = *
   #
   # The SNI name should match the name which we'll expect to verify;
@@ -8777,6 +8797,13 @@ other statements in the same ACL.
 .cindex "tainted data" "de-tainting"
 The value will be untainted.
 
 .cindex "tainted data" "de-tainting"
 The value will be untainted.
 
+.new
+&*Note*&: If the data result of the lookup (as opposed to the key)
+is empty, then this empty value is stored in &$domain_data$&.
+The option to return the key for the lookup, as the value,
+may be what is wanted.
+.wen
+
 
 .next
 Any of the single-key lookup type names may be preceded by
 
 .next
 Any of the single-key lookup type names may be preceded by
@@ -9718,7 +9745,7 @@ If the ACL returns defer the result is a forced-fail.  Otherwise the expansion f
 
 .vitem "&*${authresults{*&<&'authserv-id'&>&*}}*&"
 .cindex authentication "results header"
 
 .vitem "&*${authresults{*&<&'authserv-id'&>&*}}*&"
 .cindex authentication "results header"
-.cindex headers "authentication-results:"
+.chindex Authentication-Results:
 .cindex authentication "expansion item"
 This item returns a string suitable for insertion as an
 &'Authentication-Results:'&
 .cindex authentication "expansion item"
 This item returns a string suitable for insertion as an
 &'Authentication-Results:'&
@@ -11156,6 +11183,10 @@ If the optional type is given it must be one of "a", "d", "h" or "l"
 and selects address-, domain-, host- or localpart- lists to search among respectively.
 Otherwise all types are searched in an undefined order and the first
 matching list is returned.
 and selects address-, domain-, host- or localpart- lists to search among respectively.
 Otherwise all types are searched in an undefined order and the first
 matching list is returned.
+.new
+&*Note*&: Neither string-expansion of lists referenced by named-list syntax elements,
+nor expansion of lookup elements, is done by the &%listnamed%& operator.
+.wen
 
 
 .vitem &*${local_part:*&<&'string'&>&*}*&
 
 
 .vitem &*${local_part:*&<&'string'&>&*}*&
@@ -11721,6 +11752,7 @@ users' filter files may be locked out by the system administrator.
 .new
 &*Note:*& Testing a path using this condition is not a sufficient way of
 de-tainting it.
 .new
 &*Note:*& Testing a path using this condition is not a sufficient way of
 de-tainting it.
+Consider using a dsearch lookup.
 .wen
 
 .vitem &*first_delivery*&
 .wen
 
 .vitem &*first_delivery*&
@@ -12326,7 +12358,7 @@ to the relevant file.
 When, as a result of aliasing or forwarding, a message is directed to a pipe,
 this variable holds the pipe command when the transport is running.
 
 When, as a result of aliasing or forwarding, a message is directed to a pipe,
 this variable holds the pipe command when the transport is running.
 
-.vitem "&$auth1$& &-- &$auth3$&"
+.vitem "&$auth1$& &-- &$auth4$&"
 .vindex "&$auth1$&, &$auth2$&, etc"
 These variables are used in SMTP authenticators (see chapters
 &<<CHAPplaintext>>&&--&<<CHAPtlsauth>>&). Elsewhere, they are empty.
 .vindex "&$auth1$&, &$auth2$&, etc"
 These variables are used in SMTP authenticators (see chapters
 &<<CHAPplaintext>>&&--&<<CHAPtlsauth>>&). Elsewhere, they are empty.
@@ -14537,9 +14569,11 @@ listed in more than one group.
 
 .section "Miscellaneous" "SECID96"
 .table2
 
 .section "Miscellaneous" "SECID96"
 .table2
+.row &%add_environment%&             "environment variables"
 .row &%bi_command%&                  "to run for &%-bi%& command line option"
 .row &%debug_store%&                 "do extra internal checks"
 .row &%disable_ipv6%&                "do no IPv6 processing"
 .row &%bi_command%&                  "to run for &%-bi%& command line option"
 .row &%debug_store%&                 "do extra internal checks"
 .row &%disable_ipv6%&                "do no IPv6 processing"
+.row &%keep_environment%&            "environment variables"
 .row &%keep_malformed%&              "for broken files &-- should not happen"
 .row &%localhost_number%&            "for unique message ids in clusters"
 .row &%message_body_newlines%&       "retain newlines in &$message_body$&"
 .row &%keep_malformed%&              "for broken files &-- should not happen"
 .row &%localhost_number%&            "for unique message ids in clusters"
 .row &%message_body_newlines%&       "retain newlines in &$message_body$&"
@@ -17556,7 +17590,7 @@ live with.
 . searchable.  NM changed this occurrence for bug 1197 to no longer allow
 . the option name to split.
 
 . searchable.  NM changed this occurrence for bug 1197 to no longer allow
 . the option name to split.
 
-.option "smtp_accept_max_per_connection" main integer 1000 &&&
+.option "smtp_accept_max_per_connection" main integer&!! 1000 &&&
          smtp_accept_max_per_connection
 .cindex "SMTP" "limiting incoming message count"
 .cindex "limit" "messages per SMTP connection"
          smtp_accept_max_per_connection
 .cindex "SMTP" "limiting incoming message count"
 .cindex "limit" "messages per SMTP connection"
@@ -17566,6 +17600,11 @@ results in the transfer of a message. After the limit is reached, a 421
 response is given to subsequent MAIL commands. This limit is a safety
 precaution against a client that goes mad (incidents of this type have been
 seen).
 response is given to subsequent MAIL commands. This limit is a safety
 precaution against a client that goes mad (incidents of this type have been
 seen).
+.new
+The option is expanded after the HELO or EHLO is received
+and may depend on values available at that time.
+An empty or zero value after expansion removes the limit.
+.wen
 
 
 .option smtp_accept_max_per_host main string&!! unset
 
 
 .option smtp_accept_max_per_host main string&!! unset
@@ -18997,7 +19036,7 @@ transport option of the same name.
 .cindex "security" "MX lookup"
 .cindex "DNS" "DNSSEC"
 DNS lookups for domains matching &%dnssec_request_domains%& will be done with
 .cindex "security" "MX lookup"
 .cindex "DNS" "DNSSEC"
 DNS lookups for domains matching &%dnssec_request_domains%& will be done with
-the dnssec request bit set.
+the DNSSEC request bit set.
 This applies to all of the SRV, MX, AAAA, A lookup sequence.
 
 .option dnssec_require_domains routers "domain list&!!" unset
 This applies to all of the SRV, MX, AAAA, A lookup sequence.
 
 .option dnssec_require_domains routers "domain list&!!" unset
@@ -19006,7 +19045,7 @@ This applies to all of the SRV, MX, AAAA, A lookup sequence.
 .cindex "security" "MX lookup"
 .cindex "DNS" "DNSSEC"
 DNS lookups for domains matching &%dnssec_require_domains%& will be done with
 .cindex "security" "MX lookup"
 .cindex "DNS" "DNSSEC"
 DNS lookups for domains matching &%dnssec_require_domains%& will be done with
-the dnssec request bit set.  Any returns not having the Authenticated Data bit
+the DNSSEC request bit set.  Any returns not having the Authenticated Data bit
 (AD bit) set will be ignored and logged as a host-lookup failure.
 This applies to all of the SRV, MX, AAAA, A lookup sequence.
 
 (AD bit) set will be ignored and logged as a host-lookup failure.
 This applies to all of the SRV, MX, AAAA, A lookup sequence.
 
@@ -22583,7 +22622,7 @@ This defaults to the incoming sender address, but can be changed by setting
 
 
 .option return_path_add transports boolean false
 
 
 .option return_path_add transports boolean false
-.cindex "&'Return-path:'& header line"
+.chindex Return-path:
 If this option is true, a &'Return-path:'& header is added to the message.
 Although the return path is normally available in the prefix line of BSD
 mailboxes, this is commonly not displayed by MUAs, and so the user does not
 If this option is true, a &'Return-path:'& header is added to the message.
 Although the return path is normally available in the prefix line of BSD
 mailboxes, this is commonly not displayed by MUAs, and so the user does not
@@ -25225,7 +25264,7 @@ details.
 .cindex "security" "MX lookup"
 .cindex "DNS" "DNSSEC"
 DNS lookups for domains matching &%dnssec_request_domains%& will be done with
 .cindex "security" "MX lookup"
 .cindex "DNS" "DNSSEC"
 DNS lookups for domains matching &%dnssec_request_domains%& will be done with
-the dnssec request bit set. Setting this transport option is only useful if the
+the DNSSEC request bit set. Setting this transport option is only useful if the
 transport overrides or sets the host names. See the &%dnssec_request_domains%&
 router option.
 
 transport overrides or sets the host names. See the &%dnssec_request_domains%&
 router option.
 
@@ -25237,7 +25276,7 @@ router option.
 .cindex "security" "MX lookup"
 .cindex "DNS" "DNSSEC"
 DNS lookups for domains matching &%dnssec_require_domains%& will be done with
 .cindex "security" "MX lookup"
 .cindex "DNS" "DNSSEC"
 DNS lookups for domains matching &%dnssec_require_domains%& will be done with
-the dnssec request bit set.  Setting this transport option is only
+the DNSSEC request bit set.  Setting this transport option is only
 useful if the transport overrides or sets the host names. See the
 &%dnssec_require_domains%& router option.
 
 useful if the transport overrides or sets the host names. See the
 &%dnssec_require_domains%& router option.
 
@@ -25518,9 +25557,9 @@ TLS session for any host that matches this list.
 .cindex DANE "requiring for certain servers"
 If built with DANE support, Exim  will require that a DNSSEC-validated
 TLSA record is present for any host matching the list,
 .cindex DANE "requiring for certain servers"
 If built with DANE support, Exim  will require that a DNSSEC-validated
 TLSA record is present for any host matching the list,
-and that a DANE-verified TLS connection is made. See
-the &%dnssec_request_domains%& router and transport options.
+and that a DANE-verified TLS connection is made.
 There will be no fallback to in-clear communication.
 There will be no fallback to in-clear communication.
+See the &%dnssec_request_domains%& router and transport options.
 See section &<<SECDANE>>&.
 
 .option hosts_require_ocsp smtp "host list&!!" unset
 See section &<<SECDANE>>&.
 
 .option hosts_require_ocsp smtp "host list&!!" unset
@@ -25559,11 +25598,14 @@ BDAT will not be used in conjunction with a transport filter.
 .option hosts_try_dane smtp "host list&!!" *
 .cindex DANE "transport options"
 .cindex DANE "attempting for certain servers"
 .option hosts_try_dane smtp "host list&!!" *
 .cindex DANE "transport options"
 .cindex DANE "attempting for certain servers"
-If built with DANE support, Exim  will require that a DNSSEC-validated
-TLSA record is present for any host matching the list,
-and that a DANE-verified TLS connection is made. See
-the &%dnssec_request_domains%& router and transport options.
-There will be no fallback to in-clear communication.
+.new
+If built with DANE support, Exim  will look up a
+TLSA record for any host matching the list,
+If one is found and that lookup was DNSSEC-validated,
+then Exim requires that a DANE-verified TLS connection is made for that host;
+there will be no fallback to in-clear communication.
+.wen
+See the &%dnssec_request_domains%& router and transport options.
 See section &<<SECDANE>>&.
 
 .option hosts_try_fastopen smtp "host list&!!" *
 See section &<<SECDANE>>&.
 
 .option hosts_try_fastopen smtp "host list&!!" *
@@ -25721,7 +25763,7 @@ If this option is set to &"smtps"&, the default value for the &%port%& option
 changes to &"smtps"&, and the transport initiates TLS immediately after
 connecting, as an outbound SSL-on-connect, instead of using STARTTLS to upgrade.
 The Internet standards bodies used to strongly discourage use of this mode,
 changes to &"smtps"&, and the transport initiates TLS immediately after
 connecting, as an outbound SSL-on-connect, instead of using STARTTLS to upgrade.
 The Internet standards bodies used to strongly discourage use of this mode,
-but as of RFC 8314 it is perferred over STARTTLS for message submission
+but as of RFC 8314 it is preferred over STARTTLS for message submission
 (as distinct from MTA-MTA communication).
 
 
 (as distinct from MTA-MTA communication).
 
 
@@ -27824,7 +27866,14 @@ fixed_plain:
   client_send = ^username^mysecret
 .endd
 The lack of colons means that the entire text is sent with the AUTH
   client_send = ^username^mysecret
 .endd
 The lack of colons means that the entire text is sent with the AUTH
-command, with the circumflex characters converted to NULs. A similar example
+command, with the circumflex characters converted to NULs.
+.new
+Note that due to the ambiguity of parsing three consectutive circumflex characters
+there is no way to provide a password having a leading circumflex.
+.wen
+
+
+A similar example
 that uses the LOGIN mechanism is:
 .code
 fixed_login:
 that uses the LOGIN mechanism is:
 .code
 fixed_login:
@@ -28098,7 +28147,7 @@ connection, a client certificate has been verified, the &"valid-client-cert"&
 option is passed. When authentication succeeds, the identity of the user
 who authenticated is placed in &$auth1$&.
 
 option is passed. When authentication succeeds, the identity of the user
 who authenticated is placed in &$auth1$&.
 
-The Dovecot configuration to match the above wil look
+The Dovecot configuration to match the above will look
 something like:
 .code
 conf.d/10-master.conf :-
 something like:
 .code
 conf.d/10-master.conf :-
@@ -28148,6 +28197,12 @@ realease for the SCRAM-SHA-256 method.
 The macro _HAVE_AUTH_GSASL_SCRAM_SHA_256 will be defined
 when this happens.
 
 The macro _HAVE_AUTH_GSASL_SCRAM_SHA_256 will be defined
 when this happens.
 
+.new
+To see the list of mechanisms supported by the library run Exim with "auth" debug
+enabled and look for a line containing "GNU SASL supports".
+Note however that some may not have been tested from Exim.
+.wen
+
 
 .option client_authz gsasl string&!! unset
 This option can be used to supply an &'authorization id'&
 
 .option client_authz gsasl string&!! unset
 This option can be used to supply an &'authorization id'&
@@ -28167,21 +28222,44 @@ the password to be used, in clear.
 This option is exapanded before use, and should result in
 the account name to be used.
 
 This option is exapanded before use, and should result in
 the account name to be used.
 
+
 .option client_spassword gsasl string&!! unset
 .option client_spassword gsasl string&!! unset
+.new
+This option is only supported for library versions 1.9.1 and greater.
+The macro _HAVE_AUTH_GSASL_SCRAM_S_KEY will be defined when this is so.
+.wen
+
 If a SCRAM mechanism is being used and this option is set
 If a SCRAM mechanism is being used and this option is set
+and correctly sized
 it is used in preference to &%client_password%&.
 The value after expansion should be
 a 40 (for SHA-1) or 64 (for SHA-256) character string
 with the PBKDF2-prepared password, hex-encoded.
 it is used in preference to &%client_password%&.
 The value after expansion should be
 a 40 (for SHA-1) or 64 (for SHA-256) character string
 with the PBKDF2-prepared password, hex-encoded.
+
 Note that this value will depend on the salt and iteration-count
 supplied by the server.
 Note that this value will depend on the salt and iteration-count
 supplied by the server.
-
+The option is expanded before use.
+.new
+During the expansion &$auth1$& is set with the client username,
+&$auth2$& with the iteration count, and
+&$auth3$& with the salt.
+
+The intent of this option
+is to support clients that can cache thes salted password
+to save on recalculation costs.
+The cache lookup should return an unusable value
+(eg. an empty string)
+if the salt or iteration count has changed
+
+If the authentication succeeds then the above variables are set,
+.vindex "&$auth4$&"
+plus the calculated salted password value value in &$auth4$&,
+during the expansion of the &%client_set_id%& option.
+A side-effect of this expansion can be used to prime the cache.
+.wen
 
 
 .option server_channelbinding gsasl boolean false
 
 
 .option server_channelbinding gsasl boolean false
-Do not set this true and rely on the properties
-without consulting a cryptographic engineer.
-
 Some authentication mechanisms are able to use external context at both ends
 of the session to bind the authentication to that context, and fail the
 authentication process if that context differs.  Specifically, some TLS
 Some authentication mechanisms are able to use external context at both ends
 of the session to bind the authentication to that context, and fail the
 authentication process if that context differs.  Specifically, some TLS
@@ -28201,9 +28279,16 @@ This defaults off to ensure smooth upgrade across Exim releases, in case
 this option causes some clients to start failing.  Some future release
 of Exim might have switched the default to be true.
 
 this option causes some clients to start failing.  Some future release
 of Exim might have switched the default to be true.
 
-However, Channel Binding in TLS has proven to be vulnerable in current versions.
-Do not plan to rely upon this feature for security, ever, without consulting
-with a subject matter expert (a cryptographic engineer).
+. However, Channel Binding in TLS has proven to be vulnerable in current versions.
+. Do not plan to rely upon this feature for security, ever, without consulting
+. with a subject matter expert (a cryptographic engineer).
+
+.new
+This option was deprecated in previous releases due to doubts over
+the "Triple Handshake" vulnerability.
+Exim takes suitable precausions (requiring Extended Master Secret if TLS
+Session Resumption was used) for safety.
+.wen
 
 
 .option server_hostname gsasl string&!! "see below"
 
 
 .option server_hostname gsasl string&!! "see below"
@@ -28523,7 +28608,7 @@ and for clients to only attempt,
 this authentication method on a secure (eg. under TLS) connection.
 
 One possible use, compatible with the
 this authentication method on a secure (eg. under TLS) connection.
 
 One possible use, compatible with the
-K-9 Mail Andoid client (&url(https://k9mail.github.io/)),
+K-9 Mail Android client (&url(https://k9mail.github.io/)),
 is for using X509 client certificates.
 
 It thus overlaps in function with the TLS authenticator
 is for using X509 client certificates.
 
 It thus overlaps in function with the TLS authenticator
@@ -29742,7 +29827,7 @@ Ivan is the author of the popular TLS testing tools at
 
 
 .section "Certificate chains" "SECID186"
 
 
 .section "Certificate chains" "SECID186"
-The file named by &%tls_certificate%& may contain more than one
+A file named by &%tls_certificate%& may contain more than one
 certificate. This is useful in the case where the certificate that is being
 sent is validated by an intermediate certificate which the other end does
 not have. Multiple certificates must be in the correct order in the file.
 certificate. This is useful in the case where the certificate that is being
 sent is validated by an intermediate certificate which the other end does
 not have. Multiple certificates must be in the correct order in the file.
@@ -30050,7 +30135,7 @@ the &%dnssec_request_domains%& router or transport option.
 
 DANE will only be usable if the target host has DNSSEC-secured MX, A and TLSA records.
 
 
 DANE will only be usable if the target host has DNSSEC-secured MX, A and TLSA records.
 
-A TLSA lookup will be done if either of the above options match and the host-lookup succeeded using dnssec.
+A TLSA lookup will be done if either of the above options match and the host-lookup succeeded using DNSSEC.
 If a TLSA lookup is done and succeeds, a DANE-verified TLS connection
 will be required for the host.  If it does not, the host will not
 be used; there is no fallback to non-DANE or non-TLS.
 If a TLSA lookup is done and succeeds, a DANE-verified TLS connection
 will be required for the host.  If it does not, the host will not
 be used; there is no fallback to non-DANE or non-TLS.
@@ -32441,6 +32526,13 @@ Section &<<SECTaddmatcon>>& below describes how you can distinguish between
 different values. Some DNS lists may return more than one address record;
 see section &<<SECThanmuldnsrec>>& for details of how they are checked.
 
 different values. Some DNS lists may return more than one address record;
 see section &<<SECThanmuldnsrec>>& for details of how they are checked.
 
+.new
+Values returned by a properly running DBSBL should be in the 127.0.0.0/8
+range. If a DNSBL operator loses control of the domain, lookups on it
+may start returning other addresses.  Because of this, Exim now ignores
+returned values outside the 127/8 region.
+.wen
+
 
 .section "Variables set from DNS lists" "SECID204"
 .cindex "expansion" "variables, set from DNS list"
 
 .section "Variables set from DNS lists" "SECID204"
 .cindex "expansion" "variables, set from DNS list"
@@ -32577,6 +32669,14 @@ deny  dnslists = relays.ordb.org
 .endd
 which is less clear, and harder to maintain.
 
 .endd
 which is less clear, and harder to maintain.
 
+Negation can also be used with a bitwise-and restriction.
+The dnslists condition with only be trus if a result is returned
+by the lookup which, anded with the restriction, is all zeroes.
+For example:
+.code
+deny dnslists = zen.spamhaus.org!&0.255.255.0
+.endd
+
 
 
 
 
 
 
@@ -36019,8 +36119,7 @@ incoming SMTP message from a source that is not permitted to send them.
 
 
 .section "Resent- header lines" "SECID220"
 
 
 .section "Resent- header lines" "SECID220"
-.cindex "&%Resent-%& header lines"
-.cindex "header lines" "Resent-"
+.chindex Resent-
 RFC 2822 makes provision for sets of header lines starting with the string
 &`Resent-`& to be added to a message when it is resent by the original
 recipient to somebody else. These headers are &'Resent-Date:'&,
 RFC 2822 makes provision for sets of header lines starting with the string
 &`Resent-`& to be added to a message when it is resent by the original
 recipient to somebody else. These headers are &'Resent-Date:'&,
@@ -36076,8 +36175,7 @@ existing &'Bcc:'& is not removed.
 
 
 .section "The Date: header line" "SECID223"
 
 
 .section "The Date: header line" "SECID223"
-.cindex "&'Date:'& header line"
-.cindex "header lines" "Date:"
+.cindex Date:
 If a locally-generated or submission-mode message has no &'Date:'& header line,
 Exim adds one, using the current date and time, unless the
 &%suppress_local_fixups%& control has been specified.
 If a locally-generated or submission-mode message has no &'Date:'& header line,
 Exim adds one, using the current date and time, unless the
 &%suppress_local_fixups%& control has been specified.
@@ -36094,8 +36192,7 @@ messages.
 
 
 .section "The Envelope-to: header line" "SECID225"
 
 
 .section "The Envelope-to: header line" "SECID225"
-.cindex "&'Envelope-to:'& header line"
-.cindex "header lines" "Envelope-to:"
+.chindex Envelope-to:
 .oindex "&%envelope_to_remove%&"
 &'Envelope-to:'& header lines are not part of the standard RFC 2822 header set.
 Exim can be configured to add them to the final delivery of messages. (See the
 .oindex "&%envelope_to_remove%&"
 &'Envelope-to:'& header lines are not part of the standard RFC 2822 header set.
 Exim can be configured to add them to the final delivery of messages. (See the
@@ -36106,8 +36203,7 @@ messages.
 
 
 .section "The From: header line" "SECTthefrohea"
 
 
 .section "The From: header line" "SECTthefrohea"
-.cindex "&'From:'& header line"
-.cindex "header lines" "From:"
+.chindex From:
 .cindex "Sendmail compatibility" "&""From""& line"
 .cindex "message" "submission"
 .cindex "submission mode"
 .cindex "Sendmail compatibility" "&""From""& line"
 .cindex "message" "submission"
 .cindex "submission mode"
@@ -36150,8 +36246,7 @@ name as described in section &<<SECTconstr>>&.
 
 
 .section "The Message-ID: header line" "SECID226"
 
 
 .section "The Message-ID: header line" "SECID226"
-.cindex "&'Message-ID:'& header line"
-.cindex "header lines" "Message-ID:"
+.chindex Message-ID:
 .cindex "message" "submission"
 .oindex "&%message_id_header_text%&"
 If a locally-generated or submission-mode incoming message does not contain a
 .cindex "message" "submission"
 .oindex "&%message_id_header_text%&"
 If a locally-generated or submission-mode incoming message does not contain a
@@ -36166,8 +36261,7 @@ in this header line by setting the &%message_id_header_text%& and/or
 
 
 .section "The Received: header line" "SECID227"
 
 
 .section "The Received: header line" "SECID227"
-.cindex "&'Received:'& header line"
-.cindex "header lines" "Received:"
+.chindex Received:
 A &'Received:'& header line is added at the start of every message. The
 contents are defined by the &%received_header_text%& configuration option, and
 Exim automatically adds a semicolon and a timestamp to the configured string.
 A &'Received:'& header line is added at the start of every message. The
 contents are defined by the &%received_header_text%& configuration option, and
 Exim automatically adds a semicolon and a timestamp to the configured string.
@@ -36183,8 +36277,7 @@ changed to the time of acceptance, which is (apart from a small delay while the
 
 
 .section "The References: header line" "SECID228"
 
 
 .section "The References: header line" "SECID228"
-.cindex "&'References:'& header line"
-.cindex "header lines" "References:"
+.chindex References:
 Messages created by the &(autoreply)& transport include a &'References:'&
 header line. This is constructed according to the rules that are described in
 section 3.64 of RFC 2822 (which states that replies should contain such a
 Messages created by the &(autoreply)& transport include a &'References:'&
 header line. This is constructed according to the rules that are described in
 section 3.64 of RFC 2822 (which states that replies should contain such a
@@ -36198,8 +36291,7 @@ incoming message. If there are more than 12, the first one and then the final
 
 
 .section "The Return-path: header line" "SECID229"
 
 
 .section "The Return-path: header line" "SECID229"
-.cindex "&'Return-path:'& header line"
-.cindex "header lines" "Return-path:"
+.chindex Return-path:
 .oindex "&%return_path_remove%&"
 &'Return-path:'& header lines are defined as something an MTA may insert when
 it does the final delivery of messages. (See the generic &%return_path_add%&
 .oindex "&%return_path_remove%&"
 &'Return-path:'& header lines are defined as something an MTA may insert when
 it does the final delivery of messages. (See the generic &%return_path_add%&
@@ -36212,7 +36304,7 @@ default), Exim removes &'Return-path:'& header lines from incoming messages.
 .section "The Sender: header line" "SECTthesenhea"
 .cindex "&'Sender:'& header line"
 .cindex "message" "submission"
 .section "The Sender: header line" "SECTthesenhea"
 .cindex "&'Sender:'& header line"
 .cindex "message" "submission"
-.cindex "header lines" "Sender:"
+.chindex Sender:
 For a locally-originated message from an untrusted user, Exim may remove an
 existing &'Sender:'& header line, and it may add a new one. You can modify
 these actions by setting the &%local_sender_retain%& option true, the
 For a locally-originated message from an untrusted user, Exim may remove an
 existing &'Sender:'& header line, and it may add a new one. You can modify
 these actions by setting the &%local_sender_retain%& option true, the
@@ -38312,8 +38404,11 @@ parentheses afterwards.
 When more than one address is included in a single delivery (for example, two
 SMTP RCPT commands in one transaction) the second and subsequent addresses are
 flagged with &`->`& instead of &`=>`&. When two or more messages are delivered
 When more than one address is included in a single delivery (for example, two
 SMTP RCPT commands in one transaction) the second and subsequent addresses are
 flagged with &`->`& instead of &`=>`&. When two or more messages are delivered
-down a single SMTP connection, an asterisk follows the IP address in the log
-lines for the second and subsequent messages.
+down a single SMTP connection, an asterisk follows the
+.new
+remote IP address (and port if enabled)
+.wen
+in the log lines for the second and subsequent messages.
 When two or more messages are delivered down a single TLS connection, the
 DNS and some TLS-related information logged for the first message delivered
 will not be present in the log lines for the second and subsequent messages.
 When two or more messages are delivered down a single TLS connection, the
 DNS and some TLS-related information logged for the first message delivered
 will not be present in the log lines for the second and subsequent messages.
@@ -38959,7 +39054,7 @@ unchanged, or whether they should be rendered as escape sequences.
 when TLS is in use. The item is &`CV=yes`& if the peer's certificate was
 verified
 using a CA trust anchor,
 when TLS is in use. The item is &`CV=yes`& if the peer's certificate was
 verified
 using a CA trust anchor,
-&`CA=dane`& if using a DNS trust anchor,
+&`CV=dane`& if using a DNS trust anchor,
 and &`CV=no`& if not.
 .next
 .cindex "log" "TLS cipher"
 and &`CV=no`& if not.
 .next
 .cindex "log" "TLS cipher"
@@ -41039,6 +41134,15 @@ option along with &%$dkim_domain%&.
 If the option is empty after expansion, DKIM signing is not done for this domain,
 and no error will result even if &%dkim_strict%& is set.
 
 If the option is empty after expansion, DKIM signing is not done for this domain,
 and no error will result even if &%dkim_strict%& is set.
 
+.new
+To do, for example, dual-signing with RSA and EC keys
+this could be be used:
+.code
+dkim_selector = ec_sel : rsa_sel
+dkim_private_key = KEYS_DIR/$dkim_selector
+.endd
+.wen
+
 .option dkim_private_key smtp string&!! unset
 This sets the private key to use.
 You can use the &%$dkim_domain%& and
 .option dkim_private_key smtp string&!! unset
 This sets the private key to use.
 You can use the &%$dkim_domain%& and