Taint: reject or log more tainted list metadata elements
[exim.git] / doc / doc-txt / NewStuff
1 New Features in Exim
2 --------------------
3
4 This file contains descriptions of new features that have been added to Exim.
5 Before a formal release, there may be quite a lot of detail so that people can
6 test from the snapshots or the Git before the documentation is updated. Once
7 the documentation is updated, this file is reduced to a short list.
8
9 Version 4.98
10 ------------
11  1. A sieve_inbox option for redirect routers
12
13  2. A "connection_id" variable
14
15  3. Events smtp:fail:protocol and smtp:fail:syntax
16
17  4. Support for Exim- and Sieve filters can be omitted at build time
18
19  5. JSON and LDAP lookup support, both filter types, PAM, RADIUS, perl, SPF,
20     DKIM, DMARC and ARC support, all the router and authenticator drivers,
21     and all the transport drivers except smtp, can now be built as loadable
22     modules
23
24  6. A transport "socks_proxy" may expand to an empty string, specifying no
25     proxying
26
27  7. Variables $dmarc_alignment_spf and $dmarc_alignment_dkim
28
29  8. ATRN provider support
30
31  9. IPv6 address support for mysql and pgsql lookups
32
33 Version 4.98
34 ------------
35  1. The dkim_status ACL condition may now be used in data ACLs
36
37  2. The dkim_verbose logging control also enables logging of signing
38
39  3. The dkim_timestamps signing option now accepts zero to include a current
40     timestamp but no expiry timestamp.  Code by Simon Arlott; testsuite
41     additions by jgh
42
43  4. The recipients_max main option is now expanded
44
45  5. Setting variables for "exim -be" can set a tainted value
46
47  6. A dns:fail event
48
49  7. The dsearch lookup supports search for a sub-path
50
51  8. Include mailtest utility for simple connection checking
52
53  9. Add SMTP WELLKNOWN extension
54
55  10. Sqlite3 can be used for the hints databases (vs. DBD, NDB, GBDM, TDB).
56      Add "USE_SQLITE = y" and "DBMLIB = -lsqlite3" in Local/Makefile, to
57      override the settings done in the OS/Makefile-<platform> file
58
59 Version 4.97
60 ------------
61
62  1. The expansion-test facility (exim -be) can set variables.
63
64  2. An event on a failing SMTP AUTH, for both client and server operations.
65
66  3. Variable $sender_helo_verified with the result of an ACL "verify = helo".
67
68  4. Predefined macros for expansion items, operators, conditions and variables.
69
70  5. The smtp transport option "max_rcpt" is now expanded before use.
71
72  6. The tls_eccurve option for OpenSSL now takes a list of group names.
73
74  7. Queue runners for several queues can now be started from one daemon.
75
76  8. New utility exim_msgdate converts message-ids to human readable format.
77
78  9. An expansion operator for wrapping long header lines.
79
80  10. A commandline option to print just the message IDs of the queue
81
82  11. An option for the ${readsocket } expansion to set an SNI for TLS.
83
84  12. The ACL remove_header modifier can take a pattern.
85
86  13. Variable $recipients_list, a properly-quoted exim list.
87
88  14. A log_selector for an incoming connection ID.
89
90 Version 4.96
91 ------------
92
93  1. A new ACL condition: seen. Records/tests a timestamp against a key.
94
95  2. A variant of the "mask" expansion operator to give normalised IPv6.
96
97  3. UTC output option for exim_dumpdb, exim_fixdb.
98
99  4. An event for failing TLS connects to the daemon.
100
101  5. The ACL "debug" control gains options "stop", "pretrigger" and "trigger".
102
103  6. Query-style lookups are now checked for quoting, if the query string is
104     built using untrusted data ("tainted").  For now lack of quoting is merely
105     logged; a future release will upgrade this to an error.
106
107  7. The expansion conditions match_<list-type> and inlist now set $value for
108     the expansion of the "true" result of the ${if}.  With a static list, this
109     can be used for de-tainting.
110
111  8. Recipient verify callouts now set $domain_data & $local_part_data, with
112     de-tainted values.
113
114 Version 4.95
115 ------------
116
117  1. The fast-ramp two phase queue run support, previously experimental, is
118     now supported by default.
119
120  2. The native SRS support, previously experimental, is now supported. It is
121     not built unless specified in the Local/Makefile.
122
123  3. TLS resumption support, previously experimental, is now supported and
124     included in default builds.
125
126  4. Single-key LMDB lookups, previously experimental, are now supported.
127     The support is not built unless specified in the Local/Makefile.
128
129  5. Option "message_linelength_limit" on the smtp transport to enforce (by
130     default) the RFC 998 character limit.
131
132  6. An option to ignore the cache on a lookup.
133
134  7. Quota checking during reception (i.e. at SMTP time) for appendfile-
135     transport-managed quotas.
136
137  8. Sqlite lookups accept a "file=<path>" option to specify a per-operation
138     db file, replacing the previous prefix to the SQL string (which had
139     issues when the SQL used tainted values).
140
141  9. Lsearch lookups accept a "ret=full" option, to return both the portion
142     of the line matching the key, and the remainder.
143
144 10. A command-line option to have a daemon not create a notifier socket.
145
146 11. Faster TLS startup.  When various configuration options contain no
147     expandable elements, the information can be preloaded and cached rather
148     than the previous behaviour of always loading at startup time for every
149     connection.  This helps particularly for the CA bundle.
150
151 12. Proxy Protocol Timeout is configurable via "proxy_protocol_timeout"
152     main config option.
153
154 13. Option "smtp_accept_max_per_connection" is now expanded.
155
156 14. Log selector "queue_time_exclusive", enabled by default, to exclude the
157     time taken for reception from QT log elements.
158
159 15. Main option "smtp_backlog_monitor", to set a level above which listen
160     socket backlogs are logged.
161
162 16. Main option "hosts_require_helo", requiring HELO or EHLO before MAIL.
163
164 17. A main config option "allow_insecure_tainted_data" allows to turn
165
166 18. TLS ALPN handling.  By default, refuse TLS connections that try to specify
167     a non-smtp (eg. http) use.  Options for customising.
168
169 19. Support for MacOS (darwin) has been dropped.
170
171
172 Version 4.94
173 ------------
174
175  1. EXPERIMENTAL_SRS_NATIVE optional build feature.  See the experimental.spec
176     file.
177
178  2. Channel-binding for authenticators is now supported under OpenSSL.
179     Previously it was GnuTLS-only.
180
181  3. A msg:defer event.
182
183  4. Client-side support in the gsasl authenticator.  Tested against the
184     plaintext driver for PLAIN; only against itself for SCRAM-SHA-1 and
185     SCRAM-SHA-1-PLUS methods.
186
187  5. Server-side support in the gsasl authenticator for encrypted passwords, as
188     an alternate for the existing plaintext.
189
190  6. Variable $local_part_data now also set by router check_local_user option,
191     with an de-tainted version of $local_part.
192
193  7. Named-list definitions can now be prefixed "hide" so that "-bP" commands do
194     not output the content.  Previously this could only be done on options.
195
196  8. As an experimental feature, the dovecot authentication driver supports inet
197     sockets.  Previously it was unix-domain sockets only.
198
199  9. The ACL control "queue_only" can also be spelled "queue", and now takes an
200     option "first_pass_route" to do the same as a "-odqs" on the command line.
201
202 10. Items specified for the router and transport headers_remove option can use
203     a trailing asterisk to specify globbing.
204
205 11. New $queue_size variable.
206
207 12. New variables $local_part_{pre,suf}fix_v.
208
209 13. New main option "sqlite_dbfile", for use in preference to prefixing the
210     lookup string.  The older method fails when tainted variables are used
211     in the lookup, as the filename becomes tainted.  The new method keeps the
212     filename separate.
213
214 14. Options on the dsearch lookup, to return the full path and to filter
215     filetypes for matching.
216
217 15. Options on pgsql and mysql lookups, to specify server separate from the
218     lookup string.
219
220 16. An option on all single-key lookups, to return (on a hit) a de-tainted
221     version of the lookup key rather than the looked-up data.
222
223 17. $domain_data and $local_part_data are now set by all list-match successes.
224     Previously only list items that performed lookups did so.
225     Also, matching list items that are tail-match or RE-match now set the
226     numeric variables $0 (etc) in the same way os other RE matches.
227
228 18. Expansion item ${listquote {<char} {<item>}}.
229
230 19. An option for the ${readsocket {}{}{}} expansion to make the result data
231     cacheable.
232
233 20. dkim_verify_min_keysizes, a list of minimum acceptable public-key sizes.
234
235 21. bounce_message_file and warn_message_file are now expanded before use.
236
237 22. New main config option spf_smtp_comment_template to customise the
238     $spf_smtp_comment variable
239
240
241
242 Version 4.93
243 ------------
244
245  1. An "external" authenticator, per RFC 4422 Appendix A.
246
247  2. A JSON lookup type, and JSON variants of the forall/any expansion conditions.
248
249  3. Variables $tls_in_cipher_std, $tls_out_cipher_std giving the RFC names
250     for ciphersuites.
251
252  4. Log_selectors "msg_id" (on by default) and "msg_id_created".
253
254  5. A case_insensitive option for verify=not_blind.
255
256  6. EXPERIMENTAL_TLS_RESUME optional build feature.  See the experimental.spec
257     file.
258
259  7. A main option exim_version to override the version Exim
260     reports in verious places ($exim_version, $version_number).
261
262  8. Expansion operator ${sha2_N:} for N=256, 384, 512.
263
264  9. Router variables, $r_... settable from router options and usable in routers
265     and transports.
266
267 10. The spf lookup now supports IPv6.
268
269 11. Main options for DKIM verify to filter hash and key types.
270
271 12. With TLS1.3, support for full-chain OCSP stapling.
272
273 13. Dual-certificate stacks on servers now support OCSP stapling, under OpenSSL.
274
275 14: An smtp:ehlo transport event, for observability of the remote offered features.
276
277 15: Support under OpenSSL for writing NSS-style key files for packet-capture
278     decode.  The environment variable SSLKEYLOGFILE is used; if an absolute path
279     it must indicate a file under the spool directory; if relative the the spool
280     directory is prepended.  Works on the server side only.  Support under
281     GnuTLS was already there, being done purely by the library (server side
282     only, and exim must be run as root).
283
284 16: Command-line option to move messages from one named queue to another.
285
286 17. Variables $tls_in_ver, $tls_out_ver.
287
288
289 Version 4.92
290 --------------
291
292  1. ${l_header:<name>} and ${l_h:<name>} expansion items, giving a colon-sep
293     list when there are multiple headers having a given name.  This matters
294     when individual headers are wrapped onto multiple lines; with previous
295     facilities hard to parse.
296
297  2. The ${readsocket } expansion item now takes a "tls" option, doing the
298     obvious thing.
299
300  3. EXPERIMENTAL_REQUIRETLS and EXPERIMENTAL_PIPE_CONNECT optional build
301     features.  See the experimental.spec file.
302
303  4. If built with SUPPORT_I18N a "utf8_downconvert" option on the smtp transport.
304
305  5. A "pipelining" log_selector.
306
307  6. Builtin macros for supported log_selector and openssl_options values.
308
309  7. JSON variants of the ${extract } expansion item.
310
311  8. A "noutf8" debug option, for disabling the UTF-8 characters in debug output.
312
313  9. TCP Fast Open support on MacOS.
314
315 Version 4.91
316 --------------
317
318  1. Dual-certificate stacks on servers now support OCSP stapling, under GnuTLS
319     version 3.5.6 or later.
320
321  2. DANE is now supported under GnuTLS version 3.0.0 or later.  Both GnuTLS and
322     OpenSSL versions are moved to mainline support from Experimental.
323     New SMTP transport option "dane_require_tls_ciphers".
324
325  3. Feature macros for the compiled-in set of malware scanner interfaces.
326
327  4. SPF support is promoted from Experimental to mainline status.  The template
328     src/EDITME makefile does not enable its inclusion.
329
330  5. Logging control for DKIM verification.  The existing DKIM log line is
331     controlled by a "dkim_verbose" selector which is _not_ enabled by default.
332     A new tag "DKIM=<domain>" is added to <= lines by default, controlled by
333     a "dkim" log_selector.
334
335  6. Receive duration on <= lines, under a new log_selector "receive_time".
336
337  7. Options "ipv4_only" and "ipv4_prefer" on the dnslookup router and on
338     routing rules in the manualroute router.
339
340  8. Expansion item ${sha3:<string>} / ${sha3_<N>:<string>} now also supported
341     under OpenSSL version 1.1.1 or later.
342
343  9. DKIM operations can now use the Ed25519 algorithm in addition to RSA, under
344     GnuTLS 3.6.0 or OpenSSL 1.1.1 or later.
345
346 10. Builtin feature-macros _CRYPTO_HASH_SHA3 and _CRYPTO_SIGN_ED25519, library
347     version dependent.
348
349 11. "exim -bP macro <name>" returns caller-usable status.
350
351 12. Expansion item ${authresults {<machine>}} for creating an
352     Authentication-Results: header.
353
354 13. EXPERIMENTAL_ARC.  See the experimental.spec file.
355     See also new util/renew-opendmarc-tlds.sh script for use with DMARC/ARC.
356
357 14: A dane:fail event, intended to facilitate reporting.
358
359 15. "Lightweight" support for Redis Cluster. Requires redis_servers list to
360     contain all the servers in the cluster, all of which must be reachable from
361     the running exim instance. If the cluster has master/slave replication, the
362     list must contain all the master and slave servers.
363
364 16. Add an option to the Avast scanner interface: "pass_unscanned". This
365     allows to treat unscanned files as clean. Files may be unscanned for
366     several reasons: decompression bombs, broken archives.
367
368
369 Version 4.90
370 ------------
371
372  1. PKG_CONFIG_PATH can now be set in Local/Makefile;
373     wildcards will be expanded, values are collapsed.
374
375  2. The ${readsocket } expansion now takes an option to not shutdown the
376     connection after sending the query string.  The default remains to do so.
377
378  3. An smtp transport option "hosts_noproxy_tls" to control whether multiple
379     deliveries on a single TCP connection can maintain a TLS connection
380     open.  By default disabled for all hosts, doing so saves the cost of
381     making new TLS sessions, at the cost of having to proxy the data via
382     another process.  Logging is also affected.
383
384  4. A malware connection type for the FPSCAND protocol.
385
386  5. An option for recipient verify callouts to hold the connection open for
387     further recipients and for delivery.
388
389  6. The reproducible build $SOURCE_DATE_EPOCH environment variable is now
390     supported.
391
392  7. Optionally, an alternate format for spool data-files which matches the
393     wire format - meaning more efficient reception and transmission (at the
394     cost of difficulty with standard Unix tools).  Only used for messages
395     received using the ESMTP CHUNKING option, and when a new main-section
396     option "spool_wireformat" (false by default) is set.
397
398  8. New main configuration option "commandline_checks_require_admin" to
399     restrict who can use various introspection options.
400
401  9. New option modifier "no_check" for quota and quota_filecount
402     appendfile transport.
403
404 10. Variable $smtp_command_history returning a comma-sep list of recent
405     SMTP commands.
406
407 11. Millisecond timetamps in logs, on log_selector "millisec".  Also affects
408     log elements QT, DT and D, and timstamps in debug output.
409
410 12. TCP Fast Open logging.  As a server, logs when the SMTP banner was sent
411     while still in SYN_RECV state; as a client logs when the connection
412     is opened with a TFO cookie.
413
414 13. DKIM support for multiple signing, by domain and/or key-selector.
415     DKIM support for multiple hashes, and for alternate-identity tags.
416     Builtin macro with default list of signed headers.
417     Better syntax for specifying oversigning.
418     The DKIM ACL can override verification status, and status is visible in
419     the data ACL.
420
421 14. Exipick understands -C|--config for an alternative Exim
422     configuration file.
423
424 15. TCP Fast Open used, with data-on-SYN, for client SMTP via SOCKS5 proxy,
425     for ${readsocket } expansions, and for ClamAV.
426
427 16. The "-be" expansion test mode now supports macros.  Macros are expanded
428     in test lines, and new macros can be defined.
429
430 17. Support for server-side dual-certificate-stacks (eg. RSA + ECDSA).
431
432
433 Version 4.89
434 ------------
435
436  1. Allow relative config file names for ".include"
437
438  2. A main-section config option "debug_store" to control the checks on
439     variable locations during store-reset.  Normally false but can be enabled
440     when a memory corruption issue is suspected on a production system.
441
442
443 Version 4.88
444 ------------
445
446  1. The new perl_taintmode option allows to run the embedded perl
447     interpreter in taint mode.
448
449  2. New log_selector: dnssec, adds a "DS" tag to acceptance and delivery lines.
450
451  3. Speculative debugging, via a "kill" option to the "control=debug" ACL
452     modifier.
453
454  4. New expansion item ${sha3:<string>} / ${sha3_<N>:<string>}.
455     N can be 224, 256 (default), 384, 512.
456     With GnuTLS 3.5.0 or later, only.
457
458  5. Facility for named queues:  A command-line argument can specify
459     the queue name for a queue operation, and an ACL modifier can set
460     the queue to be used for a message.  A $queue_name variable gives
461     visibility.
462
463  6. New expansion operators base32/base32d.
464
465  7. The CHUNKING ESMTP extension from RFC 3030.  May give some slight
466     performance increase and network load decrease.  Main config option
467     chunking_advertise_hosts, and smtp transport option hosts_try_chunking
468     for control.
469
470  8. LMDB lookup support, as Experimental. Patch supplied by Andrew Colin Kissa.
471
472  9. Expansion operator escape8bit, like escape but not touching newline etc..
473
474 10. Feature macros, generated from compile options.  All start with "_HAVE_"
475     and go on with some roughly recognisable name.  Driver macros, for
476     router, transport and authentication drivers; names starting with "_DRIVER_".
477     Option macros, for each configuration-file option; all start with "_OPT_".
478     Use the "-bP macros" command-line option to see what is present.
479
480 11. Integer values for options can take a "G" multiplier.
481
482 12. defer=pass option for the ACL control cutthrough_delivery, to reflect 4xx
483     returns from the target back to the initiator, rather than spooling the
484     message.
485
486 13. New built-in constants available for tls_dhparam and default changed.
487
488 14. If built with EXPERIMENTAL_QUEUEFILE, a queuefile transport, for writing
489     out copies of the message spool files for use by 3rd-party scanners.
490
491 15. A new option on the smtp transport, hosts_try_fastopen.  If the system
492     supports it (on Linux it must be enabled in the kernel by the sysadmin)
493     try to use RFC 7413 "TCP Fast Open".  No data is sent on the SYN segment
494     but it permits a peer that also supports the facility to send its SMTP
495     banner immediately after the SYN,ACK segment rather then waiting for
496     another ACK - so saving up to one roundtrip time.  Because it requires
497     previous communication with the peer (we save a cookie from it) this
498     will only become active on frequently-contacted destinations.
499
500 16. A new syslog_pid option to suppress PID duplication in syslog lines.
501
502
503 Version 4.87
504 ------------
505
506  1. The ACL conditions regex and mime_regex now capture substrings
507     into numeric variables $regex1 to 9, like the "match" expansion condition.
508
509  2. New $callout_address variable records the address used for a spam=,
510     malware= or verify= callout.
511
512  3. Transports now take a "max_parallel" option, to limit concurrency.
513
514  4. Expansion operators ${ipv6norm:<string>} and ${ipv6denorm:<string>}.
515     The latter expands to a 8-element colon-sep set of hex digits including
516     leading zeroes. A trailing ipv4-style dotted-decimal set is converted
517     to hex.  Pure ipv4 addresses are converted to IPv4-mapped IPv6.
518     The former operator strips leading zeroes and collapses the longest
519     set of 0-groups to a double-colon.
520
521  5. New "-bP config" support, to dump the effective configuration.
522
523  6. New $dkim_key_length variable.
524
525  7. New base64d and base64 expansion items (the existing str2b64 being a
526     synonym of the latter).  Add support in base64 for certificates.
527
528  8. New main configuration option "bounce_return_linesize_limit" to
529     avoid oversize bodies in bounces. The default value matches RFC
530     limits.
531
532  9. New $initial_cwd expansion variable.
533
534
535 Version 4.86
536 ------------
537
538  1. Support for using the system standard CA bundle.
539
540  2. New expansion items $config_file, $config_dir, containing the file
541     and directory name of the main configuration file. Also $exim_version.
542
543  3. New "malware=" support for Avast.
544
545  4. New "spam=" variant option for Rspamd.
546
547  5. Assorted options on malware= and spam= scanners.
548
549  6. A command-line option to write a comment into the logfile.
550
551  7. If built with EXPERIMENTAL_SOCKS feature enabled, the smtp transport can
552     be configured to make connections via socks5 proxies.
553
554  8. If built with EXPERIMENTAL_INTERNATIONAL, support is included for
555     the transmission of UTF-8 envelope addresses.
556
557  9. If built with EXPERIMENTAL_INTERNATIONAL, an expansion item for a commonly
558     used encoding of Maildir folder names.
559
560 10. A logging option for slow DNS lookups.
561
562 11. New ${env {<variable>}} expansion.
563
564 12. A non-SMTP authenticator using information from TLS client certificates.
565
566 13. Main option "tls_eccurve" for selecting an Elliptic Curve for TLS.
567     Patch originally by Wolfgang Breyha.
568
569 14. Main option "dns_trust_aa" for trusting your local nameserver at the
570     same level as DNSSEC.
571
572 Version 4.85
573 ------------
574
575  1. If built with EXPERIMENTAL_DANE feature enabled, Exim will follow the
576     DANE SMTP draft to assess a secure chain of trust of the certificate
577     used to establish the TLS connection based on a TLSA record in the
578     domain of the sender.
579
580  2. The EXPERIMENTAL_TPDA feature has been renamed to EXPERIMENTAL_EVENT
581     and several new events have been created. The reason is because it has
582     been expanded beyond just firing events during the transport phase. Any
583     existing TPDA transport options will have to be rewritten to use a new
584     $event_name expansion variable in a condition. Refer to the
585     experimental-spec.txt for details and examples.
586
587  3. The EXPERIMENTAL_CERTNAMES features is an enhancement to verify that
588     server certs used for TLS match the result of the MX lookup. It does
589     not use the same mechanism as DANE.
590
591
592 Version 4.84
593 ------------
594
595
596 Version 4.83
597 ------------
598
599  1. If built with the EXPERIMENTAL_PROXY feature enabled, Exim can be
600     configured to expect an initial header from a proxy that will make the
601     actual external source IP:host be used in exim instead of the IP of the
602     proxy that is connecting to it.
603
604  2. New verify option header_names_ascii, which will check to make sure
605     there are no non-ASCII characters in header names.  Exim itself handles
606     those non-ASCII characters, but downstream apps may not, so Exim can
607     detect and reject if those characters are present.
608
609  3. New expansion operator ${utf8clean:string} to replace malformed UTF8
610     codepoints with valid ones.
611
612  4. New malware type "sock".  Talks over a Unix or TCP socket, sending one
613     command line and matching a regex against the return data for trigger
614     and a second regex to extract malware_name.  The mail spoolfile name can
615     be included in the command line.
616
617  5. The smtp transport now supports options "tls_verify_hosts" and
618     "tls_try_verify_hosts".  If either is set the certificate verification
619     is split from the encryption operation. The default remains that a failed
620     verification cancels the encryption.
621
622  6. New SERVERS override of default ldap server list.  In the ACLs, an ldap
623     lookup can now set a list of servers to use that is different from the
624     default list.
625
626  7. New command-line option -C for exiqgrep to specify alternate exim.conf
627     file when searching the queue.
628
629  8. OCSP now supports GnuTLS also, if you have version 3.1.3 or later of that.
630
631  9. Support for DNSSEC on outbound connections.
632
633 10. New variables "tls_(in,out)_(our,peer)cert" and expansion item
634     "certextract" to extract fields from them. Hash operators md5 and sha1
635     work over them for generating fingerprints, and a new sha256 operator
636     for them added.
637
638 11. PRDR is now supported dy default.
639
640 12. OCSP stapling is now supported by default.
641
642 13. If built with the EXPERIMENTAL_DSN feature enabled, Exim will output
643     Delivery Status Notification messages in MIME format, and negotiate
644     DSN features per RFC 3461.
645
646
647 Version 4.82
648 ------------
649
650  1. New command-line option -bI:sieve will list all supported sieve extensions
651     of this Exim build on standard output, one per line.
652     ManageSieve (RFC 5804) providers managing scripts for use by Exim should
653     query this to establish the correct list to include in the protocol's
654     SIEVE capability line.
655
656  2. If the -n option is combined with the -bP option, then the name of an
657     emitted option is not output, only the value (if visible to you).
658     For instance, "exim -n -bP pid_file_path" should just emit a pathname
659     followed by a newline, and no other text.
660
661  3. When built with SUPPORT_TLS and USE_GNUTLS, the SMTP transport driver now
662     has a "tls_dh_min_bits" option, to set the minimum acceptable number of
663     bits in the Diffie-Hellman prime offered by a server (in DH ciphersuites)
664     acceptable for security.  (Option accepted but ignored if using OpenSSL).
665     Defaults to 1024, the old value.  May be lowered only to 512, or raised as
666     far as you like.  Raising this may hinder TLS interoperability with other
667     sites and is not currently recommended.  Lowering this will permit you to
668     establish a TLS session which is not as secure as you might like.
669
670     Unless you really know what you are doing, leave it alone.
671
672  4. If not built with DISABLE_DNSSEC, Exim now has the main option
673     dns_dnssec_ok; if set to 1 then Exim will initialise the resolver library
674     to send the DO flag to your recursive resolver.  If you have a recursive
675     resolver, which can set the Authenticated Data (AD) flag in results, Exim
676     can now detect this.  Exim does not perform validation itself, instead
677     relying upon a trusted path to the resolver.
678
679     Current status: work-in-progress; $sender_host_dnssec variable added.
680
681  5. DSCP support for outbound connections: on a transport using the smtp driver,
682     set "dscp = ef", for instance, to cause the connections to have the relevant
683     DSCP (IPv4 TOS or IPv6 TCLASS) value in the header.
684
685     Similarly for inbound connections, there is a new control modifier, dscp,
686     so "warn control = dscp/ef" in the connect ACL, or after authentication.
687
688     Supported values depend upon system libraries.  "exim -bI:dscp" to list the
689     ones Exim knows of.  You can also set a raw number 0..0x3F.
690
691  6. The -G command-line flag is no longer ignored; it is now equivalent to an
692     ACL setting "control = suppress_local_fixups".  The -L command-line flag
693     is now accepted and forces use of syslog, with the provided tag as the
694     process name.  A few other flags used by Sendmail are now accepted and
695     ignored.
696
697  7. New cutthrough routing feature.  Requested by a "control = cutthrough_delivery"
698     ACL modifier; works for single-recipient mails which are received on and
699     deliverable via SMTP.  Using the connection made for a recipient verify,
700     if requested before the verify, or a new one made for the purpose while
701     the inbound connection is still active.  The bulk of the mail item is copied
702     direct from the inbound socket to the outbound (as well as the spool file).
703     When the source notifies the end of data, the data acceptance by the destination
704     is negotiated before the acceptance is sent to the source.  If the destination
705     does not accept the mail item, for example due to content-scanning, the item
706     is not accepted from the source and therefore there is no need to generate
707     a bounce mail.  This is of benefit when providing a secondary-MX service.
708     The downside is that delays are under the control of the ultimate destination
709     system not your own.
710
711     The Received-by: header on items delivered by cutthrough is generated
712     early in reception rather than at the end; this will affect any timestamp
713     included.  The log line showing delivery is recorded before that showing
714     reception; it uses a new ">>" tag instead of "=>".
715
716     To support the feature, verify-callout connections can now use ESMTP and TLS.
717     The usual smtp transport options are honoured, plus a (new, default everything)
718     hosts_verify_avoid_tls.
719
720     New variable families named tls_in_cipher, tls_out_cipher etc. are introduced
721     for specific access to the information for each connection.  The old names
722     are present for now but deprecated.
723
724     Not yet supported: IGNOREQUOTA, SIZE, PIPELINING.
725
726  8. New expansion operators ${listnamed:name} to get the content of a named list
727     and ${listcount:string} to count the items in a list.
728
729  9. New global option "gnutls_allow_auto_pkcs11", defaults false.  The GnuTLS
730     rewrite in 4.80 combines with GnuTLS 2.12.0 or later, to autoload PKCS11
731     modules.  For some situations this is desirable, but we expect admin in
732     those situations to know they want the feature.  More commonly, it means
733     that GUI user modules get loaded and are broken by the setuid Exim being
734     unable to access files specified in environment variables and passed
735     through, thus breakage.  So we explicitly inhibit the PKCS11 initialisation
736     unless this new option is set.
737
738     Some older OS's with earlier versions of GnuTLS might not have pkcs11 ability,
739     so have also added a build option which can be used to build Exim with GnuTLS
740     but without trying to use any kind of PKCS11 support.  Uncomment this in the
741     Local/Makefile:
742
743     AVOID_GNUTLS_PKCS11=yes
744
745 10. The "acl = name" condition on an ACL now supports optional arguments.
746     New expansion item "${acl {name}{arg}...}" and expansion condition
747     "acl {{name}{arg}...}" are added.  In all cases up to nine arguments
748     can be used, appearing in $acl_arg1 to $acl_arg9 for the called ACL.
749     Variable $acl_narg contains the number of arguments.  If the ACL sets
750     a "message =" value this becomes the result of the expansion item,
751     or the value of $value for the expansion condition.  If the ACL returns
752     accept the expansion condition is true; if reject, false.  A defer
753     return results in a forced fail.
754
755 11. Routers and transports can now have multiple headers_add and headers_remove
756     option lines.  The concatenated list is used.
757
758 12. New ACL modifier "remove_header" can remove headers before message gets
759     handled by routers/transports.
760
761 13. New dnsdb lookup pseudo-type "a+".  A sequence of "a6" (if configured),
762     "aaaa" and "a" lookups is done and the full set of results returned.
763
764 14. New expansion variable $headers_added with content from ACL add_header
765     modifier (but not yet added to message).
766
767 15. New 8bitmime status logging option for received messages.  Log field "M8S".
768
769 16. New authenticated_sender logging option, adding to log field "A".
770
771 17. New expansion variables $router_name and $transport_name.  Useful
772     particularly for debug_print as -bt command-line option does not
773     require privilege whereas -d does.
774
775 18. If built with EXPERIMENTAL_PRDR, per-recipient data responses per a
776     proposed extension to SMTP from Eric Hall.
777
778 19. The pipe transport has gained the force_command option, to allow
779     decorating commands from user .forward pipe aliases with prefix
780     wrappers, for instance.
781
782 20. Callout connections can now AUTH; the same controls as normal delivery
783     connections apply.
784
785 21. Support for DMARC, using opendmarc libs, can be enabled. It adds new
786     options: dmarc_forensic_sender, dmarc_history_file, and dmarc_tld_file.
787     It adds new expansion variables $dmarc_ar_header, $dmarc_status,
788     $dmarc_status_text, and $dmarc_used_domain.  It adds a new acl modifier
789     dmarc_status.  It adds new control flags dmarc_disable_verify and
790     dmarc_enable_forensic. The default for the dmarc_tld_file option is
791     "/etc/exim/opendmarc.tlds" and can be changed via EDITME.
792
793 22. Add expansion variable $authenticated_fail_id, which is the username
794     provided to the authentication method which failed.  It is available
795     for use in subsequent ACL processing (typically quit or notquit ACLs).
796
797 23. New ACL modifier "udpsend" can construct a UDP packet to send to a given
798     UDP host and port.
799
800 24. New ${hexquote:..string..} expansion operator converts non-printable
801     characters in the string to \xNN form.
802
803 25. Experimental TPDA (Transport Post Delivery Action) function added.
804     Patch provided by Axel Rau.
805
806 26. Experimental Redis lookup added. Patch provided by Warren Baker.
807
808
809 Version 4.80
810 ------------
811
812  1. New authenticator driver, "gsasl".  Server-only (at present).
813     This is a SASL interface, licensed under GPL, which can be found at
814     http://www.gnu.org/software/gsasl/.
815     This system does not provide sources of data for authentication, so
816     careful use needs to be made of the conditions in Exim.
817
818  2. New authenticator driver, "heimdal_gssapi".  Server-only.
819     A replacement for using cyrus_sasl with Heimdal, now that $KRB5_KTNAME
820     is no longer honoured for setuid programs by Heimdal.  Use the
821     "server_keytab" option to point to the keytab.
822
823  3. The "pkg-config" system can now be used when building Exim to reference
824     cflags and library information for lookups and authenticators, rather
825     than having to update "CFLAGS", "AUTH_LIBS", "LOOKUP_INCLUDE" and
826     "LOOKUP_LIBS" directly.  Similarly for handling the TLS library support
827     without adjusting "TLS_INCLUDE" and "TLS_LIBS".
828
829     In addition, setting PCRE_CONFIG=yes will query the pcre-config tool to
830     find the headers and libraries for PCRE.
831
832  4. New expansion variable $tls_bits.
833
834  5. New lookup type, "dbmjz".  Key is an Exim list, the elements of which will
835     be joined together with ASCII NUL characters to construct the key to pass
836     into the DBM library.  Can be used with gsasl to access sasldb2 files as
837     used by Cyrus SASL.
838
839  6. OpenSSL now supports TLS1.1 and TLS1.2 with OpenSSL 1.0.1.
840
841     Avoid release 1.0.1a if you can.  Note that the default value of
842     "openssl_options" is no longer "+dont_insert_empty_fragments", as that
843     increased susceptibility to attack.  This may still have interoperability
844     implications for very old clients (see version 4.31 change 37) but
845     administrators can choose to make the trade-off themselves and restore
846     compatibility at the cost of session security.
847
848  7. Use of the new expansion variable $tls_sni in the main configuration option
849     tls_certificate will cause Exim to re-expand the option, if the client
850     sends the TLS Server Name Indication extension, to permit choosing a
851     different certificate; tls_privatekey will also be re-expanded.  You must
852     still set these options to expand to valid files when $tls_sni is not set.
853
854     The SMTP Transport has gained the option tls_sni, which will set a hostname
855     for outbound TLS sessions, and set $tls_sni too.
856
857     A new log_selector, +tls_sni, has been added, to log received SNI values
858     for Exim as a server.
859
860  8. The existing "accept_8bitmime" option now defaults to true.  This means
861     that Exim is deliberately not strictly RFC compliant.  We're following
862     Dan Bernstein's advice in http://cr.yp.to/smtp/8bitmime.html by default.
863     Those who disagree, or know that they are talking to mail servers that,
864     even today, are not 8-bit clean, need to turn off this option.
865
866  9. Exim can now be started with -bw (with an optional timeout, given as
867     -bw<timespec>).  With this, stdin at startup is a socket that is
868     already listening for connections.  This has a more modern name of
869     "socket activation", but forcing the activated socket to fd 0.  We're
870     interested in adding more support for modern variants.
871
872 10. ${eval } now uses 64-bit values on supporting platforms.  A new "G" suffix
873     for numbers indicates multiplication by 1024^3.
874
875 11. The GnuTLS support has been revamped; the three options gnutls_require_kx,
876     gnutls_require_mac & gnutls_require_protocols are no longer supported.
877     tls_require_ciphers is now parsed by gnutls_priority_init(3) as a priority
878     string, documentation for which is at:
879     http://www.gnutls.org/manual/html_node/Priority-Strings.html
880
881     SNI support has been added to Exim's GnuTLS integration too.
882
883     For sufficiently recent GnuTLS libraries, ${randint:..} will now use
884     gnutls_rnd(), asking for GNUTLS_RND_NONCE level randomness.
885
886 12. With OpenSSL, if built with EXPERIMENTAL_OCSP, a new option tls_ocsp_file
887     is now available.  If the contents of the file are valid, then Exim will
888     send that back in response to a TLS status request; this is OCSP Stapling.
889     Exim will not maintain the contents of the file in any way: administrators
890     are responsible for ensuring that it is up-to-date.
891
892     See "experimental-spec.txt" for more details.
893
894 13. ${lookup dnsdb{ }} supports now SPF record types. They are handled
895     identically to TXT record lookups.
896
897 14. New expansion variable $tod_epoch_l for higher-precision time.
898
899 15. New global option tls_dh_max_bits, defaulting to current value of NSS
900     hard-coded limit of DH ephemeral bits, to fix interop problems caused by
901     GnuTLS 2.12 library recommending a bit count higher than NSS supports.
902
903 16. tls_dhparam now used by both OpenSSL and GnuTLS, can be path or identifier.
904     Option can now be a path or an identifier for a standard prime.
905     If unset, we use the DH prime from section 2.2 of RFC 5114, "ike23".
906     Set to "historic" to get the old GnuTLS behaviour of auto-generated DH
907     primes.
908
909 17. SSLv2 now disabled by default in OpenSSL.  (Never supported by GnuTLS).
910     Use "openssl_options -no_sslv2" to re-enable support, if your OpenSSL
911     install was not built with OPENSSL_NO_SSL2 ("no-ssl2").
912
913
914 Version 4.77
915 ------------
916
917  1. New options for the ratelimit ACL condition: /count= and /unique=.
918     The /noupdate option has been replaced by a /readonly option.
919
920  2. The SMTP transport's protocol option may now be set to "smtps", to
921     use SSL-on-connect outbound.
922
923  3. New variable $av_failed, set true if the AV scanner deferred; ie, when
924     there is a problem talking to the AV scanner, or the AV scanner running.
925
926  4. New expansion conditions, "inlist" and "inlisti", which take simple lists
927     and check if the search item is a member of the list.  This does not
928     support named lists, but does subject the list part to string expansion.
929
930  5. Unless the new EXPAND_LISTMATCH_RHS build option is set when Exim was
931     built, Exim no longer performs string expansion on the second string of
932     the match_* expansion conditions: "match_address", "match_domain",
933     "match_ip" & "match_local_part".  Named lists can still be used.
934
935
936 Version 4.76
937 ------------
938
939  1. The global option "dns_use_edns0" may be set to coerce EDNS0 usage on
940     or off in the resolver library.
941
942
943 Version 4.75
944 ------------
945
946  1. In addition to the existing LDAP and LDAP/SSL ("ldaps") support, there
947     is now LDAP/TLS support, given sufficiently modern OpenLDAP client
948     libraries.  The following global options have been added in support of
949     this: ldap_ca_cert_dir, ldap_ca_cert_file, ldap_cert_file, ldap_cert_key,
950     ldap_cipher_suite, ldap_require_cert, ldap_start_tls.
951
952  2. The pipe transport now takes a boolean option, "freeze_signal", default
953     false.  When true, if the external delivery command exits on a signal then
954     Exim will freeze the message in the queue, instead of generating a bounce.
955
956  3. Log filenames may now use %M as an escape, instead of %D (still available).
957     The %M pattern expands to yyyymm, providing month-level resolution.
958
959  4. The $message_linecount variable is now updated for the maildir_tag option,
960     in the same way as $message_size, to reflect the real number of lines,
961     including any header additions or removals from transport.
962
963  5. When contacting a pool of SpamAssassin servers configured in spamd_address,
964     Exim now selects entries randomly, to better scale in a cluster setup.
965
966
967 Version 4.74
968 ------------
969
970  1. SECURITY FIX: privilege escalation flaw fixed. On Linux (and only Linux)
971     the flaw permitted the Exim run-time user to cause root to append to
972     arbitrary files of the attacker's choosing, with the content based
973     on content supplied by the attacker.
974
975  2. Exim now supports loading some lookup types at run-time, using your
976     platform's dlopen() functionality.  This has limited platform support
977     and the intention is not to support every variant, it's limited to
978     dlopen().  This permits the main Exim binary to not be linked against
979     all the libraries needed for all the lookup types.
980
981
982 Version 4.73
983 ------------
984
985  NOTE: this version is not guaranteed backwards-compatible, please read the
986        items below carefully
987
988  1. A new main configuration option, "openssl_options", is available if Exim
989     is built with SSL support provided by OpenSSL.  The option allows
990     administrators to specify OpenSSL options to be used on connections;
991     typically this is to set bug compatibility features which the OpenSSL
992     developers have not enabled by default.  There may be security
993     consequences for certain options, so these should not be changed
994     frivolously.
995
996  2. A new pipe transport option, "permit_coredumps", may help with problem
997     diagnosis in some scenarios.  Note that Exim is typically installed as
998     a setuid binary, which on most OSes will inhibit coredumps by default,
999     so that safety mechanism would have to be overridden for this option to
1000     be able to take effect.
1001
1002  3. ClamAV 0.95 is now required for ClamAV support in Exim, unless
1003     Local/Makefile sets: WITH_OLD_CLAMAV_STREAM=yes
1004     Note that this switches Exim to use a new API ("INSTREAM") and a future
1005     release of ClamAV will remove support for the old API ("STREAM").
1006
1007     The av_scanner option, when set to "clamd", now takes an optional third
1008     part, "local", which causes Exim to pass a filename to ClamAV instead of
1009     the file content.  This is the same behaviour as when clamd is pointed at
1010     a Unix-domain socket.  For example:
1011
1012       av_scanner = clamd:192.0.2.3 1234:local
1013
1014     ClamAV's ExtendedDetectionInfo response format is now handled.
1015
1016  4. There is now a -bmalware option, restricted to admin users.  This option
1017     takes one parameter, a filename, and scans that file with Exim's
1018     malware-scanning framework.  This is intended purely as a debugging aid
1019     to ensure that Exim's scanning is working, not to replace other tools.
1020     Note that the ACL framework is not invoked, so if av_scanner references
1021     ACL variables without a fallback then this will fail.
1022
1023  5. There is a new expansion operator, "reverse_ip", which will reverse IP
1024     addresses; IPv4 into dotted quad, IPv6 into dotted nibble.  Examples:
1025
1026       ${reverse_ip:192.0.2.4}
1027        -> 4.2.0.192
1028       ${reverse_ip:2001:0db8:c42:9:1:abcd:192.0.2.3}
1029        -> 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
1030
1031  6. There is a new ACL control called "debug", to enable debug logging.
1032     This allows selective logging of certain incoming transactions within
1033     production environments, with some care.  It takes two options, "tag"
1034     and "opts"; "tag" is included in the filename of the log and "opts"
1035     is used as per the -d<options> command-line option.  Examples, which
1036     don't all make sense in all contexts:
1037
1038       control = debug
1039       control = debug/tag=.$sender_host_address
1040       control = debug/opts=+expand+acl
1041       control = debug/tag=.$message_exim_id/opts=+expand
1042
1043  7. It has always been implicit in the design and the documentation that
1044     "the Exim user" is not root.  src/EDITME said that using root was
1045     "very strongly discouraged".  This is not enough to keep people from
1046     shooting themselves in the foot in days when many don't configure Exim
1047     themselves but via package build managers.  The security consequences of
1048     running various bits of network code are severe if there should be bugs in
1049     them.  As such, the Exim user may no longer be root.  If configured
1050     statically, Exim will refuse to build.  If configured as ref:user then Exim
1051     will exit shortly after start-up.  If you must shoot yourself in the foot,
1052     then henceforth you will have to maintain your own local patches to strip
1053     the safeties off.
1054
1055  8. There is a new expansion condition, bool_lax{}.  Where bool{} uses the ACL
1056     condition logic to determine truth/failure and will fail to expand many
1057     strings, bool_lax{} uses the router condition logic, where most strings
1058     do evaluate true.
1059     Note: bool{00} is false, bool_lax{00} is true.
1060
1061  9. Routers now support multiple "condition" tests.
1062
1063 10. There is now a runtime configuration option "tcp_wrappers_daemon_name".
1064     Setting this allows an admin to define which entry in the tcpwrappers
1065     config file will be used to control access to the daemon.  This option
1066     is only available when Exim is built with USE_TCP_WRAPPERS.  The
1067     default value is set at build time using the TCP_WRAPPERS_DAEMON_NAME
1068     build option.
1069
1070 11. [POSSIBLE CONFIG BREAKAGE] The default value for system_filter_user is now
1071     the Exim run-time user, instead of root.
1072
1073 12. [POSSIBLE CONFIG BREAKAGE] ALT_CONFIG_ROOT_ONLY is no longer optional and
1074     is forced on.  This is mitigated by the new build option
1075     TRUSTED_CONFIG_LIST which defines a list of configuration files which
1076     are trusted; one per line. If a config file is owned by root and matches
1077     a pathname in the list, then it may be invoked by the Exim build-time
1078     user without Exim relinquishing root privileges.
1079
1080 13. [POSSIBLE CONFIG BREAKAGE] The Exim user is no longer automatically
1081     trusted to supply -D<Macro[=Value]> overrides on the command-line.  Going
1082     forward, we recommend using TRUSTED_CONFIG_LIST with shim configs that
1083     include the main config.  As a transition mechanism, we are temporarily
1084     providing a work-around: the new build option WHITELIST_D_MACROS provides
1085     a colon-separated list of macro names which may be overridden by the Exim
1086     run-time user.  The values of these macros are constrained to the regex
1087     ^[A-Za-z0-9_/.-]*$ (which explicitly does allow for empty values).
1088
1089
1090 Version 4.72
1091 ------------
1092
1093  1. TWO SECURITY FIXES: one relating to mail-spools which are globally
1094     writable, the other to locking of MBX folders (not mbox).
1095
1096  2. MySQL stored procedures are now supported.
1097
1098  3. The dkim_domain transport option is now a list, not a single string, and
1099     messages will be signed for each element in the list (discarding
1100     duplicates).
1101
1102  4. The 4.70 release unexpectedly changed the behaviour of dnsdb TXT lookups
1103     in the presence of multiple character strings within the RR. Prior to 4.70,
1104     only the first string would be returned.  The dnsdb lookup now, by default,
1105     preserves the pre-4.70 semantics, but also now takes an extended output
1106     separator specification.  The separator can be followed by a semicolon, to
1107     concatenate the individual text strings together with no join character,
1108     or by a comma and a second separator character, in which case the text
1109     strings within a TXT record are joined on that second character.
1110     Administrators are reminded that DNS provides no ordering guarantees
1111     between multiple records in an RRset.  For example:
1112
1113       foo.example.  IN TXT "a" "b" "c"
1114       foo.example.  IN TXT "d" "e" "f"
1115
1116       ${lookup dnsdb{>/ txt=foo.example}}   -> "a/d"
1117       ${lookup dnsdb{>/; txt=foo.example}}  -> "def/abc"
1118       ${lookup dnsdb{>/,+ txt=foo.example}} -> "a+b+c/d+e+f"
1119
1120
1121 Version 4.70 / 4.71
1122 -------------------
1123
1124  1. Native DKIM support without an external library.
1125     (Note that if no action to prevent it is taken, a straight upgrade will
1126     result in DKIM verification of all signed incoming emails.  See spec
1127     for details on conditionally disabling)
1128
1129  2. Experimental DCC support via dccifd (contributed by Wolfgang Breyha).
1130
1131  3. There is now a bool{} expansion condition which maps certain strings to
1132     true/false condition values (most likely of use in conjunction with the
1133     and{} expansion operator).
1134
1135  4. The $spam_score, $spam_bar and $spam_report variables are now available
1136     at delivery time.
1137
1138  5. exim -bP now supports "macros", "macro_list" or "macro MACRO_NAME" as
1139     options, provided that Exim is invoked by an admin_user.
1140
1141  6. There is a new option gnutls_compat_mode, when linked against GnuTLS,
1142     which increases compatibility with older clients at the cost of decreased
1143     security.  Don't set this unless you need to support such clients.
1144
1145  7. There is a new expansion operator, ${randint:...} which will produce a
1146     "random" number less than the supplied integer.  This randomness is
1147     not guaranteed to be cryptographically strong, but depending upon how
1148     Exim was built may be better than the most naive schemes.
1149
1150  8. Exim now explicitly ensures that SHA256 is available when linked against
1151     OpenSSL.
1152
1153  9. The transport_filter_timeout option now applies to SMTP transports too.
1154
1155
1156 Version 4.69
1157 ------------
1158
1159  1. Preliminary DKIM support in Experimental.
1160
1161
1162 Version 4.68
1163 ------------
1164
1165  1. The body_linecount and body_zerocount C variables are now exported in the
1166     local_scan API.
1167
1168  2. When a dnslists lookup succeeds, the key that was looked up is now placed
1169     in $dnslist_matched. When the key is an IP address, it is not reversed in
1170     this variable (though it is, of course, in the actual lookup). In simple
1171     cases, for example:
1172
1173       deny dnslists = spamhaus.example
1174
1175     the key is also available in another variable (in this case,
1176     $sender_host_address). In more complicated cases, however, this is not
1177     true. For example, using a data lookup might generate a dnslists lookup
1178     like this:
1179
1180       deny dnslists = spamhaus.example/<|192.168.1.2|192.168.6.7|...
1181
1182     If this condition succeeds, the value in $dnslist_matched might be
1183     192.168.6.7 (for example).
1184
1185  3. Authenticators now have a client_condition option. When Exim is running as
1186     a client, it skips an authenticator whose client_condition expansion yields
1187     "0", "no", or "false". This can be used, for example, to skip plain text
1188     authenticators when the connection is not encrypted by a setting such as:
1189
1190       client_condition = ${if !eq{$tls_cipher}{}}
1191
1192     Note that the 4.67 documentation states that $tls_cipher contains the
1193     cipher used for incoming messages. In fact, during SMTP delivery, it
1194     contains the cipher used for the delivery. The same is true for
1195     $tls_peerdn.
1196
1197  4. There is now a -Mvc <message-id> option, which outputs a copy of the
1198     message to the standard output, in RFC 2822 format. The option can be used
1199     only by an admin user.
1200
1201  5. There is now a /noupdate option for the ratelimit ACL condition. It
1202     computes the rate and checks the limit as normal, but it does not update
1203     the saved data. This means that, in relevant ACLs, it is possible to lookup
1204     the existence of a specified (or auto-generated) ratelimit key without
1205     incrementing the ratelimit counter for that key.
1206
1207     In order for this to be useful, another ACL entry must set the rate
1208     for the same key somewhere (otherwise it will always be zero).
1209
1210     Example:
1211
1212     acl_check_connect:
1213       # Read the rate; if it doesn't exist or is below the maximum
1214       # we update it below
1215       deny ratelimit = 100 / 5m / strict / noupdate
1216            log_message = RATE: $sender_rate / $sender_rate_period \
1217                          (max $sender_rate_limit)
1218
1219       [... some other logic and tests...]
1220
1221       warn ratelimit = 100 / 5m / strict / per_cmd
1222            log_message = RATE UPDATE: $sender_rate / $sender_rate_period \
1223                          (max $sender_rate_limit)
1224            condition = ${if le{$sender_rate}{$sender_rate_limit}}
1225
1226       accept
1227
1228  6. The variable $max_received_linelength contains the number of bytes in the
1229     longest line that was received as part of the message, not counting the
1230     line termination character(s).
1231
1232  7. Host lists can now include +ignore_defer and +include_defer, analogous to
1233     +ignore_unknown and +include_unknown. These options should be used with
1234     care, probably only in non-critical host lists such as whitelists.
1235
1236  8. There's a new option called queue_only_load_latch, which defaults true.
1237     If set false when queue_only_load is greater than zero, Exim re-evaluates
1238     the load for each incoming message in an SMTP session. Otherwise, once one
1239     message is queued, the remainder are also.
1240
1241  9. There is a new ACL, specified by acl_smtp_notquit, which is run in most
1242     cases when an SMTP session ends without sending QUIT. However, when Exim
1243     itself is in bad trouble, such as being unable to write to its log files,
1244     this ACL is not run, because it might try to do things (such as write to
1245     log files) that make the situation even worse.
1246
1247     Like the QUIT ACL, this new ACL is provided to make it possible to gather
1248     statistics. Whatever it returns (accept or deny) is immaterial. The "delay"
1249     modifier is forbidden in this ACL.
1250
1251     When the NOTQUIT ACL is running, the variable $smtp_notquit_reason is set
1252     to a string that indicates the reason for the termination of the SMTP
1253     connection. The possible values are:
1254
1255       acl-drop                 Another ACL issued a "drop" command
1256       bad-commands             Too many unknown or non-mail commands
1257       command-timeout          Timeout while reading SMTP commands
1258       connection-lost          The SMTP connection has been lost
1259       data-timeout             Timeout while reading message data
1260       local-scan-error         The local_scan() function crashed
1261       local-scan-timeout       The local_scan() function timed out
1262       signal-exit              SIGTERM or SIGINT
1263       synchronization-error    SMTP synchronization error
1264       tls-failed               TLS failed to start
1265
1266     In most cases when an SMTP connection is closed without having received
1267     QUIT, Exim sends an SMTP response message before actually closing the
1268     connection. With the exception of acl-drop, the default message can be
1269     overridden by the "message" modifier in the NOTQUIT ACL. In the case of a
1270     "drop" verb in another ACL, it is the message from the other ACL that is
1271     used.
1272
1273 10. For MySQL and PostgreSQL lookups, it is now possible to specify a list of
1274     servers with individual queries. This is done by starting the query with
1275     "servers=x:y:z;", where each item in the list may take one of two forms:
1276
1277     (1) If it is just a host name, the appropriate global option (mysql_servers
1278         or pgsql_servers) is searched for a host of the same name, and the
1279         remaining parameters (database, user, password) are taken from there.
1280
1281     (2) If it contains any slashes, it is taken as a complete parameter set.
1282
1283     The list of servers is used in exactly the same was as the global list.
1284     Once a connection to a server has happened and a query has been
1285     successfully executed, processing of the lookup ceases.
1286
1287     This feature is intended for use in master/slave situations where updates
1288     are occurring, and one wants to update a master rather than a slave. If the
1289     masters are in the list for reading, you might have:
1290
1291       mysql_servers = slave1/db/name/pw:slave2/db/name/pw:master/db/name/pw
1292
1293     In an updating lookup, you could then write
1294
1295       ${lookup mysql{servers=master; UPDATE ...}
1296
1297     If, on the other hand, the master is not to be used for reading lookups:
1298
1299       pgsql_servers = slave1/db/name/pw:slave2/db/name/pw
1300
1301     you can still update the master by
1302
1303       ${lookup pgsql{servers=master/db/name/pw; UPDATE ...}
1304
1305 11. The message_body_newlines option (default FALSE, for backwards
1306     compatibility) can be used to control whether newlines are present in
1307     $message_body and $message_body_end. If it is FALSE, they are replaced by
1308     spaces.
1309
1310
1311 Version 4.67
1312 ------------
1313
1314  1. There is a new log selector called smtp_no_mail, which is not included in
1315     the default setting. When it is set, a line is written to the main log
1316     whenever an accepted SMTP connection terminates without having issued a
1317     MAIL command.
1318
1319  2. When an item in a dnslists list is followed by = and & and a list of IP
1320     addresses, the behaviour was not clear when the lookup returned more than
1321     one IP address. This has been solved by the addition of == and =& for "all"
1322     rather than the default "any" matching.
1323
1324  3. Up till now, the only control over which cipher suites GnuTLS uses has been
1325     for the cipher algorithms. New options have been added to allow some of the
1326     other parameters to be varied.
1327
1328  4. There is a new compile-time option called ENABLE_DISABLE_FSYNC. When it is
1329     set, Exim compiles a runtime option called disable_fsync.
1330
1331  5. There is a new variable called $smtp_count_at_connection_start.
1332
1333  6. There's a new control called no_pipelining.
1334
1335  7. There are two new variables called $sending_ip_address and $sending_port.
1336     These are set whenever an SMTP connection to another host has been set up.
1337
1338  8. The expansion of the helo_data option in the smtp transport now happens
1339     after the connection to the server has been made.
1340
1341  9. There is a new expansion operator ${rfc2047d: that decodes strings that
1342     are encoded as per RFC 2047.
1343
1344 10. There is a new log selector called "pid", which causes the current process
1345     id to be added to every log line, in square brackets, immediately after the
1346     time and date.
1347
1348 11. Exim has been modified so that it flushes SMTP output before implementing
1349     a delay in an ACL. It also flushes the output before performing a callout,
1350     as this can take a substantial time. These behaviours can be disabled by
1351     obeying control = no_delay_flush or control = no_callout_flush,
1352     respectively, at some earlier stage of the connection.
1353
1354 12. There are two new expansion conditions that iterate over a list. They are
1355     called forany and forall.
1356
1357 13. There's a new global option called dsn_from that can be used to vary the
1358     contents of From: lines in bounces and other automatically generated
1359     messages ("delivery status notifications" - hence the name of the option).
1360
1361 14. The smtp transport has a new option called hosts_avoid_pipelining.
1362
1363 15. By default, exigrep does case-insensitive matches. There is now a -I option
1364     that makes it case-sensitive.
1365
1366 16. A number of new features ("addresses", "map", "filter", and "reduce") have
1367     been added to string expansions to make it easier to process lists of
1368     items, typically addresses.
1369
1370 17. There's a new ACL modifier called "continue". It does nothing of itself,
1371     and processing of the ACL always continues with the next condition or
1372     modifier. It is provided so that the side effects of expanding its argument
1373     can be used.
1374
1375 18. It is now possible to use newline and other control characters (those with
1376     values less than 32, plus DEL) as separators in lists.
1377
1378 19. The exigrep utility now has a -v option, which inverts the matching
1379     condition.
1380
1381 20. The host_find_failed option in the manualroute router can now be set to
1382     "ignore".
1383
1384
1385 Version 4.66
1386 ------------
1387
1388 No new features were added to 4.66.
1389
1390
1391 Version 4.65
1392 ------------
1393
1394 No new features were added to 4.65.
1395
1396
1397 Version 4.64
1398 ------------
1399
1400  1. ACL variables can now be given arbitrary names, as long as they start with
1401     "acl_c" or "acl_m" (for connection variables and message variables), are at
1402     least six characters long, with the sixth character being either a digit or
1403     an underscore.
1404
1405  2. There is a new ACL modifier called log_reject_target. It makes it possible
1406     to specify which logs are used for messages about ACL rejections.
1407
1408  3. There is a new authenticator called "dovecot". This is an interface to the
1409     authentication facility of the Dovecot POP/IMAP server, which can support a
1410     number of authentication methods.
1411
1412  4. The variable $message_headers_raw provides a concatenation of all the
1413     messages's headers without any decoding. This is in contrast to
1414     $message_headers, which does RFC2047 decoding on the header contents.
1415
1416  5. In a DNS black list, if two domain names, comma-separated, are given, the
1417     second is used first to do an initial check, making use of any IP value
1418     restrictions that are set. If there is a match, the first domain is used,
1419     without any IP value restrictions, to get the TXT record.
1420
1421  6. All authenticators now have a server_condition option.
1422
1423  7. There is a new command-line option called -Mset. It is useful only in
1424     conjunction with -be (that is, when testing string expansions). It must be
1425     followed by a message id; Exim loads the given message from its spool
1426     before doing the expansions.
1427
1428  8. Another similar new command-line option is called -bem. It operates like
1429     -be except that it must be followed by the name of a file that contains a
1430     message.
1431
1432  9. When an address is delayed because of a 4xx response to a RCPT command, it
1433     is now the combination of sender and recipient that is delayed in
1434     subsequent queue runs until its retry time is reached.
1435
1436 10. Unary negation and the bitwise logical operators and, or, xor, not, and
1437     shift, have been added to the eval: and eval10: expansion items.
1438
1439 11. The variables $interface_address and $interface_port have been renamed
1440     as $received_ip_address and $received_port, to make it clear that they
1441     relate to message reception rather than delivery. (The old names remain
1442     available for compatibility.)
1443
1444 12. The "message" modifier can now be used on "accept" and "discard" acl verbs
1445     to vary the message that is sent when an SMTP command is accepted.
1446
1447
1448 Version 4.63
1449 ------------
1450
1451 1. There is a new Boolean option called filter_prepend_home for the redirect
1452    router.
1453
1454 2. There is a new acl, set by acl_not_smtp_start, which is run right at the
1455    start of receiving a non-SMTP message, before any of the message has been
1456    read.
1457
1458 3. When an SMTP error message is specified in a "message" modifier in an ACL,
1459    or in a :fail: or :defer: message in a redirect router, Exim now checks the
1460    start of the message for an SMTP error code.
1461
1462 4. There is a new parameter for LDAP lookups called "referrals", which takes
1463    one of the settings "follow" (the default) or "nofollow".
1464
1465 5. Version 20070721.2 of exipick now included, offering these new options:
1466     --reverse
1467         After all other sorting options have bee processed, reverse order
1468         before displaying messages (-R is synonym).
1469     --random
1470         Randomize order of matching messages before displaying.
1471     --size
1472         Instead of displaying the matching messages, display the sum
1473         of their sizes.
1474     --sort <variable>[,<variable>...]
1475         Before displaying matching messages, sort the messages according to
1476         each messages value for each variable.
1477     --not
1478         Negate the value for every test (returns inverse output from the
1479         same criteria without --not).
1480
1481
1482 Version 4.62
1483 ------------
1484
1485 1. The ${readsocket expansion item now supports Internet domain sockets as well
1486    as Unix domain sockets. If the first argument begins "inet:", it must be of
1487    the form "inet:host:port". The port is mandatory; it may be a number or the
1488    name of a TCP port in /etc/services. The host may be a name, or it may be an
1489    IP address. An ip address may optionally be enclosed in square brackets.
1490    This is best for IPv6 addresses. For example:
1491
1492      ${readsocket{inet:[::1]:1234}{<request data>}...
1493
1494    Only a single host name may be given, but if looking it up yield more than
1495    one IP address, they are each tried in turn until a connection is made. Once
1496    a connection has been made, the behaviour is as for ${readsocket with a Unix
1497    domain socket.
1498
1499 2. If a redirect router sets up file or pipe deliveries for more than one
1500    incoming address, and the relevant transport has batch_max set greater than
1501    one, a batch delivery now occurs.
1502
1503 3. The appendfile transport has a new option called maildirfolder_create_regex.
1504    Its value is a regular expression. For a maildir delivery, this is matched
1505    against the maildir directory; if it matches, Exim ensures that a
1506    maildirfolder file is created alongside the new, cur, and tmp directories.
1507
1508
1509 Version 4.61
1510 ------------
1511
1512 The documentation is up-to-date for the 4.61 release. Major new features since
1513 the 4.60 release are:
1514
1515 . An option called disable_ipv6, to disable the use of IPv6 completely.
1516
1517 . An increase in the number of ACL variables to 20 of each type.
1518
1519 . A change to use $auth1, $auth2, and $auth3 in authenticators instead of $1,
1520   $2, $3, (though those are still set) because the numeric variables get used
1521   for other things in complicated expansions.
1522
1523 . The default for rfc1413_query_timeout has been changed from 30s to 5s.
1524
1525 . It is possible to use setclassresources() on some BSD OS to control the
1526   resources used in pipe deliveries.
1527
1528 . A new ACL modifier called add_header, which can be used with any verb.
1529
1530 . More errors are detectable in retry rules.
1531
1532 There are a number of other additions too.
1533
1534
1535 Version 4.60
1536 ------------
1537
1538 The documentation is up-to-date for the 4.60 release. Major new features since
1539 the 4.50 release are:
1540
1541 . Support for SQLite.
1542
1543 . Support for IGNOREQUOTA in LMTP.
1544
1545 . Extensions to the "submission mode" features.
1546
1547 . Support for Client SMTP Authorization (CSA).
1548
1549 . Support for ratelimiting hosts and users.
1550
1551 . New expansion items to help with the BATV "prvs" scheme.
1552
1553 . A "match_ip" condition, that matches an IP address against a list.
1554
1555 There are many more minor changes.
1556
1557 ****