Jori Hamalainen's patch to speed up exigrep, and fix two typos.
[exim.git] / doc / doc-txt / NewStuff
index f5b8bd949edc9939ddb75e63f573c526f8603824..04177227d7447d992442c7f83bed0d949a4e6f32 100644 (file)
@@ -1,4 +1,4 @@
-$Cambridge: exim/doc/doc-txt/NewStuff,v 1.131 2007/01/30 11:45:20 ph10 Exp $
+$Cambridge: exim/doc/doc-txt/NewStuff,v 1.140 2007/02/07 12:23:35 ph10 Exp $
 
 New Features in Exim
 --------------------
@@ -203,6 +203,95 @@ Version 4.67
     an EHLO command. Therefore, it should normally appear in an ACL controlled
     by acl_smtp_connect or acl_smtp_helo.
 
+ 7. There are two new variables called $sending_ip_address and $sending_port.
+    These are set whenever an SMTP connection to another host has been set up,
+    and they contain the IP address and port of the local interface that is
+    being used. They are of interest only on hosts that have more than on IP
+    address that want to take on different personalities depending on which one
+    is being used.
+
+ 8. The expansion of the helo_data option in the smtp transport now happens
+    after the connection to the server has been made. This means that it can
+    use the value of $sending_ip_address (see 7 above) to vary the text of the
+    message. For example, if you want the string that is used for helo_data to
+    be obtained by a DNS lookup of the interface address, you could use this:
+
+      helo_data = ${lookup dnsdb{ptr=$sending_ip_address}{$value}\
+        {$primary_hostname}}
+
+    The use of helo_data applies both to sending messages and when doing
+    callouts.
+
+ 9. There is a new expansion operator ${rfc2047d: that decodes strings that
+    are encoded as per RFC 2047. Binary zero bytes are replaced by question
+    marks. Characters are converted into the character set defined by
+    headers_charset. Overlong RFC 2047 "words" are not recognized unless
+    check_rfc2047_length is set false.
+
+10. There is a new log selector called "pid", which causes the current process
+    id to be added to every log line, in square brackets, immediately after the
+    time and date.
+
+11. Exim has been modified so that it flushes SMTP output before implementing
+    a delay in an ACL. It also flushes the output before performing a callout,
+    as this can take a substantial time. These behaviours can be disabled by
+    obeying control = no_delay_flush or control = no_callout_flush,
+    respectively, at some earlier stage of the connection. The effect of the
+    new default behaviour is to disable the PIPELINING optimization in these
+    situations, in order to avoid unexpected timeouts in clients.
+
+12. There are two new expansion conditions that iterate over a list. They are
+    called forany and forall, and they are used like this:
+
+      ${if forany{<a list>}{<a condition>}{<yes-string>}{<no-string>}}
+      ${if forall{<a list>}{<a condition>}{<yes-string>}{<no-string>}}
+
+    The first argument is expanded, and the result is treated as a list. By
+    default, the list separator is a colon, but it can be changed by the normal
+    method. The second argument is interpreted as a condition that is to be
+    applied to each item in the list in turn. During the interpretation of the
+    condition, the current list item is placed in a variable called $item.
+
+    - For forany, interpretation stops if the condition is true for any item,
+      and the yes-string is then expanded. If the condition is false for all
+      items in the list, the no-string is expanded.
+
+    - For forall, interpration stops if the condition is false for any item,
+      and the no-string is then expanded. If the condition is true for all
+      items in the list, the yes-string is expanded.
+
+    Note that negation of forany means that the condition must be false for all
+    items for the overall condition to succeed, and negation of forall means
+    that the condition must be false for at least one item.
+
+    In this example, the list separator is changed to a comma:
+
+      ${if forany{<, $recipients}{match{$item}{^user3@}}{yes}{no}}
+
+    Outside a forany/forall condition, the value of $item is an empty string.
+    Its value is saved and restored while forany/forall is being processed, to
+    enable these expansion items to be nested.
+
+13. There's a new global option called dsn_from that can be used to vary the
+    contents of From: lines in bounces and other automatically generated
+    messages ("delivery status notifications" - hence the name of the option).
+    The default setting is:
+
+      dsn_from = Mail Delivery System <Mailer-Daemon@$qualify_domain>
+
+    The value is expanded every time it is needed. If the expansion fails, a
+    panic is logged, and the default setting is used.
+
+14. The smtp transport has a new option called hosts_avoid_pipelining. It can
+    be used to suppress the use of PIPELINING to certain hosts, while still
+    supporting the other SMTP extensions (cf hosts_avoid_tls).
+
+15. By default, exigrep does case-insensitive matches. There is now a -I option
+    that makes it case-sensitive. This may give a performance improvement when
+    searching large log files. Without -I, the Perl pattern matches use the /i
+    option; with -I they don't. In both cases it is possible to change the case
+    sensitivity within the pattern using (?i) or (?-i).
+
 
 Version 4.66
 ------------