X-Git-Url: https://git.exim.org/users/heiko/exim.git/blobdiff_plain/b049e2229b68834daa14c0befc6e7a875c466b7a..9e6d33dac93fe8b264c046fe8229b05971555a6d:/doc/doc-docbook/spec.xfpt diff --git a/doc/doc-docbook/spec.xfpt b/doc/doc-docbook/spec.xfpt index d3a1f758e..836142047 100644 --- a/doc/doc-docbook/spec.xfpt +++ b/doc/doc-docbook/spec.xfpt @@ -1,4 +1,4 @@ -. $Cambridge: exim/doc/doc-docbook/spec.xfpt,v 1.30 2008/01/28 18:30:29 fanf2 Exp $ +. $Cambridge: exim/doc/doc-docbook/spec.xfpt,v 1.35 2008/02/15 13:13:43 fanf2 Exp $ . . ///////////////////////////////////////////////////////////////////////////// . This is the primary source of the Exim Manual. It is an xfpt document that is @@ -367,6 +367,7 @@ contributors. .section "Exim documentation" "SECID1" +. Keep this example change bar when updating the documentation! .new .cindex "documentation" This edition of the Exim specification applies to version &version; of Exim. @@ -456,12 +457,12 @@ Squared, formerly Planet Online Ltd, whose support I gratefully acknowledge. .cindex "FAQ" As well as Exim distribution tar files, the Exim web site contains a number of differently formatted versions of the documentation. A recent addition to the -online information is the Exim wiki &new("(&url(http://wiki.exim.org))"), +online information is the Exim wiki (&url(http://wiki.exim.org)), which contains what used to be a separate FAQ, as well as various other examples, tips, and know-how that have been contributed by Exim users. .cindex Bugzilla -An Exim Bugzilla exists at &new("&url(http://bugs.exim.org)"). You can use +An Exim Bugzilla exists at &url(http://bugs.exim.org). You can use this to report bugs, and also to add items to the wish list. Please search first to check that you are not duplicating a previous entry. @@ -500,8 +501,8 @@ information will be posted at &url(http://www-tus.csx.cam.ac.uk/courses/exim/). .section "Bug reports" "SECID5" .cindex "bug reports" .cindex "reporting bugs" -Reports of obvious bugs &new("can be emailed to &'bugs@exim.org'& or reported -via the Bugzilla (&url(http://bugs.exim.org)).") However, if you are unsure +Reports of obvious bugs can be emailed to &'bugs@exim.org'& or reported +via the Bugzilla (&url(http://bugs.exim.org)). However, if you are unsure whether some behaviour is a bug or not, the best thing to do is to post a message to the &'exim-dev'& mailing list and have it discussed. @@ -1654,7 +1655,7 @@ architecture and operating system for itself, but the defaults can be overridden if necessary. -.section "PCRE library" "SECTdb" +.section "PCRE library" "SECTpcre" .cindex "PCRE library" Exim no longer has an embedded PCRE library as the vast majority of modern systems include PCRE as a system library, although you may need @@ -7156,9 +7157,9 @@ If any MySQL, PostgreSQL, Oracle, or InterBase lookups are used, the &%mysql_servers%&, &%pgsql_servers%&, &%oracle_servers%&, or &%ibase_servers%& option (as appropriate) must be set to a colon-separated list of server information. -&new("(For MySQL and PostgreSQL only, the global option need not be set if all +(For MySQL and PostgreSQL only, the global option need not be set if all queries contain their own server information &-- see section -&<>&.)") Each item in the list is a slash-separated list of four +&<>&.) Each item in the list is a slash-separated list of four items: host name, database name, user name, and password. In the case of Oracle, the host name field is used for the &"service name"&, and the database name field is not used and should be empty. For example: @@ -11641,9 +11642,9 @@ details of the &(smtp)& transport. When a message is received from a remote host over an encrypted SMTP connection, and Exim is configured to request a certificate from the client, the value of the Distinguished Name of the certificate is made available in the -&$tls_peerdn$& during subsequent processing. &new("Like &$tls_cipher$&, the +&$tls_peerdn$& during subsequent processing. Like &$tls_cipher$&, the value is retained during message delivery, except during outbound SMTP -deliveries.") +deliveries. .vitem &$tod_bsdinbox$& .vindex "&$tod_bsdinbox$&" @@ -12186,7 +12187,7 @@ listed in more than one group. .row &%disable_ipv6%& "do no IPv6 processing" .row &%keep_malformed%& "for broken files &-- should not happen" .row &%localhost_number%& "for unique message ids in clusters" -.row &new(&%message_body_newlines%&) "retain newlines in &$message_body$&" +.row &%message_body_newlines%& "retain newlines in &$message_body$&" .row &%message_body_visible%& "how much to show in &$message_body$&" .row &%mua_wrapper%& "run in &""MUA wrapper""& mode" .row &%print_topbitchars%& "top-bit characters are printing" @@ -12253,13 +12254,13 @@ listed in more than one group. .section "Data lookups" "SECID101" .table2 -.row &new(&%ibase_servers%&) "InterBase servers" +.row &%ibase_servers%& "InterBase servers" .row &%ldap_default_servers%& "used if no server in query" .row &%ldap_version%& "set protocol version" .row &%lookup_open_max%& "lookup files held open" -.row &new(&%mysql_servers%&) "default MySQL servers" -.row &new(&%oracle_servers%&) "Oracle servers" -.row &new(&%pgsql_servers%&) "default PostgreSQL servers" +.row &%mysql_servers%& "default MySQL servers" +.row &%oracle_servers%& "Oracle servers" +.row &%pgsql_servers%& "default PostgreSQL servers" .row &%sqlite_lock_timeout%& "as it says" .endtable @@ -12302,7 +12303,7 @@ listed in more than one group. .row &%check_spool_space%& "before accepting a message" .row &%deliver_queue_load_max%& "no queue deliveries if load high" .row &%queue_only_load%& "queue incoming if load high" -.row &new(&%queue_only_load_latch%&) "don't re-evaluate load for each message" +.row &%queue_only_load_latch%& "don't re-evaluate load for each message" .row &%queue_run_max%& "maximum simultaneous queue runners" .row &%remote_max_parallel%& "parallel SMTP delivery per message" .row &%smtp_accept_max%& "simultaneous incoming connections" @@ -12537,7 +12538,7 @@ See also the &'Policy controls'& section above. .row &%queue_only%& "no immediate delivery at all" .row &%queue_only_file%& "no immediate delivery if file exists" .row &%queue_only_load%& "no immediate delivery if load is high" -.row &new(&%queue_only_load_latch%&) "don't re-evaluate load for each message" +.row &%queue_only_load_latch%& "don't re-evaluate load for each message" .row &%queue_only_override%& "allow command line to override" .row &%queue_run_in_order%& "order of arrival" .row &%queue_run_max%& "of simultaneous queue runners" @@ -13118,7 +13119,7 @@ dns_check_names_pattern = \ (?i)^(?>(?(1)\.|())[^\W_](?>[a-z0-9/-]*[^\W_])?)+$ .endd which permits only letters, digits, slashes, and hyphens in components, but -they must start and end with a letter or digit. &new(Slashes) are not, in fact, +they must start and end with a letter or digit. Slashes are not, in fact, permitted in host names, but they are found in certain NS records (which can be accessed in Exim by using a &%dnsdb%& lookup). If you set &%allow_utf8_domains%&, you must modify this pattern, or set the option to an @@ -20651,8 +20652,8 @@ delivers the message to it using the LMTP protocol. .option timeout lmtp time 5m The transport is aborted if the created process or Unix domain socket does not -respond to LMTP commands or message input within this timeout. &new("Delivery -is deferred, and will be tried again later.") Here is an example of a typical +respond to LMTP commands or message input within this timeout. Delivery +is deferred, and will be tried again later. Here is an example of a typical LMTP transport: .code lmtp: @@ -21655,8 +21656,8 @@ unauthenticated. See also &%hosts_require_auth%&, and chapter .vindex "&$host$&" .vindex "&$host_address$&" This option specifies which interface to bind to when making an outgoing SMTP -call. &new("The value is an IP address, not an interface name such as -&`eth0`&.") Do not confuse this with the interface address that was used when a +call. The value is an IP address, not an interface name such as +&`eth0`&. Do not confuse this with the interface address that was used when a message was received, which is in &$received_ip_address$&, formerly known as &$interface_address$&. The name was changed to minimize confusion with the outgoing interface address. There is no variable that contains an outgoing @@ -22282,11 +22283,9 @@ rewriting rule is skipped unless the relevant addresses are being processed. &`s`& rewrite the &'Sender:'& header &`t`& rewrite the &'To:'& header .endd -.new "All headers" means all of the headers listed above that can be selected individually, plus their &'Resent-'& versions. It does not include other headers such as &'Subject:'& etc. -.wen You should be particularly careful about rewriting &'Sender:'& headers, and restrict this to special known cases in your own domains. @@ -24351,8 +24350,8 @@ incoming message (by default &-- you can, of course, change this), and it is also included in the log line that records a message's arrival, keyed by &"X="&, unless the &%tls_cipher%& log selector is turned off. The &%encrypted%& condition can be used to test for specific cipher suites in ACLs. -&new("(For outgoing SMTP deliveries, &$tls_cipher$& is reset &-- see section -&<>&.)") +(For outgoing SMTP deliveries, &$tls_cipher$& is reset &-- see section +&<>&.) Once TLS has been established, the ACLs that run for subsequent SMTP commands can check the name of the cipher suite and vary their actions accordingly. The @@ -24672,7 +24671,7 @@ options in the main part of the configuration. These options are: .irow &%acl_smtp_mail%& "ACL for MAIL" .irow &%acl_smtp_mailauth%& "ACL for the AUTH parameter of MAIL" .irow &%acl_smtp_mime%& "ACL for content-scanning MIME parts" -.irow &new(&%acl_smtp_notquit%&) "ACL for non-QUIT terminations" +.irow &%acl_smtp_notquit%& "ACL for non-QUIT terminations" .irow &%acl_smtp_predata%& "ACL at start of DATA command" .irow &%acl_smtp_quit%& "ACL for QUIT" .irow &%acl_smtp_rcpt%& "ACL for RCPT" @@ -26854,7 +26853,7 @@ parameter &'m'& is the maximum number of messages that a client is permitted to send in each time interval. It also specifies the number of messages permitted in a fast burst. By increasing both &'m'& and &'p'& but keeping &'m/p'& constant, you can allow a client to send more messages in a burst without -changing its overall sending rate limit. Conversely, if &'m'& and &'p'& are +changing its long-term sending rate limit. Conversely, if &'m'& and &'p'& are both small, messages must be sent at an even rate. There is a script in &_util/ratelimit.pl_& which extracts sending rates from @@ -26863,21 +26862,22 @@ when deploying the &%ratelimit%& ACL condition. The script prints usage instructions when it is run with no arguments. The key is used to look up the data for calculating the client's average -sending rate. This data is stored in a database maintained by Exim in its spool -directory, alongside the retry and other hints databases. The default key is -&$sender_host_address$&, which applies the limit to each client host IP address. +sending rate. This data is stored in Exim's spool directory, alongside the +retry and other hints databases. The default key is &$sender_host_address$&, +which means Exim computes the sending rate of each client host IP address. By changing the key you can change how Exim identifies clients for the purpose of ratelimiting. For example, to limit the sending rate of each authenticated user, independent of the computer they are sending from, set the key to &$authenticated_id$&. You must ensure that the lookup key is meaningful; for example, &$authenticated_id$& is only meaningful if the client has -authenticated, and you can check with the &%authenticated%& ACL condition. +authenticated (which you can check with the &%authenticated%& ACL condition). -If you want to limit the rate at which a recipient receives messages, you can -use the key &`$local_part@$domain`& with the &%per_rcpt%& option (see below) in -a RCPT ACL. +The lookup key does not have to identify clients: If you want to limit the +rate at which a recipient receives messages, you can use the key +&`$local_part@$domain`& with the &%per_rcpt%& option (see below) in a RCPT +ACL. -Internally, Exim includes the smoothing constant &'p'& and the options in the +Internally, Exim appends the smoothing constant &'p'& and the options onto the lookup key because they alter the meaning of the stored data. This is not true for the limit &'m'&, so you can alter the configured maximum rate and Exim will still remember clients' past behaviour, but if you alter the other ratelimit @@ -26898,17 +26898,17 @@ the default if none of the &%per_*%& options is specified. The &%per_byte%& option limits the sender's email bandwidth. Note that it is best to use this option in the DATA ACL; if it is used in an earlier ACL it -relies on the SIZE parameter on the MAIL command, which may be inaccurate or -completely missing. You can follow the limit &'m'& in the configuration with K, -M, or G to specify limits in kilobytes, megabytes, or gigabytes, respectively. +relies on the SIZE parameter specified by the client in its MAIL command, +which may be inaccurate or completely missing. You can follow the limit &'m'& +in the configuration with K, M, or G to specify limits in kilobytes, +megabytes, or gigabytes, respectively. -.new The &%per_rcpt%& option causes Exim to limit the rate at which recipients are accepted. To be effective, it would need to be used in either the &%acl_smtp_rcpt%& or the &%acl_not_smtp%& ACL. In the &%acl_smtp_rcpt%& ACL, the number of recipients is incremented by one. In the case of a locally submitted message in the &%acl_not_smtp%& ACL, -the number of recipients incremented is equal to &%$recipients_count%& +the number of recipients is incremented by the &%$recipients_count%& for the entire message. Note that in either case the rate limiting engine will see a message with many recipients as a large high-speed burst. @@ -26918,7 +26918,6 @@ condition is processed. This can be used to limit the SMTP command rate. This command is essentially an alias of &%per_rcpt%& to make it clear that the effect is to limit the rate at which individual commands, rather than recipients, are accepted. -.wen .section "Ratelimit options for handling fast clients" "ratophanfas" If a client's average rate is greater than the maximum, the rate limiting @@ -26928,17 +26927,18 @@ counter-measures (such as rejecting the message) that may be specified by the rest of the ACL. The default mode is leaky, which avoids a sender's over-aggressive retry rate preventing it from getting any email through. -The &%strict%& option means that the client's recorded rate is always updated. -The effect of this is that Exim measures the client's average rate of attempts -to send email, which can be much higher than the maximum &new("it is actually -allowed. If the client is over the limit it may be subjected to -counter-measures in the ACL until it slows down below the maximum rate.") The -smoothing period determines the time it takes for a high sending rate to decay -exponentially to 37% of its peak value, which means that you can work out the -time (the number of smoothing periods) that a client is subjected to -counter-measures after an over-limit burst with this formula: +The &%strict%& option means that the client's recorded rate is always +updated. The effect of this is that Exim measures the client's average rate +of attempts to send email, which can be much higher than the maximum it is +actually allowed. If the client is over the limit it may be subjected to +counter-measures by the ACL until it slows down below the maximum rate. If +the client stops attempting to send email for the time specified in the &'p'& +parameter then its computed rate will decay exponentially to 37% of its peak +value. You can work out the time (the number of smoothing periods) that a +client is subjected to counter-measures after an over-limit burst with this +formula: .code -ln(peakrate/maxrate) + ln(peakrate/maxrate) .endd The &%leaky%& (default) option means that the client's recorded rate is not updated if it is above the limit. The effect of this is that Exim measures the @@ -28174,7 +28174,7 @@ cases. These ACLs are called (possibly many times) just before the &%acl_smtp_data%& ACL in the case of an SMTP message, or just before the &%acl_not_smtp%& ACL in the case of a non-SMTP message. However, a MIME ACL is called only if the -message contains a &new(&'Content-Type:'&) header line. When a call to a MIME +message contains a &'Content-Type:'& header line. When a call to a MIME ACL does not yield &"accept"&, ACL processing is aborted and the appropriate result code is sent to the client. In the case of an SMTP message, the &%acl_smtp_data%& ACL is not called when this happens.