${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.
.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.'&
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 † after
.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"
+.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"
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.
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"
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
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"
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.
.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