Add control=suppress_local_fixups to complete the quartet.
[exim.git] / doc / doc-txt / NewStuff
index f358f7a4871ef5f6ff3ef1829a40c5b8ee2aeefc..15cf0b44d8e2ede0b63553439588ad0092aaea34 100644 (file)
@@ -1,4 +1,4 @@
-$Cambridge: exim/doc/doc-txt/NewStuff,v 1.59 2005/08/01 15:01:12 ph10 Exp $
+$Cambridge: exim/doc/doc-txt/NewStuff,v 1.67 2005/09/12 10:08:53 ph10 Exp $
 
 New Features in Exim
 --------------------
@@ -42,6 +42,14 @@ PH/01 Support for SQLite database lookups has been added. This is another
       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
@@ -53,6 +61,87 @@ PH/02 The variable $message_id is now deprecated, to be replaced by
 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 = * "</ [10.1.1.1]:1225 / [::1]:1226"
+
+      If the "/MX" feature is to be used as well as a port specifier, the port
+      must come last. For example:
+
+           route_list = *  dom1.tld/mx::1225
+
+PH/07 $smtp_command_argument is now set for all SMTP commands, not just the
+      non-message ones. This makes it possible to inspect the complete command
+      for RCPT commands, for example.
+
+PH/08 The ${eval expansion now supports % as a "remainder" operator.
+
+PH/09 There is a new ACL condition "verify = not_blind". It checks that there
+      are no blind (bcc) recipients in the message. Every envelope recipient
+      must appear either in a To: header line or in a Cc: header line for this
+      condition to be true. Local parts are checked case-sensitively; domains
+      are checked case-insensitively. If Resent-To: or Resent-Cc: header lines
+      exist, they are also checked. This condition can be used only in a DATA
+      or non-SMTP ACL.
+
+      There are, of course, many legitimate messages that make use of blind
+      (bcc) recipients. This check should not be used on its own for blocking
+      messages.
+
+PH/10 There is a new ACL control called "suppress_local_fixups". This applies
+      to locally submitted (non TCP/IP) messages, and is the complement of
+      "control = submission". It disables the fixups that are normally applied
+      to locally-submitted messages. Specifically:
+
+      (a) Any Sender: header line is left alone (in this respect, it's a
+          dynamic version of local_sender_retain).
+
+      (b) No Message-ID:, From:, or Date: headers are added.
+
+      (c) There is no check that From: corresponds to the actual sender.
+
+      This feature may be useful when a remotely-originated message is
+      accepted, passed to some scanning program, and then re-submitted for
+      delivery. It means that all four possibilities can now be specified:
+
+      (1) Locally submitted, fixups applies: the default.
+      (2) Locally submitted, no fixups applied: use control =
+          suppress_local_fixups.
+      (3) Remotely submitted, no fixups applied: the default.
+      (4) Remotely submitted, fixups applied: use control = submission.
+
 
 Exim version 4.52
 -----------------