Spec docs for IDNA2008 support
[exim.git] / doc / doc-docbook / spec.xfpt
index 1ab2bba0a8c9170920cebf7413444517a8cc854a..5cbc126a488a43557b13037421a99c37137ff7ed 100644 (file)
 . Update the Copyright year (only) when changing content.
 . /////////////////////////////////////////////////////////////////////////////
 
 . Update the Copyright year (only) when changing content.
 . /////////////////////////////////////////////////////////////////////////////
 
-.set previousversion "4.88"
+.set previousversion "4.87"
 .include ./local_params
 
 .set ACL "access control lists (ACLs)"
 .set I   "    "
 
 .macro copyyear
 .include ./local_params
 
 .set ACL "access control lists (ACLs)"
 .set I   "    "
 
 .macro copyyear
-2016
+2017
 .endmacro
 
 . /////////////////////////////////////////////////////////////////////////////
 .endmacro
 
 . /////////////////////////////////////////////////////////////////////////////
@@ -371,11 +371,13 @@ contributors.
 .section "Exim documentation" "SECID1"
 . Keep this example change bar when updating the documentation!
 
 .section "Exim documentation" "SECID1"
 . Keep this example change bar when updating the documentation!
 
+.new
 .cindex "documentation"
 This edition of the Exim specification applies to version &version() of Exim.
 Substantive changes from the &previousversion; edition are marked in some
 renditions of the document; this paragraph is so marked if the rendition is
 capable of showing a change indicator.
 .cindex "documentation"
 This edition of the Exim specification applies to version &version() of Exim.
 Substantive changes from the &previousversion; edition are marked in some
 renditions of the document; this paragraph is so marked if the rendition is
 capable of showing a change indicator.
+.wen
 
 This document is very much a reference manual; it is not a tutorial. The reader
 is expected to have some familiarity with the SMTP mail transfer protocol and
 
 This document is very much a reference manual; it is not a tutorial. The reader
 is expected to have some familiarity with the SMTP mail transfer protocol and
@@ -3826,11 +3828,13 @@ 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
 remote host supports the ESMTP &_DSN_& extension.
 
 by Exim in conjunction with the &%-MC%& option. It signifies that the
 remote host supports the ESMTP &_DSN_& extension.
 
+.new
 .vitem &%-MCG%&
 .oindex "&%-MCG%&"
 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 an
 alternate queue is used, named by the following option.
 .vitem &%-MCG%&
 .oindex "&%-MCG%&"
 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 an
 alternate queue is used, named by the following option.
+.wen
 
 .vitem &%-MCP%&
 .oindex "&%-MCP%&"
 
 .vitem &%-MCP%&
 .oindex "&%-MCP%&"
@@ -4378,7 +4382,9 @@ relax this restriction (and also the same requirement for the &%-M%&, &%-R%&,
 and &%-S%& options).
 
 .cindex "queue runner" "description of operation"
 and &%-S%& options).
 
 .cindex "queue runner" "description of operation"
+.new
 If other commandline options do not specify an action,
 If other commandline options do not specify an action,
+.wen
 the &%-q%& option starts one queue runner process. This scans the queue of
 waiting messages, and runs a delivery process for each one in turn. It waits
 for each delivery process to finish before starting the next one. A delivery
 the &%-q%& option starts one queue runner process. This scans the queue of
 waiting messages, and runs a delivery process for each one in turn. It waits
 for each delivery process to finish before starting the next one. A delivery
@@ -4464,6 +4470,7 @@ The &'l'& (the letter &"ell"&) flag specifies that only local deliveries are to
 be done. If a message requires any remote deliveries, it remains on the queue
 for later delivery.
 
 be done. If a message requires any remote deliveries, it remains on the queue
 for later delivery.
 
+.new
 .vitem &%-q[q][i][f[f]][l][G<name>[/<time>]]]%&
 .oindex "&%-qG%&"
 .cindex queue named
 .vitem &%-q[q][i][f[f]][l][G<name>[/<time>]]]%&
 .oindex "&%-qG%&"
 .cindex queue named
@@ -4483,6 +4490,7 @@ exim -bp -qGquarantine
 mailq -qGquarantine
 exim -qGoffpeak -Rf @special.domain.example
 .endd
 mailq -qGquarantine
 exim -qGoffpeak -Rf @special.domain.example
 .endd
+.wen
 
 .vitem &%-q%&<&'qflags'&>&~<&'start&~id'&>&~<&'end&~id'&>
 When scanning the queue, Exim can be made to skip over messages whose ids are
 
 .vitem &%-q%&<&'qflags'&>&~<&'start&~id'&>&~<&'end&~id'&>
 When scanning the queue, Exim can be made to skip over messages whose ids are
@@ -5030,6 +5038,7 @@ address lists. In Exim 4 these are handled better by named lists &-- see
 section &<<SECTnamedlists>>&.
 
 
 section &<<SECTnamedlists>>&.
 
 
+.new
 .section "Builtin macros" "SECTbuiltinmacros"
 Exim defines some macros depending on facilities available, which may
 differ due to build-time definitions and from one release to another.
 .section "Builtin macros" "SECTbuiltinmacros"
 Exim defines some macros depending on facilities available, which may
 differ due to build-time definitions and from one release to another.
@@ -5053,6 +5062,7 @@ The following classes of macros are defined:
 .endd
 
 Use an &"exim -bP macros"& command to get the list of macros.
 .endd
 
 Use an &"exim -bP macros"& command to get the list of macros.
+.wen
 
 
 .section "Conditional skips in the configuration file" "SECID46"
 
 
 .section "Conditional skips in the configuration file" "SECID46"
@@ -5159,7 +5169,9 @@ hexadecimal number.
 
 If an integer value is followed by the letter K, it is multiplied by 1024; if
 it is followed by the letter M, it is multiplied by 1024x1024;
 
 If an integer value is followed by the letter K, it is multiplied by 1024; if
 it is followed by the letter M, it is multiplied by 1024x1024;
+.new
 if by the letter G, 1024x1024x1024.
 if by the letter G, 1024x1024x1024.
+.wen
 When the values
 of integer option settings are output, values which are an exact multiple of
 1024 or 1024x1024 are sometimes, but not always, printed using the letters K
 When the values
 of integer option settings are output, values which are an exact multiple of
 1024 or 1024x1024 are sometimes, but not always, printed using the letters K
@@ -6289,7 +6301,9 @@ Exim supports the use of regular expressions in many of its options. It
 uses the PCRE regular expression library; this provides regular expression
 matching that is compatible with Perl 5. The syntax and semantics of
 regular expressions is discussed in
 uses the PCRE regular expression library; this provides regular expression
 matching that is compatible with Perl 5. The syntax and semantics of
 regular expressions is discussed in
+.new
 online Perl manpages, in
 online Perl manpages, in
+.wen
 many Perl reference books, and also in
 Jeffrey Friedl's &'Mastering Regular Expressions'&, which is published by
 O'Reilly (see &url(http://www.oreilly.com/catalog/regex2/)).
 many Perl reference books, and also in
 Jeffrey Friedl's &'Mastering Regular Expressions'&, which is published by
 O'Reilly (see &url(http://www.oreilly.com/catalog/regex2/)).
@@ -7837,8 +7851,10 @@ domain, host, address and local part lists.
 .cindex "expansion" "of lists"
 Each list is expanded as a single string before it is used.
 
 .cindex "expansion" "of lists"
 Each list is expanded as a single string before it is used.
 
+.new
 &'Exception: the router headers_remove option, where list-item
 splitting is done before string-expansion.'&
 &'Exception: the router headers_remove option, where list-item
 splitting is done before string-expansion.'&
+.wen
 
 The result of
 expansion must be a list, possibly containing empty items, which is split up
 
 The result of
 expansion must be a list, possibly containing empty items, which is split up
@@ -10123,6 +10139,7 @@ Last:user@example.com
 user@example.com
 .endd
 
 user@example.com
 .endd
 
+.new
 .vitem &*${base32:*&<&'digits'&>&*}*&
 .cindex "&%base32%& expansion item"
 .cindex "expansion" "conversion to base 32"
 .vitem &*${base32:*&<&'digits'&>&*}*&
 .cindex "&%base32%& expansion item"
 .cindex "expansion" "conversion to base 32"
@@ -10135,6 +10152,7 @@ Only lowercase letters are used.
 .cindex "expansion" "conversion to base 32"
 The string must consist entirely of base-32 digits.
 The number is converted to decimal and output as a string.
 .cindex "expansion" "conversion to base 32"
 The string must consist entirely of base-32 digits.
 The number is converted to decimal and output as a string.
+.wen
 
 .vitem &*${base62:*&<&'digits'&>&*}*&
 .cindex "&%base62%& expansion item"
 
 .vitem &*${base62:*&<&'digits'&>&*}*&
 .cindex "&%base62%& expansion item"
@@ -10187,12 +10205,14 @@ escape sequences starting with a backslash. Whether characters with the most
 significant bit set (so-called &"8-bit characters"&) count as printing or not
 is controlled by the &%print_topbitchars%& option.
 
 significant bit set (so-called &"8-bit characters"&) count as printing or not
 is controlled by the &%print_topbitchars%& option.
 
+.new
 .vitem &*${escape8bit:*&<&'string'&>&*}*&
 .cindex "expansion" "escaping 8-bit characters"
 .cindex "&%escape8bit%& expansion item"
 If the string contains and characters with the most significant bit set,
 they are converted to escape sequences starting with a backslash.
 Backslashes and DEL characters are also converted.
 .vitem &*${escape8bit:*&<&'string'&>&*}*&
 .cindex "expansion" "escaping 8-bit characters"
 .cindex "&%escape8bit%& expansion item"
 If the string contains and characters with the most significant bit set,
 they are converted to escape sequences starting with a backslash.
 Backslashes and DEL characters are also converted.
+.wen
 
 
 .vitem &*${eval:*&<&'string'&>&*}*&&~and&~&*${eval10:*&<&'string'&>&*}*&
 
 
 .vitem &*${eval:*&<&'string'&>&*}*&&~and&~&*${eval10:*&<&'string'&>&*}*&
@@ -10580,14 +10600,17 @@ returns the SHA-1 hash fingerprint of the certificate.
 .cindex certificate fingerprint
 .cindex "expansion" "SHA-256 hashing"
 .cindex "&%sha256%& expansion item"
 .cindex certificate fingerprint
 .cindex "expansion" "SHA-256 hashing"
 .cindex "&%sha256%& expansion item"
+.new
 The &%sha256%& operator computes the SHA-256 hash value of the string
 and returns
 it as a 64-digit hexadecimal number, in which any letters are in upper case.
 The &%sha256%& operator computes the SHA-256 hash value of the string
 and returns
 it as a 64-digit hexadecimal number, in which any letters are in upper case.
+.wen
 
 If the string is a single variable of type certificate,
 returns the SHA-256 hash fingerprint of the certificate.
 
 
 
 If the string is a single variable of type certificate,
 returns the SHA-256 hash fingerprint of the certificate.
 
 
+.new
 .vitem &*${sha3:*&<&'string'&>&*}*& &&&
        &*${sha3_<n>:*&<&'string'&>&*}*&
 .cindex "SHA3 hash"
 .vitem &*${sha3:*&<&'string'&>&*}*& &&&
        &*${sha3_<n>:*&<&'string'&>&*}*&
 .cindex "SHA3 hash"
@@ -10603,6 +10626,7 @@ with 256 being the default.
 
 The &%sha3%& expansion item is only supported if Exim has been
 compiled with GnuTLS 3.5.0 or later.
 
 The &%sha3%& expansion item is only supported if Exim has been
 compiled with GnuTLS 3.5.0 or later.
+.wen
 
 
 .vitem &*${stat:*&<&'string'&>&*}*&
 
 
 .vitem &*${stat:*&<&'string'&>&*}*&
@@ -12251,6 +12275,7 @@ a single-component name, Exim calls &[gethostbyname()]& (or
 qualified host name. See also &$smtp_active_hostname$&.
 
 
 qualified host name. See also &$smtp_active_hostname$&.
 
 
+.new
 .vitem &$proxy_external_address$& &&&
        &$proxy_external_port$& &&&
        &$proxy_local_address$& &&&
 .vitem &$proxy_external_address$& &&&
        &$proxy_external_port$& &&&
        &$proxy_local_address$& &&&
@@ -12259,6 +12284,7 @@ qualified host name. See also &$smtp_active_hostname$&.
 These variables are only available when built with Proxy Protocol
 or Socks5 support
 For details see chapter &<<SECTproxyInbound>>&.
 These variables are only available when built with Proxy Protocol
 or Socks5 support
 For details see chapter &<<SECTproxyInbound>>&.
+.wen
 
 .vitem &$prdr_requested$&
 .cindex "PRDR" "variable for"
 
 .vitem &$prdr_requested$&
 .cindex "PRDR" "variable for"
@@ -12289,11 +12315,13 @@ The value set for the &%qualify_domain%& option in the configuration file.
 The value set for the &%qualify_recipient%& option in the configuration file,
 or if not set, the value of &$qualify_domain$&.
 
 The value set for the &%qualify_recipient%& option in the configuration file,
 or if not set, the value of &$qualify_domain$&.
 
+.new
 .vitem &$queue_name$&
 .vindex &$queue_name$&
 .cindex "named queues"
 .cindex queues named
 The name of the spool queue in use; empty for the default queue.
 .vitem &$queue_name$&
 .vindex &$queue_name$&
 .cindex "named queues"
 .cindex queues named
 The name of the spool queue in use; empty for the default queue.
+.wen
 
 .vitem &$rcpt_count$&
 .vindex "&$rcpt_count$&"
 
 .vitem &$rcpt_count$&
 .vindex "&$rcpt_count$&"
@@ -13101,6 +13129,7 @@ overriding the setting of &%perl_at_start%&.
 There is also a command line option &%-pd%& (for delay) which suppresses the
 initial startup, even if &%perl_at_start%& is set.
 
 There is also a command line option &%-pd%& (for delay) which suppresses the
 initial startup, even if &%perl_at_start%& is set.
 
+.new
 .ilist
 .oindex "&%perl_taintmode%&"
 .cindex "Perl" "taintmode"
 .ilist
 .oindex "&%perl_taintmode%&"
 .cindex "Perl" "taintmode"
@@ -13109,6 +13138,7 @@ interpreter, the &%perl_taintmode%& option can be set. This enables the
 taint mode of the Perl interpreter. You are encouraged to set this
 option to a true value. To avoid breaking existing installations, it
 defaults to false.
 taint mode of the Perl interpreter. You are encouraged to set this
 option to a true value. To avoid breaking existing installations, it
 defaults to false.
+.wen
 
 
 .section "Calling Perl subroutines" "SECID86"
 
 
 .section "Calling Perl subroutines" "SECID86"
@@ -14342,11 +14372,15 @@ $primary_hostname-$tod_epoch-testing
 See section &<<CALLaddparcall>>& for details of how this value is used.
 
 
 See section &<<CALLaddparcall>>& for details of how this value is used.
 
 
+.new
 .option check_log_inodes main integer 100
 .option check_log_inodes main integer 100
+.wen
 See &%check_spool_space%& below.
 
 
 See &%check_spool_space%& below.
 
 
+.new
 .option check_log_space main integer 10M
 .option check_log_space main integer 10M
+.wen
 See &%check_spool_space%& below.
 
 .oindex "&%check_rfc2047_length%&"
 See &%check_spool_space%& below.
 
 .oindex "&%check_rfc2047_length%&"
@@ -14361,11 +14395,15 @@ of the RFC, generates overlong encoded words. If &%check_rfc2047_length%& is
 set false, Exim recognizes encoded words of any length.
 
 
 set false, Exim recognizes encoded words of any length.
 
 
+.new
 .option check_spool_inodes main integer 100
 .option check_spool_inodes main integer 100
+.wen
 See &%check_spool_space%& below.
 
 
 See &%check_spool_space%& below.
 
 
+.new
 .option check_spool_space main integer 10M
 .option check_spool_space main integer 10M
+.wen
 .cindex "checking disk space"
 .cindex "disk space, checking"
 .cindex "spool directory" "checking space"
 .cindex "checking disk space"
 .cindex "disk space, checking"
 .cindex "spool directory" "checking space"
@@ -14411,17 +14449,21 @@ For non-SMTP input and for batched SMTP input, the test is done at start-up; on
 failure a message is written to stderr and Exim exits with a non-zero code, as
 it obviously cannot send an error message of any kind.
 
 failure a message is written to stderr and Exim exits with a non-zero code, as
 it obviously cannot send an error message of any kind.
 
+.new
 There is a slight performance penalty for these checks.
 Versions of Exim preceding 4.88 had these disabled by default;
 high-rate installations confident they will never run out of resources
 may wish to deliberately disable them.
 There is a slight performance penalty for these checks.
 Versions of Exim preceding 4.88 had these disabled by default;
 high-rate installations confident they will never run out of resources
 may wish to deliberately disable them.
+.wen
 
 
+.new
 .option chunking_advertise_hosts main "host list&!!" *
 .cindex CHUNKING advertisement
 .cindex "RFC 3030" "CHUNKING"
 The CHUNKING extension (RFC3030) will be advertised in the EHLO message to
 these hosts.
 Hosts may use the BDAT command as an alternate to DATA.
 .option chunking_advertise_hosts main "host list&!!" *
 .cindex CHUNKING advertisement
 .cindex "RFC 3030" "CHUNKING"
 The CHUNKING extension (RFC3030) will be advertised in the EHLO message to
 these hosts.
 Hosts may use the BDAT command as an alternate to DATA.
+.wen
 
 .option daemon_smtp_ports main string &`smtp`&
 .cindex "port" "for daemon"
 
 .option daemon_smtp_ports main string &`smtp`&
 .cindex "port" "for daemon"
@@ -16051,10 +16093,12 @@ the limit, allowing any number of simultaneous queue runner processes to be
 run. If you do not want queue runs to occur, omit the &%-q%&&'xx'& setting on
 the daemon's command line.
 
 run. If you do not want queue runs to occur, omit the &%-q%&&'xx'& setting on
 the daemon's command line.
 
+.new
 .cindex queues named
 .cindex "named queues"
 To set limits for different named queues use
 an expansion depending on the &$queue_name$& variable.
 .cindex queues named
 .cindex "named queues"
 To set limits for different named queues use
 an expansion depending on the &$queue_name$& variable.
+.wen
 
 .option queue_smtp_domains main "domain list&!!" unset
 .cindex "queueing incoming messages"
 
 .option queue_smtp_domains main "domain list&!!" unset
 .cindex "queueing incoming messages"
@@ -16885,6 +16929,9 @@ generates any deliveries to files or pipes, or any new mail messages, the
 appropriate &%system_filter_..._transport%& option(s) must be set, to define
 which transports are to be used. Details of this facility are given in chapter
 &<<CHAPsystemfilter>>&.
 appropriate &%system_filter_..._transport%& option(s) must be set, to define
 which transports are to be used. Details of this facility are given in chapter
 &<<CHAPsystemfilter>>&.
+.new
+A forced expansion failure results in no filter operation.
+.wen
 
 
 .option system_filter_directory_transport main string&!! unset
 
 
 .option system_filter_directory_transport main string&!! unset
@@ -17017,8 +17064,10 @@ if the OpenSSL build supports TLS extensions and the TLS client sends the
 Server Name Indication extension, then this option and others documented in
 &<<SECTtlssni>>& will be re-expanded.
 
 Server Name Indication extension, then this option and others documented in
 &<<SECTtlssni>>& will be re-expanded.
 
+.new
 If this option is unset or empty a fresh self-signed certificate will be
 generated for every connection.
 If this option is unset or empty a fresh self-signed certificate will be
 generated for every connection.
+.wen
 
 .option tls_crl main string&!! unset
 .cindex "TLS" "server certificate revocation list"
 
 .option tls_crl main string&!! unset
 .cindex "TLS" "server certificate revocation list"
@@ -17055,10 +17104,12 @@ larger prime than requested.
 The value of this option is expanded and indicates the source of DH parameters
 to be used by Exim.
 
 The value of this option is expanded and indicates the source of DH parameters
 to be used by Exim.
 
+.new
 &*Note: The Exim Maintainers strongly recommend using a filename with site-generated
 local DH parameters*&, which has been supported across all versions of Exim.  The
 other specific constants available are a fallback so that even when
 "unconfigured", Exim can offer Perfect Forward Secrecy in older ciphersuites in TLS.
 &*Note: The Exim Maintainers strongly recommend using a filename with site-generated
 local DH parameters*&, which has been supported across all versions of Exim.  The
 other specific constants available are a fallback so that even when
 "unconfigured", Exim can offer Perfect Forward Secrecy in older ciphersuites in TLS.
+.wen
 
 If &%tls_dhparam%& is a filename starting with a &`/`&,
 then it names a file from which DH
 
 If &%tls_dhparam%& is a filename starting with a &`/`&,
 then it names a file from which DH
@@ -17077,6 +17128,7 @@ Exim will attempt to load a file from inside the spool directory.  If the file
 does not exist, Exim will attempt to create it.
 See section &<<SECTgnutlsparam>>& for further details.
 
 does not exist, Exim will attempt to create it.
 See section &<<SECTgnutlsparam>>& for further details.
 
+.new
 If Exim is using OpenSSL and this option is empty or unset, then Exim will load
 a default DH prime; the default is Exim-specific but lacks verifiable provenance.
 
 If Exim is using OpenSSL and this option is empty or unset, then Exim will load
 a default DH prime; the default is Exim-specific but lacks verifiable provenance.
 
@@ -17108,6 +17160,7 @@ of the later IKE values, which led into RFC7919 providing new fixed constants
 At this point, all of the "ike" values should be considered obsolete;
 they're still in Exim to avoid breaking unusual configurations, but are
 candidates for removal the next time we have backwards-incompatible changes.
 At this point, all of the "ike" values should be considered obsolete;
 they're still in Exim to avoid breaking unusual configurations, but are
 candidates for removal the next time we have backwards-incompatible changes.
+.wen
 
 The TLS protocol does not negotiate an acceptable size for this; clients tend
 to hard-drop connections if what is offered by the server is unacceptable,
 
 The TLS protocol does not negotiate an acceptable size for this; clients tend
 to hard-drop connections if what is offered by the server is unacceptable,
@@ -23979,6 +24032,7 @@ connects. If authentication fails, Exim will try to transfer the message
 unauthenticated. See also &%hosts_require_auth%&, and chapter
 &<<CHAPSMTPAUTH>>& for details of authentication.
 
 unauthenticated. See also &%hosts_require_auth%&, and chapter
 &<<CHAPSMTPAUTH>>& for details of authentication.
 
+.new
 .option hosts_try_chunking smtp "host list&!!" *
 .cindex CHUNKING "enabling, in client"
 .cindex BDAT "SMTP command"
 .option hosts_try_chunking smtp "host list&!!" *
 .cindex CHUNKING "enabling, in client"
 .cindex BDAT "SMTP command"
@@ -23986,7 +24040,9 @@ unauthenticated. See also &%hosts_require_auth%&, and chapter
 This option provides a list of servers to which, provided they announce
 CHUNKING support, Exim will attempt to use BDAT commands rather than DATA.
 BDAT will not be used in conjunction with a transport filter.
 This option provides a list of servers to which, provided they announce
 CHUNKING support, Exim will attempt to use BDAT commands rather than DATA.
 BDAT will not be used in conjunction with a transport filter.
+.wen
 
 
+.new
 .option hosts_try_fastopen smtp "host list!!" unset
 .cindex "fast open, TCP" "enabling, in client"
 .cindex "TCP Fast Open" "enabling, in client"
 .option hosts_try_fastopen smtp "host list!!" unset
 .cindex "fast open, TCP" "enabling, in client"
 .cindex "TCP Fast Open" "enabling, in client"
@@ -24003,6 +24059,7 @@ as the initiator must present a cookie in the SYN segment.
 
 On (at least some) current Linux distributions the facility must be enabled
 in the kernel by the sysadmin before the support is usable.
 
 On (at least some) current Linux distributions the facility must be enabled
 in the kernel by the sysadmin before the support is usable.
+.wen
 
 .option hosts_try_prdr smtp "host list&!!" *
 .cindex "PRDR" "enabling, optional in client"
 
 .option hosts_try_prdr smtp "host list&!!" *
 .cindex "PRDR" "enabling, optional in client"
@@ -27181,10 +27238,12 @@ rejected with a 554 error code.
 To enable TLS operations on a server, the &%tls_advertise_hosts%& option
 must be set to match some hosts. The default is * which matches all hosts.
 
 To enable TLS operations on a server, the &%tls_advertise_hosts%& option
 must be set to match some hosts. The default is * which matches all hosts.
 
+.new
 If this is all you do, TLS encryption will be enabled but not authentication -
 meaning that the peer has no assurance it is actually you he is talking to.
 You gain protection from a passive sniffer listening on the wire but not
 from someone able to intercept the communication.
 If this is all you do, TLS encryption will be enabled but not authentication -
 meaning that the peer has no assurance it is actually you he is talking to.
 You gain protection from a passive sniffer listening on the wire but not
 from someone able to intercept the communication.
+.wen
 
 Further protection requires some further configuration at the server end.
 
 
 Further protection requires some further configuration at the server end.
 
@@ -27563,9 +27622,11 @@ Great care should be taken to deal with matters of case, various injection
 attacks in the string (&`../`& or SQL), and ensuring that a valid filename
 can always be referenced; it is important to remember that &$tls_in_sni$& is
 arbitrary unverified data provided prior to authentication.
 attacks in the string (&`../`& or SQL), and ensuring that a valid filename
 can always be referenced; it is important to remember that &$tls_in_sni$& is
 arbitrary unverified data provided prior to authentication.
+.new
 Further, the initial certificate is loaded before SNI is arrived, so
 an expansion for &%tls_certificate%& must have a default which is used
 when &$tls_in_sni$& is empty.
 Further, the initial certificate is loaded before SNI is arrived, so
 an expansion for &%tls_certificate%& must have a default which is used
 when &$tls_in_sni$& is empty.
+.wen
 
 The Exim developers are proceeding cautiously and so far no other TLS options
 are re-expanded.
 
 The Exim developers are proceeding cautiously and so far no other TLS options
 are re-expanded.
@@ -27888,6 +27949,7 @@ received, before the final response to the DATA command is sent. This is
 the ACL specified by &%acl_smtp_data%&, which is the second ACL that is
 associated with the DATA command.
 
 the ACL specified by &%acl_smtp_data%&, which is the second ACL that is
 associated with the DATA command.
 
+.new
 .cindex CHUNKING "BDAT command"
 .cindex BDAT "SMTP command"
 .cindex "RFC 3030" CHUNKING
 .cindex CHUNKING "BDAT command"
 .cindex BDAT "SMTP command"
 .cindex "RFC 3030" CHUNKING
@@ -27896,6 +27958,7 @@ the &%acl_smtp_predata%& ACL is not run.
 . XXX why not?  It should be possible, for the first BDAT.
 The &%acl_smtp_data%& is run after the last BDAT command and all of
 the data specified is received.
 . XXX why not?  It should be possible, for the first BDAT.
 The &%acl_smtp_data%& is run after the last BDAT command and all of
 the data specified is received.
+.wen
 
 For both of these ACLs, it is not possible to reject individual recipients. An
 error response rejects the entire message. Unfortunately, it is known that some
 
 For both of these ACLs, it is not possible to reject individual recipients. An
 error response rejects the entire message. Unfortunately, it is known that some
@@ -28798,6 +28861,7 @@ all the conditions are true, wherever it appears in an ACL command, whereas
 effect.
 
 
 effect.
 
 
+.new
 .vitem &*queue*&&~=&~<&'text'&>
 This modifier specifies the use of a named queue for spool files
 for the message.
 .vitem &*queue*&&~=&~<&'text'&>
 This modifier specifies the use of a named queue for spool files
 for the message.
@@ -28807,6 +28871,7 @@ This could be used, for example, for known high-volume burst sources
 of traffic, or for quarantine of messages.
 Separate queue-runner processes will be needed for named queues.
 If the text after expansion is empty, the default queue is used.
 of traffic, or for quarantine of messages.
 Separate queue-runner processes will be needed for named queues.
 If the text after expansion is empty, the default queue is used.
+.wen
 
 
 .vitem &*remove_header*&&~=&~<&'text'&>
 
 
 .vitem &*remove_header*&&~=&~<&'text'&>
@@ -28931,7 +28996,11 @@ message body.
 Cutthrough delivery is not supported via transport-filters or when DKIM signing
 of outgoing messages is done, because it sends data to the ultimate destination
 before the entire message has been received from the source.
 Cutthrough delivery is not supported via transport-filters or when DKIM signing
 of outgoing messages is done, because it sends data to the ultimate destination
 before the entire message has been received from the source.
-It is not supported for messages received with the SMTP PRDR option in use.
+It is not supported for messages received with the SMTP PRDR
+.new
+or CHUNKING
+.wen
+options in use.
 
 Should the ultimate destination system positively accept or reject the mail,
 a corresponding indication is given to the source system and nothing is queued.
 
 Should the ultimate destination system positively accept or reject the mail,
 a corresponding indication is given to the source system and nothing is queued.
@@ -28939,6 +29008,7 @@ If the item is successfully delivered in cutthrough mode
 the delivery log lines are tagged with ">>" rather than "=>" and appear
 before the acceptance "<=" line.
 
 the delivery log lines are tagged with ">>" rather than "=>" and appear
 before the acceptance "<=" line.
 
+.new
 If there is a temporary error the item is queued for later delivery in the
 usual fashion.
 This behaviour can be adjusted by appending the option &*defer=*&<&'value'&>
 If there is a temporary error the item is queued for later delivery in the
 usual fashion.
 This behaviour can be adjusted by appending the option &*defer=*&<&'value'&>
@@ -28946,6 +29016,7 @@ to the control; the default value is &"spool"& and the alternate value
 &"pass"& copies an SMTP defer response from the target back to the initiator
 and does not queue the message.
 Note that this is independent of any recipient verify conditions in the ACL.
 &"pass"& copies an SMTP defer response from the target back to the initiator
 and does not queue the message.
 Note that this is independent of any recipient verify conditions in the ACL.
+.wen
 
 Delivery in this mode avoids the generation of a bounce mail to a
 (possibly faked)
 
 Delivery in this mode avoids the generation of a bounce mail to a
 (possibly faked)
@@ -28961,7 +29032,9 @@ with &`-d`&, with the output going to a new logfile, by default called
 may access any variables already defined.  The logging may be adjusted with
 the &'opts'& option, which takes the same values as the &`-d`& command-line
 option.
 may access any variables already defined.  The logging may be adjusted with
 the &'opts'& option, which takes the same values as the &`-d`& command-line
 option.
+.new
 Logging may be stopped, and the file removed, with the &'kill'& option.
 Logging may be stopped, and the file removed, with the &'kill'& option.
+.wen
 Some examples (which depend on variables that don't exist in all
 contexts):
 .code
 Some examples (which depend on variables that don't exist in all
 contexts):
 .code
@@ -29782,6 +29855,15 @@ to avoid doing it more than once per message.
 .cindex "&%verify%& ACL condition"
 This is a variation of the previous option, in which a modified address is
 verified as a sender.
 .cindex "&%verify%& ACL condition"
 This is a variation of the previous option, in which a modified address is
 verified as a sender.
+
+.new
+Note that '/' is legal in local-parts; if the address may have such
+(eg. is generated from the received message)
+they must be protected from the options parsing by doubling:
+.code
+verify = sender=${sg{${address:$h_sender:}}{/}{//}}
+.endd
+.wen
 .endlist
 
 
 .endlist
 
 
@@ -31824,9 +31906,11 @@ spam bar is 50 characters.
 A multiline text table, containing the full SpamAssassin report for the
 message. Useful for inclusion in headers or reject messages.
 This variable is only usable in a DATA-time ACL.
 A multiline text table, containing the full SpamAssassin report for the
 message. Useful for inclusion in headers or reject messages.
 This variable is only usable in a DATA-time ACL.
+.new
 Beware that SpamAssassin may return non-ASCII characters, especially
 when running in country-specific locales, which are not legal
 unencoded in headers.
 Beware that SpamAssassin may return non-ASCII characters, especially
 when running in country-specific locales, which are not legal
 unencoded in headers.
+.wen
 
 .vitem &$spam_action$&
 For SpamAssassin either 'reject' or 'no action' depending on the
 
 .vitem &$spam_action$&
 For SpamAssassin either 'reject' or 'no action' depending on the
@@ -37907,9 +37991,8 @@ lock will be lost at the instant of rename.
 .next
 .vindex "&$body_linecount$&"
 If you change the number of lines in the file, the value of
 .next
 .vindex "&$body_linecount$&"
 If you change the number of lines in the file, the value of
-&$body_linecount$&, which is stored in the -H file, will be incorrect. At
-present, this value is not used by Exim, but there is no guarantee that this
-will always be the case.
+&$body_linecount$&, which is stored in the -H file, will be incorrect and can
+cause incomplete transmission of messages or undeliverable messages.
 .next
 If the message is in MIME format, you must take care not to break it.
 .next
 .next
 If the message is in MIME format, you must take care not to break it.
 .next
@@ -38418,9 +38501,11 @@ The header canonicalization method. One of 'relaxed' or 'simple'.
 .vitem &%$dkim_copiedheaders%&
 A transcript of headers and their values which are included in the signature
 (copied from the 'z=' tag of the signature).
 .vitem &%$dkim_copiedheaders%&
 A transcript of headers and their values which are included in the signature
 (copied from the 'z=' tag of the signature).
+.new
 Note that RFC6376 requires that verification fail if the From: header is
 not included in the signature.  Exim does not enforce this; sites wishing
 strict enforcement should code the check explicitly.
 Note that RFC6376 requires that verification fail if the From: header is
 not included in the signature.  Exim does not enforce this; sites wishing
 strict enforcement should code the check explicitly.
+.wen
 
 .vitem &%$dkim_bodylength%&
 The number of signed body bytes. If zero ("0"), the body is unsigned. If no
 
 .vitem &%$dkim_bodylength%&
 The number of signed body bytes. If zero ("0"), the body is unsigned. If no
@@ -38478,8 +38563,10 @@ warn log_message = GMail sender without gmail.com DKIM signature
      dkim_status = none
 .endd
 
      dkim_status = none
 .endd
 
+.new
 Note that the above does not check for a total lack of DKIM signing;
 for that check for empty &$h_DKIM-Signature:$& in the data ACL.
 Note that the above does not check for a total lack of DKIM signing;
 for that check for empty &$h_DKIM-Signature:$& in the data ACL.
+.wen
 
 .vitem &%dkim_status%&
 ACL condition that checks a colon-separated list of possible DKIM verification
 
 .vitem &%dkim_status%&
 ACL condition that checks a colon-separated list of possible DKIM verification
@@ -38539,6 +38626,7 @@ Use of a proxy is enabled by setting the &%hosts_proxy%&
 main configuration option to a hostlist; connections from these
 hosts will use Proxy Protocol.
 
 main configuration option to a hostlist; connections from these
 hosts will use Proxy Protocol.
 
+.new
 The following expansion variables are usable
 (&"internal"& and &"external"& here refer to the interfaces
 of the proxy):
 The following expansion variables are usable
 (&"internal"& and &"external"& here refer to the interfaces
 of the proxy):
@@ -38551,6 +38639,7 @@ of the proxy):
 .endd
 If &$proxy_session$& is set but &$proxy_external_address$& is empty
 there was a protocol error.
 .endd
 If &$proxy_session$& is set but &$proxy_external_address$& is empty
 there was a protocol error.
+.wen
 
 Since the real connections are all coming from the proxy, and the
 per host connection tracking is done before Proxy Protocol is
 
 Since the real connections are all coming from the proxy, and the
 per host connection tracking is done before Proxy Protocol is
@@ -38658,6 +38747,12 @@ Exim has support for Internationalised mail names.
 To include this it must be built with SUPPORT_I18N and the libidn library.
 Standards supported are RFCs 2060, 5890, 6530 and 6533.
 
 To include this it must be built with SUPPORT_I18N and the libidn library.
 Standards supported are RFCs 2060, 5890, 6530 and 6533.
 
+.new
+If Exim is built with SUPPORT_I18N_2008 (in addition to SUPPORT_I18N, not
+instead of it) then IDNA2008 is supported; this adds an extra library
+requirement, upon libidn2.
+.wen
+
 .section "MTA operations" SECTi18nMTA
 .cindex SMTPUTF8 "ESMTP option"
 The main configuration option &%smtputf8_advertise_hosts%& specifies
 .section "MTA operations" SECTi18nMTA
 .cindex SMTPUTF8 "ESMTP option"
 The main configuration option &%smtputf8_advertise_hosts%& specifies