Flush SMTP before callout (unless control=no_callout_flush).
[exim.git] / doc / doc-txt / NewStuff
index cfa846c4892797408fb2a9955d6bbd034817e555..b05db458aacb4e393116e2e0b830fa987dbba940 100644 (file)
@@ -1,4 +1,4 @@
-$Cambridge: exim/doc/doc-txt/NewStuff,v 1.133 2007/01/31 11:30:08 ph10 Exp $
+$Cambridge: exim/doc/doc-txt/NewStuff,v 1.138 2007/02/06 12:19:27 ph10 Exp $
 
 New Features in Exim
 --------------------
@@ -228,6 +228,60 @@ Version 4.67
     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.
+
 
 Version 4.66
 ------------