-$Cambridge: exim/doc/doc-txt/NewStuff,v 1.50 2005/06/16 20:03:43 tom Exp $
+$Cambridge: exim/doc/doc-txt/NewStuff,v 1.61 2005/08/02 15:19:20 ph10 Exp $
New Features in Exim
--------------------
updated when there is a relatively large batch of changes). The doc/ChangeLog
file contains a listing of all changes, including bug fixes.
+Exim version 4.53
+-----------------
+
+TK/01 Added the "success_on_redirect" address verification option. When an
+ address generates new addresses during routing, Exim will abort
+ verification with "success" when more than one address has been
+ generated, but continue to verify a single new address. The latter
+ does not happen when the new "success_on_redirect" option is set, like
+
+ require verify = recipient/success_on_redirect/callout=10s
+
+ In that case, verification will succeed when a router generates a new
+ address.
+
+PH/01 Support for SQLite database lookups has been added. This is another
+ query-style lookup, but it is slightly different from the others because
+ a file name is required in addition to the SQL query. This is because an
+ SQLite database is a single file and there is no daemon as in other SQL
+ databases. The interface to Exim requires the name of the file, as an
+ absolute path, to be given at the start of the query. It is separated
+ from the query by white space. This means that the path name cannot
+ contain white space. Here is a lookup expansion example:
+
+ ${lookup sqlite {/some/thing/sqlitedb \
+ select name from aliases where id='ph10';}}
+
+ In a list, the syntax is similar. For example:
+
+ domainlist relay_domains = sqlite;/some/thing/sqlitedb \
+ select * from relays where ip='$sender_host_address';
+
+ The only character affected by the ${quote_sqlite: operator is a single
+ quote, which it doubles.
+
+ Note that you must set LOOKUP_SQLITE=yes in Local/Makefile in order to
+ obtain SQLite support, and you will also need to add -lsqlite3 to the
+ EXTRALIBS setting. And of course, you have to install SQLite on your
+ host first.
+
+PH/02 The variable $message_id is now deprecated, to be replaced by
+ $message_exim_id, which makes it clearer which ID is being referenced.
+
+PH/03 The use of forbid_filter_existstest now also locks out the use of the
+ ${stat: expansion item.
+
+PH/04 The IGNOREQUOTA extension to the LMTP protocol is now available in both
+ the lmtp transport and the smtp transport running in LMTP mode. In the
+ lmtp transport there is a new Boolean option called ignore_quota, and in
+ the smtp transport there is a new Boolean option called
+ lmtp_ignore_quota. If either of these options is set TRUE, the string
+ "IGNOREQUOTA" is added to RCPT commands when using the LMTP protocol,
+ provided that the server has advertised support for IGNOREQUOTA in its
+ response to the LHLO command.
+
+PH/05 Previously, if "verify = helo" was set in an ACL, the condition was true
+ only if the host matched helo_try_verify_hosts, which caused the
+ verification to occur when the EHLO/HELO command was issued. The ACL just
+ tested the remembered result. Now, if a previous verification attempt has
+ not happened, "verify = helo" does it there and then.
+
Exim version 4.52
-----------------
example, you can limit the sending rate of each authenticated user,
independent of the computer they are sending from, by setting the key
to $authenticated_id. The default key is $sender_host_address.
+ Internally, Exim includes the smoothing constant p and the options in
+ 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 parameters Exim will effectively
+ forget their past behaviour.
Each ratelimit condition can have up to two options. The first option
specifies what Exim measures the rate of, and the second specifies how
cdb {DB/ratelimits.cdb} \
{$value} {RATELIMIT} }
+ Warning: if you have a busy server with a lot of ratelimit tests,
+ especially with the per_rcpt option, you may suffer from a performance
+ bottleneck caused by locking on the ratelimit hints database. Apart from
+ making your ACLs less complicated, you can reduce the problem by using a
+ RAM disk for Exim's hints directory, /var/spool/exim/db/. However this
+ means that Exim will lose its hints data after a reboot (including retry
+ hints, the callout cache, and ratelimit data).
+
TK/01 Added an 'spf' lookup type that will return an SPF result for a given
email address (the key) and an IP address (the database):
sender='${quote_mysql:$sender_address}'} \
{$value}fail}}}
+PH/04 There are two new options that control the retrying done by the daemon
+ at startup when it cannot immediately bind a socket (typically because
+ the socket is already in use). The default values reproduce what were
+ built-in constants previously: daemon_startup_retries defines the number
+ of retries after the first failure (default 9); daemon_startup_sleep
+ defines the length of time to wait between retries (default 30s).
+
+PH/05 There is now a new ${if condition called "match_ip". It is similar to
+ match_domain, etc. It must be followed by two argument strings. The first
+ (after expansion) must be an IP address or an empty string. The second
+ (after expansion) is a restricted host list that can match only an IP
+ address, not a host name. For example:
+
+ ${if match_ip{$sender_host_address}{1.2.3.4:5.6.7.8}{...}{...}}
+
+ The specific types of host list item that are permitted in the list are
+ shown below. Consult the manual section on host lists for further
+ details.
+
+ . An IP address, optionally with a CIDR mask.
+
+ . A single asterisk matches any IP address.
+
+ . An empty item matches only if the IP address is empty. This could be
+ useful for testing for a locally submitted message or one from specific
+ hosts in a single test such as
+
+ ${if match_ip{$sender_host_address}{:4.3.2.1:...}{...}{...}}
+
+ where the first item in the list is the empty string.
+
+ . The item @[] matches any of the local host's interface addresses.
+
+ . Lookups are assumed to be "net-" style lookups, even if "net-" is not
+ specified. Thus, the following are equivalent:
+
+ ${if match_ip{$sender_host_address}{lsearch;/some/file}...
+ ${if match_ip{$sender_host_address}{net-lsearch;/some/file}...
+
+ You do need to specify the "net-" prefix if you want to specify a
+ specific address mask, for example, by using "net24-".
+
+PH/06 The "+all" debug selector used to set the flags for all possible output;
+ it is something that people tend to use semi-automatically when
+ generating debug output for me or for the list. However, by including
+ "+memory", an awful lot of output that is very rarely of interest was
+ generated. I have changed this so that "+all" no longer includes
+ "+memory". However, "-all" still turns everything off.
Version 4.51