Option for taint when setting variable under -be
[exim.git] / doc / doc-docbook / spec.xfpt
index 493c094cde59c939d584bfa8e955ec512d01b3ab..d71d3696f4603a05f96a32c91312345a2f5f3307 100644 (file)
@@ -2886,6 +2886,11 @@ 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'&>
@@ -8156,13 +8161,20 @@ option, you can still update it by a query of this form:
 ${lookup pgsql,servers=master/db/name/pw {UPDATE ...} }
 .endd
 
-An older syntax places the servers specification before the query,
+.new
+A now-deprecated syntax places the servers specification before the query,
 semicolon separated:
 .code
 ${lookup mysql{servers=master; UPDATE ...} }
 .endd
-The new version avoids potential issues with tainted
-arguments in the query, for explicit expansion.
+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.
+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.
 
 
@@ -8339,6 +8351,9 @@ type of match and is given below as the &*value*& information.
 .section "Expansion of lists" "SECTlistexpand"
 .cindex "expansion" "of lists"
 Each list is expanded as a single string before it is used.
+.cindex "tainted data" tracking
+&*Note*&: As a result, if any componend was tainted then the
+entire result string becomes tainted.
 
 &'Exception: the router headers_remove option, where list-item
 splitting is done before string-expansion.'&
@@ -9534,6 +9549,9 @@ start of a portion of the string that is interpreted and replaced as described
 below in section &<<SECTexpansionitems>>& onwards. Backslash is used as an
 escape character, as described in the following section.
 
+.cindex "tainted data" tracking
+If any porttion of the result string is tainted, the entire result is.
+
 Whether a string is expanded depends upon the context.  Usually this is solely
 dependent upon the option for which a value is sought; in this documentation,
 options for which string expansion is performed are marked with &dagger; after
@@ -14959,6 +14977,7 @@ See also the &'Policy controls'& section above.
 .row &%dsn_advertise_hosts%&         "advertise DSN extensions to these hosts"
 .row &%ignore_fromline_hosts%&       "allow &""From ""& from these hosts"
 .row &%ignore_fromline_local%&       "allow &""From ""& from local SMTP"
+.row &%limits_advertise_hosts%&      "advertise LIMITS to these hosts"
 .row &%pipelining_advertise_hosts%&  "advertise pipelining to these hosts"
 .row &%pipelining_connect_advertise_hosts%& "advertise pipelining to these hosts"
 .row &%prdr_enable%&                 "advertise PRDR to all hosts"
@@ -15706,9 +15725,9 @@ the ACL once for each signature in the message.
 See section &<<SECDKIMVFY>>&.
 
 
-.option dmarc_forensic_sender main string&!! unset
-.option dmarc_history_file main string unset
-.option dmarc_tld_file main string unset
+.option 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.
@@ -16543,6 +16562,18 @@ 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
+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"
 .cindex "&'From:'& header line" "disabling checking of"
@@ -17446,16 +17477,26 @@ or if the message was submitted locally (not using TCP/IP), and the &%-bnq%&
 option was not set.
 
 
-.option recipients_max main integer 50000
+.option recipients_max main integer&!! 50000
 .cindex "limit" "number of recipients"
 .cindex "recipient" "maximum number"
-If this option is set greater than zero, it specifies the maximum number of
+If the value resulting from expanding this option
+is set greater than zero, it specifies the maximum number of
 original recipients for any message. Additional recipients that are generated
 by aliasing or forwarding do not count. SMTP messages get a 452 response for
 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
 RCPT commands in a single message.
@@ -25343,6 +25384,13 @@ 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
 .cindex "TLS" "requiring specific ciphers for DANE"
@@ -25919,6 +25967,14 @@ 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
 .cindex "line length" limit
@@ -25950,6 +26006,14 @@ 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"
 .cindex "port" "sending TCP/IP"
 .cindex "TCP/IP" "setting outgoing port"
@@ -30706,6 +30770,10 @@ and the &%acl_smtp_mime%& ACLs.
 The &%acl_smtp_dkim%& ACL is available only when Exim is compiled with DKIM support
 enabled (which is the default).
 
+If, for a specific message, an ACL control
+&*dkim_disable_verify*&
+has been set, this &%acl_smtp_dkim%& ACL is not called.
+
 The ACL test specified by &%acl_smtp_dkim%& happens after a message has been
 received, and is executed for each DKIM signature found in a message.  If not
 otherwise specified, the default action is to accept.
@@ -41537,8 +41605,11 @@ Exim's DKIM implementation allows for
 .olist
 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.
+(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
@@ -41746,10 +41817,11 @@ 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.
-Otherwise, must be an unsigned number giving an offset in seconds from the current time
-for the expiry tag
-(eg. 1209600 for two weeks);
-both creation (t=) and expiry (x=) tags 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.