Implement -D whitelist invoking user restriction.
[users/jgh/exim.git] / doc / doc-txt / NewStuff
index c2c49379f6a68a1d9da72d954eb2c76aa62cfd8d..b9d88ff82702e03bbc9dfbd48f681dd2223d40c7 100644 (file)
@@ -1,4 +1,4 @@
-$Cambridge: exim/doc/doc-txt/NewStuff,v 1.167 2010/06/05 10:04:43 pdp Exp $
+$Cambridge: exim/doc/doc-txt/NewStuff,v 1.176 2010/06/14 18:51:10 pdp Exp $
 
 New Features in Exim
 --------------------
 
 New Features in Exim
 --------------------
@@ -12,6 +12,9 @@ the documentation is updated, this file is reduced to a short list.
 Version 4.73
 ------------
 
 Version 4.73
 ------------
 
+ NOTE: this version is not guaranteed backwards-compatible, please read the
+       items below carefully
+
  1. A new main configuration option, "openssl_options", is available if Exim
     is built with SSL support provided by OpenSSL.  The option allows
     administrators to specify OpenSSL options to be used on connections;
  1. A new main configuration option, "openssl_options", is available if Exim
     is built with SSL support provided by OpenSSL.  The option allows
     administrators to specify OpenSSL options to be used on connections;
@@ -26,6 +29,93 @@ Version 4.73
     so that safety mechanism would have to be overriden for this option to
     be able to take effect.
 
     so that safety mechanism would have to be overriden for this option to
     be able to take effect.
 
+ 3. ClamAV 0.95 is now required for ClamAV support in Exim, unless
+    Local/Makefile sets: WITH_OLD_CLAMAV_STREAM=yes
+    Note that this switches Exim to use a new API ("INSTREAM") and a future
+    release of ClamAV will remove support for the old API ("STREAM").
+
+    The av_scanner option, when set to "clamd", now takes an optional third
+    part, "local", which causes Exim to pass a filename to ClamAV instead of
+    the file content.  This is the same behaviour as when clamd is pointed at
+    a Unix-domain socket.  For example:
+
+      av_scanner = clamd:192.0.2.3 1234:local
+
+    ClamAV's ExtendedDetectionInfo response format is now handled.
+
+ 4. There is now a -bmalware option, restricted to admin users.  This option
+    takes one parameter, a filename, and scans that file with Exim's
+    malware-scanning framework.  This is intended purely as a debugging aid
+    to ensure that Exim's scanning is working, not to replace other tools.
+    Note that the ACL framework is not invoked, so if av_scanner references
+    ACL variables without a fallback then this will fail.
+
+ 5. There is a new expansion operator, "reverse_ip", which will reverse IP
+    addresses; IPv4 into dotted quad, IPv6 into dotted nibble.  Examples:
+
+      ${reverse_ip:192.0.2.4}
+       -> 4.2.0.192
+      ${reverse_ip:2001:0db8:c42:9:1:abcd:192.0.2.3}
+       -> 3.0.2.0.0.0.0.c.d.c.b.a.1.0.0.0.9.0.0.0.2.4.c.0.8.b.d.0.1.0.0.2
+
+ 6. There is a new ACL control called "debug", to enable debug logging.
+    This allows selective logging of certain incoming transactions within
+    production environments, with some care.  It takes two options, "tag"
+    and "opts"; "tag" is included in the filename of the log and "opts"
+    is used as per the -d<options> command-line option.  Examples, which
+    don't all make sense in all contexts:
+
+      control = debug
+      control = debug/tag=.$sender_host_address
+      control = debug/opts=+expand+acl
+      control = debug/tag=.$message_exim_id/opts=+expand
+
+ 7. It has always been implicit in the design and the documentation that
+    "the Exim user" is not root.  src/EDITME said that using root was
+    "very strongly discouraged".  This is not enough to keep people from
+    shooting themselves in the foot in days when many don't configure Exim
+    themselves but via package build managers.  The security consequences of
+    running various bits of network code are severe if there should be bugs in
+    them.  As such, the Exim user may no longer be root.  If configured
+    statically, Exim will refuse to build.  If configured as ref:user then Exim
+    will exit shortly after start-up.  If you must shoot yourself in the foot,
+    then henceforth you will have to maintain your own local patches to strip
+    the safeties off.
+
+ 8. There is a new expansion operator, bool_lax{}.  Where bool{} uses the ACL
+    condition logic to determine truth/failure and will fail to expand many
+    strings, bool_lax{} uses the router condition logic, where most strings
+    do evaluate true.
+    Note: bool{00} is false, bool_lax{00} is true.
+
+ 9. Routers now support multiple "condition" tests,
+
+10. There is now a runtime configuration option "tcp_wrappers_daemon_name".
+    Setting this allows an admin to define which entry in the tcpwrappers
+    config file will be used to control access to the daemon.  This option
+    is only available when Exim is built with USE_TCP_WRAPPERS.  The
+    default value is set at build time using the TCP_WRAPPERS_DAEMON_NAME
+    build option.
+
+11. [POSSIBLE CONFIG BREAKAGE] The default value for system_filter_user is now
+    the Exim run-time user, instead of root.
+
+12. [POSSIBLE CONFIG BREAKAGE] ALT_CONFIG_ROOT_ONLY is no longer optional and
+    is forced on.  This is mitigated by the new build option
+    TRUSTED_CONFIG_PREFIX_LIST which defines a list of pathname prefices which
+    are trusted; if a config file is owned by root and is under that prefix,
+    then it may be used by the Exim run-time user.
+
+13. [POSSIBLE CONFIG BREAKAGE] The Exim user is no longer automatically
+    trusted to supply -D<Macro[=Value]> overrides on the command-line.  Going
+    forward, we recommend using TRUSTED_CONFIG_PREFIX_LIST with shim configs
+    that include the main config.  As a transition mechanism, we are
+    temporarily providing a work-around: the new build option
+    WHITELIST_D_MACROS provides a colon-separated list of macro names which
+    may be overriden by the Exim run-time user.  The values of these macros
+    are constrained to the regex ^[A-Za-z0-9_/.-]*$ (which explicitly does
+    allow for empty values).
+
 
 Version 4.72
 ------------
 
 Version 4.72
 ------------
@@ -69,7 +159,7 @@ Version 4.70 / 4.71
  2. Experimental DCC support via dccifd (contributed by Wolfgang Breyha).
 
  3. There is now a bool{} expansion condition which maps certain strings to
  2. Experimental DCC support via dccifd (contributed by Wolfgang Breyha).
 
  3. There is now a bool{} expansion condition which maps certain strings to
-    true/false condition values (most likely of use in conjuction with the
+    true/false condition values (most likely of use in conjunction with the
     and{} expansion operator).
 
  4. The $spam_score, $spam_bar and $spam_report variables are now available
     and{} expansion operator).
 
  4. The $spam_score, $spam_bar and $spam_report variables are now available
@@ -93,6 +183,12 @@ Version 4.70 / 4.71
  9. The transport_filter_timeout option now applies to SMTP transports too.
 
 
  9. The transport_filter_timeout option now applies to SMTP transports too.
 
 
+Version 4.69
+------------
+
+ 1. Preliminary DKIM support in Experimental.
+
+
 Version 4.68
 ------------
 
 Version 4.68
 ------------