X-Git-Url: https://git.exim.org/users/heiko/exim.git/blobdiff_plain/7a5698faf84452ff9dcef170b3580921a4c3c9bf..ff57314ec0e6f83302fb2644ca16928322ff62a1:/doc/doc-docbook/spec.xfpt diff --git a/doc/doc-docbook/spec.xfpt b/doc/doc-docbook/spec.xfpt index bf50a9be8..31767bf55 100644 --- a/doc/doc-docbook/spec.xfpt +++ b/doc/doc-docbook/spec.xfpt @@ -179,12 +179,7 @@ EximMaintainers EM - -.version - - -.fulldate - +.versiondatexml EM @@ -8268,10 +8263,13 @@ apply to temporary DNS errors, whose handling is described in the next section. .cindex "&`+include_unknown`&" .cindex "&`+ignore_unknown`&" -By default, Exim behaves as if the host does not match the list. This may not -always be what you want to happen. To change Exim's behaviour, the special -items &`+include_unknown`& or &`+ignore_unknown`& may appear in the list (at -top level &-- they are not recognized in an indirected file). +Exim parses a host list from left to right. If it encounters a permanent +lookup failure in any item in the host list before it has found a match, +Exim treats it as a failure and the default behavior is as if the host +does not match the list. This may not always be what you want to happen. +To change Exim's behaviour, the special items &`+include_unknown`& or +&`+ignore_unknown`& may appear in the list (at top level &-- they are +not recognized in an indirected file). .ilist If any item that follows &`+include_unknown`& requires information that @@ -8299,6 +8297,37 @@ Both &`+include_unknown`& and &`+ignore_unknown`& may appear in the same list. The effect of each one lasts until the next, or until the end of the list. +To explain the host/ip processing logic a different way for the same ACL: + +.ilist +If you have name lookups or wildcarded host names and +IP addresses in the same host list, you should normally put the IP +addresses first. For example, in an ACL you could have: +.code +accept hosts = 10.9.8.7 : *.friend.example +.endd +The reason you normally would order it this way lies in the +left-to-right way that Exim processes lists. It can test IP addresses +without doing any DNS lookups, but when it reaches an item that requires +a host name, it fails if it cannot find a host name to compare with the +pattern. If the above list is given in the opposite order, the +&%accept%& statement fails for a host whose name cannot be found, even +if its IP address is 10.9.8.7. + +.next +If you really do want to do the name check first, and still recognize the IP +address, you can rewrite the ACL like this: +.code +accept hosts = *.friend.example +accept hosts = 10.9.8.7 +.endd +If the first &%accept%& fails, Exim goes on to try the second one. See chapter +&<>& for details of ACLs. Alternatively, you can use +&`+ignore_unknown`&, which was discussed in depth in the first example in +this section. +.endlist + + .section "Temporary DNS errors when looking up host information" &&& "SECTtemdnserr" @@ -10337,6 +10366,8 @@ ${if forany{<, $recipients}{match{$item}{^user3@}}{yes}{no}} The value of &$item$& is saved and restored while &*forany*& or &*forall*& is being processed, to enable these expansion items to be nested. +To scan a named list, expand it with the &*listnamed*& operator. + .vitem &*ge&~{*&<&'string1'&>&*}{*&<&'string2'&>&*}*& &&& &*gei&~{*&<&'string1'&>&*}{*&<&'string2'&>&*}*& @@ -10880,6 +10911,16 @@ the value of &$authenticated_id$& is normally the login name of the calling process. However, a trusted user can override this by means of the &%-oMai%& command line option. +.vitem &$authenticated_fail_id$& +.cindex "authentication" "fail" "id" +.vindex "&$authenticated_fail_id$&" +When an authentication attempt fails, the variable &$authenticated_fail_id$& +will contain the failed authentication id. If more than one authentication +id is attempted, it will contain only the last one. The variable is +available for processing in the ACL's, generally the quit or notquit ACL. +A message to a local recipient could still be accepted without requiring +authentication, which means this variable could also be visible in all of +the ACL's as well. @@ -13984,7 +14025,7 @@ This option will let GnuTLS (2.12.0 or later) autoload PKCS11 modules with the p11-kit configuration files in &_/etc/pkcs11/modules/_&. See -&url(http://www.gnu.org/software/gnutls/manual/gnutls.html#Smart-cards-and-HSMs) +&url(http://www.gnutls.org/manual/gnutls.html#Smart-cards-and-HSMs) for documentation. .wen @@ -14740,6 +14781,8 @@ Possible options may include: .next &`no_tlsv1_2`& .next +&`safari_ecdhe_ecdsa_bug`& +.next &`single_dh_use`& .next &`single_ecdh_use`& @@ -14755,6 +14798,15 @@ Possible options may include: &`tls_rollback_bug`& .endlist +.new +As an aside, the &`safari_ecdhe_ecdsa_bug`& item is a misnomer and affects +all clients connecting using the MacOS SecureTransport TLS facility prior +to MacOS 10.8.4, including email clients. If you see old MacOS clients failing +to negotiate TLS then this option value might help, provided that your OpenSSL +release is new enough to contain this work-around. This may be a situation +where you have to upgrade OpenSSL to get buggy clients working. +.wen + .option oracle_servers main "string list" unset .cindex "Oracle" "server list" @@ -15324,6 +15376,13 @@ live with. . Allow this long option name to split; give it unsplit as a fifth argument . for the automatic .oindex that is generated by .option. +. We insert " &~&~" which is both pretty nasty visually and results in +. non-searchable text. HowItWorks.txt mentions an option for inserting +. zero-width-space, which would be nicer visually and results in (at least) +. html that Firefox will split on when it's forced to reflow (rather than +. inserting a horizontal scrollbar). However, the text is still not +. 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 @@ -15375,10 +15434,9 @@ also &%queue_only%&, &%queue_only_load%&, &%queue_smtp_domains%&, and the various &%-od%&&'x'& command line options. -. Allow this long option name to split; give it unsplit as a fifth argument -. for the automatic .oindex that is generated by .option. +. See the comment on smtp_accept_max_per_connection -.option "smtp_accept_queue_per_ &~&~connection" main integer 10 &&& +.option "smtp_accept_queue_per_connection" main integer 10 &&& smtp_accept_queue_per_connection .cindex "queueing incoming messages" .cindex "message" "queueing by message count" @@ -16018,6 +16076,21 @@ The available primes are: Some of these will be too small to be accepted by clients. Some may be too large to be accepted by clients. +The TLS protocol does not negotiate an acceptable size for this; clients tend +to hard-drop connections if what is offered by the server is unacceptable, +whether too large or too small, and there's no provision for the client to +tell the server what these constraints are. Thus, as a server operator, you +need to make an educated guess as to what is most likely to work for your +userbase. + +Some known size constraints suggest that a bit-size in the range 2048 to 2236 +is most likely to maximise interoperability. The upper bound comes from +applications using the Mozilla Network Security Services (NSS) library, which +used to set its &`DH_MAX_P_BITS`& upper-bound to 2236. This affects many +mail user agents (MUAs). The lower bound comes from Debian installs of Exim4 +prior to the 4.80 release, as Debian used to patch Exim to raise the minimum +acceptable bound from 1024 to 2048. + .option tls_on_connect_ports main "string list" unset This option specifies a list of incoming SSMTP (aka SMTPS) ports that should @@ -23537,7 +23610,7 @@ In practice, almost all rules start with a domain name pattern without a local part. .cindex "regular expressions" "in retry rules" -&*Warning*&: If you use a regular expression in a routing rule pattern, it +&*Warning*&: If you use a regular expression in a retry rule pattern, it must match a complete address, not just a domain, because that is how regular expressions work in address lists. .display @@ -24520,7 +24593,8 @@ to be returned. If the result of a successful expansion is an empty string, expansion is &"1"&, &"yes"&, or &"true"&, authentication succeeds and the generic &%server_set_id%& option is expanded and saved in &$authenticated_id$&. For any other result, a temporary error code is returned, with the expanded -string as the error text. +string as the error text, and the failed id saved in +&$authenticated_fail_id$&. &*Warning*&: If you use a lookup in the expansion to find the user's password, be sure to make the authentication fail if the user is unknown. @@ -25584,10 +25658,10 @@ aware of future feature enhancements of GnuTLS. Documentation of the strings accepted may be found in the GnuTLS manual, under "Priority strings". This is online as -&url(http://www.gnu.org/software/gnutls/manual/html_node/Priority-Strings.html), +&url(http://www.gnutls.org/manual/html_node/Priority-Strings.html), but beware that this relates to GnuTLS 3, which may be newer than the version installed on your system. If you are using GnuTLS 3, -&url(http://www.gnu.org/software/gnutls/manual/html_node/Listing-the-ciphersuites-in-a-priority-string.html, then the example code) +&url(http://www.gnutls.org/manual/gnutls.html#Listing-the-ciphersuites-in-a-priority-string, then the example code) on that site can be used to test a given string. Prior to Exim 4.80, an older API of GnuTLS was used, and Exim supported three @@ -25673,7 +25747,7 @@ tls_dhparam = none This may also be set to a string identifying a standard prime to be used for DH; if it is set to &`default`& or, for OpenSSL, is unset, then the prime used is &`ike23`&. There are a few standard primes available, see the -documetnation for &%tls_dhparam%& for the complete list. +documentation for &%tls_dhparam%& for the complete list. See the command .code @@ -34422,14 +34496,14 @@ options are available: .vlist .vitem &*-f*&&~<&'regex'&> -Match the sender address. The field that is tested is enclosed in angle -brackets, so you can test for bounce messages with +Match the sender address using a case-insensitive search. The field that is +tested is enclosed in angle brackets, so you can test for bounce messages with .code exiqgrep -f '^<>$' .endd .vitem &*-r*&&~<&'regex'&> -Match a recipient address. The field that is tested is not enclosed in angle -brackets. +Match a recipient address using a case-insensitve search. The field that is +tested is not enclosed in angle brackets. .vitem &*-s*&&~<&'regex'&> Match against the size field. @@ -36374,7 +36448,7 @@ integer size comparisons against this value. A colon-separated list of names of headers included in the signature. .vitem &%$dkim_key_testing%& "1" if the key record has the "testing" flag set, "0" if not. -.vitem &%$nosubdomains%& +.vitem &%$dkim_key_nosubdomains%& "1" if the key record forbids subdomaining, "0" otherwise. .vitem &%$dkim_key_srvtype%& Service type (tag s=) from the key record. Defaults to "*" if not specified