X-Git-Url: https://git.exim.org/users/jgh/exim.git/blobdiff_plain/e3a311ba37578327f16036af35406f1c4f5806bf..5591031bc256369573a91bc8f5f6a96d031b96b3:/doc/doc-txt/NewStuff diff --git a/doc/doc-txt/NewStuff b/doc/doc-txt/NewStuff index bddf5b827..c7e7fb8ba 100644 --- a/doc/doc-txt/NewStuff +++ b/doc/doc-txt/NewStuff @@ -1,4 +1,4 @@ -$Cambridge: exim/doc/doc-txt/NewStuff,v 1.55 2005/07/23 20:59:16 tom Exp $ +$Cambridge: exim/doc/doc-txt/NewStuff,v 1.64 2005/08/22 14:01:37 ph10 Exp $ New Features in Exim -------------------- @@ -22,6 +22,90 @@ TK/01 Added the "success_on_redirect" address verification option. When an 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. + + The SQLite library handles multiple simultaneous accesses to the database + internally. Multiple readers are permitted, but only one process can + update at once. Attempts to access the database while it is being updated + are rejected after a timeout period, during which the SQLite library + waits for the lock to be released. In Exim, the default timeout is set + to 5 seconds, but it can be changed by means of the sqlite_lock_timeout + option. + + 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. + +PH/06 It is now possible to specify a port number along with a host name or + IP address in the list of hosts defined in the manualroute or + queryprogram routers, fallback_hosts, or the "hosts" option of the smtp + transport. These all override any port specification on the transport. + The relatively standard syntax of using a colon separator has been + adopted, but there are some gotchas that need attention: + + * In all these lists of hosts, colon is the default separator, so either + the colon that specifies a port must be doubled, or the separator must + be changed. The following two examples have the same effect: + + fallback_hosts = host1.tld::1225 : host2.tld::1226 + fallback_hosts = <; host1.tld:1225 ; host2.tld:1226 + + * When IPv6 addresses are involved, it gets worse, because they contain + colons of their own. To make this case easier, it is permitted to + enclose an IP address (either v4 or v6) in square brackets if a port + number follows. Here's an example from a manualroute router: + + route_list = * "