X-Git-Url: https://git.exim.org/exim.git/blobdiff_plain/9f691660159a9279353a99fca776c7687faaae26..564960ff88ddf58b15acad60e3d5d06d84293c6a:/doc/doc-docbook/spec.xfpt diff --git a/doc/doc-docbook/spec.xfpt b/doc/doc-docbook/spec.xfpt index 67d79aa7a..105e2fc5d 100644 --- a/doc/doc-docbook/spec.xfpt +++ b/doc/doc-docbook/spec.xfpt @@ -239,14 +239,6 @@ failure report bounce message - - de-tainting - tainting, de-tainting - - - detainting - tainting, de-tainting - dialup intermittently connected hosts @@ -1811,9 +1803,13 @@ the traditional &'ndbm'& interface. .next To complicate things further, there are several very different versions of the Berkeley DB package. Version 1.85 was stable for a very long time, releases -2.&'x'& and 3.&'x'& were current for a while, but the latest versions when Exim last revamped support were numbered 4.&'x'&. -Maintenance of some of the earlier releases has ceased. All versions of -Berkeley DB could be obtained from +2.&'x'& and 3.&'x'& were current for a while, +.new +but the latest versions when Exim last revamped support were numbered 5.&'x'&. +Maintenance of some of the earlier releases has ceased, +and Exim no longer supports versions before 3.&'x'&. +.wen +All versions of Berkeley DB could be obtained from &url(http://www.sleepycat.com/), which is now a redirect to their new owner's page with far newer versions listed. It is probably wise to plan to move your storage configurations away from @@ -1837,6 +1833,9 @@ USE_DB=yes .endd Similarly, for gdbm you set USE_GDBM, and for tdb you set USE_TDB. An error is diagnosed if you set more than one of these. +.new +You can set USE_NDBM if needed to override an operating system default. +.wen At the lowest level, the build-time configuration sets none of these options, thereby assuming an interface of type (1). However, some operating system @@ -1851,7 +1850,11 @@ in one of these lines: .code DBMLIB = -ldb DBMLIB = -ltdb +DBMLIB = -lgdbm -lgdbm_compat .endd +.new +The last of those was for a Linux having GDBM provide emulated NDBM facilities. +.wen Settings like that will work if the DBM library is installed in the standard place. Sometimes it is not, and the library's header file may also not be in the default path. You may need to set INCLUDE to specify where the header @@ -6836,6 +6839,12 @@ version of the lookup key. The &'query-style'& type accepts a generalized database query. No particular key value is assumed by Exim for query-style lookups. You can use whichever Exim variables you need to construct the database query. +.cindex "tainted data" "quoting for lookups" +.new +If tainted data is used in the query then it should be quuted by +using the &*${quote_*&<&'lookup-type'&>&*:*&<&'string'&>&*}*& expansion operator +appropriate for the lookup. +.wen .endlist The code for each lookup type is in a separate source file that is included in @@ -6989,7 +6998,7 @@ IPv4, in dotted-quad form. (Exim converts IPv4-mapped IPv6 addresses to this notation before executing the lookup.) One option is supported, "ret=full", to request the return of the entire line -rather than omitting the key porttion. +rather than omitting the key portion. Note however that the key portion will have been de-quoted. .next @@ -9617,8 +9626,6 @@ reasons, .cindex expansion "tainted data" and expansion of data deriving from the sender (&"tainted data"&) is not permitted (including acessing a file using a tainted name). -The main config option &%allow_insecure_tainted_data%& can be used as -mitigation during uprades to more secure configurations. Common ways of obtaining untainted equivalents of variables with tainted values @@ -11895,6 +11902,19 @@ ${if inlisti{Needle}{fOo:NeeDLE:bAr}} ${if forany{fOo:NeeDLE:bAr}{eqi{$item}{Needle}}} .endd +.new +The variable &$value$& will be set for a successful match and can be +used in the success clause of an &%if%& expansion item using the condition. +.cindex "tainted data" "de-tainting" +It will have the same taint status as the list; expansions such as +.code +${if inlist {$h_mycode:} {0 : 1 : 42} {$value}} +.endd +can be used for de-tainting. +Any previous &$value$& is restored after the if. +.wen + + .vitem &*isip&~{*&<&'string'&>&*}*& &&& &*isip4&~{*&<&'string'&>&*}*& &&& &*isip6&~{*&<&'string'&>&*}*& @@ -12091,6 +12111,18 @@ item can be used, as in all address lists, to cause subsequent items to have their local parts matched casefully. Domains are always matched caselessly. +.new +The variable &$value$& will be set for a successful match and can be +used in the success clause of an &%if%& expansion item using the condition. +.cindex "tainted data" "de-tainting" +It will have the same taint status as the list; expansions such as +.code +${if match_local_part {$local_part} {alice : bill : charlotte : dave} {$value}} +.endd +can be used for de-tainting. +Any previous &$value$& is restored after the if. +.wen + Note that <&'string2'&> is not itself subject to string expansion, unless Exim was built with the EXPAND_LISTMATCH_RHS option. @@ -14598,7 +14630,6 @@ listed in more than one group. .section "Miscellaneous" "SECID96" .table2 .row &%add_environment%& "environment variables" -.row &%allow_insecure_tainted_data%& "turn taint errors into warnings" .row &%bi_command%& "to run for &%-bi%& command line option" .row &%debug_store%& "do extra internal checks" .row &%disable_ipv6%& "do no IPv6 processing" @@ -15212,17 +15243,6 @@ domains (defined in the named domain list &%local_domains%& in the default configuration). This &"magic string"& matches the domain literal form of all the local host's IP addresses. -.option allow_insecure_tainted_data main boolean false -.cindex "de-tainting" -.oindex "allow_insecure_tainted_data" -The handling of tainted data may break older (pre 4.94) configurations. -Setting this option to "true" turns taint errors (which result in a temporary -message rejection) into warnings. This option is meant as mitigation only -and deprecated already today. Future releases of Exim may ignore it. -The &%taint%& log selector can be used to suppress even the warnings. - - - .option allow_mx_to_ip main boolean false .cindex "MX record" "pointing to IP address" It appears that more and more DNS zone administrators are breaking the rules @@ -31600,14 +31620,43 @@ sender when the destination system is doing content-scan based rejection. This control turns on debug logging, almost as though Exim had been invoked with &`-d`&, with the output going to a new logfile in the usual logs directory, by default called &'debuglog'&. -The filename can be adjusted with the &'tag'& option, which -may access any variables already defined. The logging may be adjusted with -the &'opts'& option, which takes the same values as the &`-d`& command-line -option. + .new -Logging started this way may be stopped by using the &'stop'& option. -The &'kill'& option additionally removes the debug file. +Options are a slash-separated list. +If an option takes an argument, the option name and argument are separated by +an equals character. +Several options are supported: .wen +.display +tag=<&'suffix'&> The filename can be adjusted with thise option. + The argument, which may access any variables already defined, + is appended to the default name. + +opts=<&'debug&~options'&> The argument specififes what is to be logged, + using the same values as the &`-d`& command-line option. + +stop Logging started with this control may be + stopped by using this option. + +kill Logging started with this control may be + stopped by using this option. + Additionally the debug file will be removed, + providing one means for speculative debug tracing. + +pretrigger=<&'size'&> This option specifies a memory buffuer to be used + for pre-trigger debug capture. + Debug lines are recorded in the buffer until + and if) a trigger occurs; at which time they are + dumped to the debug file. Newer lines displace the + oldest if the buffer is full. After a trigger, + immediate writes to file are done as normal. + +trigger=<&'reason'&> This option selects cause for the pretrigger buffer + see above) to be copied to file. A reason of $*now* + take effect immediately; one of &*paniclog*& triggers + on a write to the panic log. +.endd + Some examples (which depend on variables that don't exist in all contexts): .code @@ -31616,6 +31665,8 @@ contexts): control = debug/opts=+expand+acl control = debug/tag=.$message_exim_id/opts=+expand control = debug/kill + control = debug/opts=+all/pretrigger=1024/trigger=paniclog + control = debug/trigger=now .endd @@ -38859,7 +38910,6 @@ selection marked by asterisks: &` smtp_protocol_error `& SMTP protocol errors &` smtp_syntax_error `& SMTP syntax errors &` subject `& contents of &'Subject:'& on <= lines -&`*taint `& taint errors or warnings &`*tls_certificate_verified `& certificate verification status &`*tls_cipher `& TLS cipher suite on <= and => lines &` tls_peerdn `& TLS peer DN on <= and => lines @@ -39253,11 +39303,6 @@ using a CA trust anchor, &`CV=dane`& if using a DNS trust anchor, and &`CV=no`& if not. .next -.cindex "log" "Taint warnings" -&%taint%&: Log warnings about tainted data. This selector can't be -turned of if &%allow_insecure_tainted_data%& is false (which is the -default). -.next .cindex "log" "TLS cipher" .cindex "TLS" "logging cipher" &%tls_cipher%&: When a message is sent or received over an encrypted @@ -39402,9 +39447,6 @@ or (in case &*-a*& switch is specified) .code exim -bp .endd -The &*-C*& option is used to specify an alternate &_exim.conf_& which might -contain alternate exim configuration the queue management might be using. - to obtain a queue listing, and then greps the output to select messages that match given criteria. The following selection options are available: @@ -39461,7 +39503,22 @@ Display messages in reverse order. Include delivered recipients in queue listing. .endlist +The following options give alternates for configuration: + +.vlist +.vitem &*-C*&&~<&'config&~file'&> +is used to specify an alternate &_exim.conf_& which might +contain alternate exim configuration the queue management might be using. + +.vitem &*-E*&&~<&'path'&> +can be used to specify a path for the exim binary, +overriding the built-in one. +.endlist + There is one more option, &%-h%&, which outputs a list of options. +.new +At least one selection option, or either the &*-c*& or &*-h*& option, must be given. +.wen @@ -40980,8 +41037,18 @@ was received, in the conventional Unix form &-- the number of seconds since the start of the epoch. The second number is a count of the number of messages warning of delayed delivery that have been sent to the sender. -There follow a number of lines starting with a hyphen. These can appear in any -order, and are omitted when not relevant: +.new +There follow a number of lines starting with a hyphen. +These contain variables, can appear in any +order, and are omitted when not relevant. + +If there is a second hyphen after the first, +the corresponding data is tainted. +If there is a value in parentheses, the data is quoted for a lookup. + +The following word specifies a variable, +and the remainder of the item depends on the variable. +.wen .vlist .vitem "&%-acl%&&~<&'number'&>&~<&'length'&>" @@ -41137,9 +41204,6 @@ was received from the client, this records the Distinguished Name from that certificate. .endlist -Any of the above may have an extra hyphen prepended, to indicate the the -corresponding data is untrusted. - Following the options there is a list of those addresses to which the message is not to be delivered. This set of addresses is initialized from the command line when the &%-t%& option is used and &%extract_addresses_remove_arguments%&