tidying: formatted listmaker
[exim.git] / doc / doc-docbook / spec.xfpt
index 816db59f9c0b3e5c6fe03c3d5d1f0751782ccd30..72ecedc91d72f38ea0ded011eb9b68116b773829 100644 (file)
@@ -2069,19 +2069,29 @@ withdrawn.
 
 
 
 
 
 
-.section "Dynamically loaded lookup module support" "SECTdynamicmodules"
+.section "Dynamically loaded module support" "SECTdynamicmodules"
 .cindex "lookup modules"
 .cindex "lookup modules"
+.cindex "router modules"
+.cindex "transport modules"
+.cindex "authenticator modules"
 .cindex "dynamic modules"
 .cindex ".so building"
 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
 .cindex "dynamic modules"
 .cindex ".so building"
 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.
 dependencies.
-Most, but not all, lookup types can be built this way.
+.new
+Any combination of lookup types can be built this way.
+Lookup types that provide several variants will be loaded as
+Exim starts.
+Types that provide only one method are not loaded until used by
+the runtime configuration.
+.wen
 
 
-Set &`LOOKUP_MODULE_DIR`& to the directory into which the modules will be
+For building
+set &`LOOKUP_MODULE_DIR`& to the directory into which the modules will be
 installed; Exim will only load modules from that directory, as a security
 measure.  You will need to set &`CFLAGS_DYNAMIC`& if not already defined
 for your OS; see &_OS/Makefile-Linux_& for an example.
 installed; Exim will only load modules from that directory, as a security
 measure.  You will need to set &`CFLAGS_DYNAMIC`& if not already defined
 for your OS; see &_OS/Makefile-Linux_& for an example.
@@ -2091,12 +2101,25 @@ 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
 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
 LOOKUP_MYSQL=2
 .endd
 .code
 LOOKUP_LSEARCH=yes
 LOOKUP_SQLITE=2
 LOOKUP_MYSQL=2
 .endd
+Set also &`LOOKUP_`&<&'lookup_type'&>&` INCLUDE`& and
+&`LOOKUP_`&<&'lookup_type'&>`_LIBS if needed for each lookup type,
+ensuring that duplicates are not present in more global values.
+
+.new
+Similarly, authenticator, router and transport drivers can be built
+as external modules.
+Modules will be searched for as demanded by the runtime configuration,
+permitting a smaller Exim binary.
+
+For building, as above but using
+&`AUTH_*`&, &`ROUTER_*`& and &`TRANSPORT_*`& instead of &`LOOKUP_*`&,
+.wen
 
 
 .section "The building process" "SECID29"
 
 
 .section "The building process" "SECID29"
@@ -5452,7 +5475,7 @@ 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.
 
 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"
+.subsection "Changing list separators" "SECTlistsepchange"
 .cindex "list separator" "changing"
 .cindex "IPv6" "addresses in lists"
 Doubling colons in IPv6 addresses is an unwelcome chore, so a mechanism was
 .cindex "list separator" "changing"
 .cindex "IPv6" "addresses in lists"
 Doubling colons in IPv6 addresses is an unwelcome chore, so a mechanism was
@@ -5493,7 +5516,7 @@ enclosing an empty list item.
 
 
 
 
 
 
-.section "Empty items in lists" "SECTempitelis"
+.subsection "Empty items in lists" "SECTempitelis"
 .cindex "list" "empty item in"
 An empty item at the end of a list is always ignored. In other words, trailing
 separator characters are ignored. Thus, the list in
 .cindex "list" "empty item in"
 An empty item at the end of a list is always ignored. In other words, trailing
 separator characters are ignored. Thus, the list in
@@ -8198,7 +8221,7 @@ ${lookup mysql{servers=master; UPDATE ...} }
 The new version avoids issues with tainted
 arguments explicitly expanded as part of the query.
 The entire string within the braces becomes tainted,
 The new version avoids issues with tainted
 arguments explicitly expanded as part of the query.
 The entire string within the braces becomes tainted,
-including the server sepcification - which is not permissible.
+including the server specification - 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.
 
 If the older sytax is used, a warning message will be logged.
 This syntax will be removed in a future release.
 
@@ -10810,7 +10833,7 @@ will sort an MX lookup into priority order.
 
 
 .vitem &*${srs_encode&~{*&<&'secret'&>&*}{*&<&'return&~path'&>&*}{*&<&'original&~domain'&>&*}}*&
 
 
 .vitem &*${srs_encode&~{*&<&'secret'&>&*}{*&<&'return&~path'&>&*}{*&<&'original&~domain'&>&*}}*&
-SRS encoding.  See SECT &<<SECTSRS>>& for details.
+SRS encoding.  See section &<<SECTSRS>>& for details.
 
 
 
 
 
 
@@ -16258,7 +16281,7 @@ set.
 .cindex "underscore in EHLO/HELO"
 This option can be set to a string of rogue characters that are permitted in
 non-ip-literal EHLO and HELO names in addition to the standard letters, digits,
 .cindex "underscore in EHLO/HELO"
 This option can be set to a string of rogue characters that are permitted in
 non-ip-literal EHLO and HELO names in addition to the standard letters, digits,
-hyphens, and dots. For examplem if you really must allow underscores,
+hyphens, and dots. For example if you really must allow underscores,
 you can set
 .code
 helo_allow_chars = _
 you can set
 .code
 helo_allow_chars = _
@@ -16632,7 +16655,7 @@ has been built with LDAP support.
 .cindex "ESMTP extensions" LIMITS
 This option can be used to suppress the advertisement of the SMTP
 LIMITS extension (RFC 9422) to specific hosts.
 .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.
 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.
@@ -17196,7 +17219,7 @@ See also the &%hosts_pipe_connect%& smtp transport option.
 
 The SMTP service extension keyword advertised is &"PIPECONNECT"&;
 it permits the client to pipeline
 
 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.
 
 or TLS-establishment and hello command (encrypted phase),
 on later connections to the same host.
 
@@ -32032,12 +32055,17 @@ This control turns off DKIM verification processing entirely.  For details on
 the operation and configuration of DKIM, see section &<<SECDKIM>>&.
 
 
 the operation and configuration of DKIM, see section &<<SECDKIM>>&.
 
 
-.vitem &*control&~=&~dmarc_disable_verify*&
+.vitem &*control&~=&~dmarc_disable_verify*& &&&
+       &*control&~=&~dmarc_enable_forensic*&
 .cindex "disable DMARC verify"
 .cindex "disable DMARC verify"
-.cindex "DMARC" "disable verify"
-This control turns off DMARC verification processing entirely.  For details on
+.cindex DMARC "disable verify"
+.cindex DMARC controls
+.cindex DMARC "forensic mails"
+These control affect DMARC processing.  For details on
 the operation and configuration of DMARC, see section &<<SECDMARC>>&.
 
 the operation and configuration of DMARC, see section &<<SECDMARC>>&.
 
+The &"disable"& turns off DMARC verification processing entirely.
+
 
 .vitem &*control&~=&~dscp/*&<&'value'&>
 .cindex "&ACL;" "setting DSCP value"
 
 .vitem &*control&~=&~dscp/*&<&'value'&>
 .cindex "&ACL;" "setting DSCP value"
@@ -35954,7 +35982,7 @@ The third argument may be NULL, in which case the &%-oMas%& option is omitted.
 
 
 .vitem &*void&~debug_printf(char&~*,&~...)*&
 
 
 .vitem &*void&~debug_printf(char&~*,&~...)*&
-This is Exim's debugging function, with arguments as for &'(printf()'&. The
+This is Exim's debugging function, with arguments as for &'printf()'&. The
 output is written to the standard error stream. If no debugging is selected,
 calls to &'debug_printf()'& have no effect. Normally, you should make calls
 conditional on the &`local_scan`& debug selector by coding like this:
 output is written to the standard error stream. If no debugging is selected,
 calls to &'debug_printf()'& have no effect. Normally, you should make calls
 conditional on the &`local_scan`& debug selector by coding like this:
@@ -42291,6 +42319,12 @@ This includes retransmissions done by traditional forwarders.
 SPF verification support is built into Exim if SUPPORT_SPF=yes is set in
 &_Local/Makefile_&.  The support uses the &_libspf2_& library
 &url(https://www.libspf2.org/).
 SPF verification support is built into Exim if SUPPORT_SPF=yes is set in
 &_Local/Makefile_&.  The support uses the &_libspf2_& library
 &url(https://www.libspf2.org/).
+.new
+.cindex "dynamic modules"
+The support can be built as a dynamic-load module if desired;
+see the comments in that Makefile.
+.wen
+
 There is no Exim involvement in the transmission of messages;
 publishing certain DNS records is all that is required.
 
 There is no Exim involvement in the transmission of messages;
 publishing certain DNS records is all that is required.