Docs: typoes
[exim.git] / doc / doc-docbook / spec.xfpt
index ef02705404dbf2f5881f68c2a1a2fbe0f058f8f2..94b2b0cd20040dbe36bd321d1395a620b06bafd9 100644 (file)
@@ -1,4 +1,3 @@
-
 . /////////////////////////////////////////////////////////////////////////////
 . This is the primary source of the Exim Manual. It is an xfpt document that is
 . converted into DocBook XML for subsequent conversion into printable and online
@@ -46,7 +45,7 @@
 . Update the Copyright year (only) when changing content.
 . /////////////////////////////////////////////////////////////////////////////
 
-.set previousversion "4.97"
+.set previousversion "4.98"
 .include ./local_params
 
 .set ACL "access control lists (ACLs)"
@@ -55,7 +54,7 @@
 .set drivernamemax "64"
 
 .macro copyyear
-2023
+2024
 .endmacro
 
 . /////////////////////////////////////////////////////////////////////////////
@@ -1765,6 +1764,12 @@ distributors have chosen to bundle different libraries with their packaged
 versions. However, the more recent releases seem to have standardized on the
 Berkeley DB library.
 
+.new
+Ownership of the Berkeley DB library has moved to a major corporation;
+development seems to have stalled and documentation is not freely available.
+This is probably not tenable for the long term use by Exim.
+.wen
+
 Different DBM libraries have different conventions for naming the files they
 use. When a program opens a file called &_dbmfile_&, there are several
 possibilities:
@@ -1805,6 +1810,9 @@ suited to Exim's usage model.
 Yet another DBM library, called &'tdb'&, is available from
 &url(https://sourceforge.net/projects/tdb/files/). It has its own interface, and also
 operates on a single file.
+.next
+It is possible to use sqlite3 (&url(https://www.sqlite.org/index.html))
+for the DBM library.
 .endlist
 
 .cindex "USE_DB"
@@ -1816,8 +1824,9 @@ USE_DB in an appropriate configuration file (typically
 .code
 USE_DB=yes
 .endd
-Similarly, for gdbm you set USE_GDBM, and for tdb you set USE_TDB. An
-error is diagnosed if you set more than one of these.
+Similarly, for gdbm you set USE_GDBM, for tdb you set USE_TDB,
+and for sqlite3 you set USE_SQLITE.
+An error is diagnosed if you set more than one of these.
 You can set USE_NDBM if needed to override an operating system default.
 
 At the lowest level, the build-time configuration sets none of these options,
@@ -1833,6 +1842,7 @@ in one of these lines:
 .code
 DBMLIB = -ldb
 DBMLIB = -ltdb
+DBMLIB = -lsqlite3
 DBMLIB = -lgdbm -lgdbm_compat
 .endd
 The last of those was for a Linux having GDBM provide emulated NDBM facilities.
@@ -1848,6 +1858,17 @@ DBMLIB=/usr/local/lib/db-4.1/libdb.a
 There is further detailed discussion about the various DBM libraries in the
 file &_doc/dbm.discuss.txt_& in the Exim distribution.
 
+.new
+When moving from one DBM library to another,
+for the hints databases it suffices to just remove all the files in the
+directory named &"db/"& under the spool directory.
+This is because hints are only for optimisation and will be rebuilt
+during normal operations.
+Non-hints DBM databases (used by &"dbm"& lookups in the configuration)
+will need individual rebuilds for the new DBM library.
+This is not done automatically
+.wen
+
 
 
 .section "Pre-building configuration" "SECID25"
@@ -2056,7 +2077,7 @@ On some platforms, Exim supports not compiling all lookup types directly into
 the main binary, instead putting some into external modules which can be loaded
 on demand.
 This permits packagers to build Exim with support for lookups with extensive
-library dependencies without requiring all users to install all of those
+library dependencies without requiring all systems to install all of those
 dependencies.
 Most, but not all, lookup types can be built this way.
 
@@ -2070,7 +2091,7 @@ see &_src/EDITME_& for details.
 Then, for each module to be loaded dynamically, define the relevant
 &`LOOKUP_`&<&'lookup_type'&> flags to have the value "2" instead of "yes".
 For example, this will build in lsearch but load sqlite and mysql support
-on demand:
+only if each is installed:
 .code
 LOOKUP_LSEARCH=yes
 LOOKUP_SQLITE=2
@@ -2886,11 +2907,9 @@ available to admin users.
 
 The word &"set"& at the start of a line, followed by a single space,
 is recognised specially as defining a value for a variable.
-.new
 .cindex "tainted data" "expansion testing"
 If the sequence &",t"& is inserted before the space,
 the value is marked as tainted.
-.wen
 The syntax is otherwise the same as the ACL modifier &"set ="&.
 
 .cmdopt -bem <&'filename'&>
@@ -6846,9 +6865,7 @@ by default, but has an option to omit them (see section &<<SECTdbmbuild>>&).
 .cindex "dsearch lookup type"
 The given file must be an absolute directory path; this is searched for an entry
 whose name is the key by calling the &[lstat()]& function.
-.new
 Unless the options (below) permit a path,
-.wen
 the key may not contain any forward slash characters.
 If &[lstat()]& succeeds then so does the lookup.
 .cindex "tainted data" "dsearch result"
@@ -8173,7 +8190,6 @@ option, you can still update it by a query of this form:
 ${lookup pgsql,servers=master/db/name/pw {UPDATE ...} }
 .endd
 
-.new
 A now-deprecated syntax places the servers specification before the query,
 semicolon separated:
 .code
@@ -8185,7 +8201,6 @@ The entire string within the braces becomes tainted,
 including the server sepcification - which is not permissible.
 If the older sytax is used, a warning message will be logged.
 This syntax will be removed in a future release.
-.wen
 
 &*Note*&: server specifications in list-style lookups are still problematic.
 
@@ -8214,10 +8229,8 @@ or delete command), the result of the lookup is the number of rows affected.
 anything (for example, setting a field to the value it already has), the result
 is zero because no rows are affected.
 
-.new
 To get an encryted connection, use a Mysql option file with the required
 parameters for the connection.
-.wen
 
 
 .subsection "Special PostgreSQL features" SECID74
@@ -11587,14 +11600,12 @@ These convert EAI mail name components between UTF-8 and a-label forms.
 For information on internationalisation support see &<<SECTi18nMTA>>&.
 
 
-.new
 .vitem &*${xtextd:*&<&'string'&>&*}*&
 .cindex "text forcing in strings"
 .cindex "string" "xtext decoding"
 .cindex "xtext"
 .cindex "&%xtextd%& expansion item"
 This performs xtext decoding of the string (per RFC 3461 section 4).
-.wen
 
 
 
@@ -12600,6 +12611,11 @@ contain the trailing slash. If &$config_file$& does not contain a slash,
 .vindex "&$config_file$&"
 The name of the main configuration file Exim is using.
 
+.vitem &$connection_id$&
+.vindex "&$connection_id$&"
+.cindex connection "identifier logging"
+An identifier for the accepted connection, for use in custom logging.
+
 .vitem &$dkim_verify_status$&
 Results of DKIM verification.
 For details see section &<<SECDKIMVFY>>&.
@@ -15193,8 +15209,11 @@ See section &<<SECDKIMVFY>>& for further details.
 
 .option acl_smtp_etrn main string&!! unset
 .cindex "ETRN" "ACL for"
+.cindex "ETRN" advertisement
 This option defines the ACL that is run when an SMTP ETRN command is
-received. See chapter &<<CHAPACL>>& for further details.
+received.
+If no value is set then the ETRN facility is not advertised.
+See chapter &<<CHAPACL>>& for further details.
 
 .option acl_smtp_expn main string&!! unset
 .cindex "EXPN" "ACL for"
@@ -15257,12 +15276,10 @@ received. See chapter &<<CHAPACL>>& for further details.
 This option defines the ACL that is run when an SMTP VRFY command is
 received. See chapter &<<CHAPACL>>& for further details.
 
-.new
 .option acl_smtp_wellknown main string&!! unset
 .cindex "WELLKNOWN, ACL for"
 This option defines the ACL that is run when an SMTP WELLKNOWN command is
 received. See section &<<SECTWELLKNOWNACL>>& for further details.
-.wen
 
 .option add_environment main "string list" empty
 .cindex "environment" "set values"
@@ -15769,9 +15786,9 @@ the ACL once for each signature in the message.
 See section &<<SECDKIMVFY>>&.
 
 
-.option dmarc_forensic_sender main string&!! unset &&&
-        dmarc_history_file main string unset &&&
-        dmarc_tld_file main string unset
+.options dmarc_forensic_sender main string&!! unset &&&
+         dmarc_history_file main string unset &&&
+         dmarc_tld_file main string unset
 .cindex DMARC "main section options"
 These options control DMARC processing.
 See section &<<SECDMARC>>& for details.
@@ -16097,9 +16114,11 @@ routing, but which are not used for listening by the daemon. See section
 
 . Allow this long option name to split; give it unsplit as a fifth argument
 . for the automatic .oindex that is generated by .option.
+. WAS:
+. .option "extract_addresses_remove_ &~&~arguments"
+. but apparently this results in searchability problems; bug 1197
 
-.option "extract_addresses_remove_arguments" main boolean true &&&
-         extract_addresses_remove_arguments
+.option extract_addresses_remove_arguments main boolean true
 .oindex "&%-t%&"
 .cindex "command line" "addresses with &%-t%&"
 .cindex "Sendmail compatibility" "&%-t%& option"
@@ -16608,17 +16627,15 @@ has been built with LDAP support.
 
 
 
-.new
 .option limits_advertise_hosts main "host list&!!" *
 .cindex LIMITS "suppressing advertising"
 .cindex "ESMTP extensions" LIMITS
 This option can be used to suppress the advertisement of the SMTP
 LIMITS extension (RFC 9422) to specific hosts.
-If permitted, Exim as a servier will advertise in the EHLO response
+If permitted, Exim as a server will advertise in the EHLO response
 the limit for RCPT commands set by the &%recipients_max%& option (if it is set)
 and the limit for MAIL commands set by the &%smtp_accept_max_per_connection%&
 option.
-.wen
 
 .option local_from_check main boolean true
 .cindex "&'Sender:'& header line" "disabling addition of"
@@ -17179,7 +17196,7 @@ See also the &%hosts_pipe_connect%& smtp transport option.
 
 The SMTP service extension keyword advertised is &"PIPECONNECT"&;
 it permits the client to pipeline
-TCP connection and hello command (inclear phase),
+TCP connection and hello command (cleatext phase),
 or TLS-establishment and hello command (encrypted phase),
 on later connections to the same host.
 
@@ -17534,14 +17551,12 @@ all recipients over the limit; earlier recipients are delivered as normal.
 Non-SMTP messages with too many recipients are failed, and no deliveries are
 done.
 
-.new
 For SMTP message the expansion is done after the connection is
 accepted (but before any SMTP conversation) and may depend on
 the IP addresses and port numbers of the connection.
 &*Note*&: If an expansion is used for the option,
 care should be taken that a resonable value results for
 non-SMTP messages.
-.wen
 
 .cindex "RCPT" "maximum number of incoming"
 &*Note*&: The RFCs specify that an SMTP server should accept at least 100
@@ -17749,8 +17764,7 @@ live with.
 . 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 &&&
-         smtp_accept_max_per_connection
+.option smtp_accept_max_per_connection main integer&!! 1000
 .cindex "SMTP" "limiting incoming message count"
 .cindex "limit" "messages per SMTP connection"
 The value of this option limits the number of MAIL commands that Exim is
@@ -17804,8 +17818,7 @@ various &%-od%&&'x'& command line options.
 
 . See the comment on smtp_accept_max_per_connection
 
-.option "smtp_accept_queue_per_connection" main integer 10 &&&
-         smtp_accept_queue_per_connection
+.option smtp_accept_queue_per_connection main integer 10
 .cindex "queueing incoming messages"
 .cindex "message" "queueing by message count"
 This option limits the number of delivery processes that Exim starts
@@ -18935,13 +18948,11 @@ absolute and untainted.
 See also &%bounce_message_file%&.
 
 
-.new
 .option wellknown_advertise_hosts main boolean unset
 .cindex WELLKNOWN advertisement
 .cindex "ESMTP extensions" WELLKNOWN
 This option enables the advertising of the SMTP WELLKNOWN extension.
 See also the &%acl_smtp_wellknown%& ACL (&<<SECTWELLKNOWNACL>>&).
-.wen
 
 .option write_rejectlog main boolean true
 .cindex "reject log" "disabling"
@@ -22217,6 +22228,12 @@ subject to address rewriting. Otherwise, they are treated like new addresses
 and are rewritten according to the global rewriting rules.
 
 
+.option sieve_inbox redirect string&!! inbox
+.new
+The value of this option is passed to a Sieve filter to specify the
+name of the mailbox used for "keep" operations (explicit or implicit).
+.wen
+
 .option sieve_subaddress redirect string&!! unset
 The value of this option is passed to a Sieve filter to specify the
 :subaddress part of an address.
@@ -23253,7 +23270,11 @@ fileinto "folder23";
 .endd
 In this situation, the expansion of &%file%& or &%directory%& in the transport
 must transform the relative path into an appropriate absolute filename. In the
-case of Sieve filters, the name &'inbox'& must be handled. It is the name that
+case of Sieve filters, the name &'inbox'& must be handled. It is the
+.new
+default
+.wen
+name that
 is used as a result of a &"keep"& action in the filter. This example shows one
 way of handling this requirement:
 .code
@@ -23269,6 +23290,12 @@ With this setting of &%file%&, &'inbox'& refers to the standard mailbox
 location, absolute paths are used without change, and other folders are in the
 &_mail_& directory within the home directory.
 
+.new
+An alternative for the &"keep"& aspect is to use the &%sieve_inbox%& option
+on the redirect router that calls the Sieve filter,
+to explicitly set the filename used.
+.wen
+
 &*Note 1*&: While processing an Exim filter, a relative path such as
 &_folder23_& is turned into an absolute path if a home directory is known to
 the router. In particular, this is the case if &%check_local_user%& is set. If
@@ -23279,6 +23306,10 @@ path to the transport.
 &*Note 2*&: An absolute path in &$address_file$& is not treated specially;
 the &%file%& or &%directory%& option is still used if it is set.
 
+.new
+&*Note 3*&: Permitting a user to enable writes to an absolute path
+may be a security issue.
+.wen
 
 
 
@@ -24581,7 +24612,7 @@ when the message is specified by the transport.
 .cindex "transports" "&(lmtp)&"
 .cindex "&(lmtp)& transport"
 .cindex "LMTP" "over a pipe"
-.cindex "LMTP" "over a socket"
+.cindex "LMTP" "over a unix-domain socket"
 The &(lmtp)& transport runs the LMTP protocol (RFC 2033) over a pipe to a
 specified command
 or by interacting with a Unix domain socket.
@@ -25438,12 +25469,10 @@ over a single TCP/IP connection. If the value is zero, there is no limit.
 For testing purposes, this value can be overridden by the &%-oB%& command line
 option.
 
-.new
 .cindex "ESMTP extensions" LIMITS
 If the peer advertises a LIMITS extension with a MAILMAX value,
 and either TLSS is in use or was not advertised,
 that value also constrains the result of this option.
-.wen
 
 
 .option dane_require_tls_ciphers smtp string&!! unset
@@ -25668,12 +25697,10 @@ suffices for one known case.
 During the expansion of this option the &$item$& variable will have the
 server's EHLO response.
 
-.new
 For TLS-on-connect connections we do not have an EHLO
 response to use. Because of this the default value of this option is
 set to a static string for those cases, meaning that resumption will
 always be attempted if permitted by the &%tls_resumption_hosts%& option.
-.wen
 
 The result of the option expansion is included in the key used to store and
 retrieve the TLS session, for session resumption.
@@ -26021,13 +26048,11 @@ each set of addresses is treated independently, and
 so can cause parallel connections to the same host if &%remote_max_parallel%&
 permits this.
 
-.new
 .cindex "ESMTP extensions" LIMITS
 If the peer advertises a LIMITS extension with a RCPTMAX value,
 and either TLSS is in use or was not advertised,
 that value also constrains the result of this option
 and no parallel connections will be caused on meeting the RCPTMAX limit.
-.wen
 
 
 .option message_linelength_limit smtp integer 998
@@ -26060,12 +26085,10 @@ If the connection is DANE-enabled then this option is ignored;
 only messages having the domain used for the DANE TLSA lookup are
 sent on the connection.
 
-.new
 .cindex "ESMTP extensions" LIMITS
 If the peer advertises a LIMITS extension with a RCPTDOMAINMAX value,
 and either TLSS is in use or was not advertised,
 this option is regarded as being false.
-.wen
 
 
 .option port smtp string&!! "see below"
@@ -26101,6 +26124,9 @@ protocol (RFC 2033) instead of SMTP. This protocol is sometimes used for local
 deliveries into closed message stores. Exim also has support for running LMTP
 over a pipe to a local process &-- see chapter &<<CHAPLMTP>>&.
 
+&*Note*&: When using LMTP it should be considered whether the default values
+for some other features, such as DANE, are appropriate.
+
 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.
@@ -30885,7 +30911,6 @@ This ACL is evaluated after &%acl_smtp_dkim%& but before &%acl_smtp_data%&.
 If the ACL is not defined, processing completes as if
 the feature was not requested by the client.
 
-.new
 .subsection "The SMTP WELLKNOWN ACL" SECTWELLKNOWNACL
 .cindex "WELLKNOWN" "ACL for"
 .oindex "&%acl_smtp_wellknown%&"
@@ -30938,7 +30963,6 @@ and service WELLKNOWN smtp verbs having a single parameter
 giving a key for an item of "site-wide metadata".
 The verb and key are separated by whitespace,
 and the key is xtext-encoded (per RFC 3461 section 4).
-.wen
 
 
 .subsection "The QUIT ACL" SECTQUITACL
@@ -31113,9 +31137,7 @@ when the ACL is not defined is &"accept"&.
 
 For the others (&%acl_smtp_etrn%&, &%acl_smtp_expn%&, &%acl_smtp_rcpt%&,
 &%acl_smtp_vrfy%&
-.new
 and &%acl_smtp_wellknown%&),
-.wen
 the action when the ACL
 is not defined is &"deny"&.  This means that &%acl_smtp_rcpt%& must be
 defined in order to receive any messages over an SMTP connection.
@@ -32225,12 +32247,10 @@ This control enables conversion of UTF-8 in message envelope addresses
 to a-label form.
 For details see section &<<SECTi18nMTA>>&.
 
-.new
 .vitem &*control&~=&~wellknown*&
 This control sets up a response data file for a WELLKNOWN SMTP command.
 It may only be used in an ACL servicing that command.
 For details see section &<<SECTWELLKNOWNACL>>&.
-.wen
 .endlist vlist
 
 
@@ -35220,13 +35240,11 @@ If the string does not start with a slash, it is used as the
 filename, and the default path is then used.
 .endlist
 The &%decode%& condition normally succeeds. It is only false for syntax
-errors or unusual circumstances such as memory shortages. You can easily decode
-a file with its original, proposed filename using
-.code
-decode = $mime_filename
-.endd
-However, you should keep in mind that &$mime_filename$& might contain
-anything. If you place files outside of the default path, they are not
+errors or unusual circumstances such as memory shortages.
+The variable &$mime_filename$& will have the suggested name for the file.
+Note however that this might contain anything, and is very difficult
+to safely use as all or even part of the filename.
+If you place files outside of the default path, they are not
 automatically unlinked.
 
 For RFC822 attachments (these are messages attached to messages, with a
@@ -37327,12 +37345,8 @@ See the next section for more detail about error handling.
 .cindex "SMTP" "batching over TCP/IP"
 When a message is successfully delivered over a TCP/IP SMTP connection, Exim
 looks in the hints database for the transport to see if there are any queued
-messages waiting for the host to which it is connected. If it finds one, it
-creates a new Exim process using the &%-MC%& option (which can only be used by
-a process running as root or the Exim user) and passes the TCP/IP socket to it
-so that it can deliver another message using the same socket. The new process
-does only those deliveries that are routed to the connected host, and may in
-turn pass the socket on to a third process, and so on.
+messages waiting for the host to which it is connected.
+If it finds one, it arranges to attempt that message on the same connection.
 
 The &%connection_max_messages%& option of the &(smtp)& transport can be used to
 limit the number of messages sent down a single TCP/IP connection.
@@ -37670,6 +37684,14 @@ RCPT failures.
 .subsection "The ETRN command" SECTETRN
 .cindex "ETRN" "processing"
 .cindex "ESMTP extensions" ETRN
+Most modern installations never need to use this.
+It is used for managing messages queued for an intermittently-connecting
+destination (eg. one using a dialup connection).
+
+.oindex "&%acl_smtp_etrn%&"
+The command is only available if permitted by an ACL
+specfied by the main-section &%acl_smtp_etrn%& option.
+
 RFC 1985 describes an ESMTP command called ETRN that is designed to
 overcome the security problems of the TURN command (which has fallen into
 disuse). When Exim receives an ETRN command on a TCP/IP connection, it runs
@@ -39350,17 +39372,19 @@ because the arguments are checked before the configuration file is read. The
 only way to log such cases is to interpose a script such as &_util/logargs.sh_&
 between the caller and Exim.
 .next
-.cindex "log" "connection identifier"
-&%connection_identifier%&: An identifier for the accepted connection is added to
+.cindex log "connection identifier"
+.cindex connection "identifier logging"
+&%connection_id%&: An identifier for the accepted connection is added to
 connection start and end lines and to message accept lines.
 The identifier is tagged by Ci=.
 The value is PID-based, so will reset on reboot and will wrap.
 .next
-.cindex "log" "connection rejections"
+.cindex log "connection rejections"
+.cindex connection "rejection logging"
 &%connection_reject%&: A log entry is written whenever an incoming SMTP
 connection is rejected, for whatever reason.
 .next
-.cindex "log" "delayed delivery"
+.cindex log "delayed delivery"
 .cindex "delayed delivery, logging"
 &%delay_delivery%&: A log entry is written whenever a delivery process is not
 started for an incoming message because the load is too high or too many
@@ -39386,10 +39410,8 @@ verifies successfully a tag of DKIM is added, with one of the verified domains.
 .cindex log "DKIM verification"
 .cindex DKIM "verification logging"
 &%dkim_verbose%&: A log entry is written for each attempted DKIM verification.
-.new
 Also, on message delivery lines signing information (domain and selector)
 is added, tagged with DKIM=.
-.wen
 .next
 .cindex "log" "dnslist defer"
 .cindex "DNS list" "logging defer"
@@ -40284,8 +40306,6 @@ for remote hosts
 The &'misc'& database is used for
 
 .ilist
-Serializing ETRN runs (when &%smtp_etrn_serialize%& is set)
-.next
 Serializing delivery to a specific host (when &%serialize_hosts%& is set in an
 &(smtp)& transport)
 .next
@@ -40293,11 +40313,13 @@ Limiting the concurrency of specific transports (when &%max_parallel%& is set
 in a transport)
 .next
 Recording EHLO-time facilities advertised by hosts
+.next
+Serializing ETRN runs (when &%smtp_etrn_serialize%& is set)
 .endlist
 
 
 
-.section "exim_dumpdb" "SECTdumpdb"
+.subsection "exim_dumpdb" "SECTdumpdb"
 .cindex "&'exim_dumpdb'&"
 The entire contents of a database are written to the standard output by the
 &'exim_dumpdb'& program,
@@ -40339,7 +40361,7 @@ cross-references.
 
 
 
-.section "exim_tidydb" "SECTtidydb"
+.subsection "exim_tidydb" "SECTtidydb"
 .cindex "&'exim_tidydb'&"
 The &'exim_tidydb'& utility program is used to tidy up the contents of a hints
 database. If run with no options, it removes all records that are more than 30
@@ -40388,7 +40410,7 @@ databases is likely to keep on increasing.
 
 
 
-.section "exim_fixdb" "SECTfixdb"
+.subsection "exim_fixdb" "SECTfixdb"
 .cindex "&'exim_fixdb'&"
 The &'exim_fixdb'& program is a utility for interactively modifying databases.
 Its main use is for testing Exim, but it might also be occasionally useful for
@@ -41737,10 +41759,8 @@ Exim's DKIM implementation allows for
 Signing outgoing messages: This function is implemented in the SMTP transport.
 It can co-exist with all other Exim features
 (including transport filters) except cutthrough delivery.
-.new
 However, signing options may not depend on headers modified by
 routers, the transport or a transport filter.
-.wen
 .next
 Verifying signatures in incoming messages: This is implemented by an additional
 ACL (acl_smtp_dkim), which can be called several times per message, with
@@ -41948,11 +41968,9 @@ name will be appended.
 .option dkim_timestamps smtp integer&!! unset
 This option controls the inclusion of timestamp information in the signature.
 If not set, no such information will be included.
-.new
 Otherwise, must be an unsigned number giving an offset in seconds from the
 current time for the expiry tag (e.g. 1209600 for two weeks); both creation
 (t=) and expiry (x=) tags will be included unless the offset is 0 (no expiry).
-.wen
 
 RFC 6376 lists these tags as RECOMMENDED.
 
@@ -42226,9 +42244,7 @@ for that check for empty &$h_DKIM-Signature:$& in the data ACL.
 ACL condition that checks a colon-separated list of possible DKIM verification
 results against the actual result of verification,
 given by &$dkim_verify_status$& if that is non-empty or "none" if empty.
-.new
 This condition may be used in DKIM, MIME, PRDR and DATA ACLs.
-.wen
 
 A basic verification might be:
 .code
@@ -42250,9 +42266,7 @@ see the documentation of the &%$dkim_verify_status%& expansion variable above
 for more information of what they mean.
 
 The condition is true if the status
-.new
 (or any of the list of status values)
-.wen
 is any one of the supplied list.
 .endlist
 
@@ -43138,7 +43152,6 @@ expansion must check this, as it will be called for every possible event type.
 
 .new
 The current list of events is:
-.wen
 .itable all 0 0 4 25* left 10* center 15* center 50* left
 .row auth:fail             after    both       "per driver per authentication attempt"
 .row dane:fail              after    transport  "per connection"
@@ -43157,7 +43170,10 @@ The current list of events is:
 .row tls:fail:connect       after    main       "per connection"
 .row smtp:connect           after    transport  "per connection"
 .row smtp:ehlo              after    transport  "per connection"
+.row smtp:fail:protocol     after    main       "per connection"
+.row smtp:fail:syntax       after    main       "per connection"
 .endtable
+.wen
 New event types may be added in future.
 
 The event name is a colon-separated list, defining the type of
@@ -43173,6 +43189,7 @@ should define the event action.
 
 An additional variable, &$event_data$&, is filled with information varying
 with the event type:
+.new
 .itable all 0 0 2 20* left 80* left
 .row auth:fail           "smtp response"
 .row dane:fail            "failure reason"
@@ -43188,7 +43205,10 @@ with the event type:
 .row tls:fail:connect     "error string"
 .row smtp:connect         "smtp banner"
 .row smtp:ehlo            "smtp ehlo response"
+.row smtp:fail:protocol   "error string"
+.row smtp:fail:syntax     "error string"
 .endtable
+.wen
 
 The :defer events populate one extra variable: &$event_defer_errno$&.
 
@@ -43226,10 +43246,8 @@ chain element received on the connection.
 For OpenSSL it will trigger for every chain element including those
 loaded locally.
 
-.new
 For dns:fail events from dnsdb lookups, a &"defer_never"& option does not
 affect the reporting of DNS_AGAIN.
-.wen
 
 . ////////////////////////////////////////////////////////////////////////////
 . ////////////////////////////////////////////////////////////////////////////