X-Git-Url: https://git.exim.org/users/jgh/exim.git/blobdiff_plain/b8514d1960e259d49ab2c84c89eba52ab993da3f..6e2400bf8b3c728f5bf8af52054fcab4e2351e21:/doc/doc-docbook/spec.xfpt?ds=sidebyside diff --git a/doc/doc-docbook/spec.xfpt b/doc/doc-docbook/spec.xfpt index e5a3c4be8..e29f1333a 100644 --- a/doc/doc-docbook/spec.xfpt +++ b/doc/doc-docbook/spec.xfpt @@ -9472,7 +9472,7 @@ Common ways of obtaining untainted equivalents of variables with tainted values .cindex "tainted data" "de-tainting" come down to using the tainted value as a lookup key in a trusted database. -This database could be the filestem structure, +This database could be the filesystem structure, or the password file, or accessed via a DBMS. Specific methods are indexed under &"de-tainting"&. @@ -10201,7 +10201,7 @@ in a list using the given separator. .wen -.vitem "&*${lookup{*&<&'key'&>&*}&~*&<&'search&~type'&>&*&~&&& +.vitem "&*${lookup&~{*&<&'key'&>&*}&~*&<&'search&~type'&>&*&~&&& {*&<&'file'&>&*}&~{*&<&'string1'&>&*}&~{*&<&'string2'&>&*}}*&" &&& "&*${lookup&~*&<&'search&~type'&>&*&~{*&<&'query'&>&*}&~&&& {*&<&'string1'&>&*}&~{*&<&'string2'&>&*}}*&" @@ -12472,8 +12472,9 @@ the complete argument of the ETRN command (see section &<>&). .cindex "tainted data" If the origin of the data is an incoming message, -the result of expanding this variable is tainted. -When un untainted version is needed, one should be obtained from +the result of expanding this variable is tainted and may not +be further expanded or used as a filename. +When an untainted version is needed, one should be obtained from looking up the value in a local (therefore trusted) database. Often &$domain_data$& is usable in this role. @@ -12672,7 +12673,8 @@ once. .cindex "tainted data" If the origin of the data is an incoming message, -the result of expanding this variable is tainted. +the result of expanding this variable is tainted and +may not be further expanded or used as a filename. &*Warning*&: the content of this variable is usually provided by a potential attacker. @@ -13808,6 +13810,8 @@ Observability for TLS session resumption. See &<>& for details. .vindex "&$tls_in_sni$&" .vindex "&$tls_sni$&" .cindex "TLS" "Server Name Indication" +.cindex "TLS" SNI +.cindex SNI "observability on server" When a TLS session is being established, if the client sends the Server Name Indication extension, the value will be placed in this variable. If the variable appears in &%tls_certificate%& then this option and @@ -13823,6 +13827,8 @@ the outbound. .vitem &$tls_out_sni$& .vindex "&$tls_out_sni$&" .cindex "TLS" "Server Name Indication" +.cindex "TLS" SNI +.cindex SNI "observability in client" During outbound SMTP deliveries, this variable reflects the value of the &%tls_sni%& option on the transport. @@ -17990,6 +17996,7 @@ syslog. The value must be no longer than 32 characters. See chapter .option syslog_timestamp main boolean true .cindex "syslog" "timestamps" +.cindex timestamps syslog If &%syslog_timestamp%& is set false, the timestamps on Exim's log lines are omitted when these lines are sent to syslog. See chapter &<>& for details of Exim's logging. @@ -18145,6 +18152,7 @@ when a list of more than one file is used, the &$tls_in_ourcert$& variable is unreliable. The macro "_TLS_BAD_MULTICERT_IN_OURCERT" will be defined for those versions. +.cindex SNI "selecting server certificate based on" If the option contains &$tls_out_sni$& and Exim is built against OpenSSL, then if the OpenSSL build supports TLS extensions and the TLS client sends the Server Name Indication extension, then this option and others documented in @@ -25697,6 +25705,8 @@ See &<>& for details. .option tls_sni smtp string&!! unset .cindex "TLS" "Server Name Indication" +.cindex "TLS" SNI +.cindex SNI "setting in client" .vindex "&$tls_sni$&" If this option is set then it sets the $tls_out_sni variable and causes any TLS session to pass this value as the Server Name Indication extension to @@ -29242,8 +29252,14 @@ certificate verification to the listed servers. Verification either must or need not succeed respectively. The &%tls_verify_cert_hostnames%& option lists hosts for which additional -checks are made: that the host name (the one in the DNS A record) -is valid for the certificate. +name checks are made on the server certificate. +.new +The match against this list is, as per other Exim usage, the +IP for the host. That is most closely associated with the +name on the DNS A (or AAAA) record for the host. +However, the name that needs to be in the certificate +is the one at the head of any CNAME chain leading to the A record. +.wen The option defaults to always checking. The &(smtp)& transport has two OCSP-related options: @@ -29293,6 +29309,8 @@ outgoing connection. .section "Use of TLS Server Name Indication" "SECTtlssni" .cindex "TLS" "Server Name Indication" +.cindex "TLS" SNI +.cindex SNI .vindex "&$tls_in_sni$&" .oindex "&%tls_in_sni%&" With TLS1.0 or above, there is an extension mechanism by which extra @@ -31770,8 +31788,9 @@ send email. Details of how this works are given in section .cindex "header lines" "verifying header names only ASCII" .cindex "verifying" "header names only ASCII" This condition is relevant only in an ACL that is run after a message has been -received, that is, in an ACL specified by &%acl_smtp_data%& or -&%acl_not_smtp%&. It checks all header names (not the content) to make sure +received. +This usually means an ACL specified by &%acl_smtp_data%& or &%acl_not_smtp%&. +It checks all header names (not the content) to make sure there are no non-ASCII characters, also excluding control characters. The allowable characters are decimal ASCII values 33 through 126. @@ -31926,7 +31945,7 @@ 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:}}{/}{//}} +verify = sender=${listquote{/}{${address:$h_sender:}}} .endd .endlist @@ -35457,14 +35476,14 @@ address if its delivery failed. .section "Per-address filtering" "SECTperaddfil" -.vindex "&$domain$&" -.vindex "&$local_part$&" +.vindex "&$domain_data$&" +.vindex "&$local_part_data$&" In contrast to the system filter, which is run just once per message for each delivery attempt, it is also possible to set up a system-wide filtering operation that runs once for each recipient address. In this case, variables -such as &$local_part$& and &$domain$& can be used, and indeed, the choice of -filter file could be made dependent on them. This is an example of a router -which implements such a filter: +such as &$local_part_data$& and &$domain_data$& can be used, +and indeed, the choice of filter file could be made dependent on them. +This is an example of a router which implements such a filter: .code central_filter: check_local_user @@ -37285,7 +37304,7 @@ follows: .code my_mailboxes: driver = appendfile - file = /var/mail/$domain/$local_part_data + file = /var/mail/$domain_data/$local_part_data user = mail .endd This uses a directory of mailboxes for each domain. The &%user%& setting is @@ -37325,7 +37344,7 @@ It runs a user's &_.forward_& file for all local parts of the form cases by testing the variable &$local_part_suffix$&. For example: .code if $local_part_suffix contains -special then -save /home/$local_part/Mail/special +save /home/$local_part_data/Mail/special endif .endd If the filter file does not exist, or does not deal with such addresses, they @@ -38671,6 +38690,7 @@ an asterisk is appended to the X= cipher field in the log line. .next .cindex "log" "TLS SNI" .cindex "TLS" "logging SNI" +.cindex SNI logging &%tls_sni%&: When a message is received over an encrypted connection, and the remote host provided the Server Name Indication extension, the SNI is added to the log line, preceded by SNI=.