OCSP observability: variables $tls_{in,out}_ocsp
[exim.git] / doc / doc-txt / NewStuff
CommitLineData
495ae4b0
PH
1New Features in Exim
2--------------------
3
38a0a95f
PH
4This file contains descriptions of new features that have been added to Exim.
5Before a formal release, there may be quite a lot of detail so that people can
6test from the snapshots or the CVS before the documentation is updated. Once
7the documentation is updated, this file is reduced to a short list.
8
6ece2e77
TL
9Version 4.83
10------------
11
a3c86431
TL
12 1. If built with the EXPERIMENTAL_PROXY feature enabled, Exim can be
13 configured to expect an initial header from a proxy that will make the
14 actual external source IP:host be used in exim instead of the IP of the
15 proxy that is connecting to it.
16
770747fd
MFM
17 2. New verify option header_names_ascii, which will check to make sure
18 there are no non-ASCII characters in header names. Exim itself handles
19 those non-ASCII characters, but downstream apps may not, so Exim can
20 detect and reject if those characters are present.
21
b9c2e32f
AR
22 3. New expansion operator ${utf8clean:string} to replace malformed UTF8
23 codepoints with valid ones.
24
b1f8e4f8
JH
25 4. New malware type "sock". Talks over a Unix or TCP socket, sending one
26 command line and matching a regex against the return data for trigger
27 and a second regex to extract malware_name. The mail spoofile name can
28 be included in the command line.
29
dc4dc04e
JH
30 5. The smtp transport now supports options "tls_verify_hosts" and
31 "tls_try_verify_hosts". If either is set the certificate verification
32 is split from the encryption operation. The default remains that a failed
33 verification cancels the encryption.
214042d2 34
deae092e
HS
35 6. New SERVERS override of default ldap server list. In the ACLs, an ldap
36 lookup can now set a list of servers to use that is different from the
37 default list.
38
8d91c6dc
LT
39 7. New command-line option -C for exiqgrep to specify alternate exim.conf
40 file when searching the queue.
41
2b4a568d
JH
42 8. EXPERIMENTAL_OCSP now supports GnuTLS also, if you have version 3.1.3
43 or later of that.
44
578897ea
JH
45 9. Support for DNSSEC on outbound connections.
46
9d1c15ef
JH
4710. New variables "tls_(in,out)_(our,peer)cert" and expansion item
48 "certextract" to extract fields from them.
49
6ece2e77 50
2c422e6f 51Version 4.82
98a90c36
PP
52------------
53
54 1. New command-line option -bI:sieve will list all supported sieve extensions
55 of this Exim build on standard output, one per line.
56 ManageSieve (RFC 5804) providers managing scripts for use by Exim should
57 query this to establish the correct list to include in the protocol's
58 SIEVE capability line.
59
12f69989
PP
60 2. If the -n option is combined with the -bP option, then the name of an
61 emitted option is not output, only the value (if visible to you).
62 For instance, "exim -n -bP pid_file_path" should just emit a pathname
63 followed by a newline, and no other text.
64
54c90be1
PP
65 3. When built with SUPPORT_TLS and USE_GNUTLS, the SMTP transport driver now
66 has a "tls_dh_min_bits" option, to set the minimum acceptable number of
67 bits in the Diffie-Hellman prime offered by a server (in DH ciphersuites)
68 acceptable for security. (Option accepted but ignored if using OpenSSL).
69 Defaults to 1024, the old value. May be lowered only to 512, or raised as
70 far as you like. Raising this may hinder TLS interoperability with other
71 sites and is not currently recommended. Lowering this will permit you to
72 establish a TLS session which is not as secure as you might like.
73
74 Unless you really know what you are doing, leave it alone.
75
1f4a55da 76 4. If not built with DISABLE_DNSSEC, Exim now has the main option
0fbd9bff 77 dns_dnssec_ok; if set to 1 then Exim will initialise the resolver library
1f4a55da
PP
78 to send the DO flag to your recursive resolver. If you have a recursive
79 resolver, which can set the Authenticated Data (AD) flag in results, Exim
0fbd9bff
PP
80 can now detect this. Exim does not perform validation itself, instead
81 relying upon a trusted path to the resolver.
1f4a55da
PP
82
83 Current status: work-in-progress; $sender_host_dnssec variable added.
84
36a3ae5f
PP
85 5. DSCP support for outbound connections: on a transport using the smtp driver,
86 set "dscp = ef", for instance, to cause the connections to have the relevant
13363eba
PP
87 DSCP (IPv4 TOS or IPv6 TCLASS) value in the header.
88
89 Similarly for inbound connections, there is a new control modifier, dscp,
90 so "warn control = dscp/ef" in the connect ACL, or after authentication.
91
92 Supported values depend upon system libraries. "exim -bI:dscp" to list the
93 ones Exim knows of. You can also set a raw number 0..0x3F.
36a3ae5f 94
f4ee74ac
PP
95 6. The -G command-line flag is no longer ignored; it is now equivalent to an
96 ACL setting "control = suppress_local_fixups". The -L command-line flag
97 is now accepted and forces use of syslog, with the provided tag as the
98 process name. A few other flags used by Sendmail are now accepted and
99 ignored.
100
976b7e9f
JH
101 7. New cutthrough routing feature. Requested by a "control = cutthrough_delivery"
102 ACL modifier; works for single-recipient mails which are recieved on and
103 deliverable via SMTP. Using the connection made for a recipient verify,
104 if requested before the verify, or a new one made for the purpose while
105 the inbound connection is still active. The bulk of the mail item is copied
106 direct from the inbound socket to the outbound (as well as the spool file).
107 When the source notifies the end of data, the data acceptance by the destination
108 is negociated before the acceptance is sent to the source. If the destination
109 does not accept the mail item, for example due to content-scanning, the item
110 is not accepted from the source and therefore there is no need to generate
111 a bounce mail. This is of benefit when providing a secondary-MX service.
112 The downside is that delays are under the control of the ultimate destination
113 system not your own.
114
115 The Recieved-by: header on items delivered by cutthrough is generated
042eb971 116 early in reception rather than at the end; this will affect any timestamp
976b7e9f
JH
117 included. The log line showing delivery is recorded before that showing
118 reception; it uses a new ">>" tag instead of "=>".
06a6f4ed 119
976b7e9f
JH
120 To support the feature, verify-callout connections can now use ESMTP and TLS.
121 The usual smtp transport options are honoured, plus a (new, default everything)
122 hosts_verify_avoid_tls.
123
124 New variable families named tls_in_cipher, tls_out_cipher etc. are introduced
125 for specific access to the information for each connection. The old names
126 are present for now but deprecated.
127
fcc8e047 128 Not yet supported: IGNOREQUOTA, SIZE, PIPELINING.
976b7e9f 129
a64a3dfa
JH
130 8. New expansion operators ${listnamed:name} to get the content of a named list
131 and ${listcount:string} to count the items in a list.
98a90c36 132
2519e60d 133 9. New global option "gnutls_allow_auto_pkcs11", defaults false. The GnuTLS
a5f239e4
PP
134 rewrite in 4.80 combines with GnuTLS 2.12.0 or later, to autoload PKCS11
135 modules. For some situations this is desirable, but we expect admin in
136 those situations to know they want the feature. More commonly, it means
137 that GUI user modules get loaded and are broken by the setuid Exim being
138 unable to access files specified in environment variables and passed
139 through, thus breakage. So we explicitly inhibit the PKCS11 initialisation
140 unless this new option is set.
141
2519e60d
TL
142 Some older OS's with earlier versions of GnuTLS might not have pkcs11 ability,
143 so have also added a build option which can be used to build Exim with GnuTLS
144 but without trying to use any kind of PKCS11 support. Uncomment this in the
145 Local/Makefile:
146
147 AVOID_GNUTLS_PKCS11=yes
148
3e8abda0 14910. The "acl = name" condition on an ACL now supports optional arguments.
bef3ea7f
JH
150 New expansion item "${acl {name}{arg}...}" and expansion condition
151 "acl {{name}{arg}...}" are added. In all cases up to nine arguments
152 can be used, appearing in $acl_arg1 to $acl_arg9 for the called ACL.
153 Variable $acl_narg contains the number of arguments. If the ACL sets
154 a "message =" value this becomes the result of the expansion item,
155 or the value of $value for the expansion condition. If the ACL returns
156 accept the expansion condition is true; if reject, false. A defer
157 return results in a forced fail.
a5f239e4 158
846726c5
JH
15911. Routers and transports can now have multiple headers_add and headers_remove
160 option lines. The concatenated list is used.
161
e7568d51
TL
16212. New ACL modifier "remove_header" can remove headers before message gets
163 handled by routers/transports.
164
3a796370
JH
16513. New dnsdb lookup pseudo-type "a+". A sequence of "a6" (if configured),
166 "aaaa" and "a" lookups is done and the full set of results returned.
167
362145b5
JH
16814. New expansion variable $headers_added with content from ACL add_header
169 modifier (but not yet added to messsage).
170
bd0fff00 17115. New 8bitmime status logging option for received messages. Log field "M8S".
3c0a92dc 172
c8e2fc1e
JH
17316. New authenticated_sender logging option, adding to log field "A".
174
181d9bf8
JH
17517. New expansion variables $router_name and $transport_name. Useful
176 particularly for debug_print as -bt commandline option does not
2a47f028 177 require privilege whereas -d does.
181d9bf8 178
fd98a5c6
JH
17918. If built with EXPERIMENTAL_PRDR, per-recipient data responses per a
180 proposed extension to SMTP from Eric Hall.
181
700d22f3
PP
18219. The pipe transport has gained the force_command option, to allow
183 decorating commands from user .forward pipe aliases with prefix
184 wrappers, for instance.
185
fcc8e047
JH
18620. Callout connections can now AUTH; the same controls as normal delivery
187 connections apply.
188
b1f37849
TL
18921. Support for DMARC, using opendmarc libs, can be enabled. It adds new
190 options: dmarc_forensic_sender, dmarc_history_file, and dmarc_tld_file.
191 It adds new expansion variables $dmarc_ar_header, $dmarc_status,
192 $dmarc_status_text, and $dmarc_used_domain. It adds a new acl modifier
193 dmarc_status. It adds new control flags dmarc_disable_verify and
194 dmarc_enable_forensic.
195
19622. Add expansion variable $authenticated_fail_id, which is the username
197 provided to the authentication method which failed. It is available
198 for use in subsequent ACL processing (typically quit or notquit ACLs).
199
7142daca
PP
20023. New ACL modifer "udpsend" can construct a UDP packet to send to a given
201 UDP host and port.
202
20324. New ${hexquote:..string..} expansion operator converts non-printable
204 characters in the string to \xNN form.
205
1a7b746d
TL
20625. Experimental TPDA (Transport Post Delivery Action) function added.
207 Patch provided by Axel Rau.
208
4dd78911
TL
20926. Experimental Redis lookup added. Patch provided by Warren Baker.
210
181d9bf8 211
b1770b6e 212Version 4.80
c1e794ba
PP
213------------
214
215 1. New authenticator driver, "gsasl". Server-only (at present).
216 This is a SASL interface, licensed under GPL, which can be found at
217 http://www.gnu.org/software/gsasl/.
218 This system does not provide sources of data for authentication, so
3b4f55a3 219 careful use needs to be made of the conditions in Exim.
c1e794ba 220
97753960
PP
221 2. New authenticator driver, "heimdal_gssapi". Server-only.
222 A replacement for using cyrus_sasl with Heimdal, now that $KRB5_KTNAME
223 is no longer honoured for setuid programs by Heimdal. Use the
224 "server_keytab" option to point to the keytab.
225
252e0c7b
PP
226 3. The "pkg-config" system can now be used when building Exim to reference
227 cflags and library information for lookups and authenticators, rather
228 than having to update "CFLAGS", "AUTH_LIBS", "LOOKUP_INCLUDE" and
7e6a8985
PP
229 "LOOKUP_LIBS" directly. Similarly for handling the TLS library support
230 without adjusting "TLS_INCLUDE" and "TLS_LIBS".
252e0c7b 231
6a6084f8
PP
232 In addition, setting PCRE_CONFIG=yes will query the pcre-config tool to
233 find the headers and libraries for PCRE.
234
f1e05cc7 235 4. New expansion variable $tls_bits.
20aa9dbd 236
4a6a987a
PP
237 5. New lookup type, "dbmjz". Key is an Exim list, the elements of which will
238 be joined together with ASCII NUL characters to construct the key to pass
3b4f55a3
PP
239 into the DBM library. Can be used with gsasl to access sasldb2 files as
240 used by Cyrus SASL.
4a6a987a 241
da3ad30d
PP
242 6. OpenSSL now supports TLS1.1 and TLS1.2 with OpenSSL 1.0.1.
243
244 Avoid release 1.0.1a if you can. Note that the default value of
245 "openssl_options" is no longer "+dont_insert_empty_fragments", as that
246 increased susceptibility to attack. This may still have interoperability
247 implications for very old clients (see version 4.31 change 37) but
248 administrators can choose to make the trade-off themselves and restore
249 compatibility at the cost of session security.
250
7be682ca
PP
251 7. Use of the new expansion variable $tls_sni in the main configuration option
252 tls_certificate will cause Exim to re-expand the option, if the client
253 sends the TLS Server Name Indication extension, to permit choosing a
254 different certificate; tls_privatekey will also be re-expanded. You must
255 still set these options to expand to valid files when $tls_sni is not set.
3f0945ff
PP
256
257 The SMTP Transport has gained the option tls_sni, which will set a hostname
258 for outbound TLS sessions, and set $tls_sni too.
259
260 A new log_selector, +tls_sni, has been added, to log received SNI values
261 for Exim as a server.
262
9cbad13b
PP
263 8. The existing "accept_8bitmime" option now defaults to true. This means
264 that Exim is deliberately not strictly RFC compliant. We're following
265 Dan Bernstein's advice in http://cr.yp.to/smtp/8bitmime.html by default.
266 Those who disagree, or know that they are talking to mail servers that,
267 even today, are not 8-bit clean, need to turn off this option.
268
9ee44efb
PP
269 9. Exim can now be started with -bw (with an optional timeout, given as
270 -bw<timespec>). With this, stdin at startup is a socket that is
271 already listening for connections. This has a more modern name of
272 "socket activation", but forcing the activated socket to fd 0. We're
273 interested in adding more support for modern variants.
274
eae0036b 27510. ${eval } now uses 64-bit values on supporting platforms. A new "G" suffix
97d17305
JH
276 for numbers indicates multiplication by 1024^3.
277
17c76198
PP
27811. The GnuTLS support has been revamped; the three options gnutls_require_kx,
279 gnutls_require_mac & gnutls_require_protocols are no longer supported.
280 tls_require_ciphers is now parsed by gnutls_priority_init(3) as a priority
281 string, documentation for which is at:
42bfef1e 282 http://www.gnutls.org/manual/html_node/Priority-Strings.html
17c76198
PP
283
284 SNI support has been added to Exim's GnuTLS integration too.
285
af3498d6
PP
286 For sufficiently recent GnuTLS libraries, ${randint:..} will now use
287 gnutls_rnd(), asking for GNUTLS_RND_NONCE level randomness.
288
53947857 28912. With OpenSSL, if built with EXPERIMENTAL_OCSP, a new option tls_ocsp_file
3f7eeb86
PP
290 is now available. If the contents of the file are valid, then Exim will
291 send that back in response to a TLS status request; this is OCSP Stapling.
292 Exim will not maintain the contents of the file in any way: administrators
293 are responsible for ensuring that it is up-to-date.
294
295 See "experimental-spec.txt" for more details.
296
eae0036b
PP
29713. ${lookup dnsdb{ }} supports now SPF record types. They are handled
298 identically to TXT record lookups.
299
2605c55b 30014. New expansion variable $tod_epoch_l for higher-precision time.
c1e794ba 301
3375e053
PP
30215. New global option tls_dh_max_bits, defaulting to current value of NSS
303 hard-coded limit of DH ephemeral bits, to fix interop problems caused by
304 GnuTLS 2.12 library recommending a bit count higher than NSS supports.
305
a799883d
PP
30616. tls_dhparam now used by both OpenSSL and GnuTLS, can be path or identifier.
307 Option can now be a path or an identifier for a standard prime.
308 If unset, we use the DH prime from section 2.2 of RFC 5114, "ike23".
309 Set to "historic" to get the old GnuTLS behaviour of auto-generated DH
310 primes.
311
3ecab157 31217. SSLv2 now disabled by default in OpenSSL. (Never supported by GnuTLS).
f0f5a555
PP
313 Use "openssl_options -no_sslv2" to re-enable support, if your OpenSSL
314 install was not built with OPENSSL_NO_SSL2 ("no-ssl2").
315
9e45c72b 316
3ce96ada
TF
317Version 4.77
318------------
319
320 1. New options for the ratelimit ACL condition: /count= and /unique=.
321 The /noupdate option has been replaced by a /readonly option.
322
061b7ebd
PP
323 2. The SMTP transport's protocol option may now be set to "smtps", to
324 use SSL-on-connect outbound.
325
9e949f00
PP
326 3. New variable $av_failed, set true if the AV scanner deferred; ie, when
327 there is a problem talking to the AV scanner, or the AV scanner running.
328
39257585
PP
329 4. New expansion conditions, "inlist" and "inlisti", which take simple lists
330 and check if the search item is a member of the list. This does not
331 support named lists, but does subject the list part to string expansion.
332
333 5. Unless the new EXPAND_LISTMATCH_RHS build option is set when Exim was
334 built, Exim no longer performs string expansion on the second string of
335 the match_* expansion conditions: "match_address", "match_domain",
336 "match_ip" & "match_local_part". Named lists can still be used.
337
7c6d71af 338
e97d1f08
PP
339Version 4.76
340------------
341
342 1. The global option "dns_use_edns0" may be set to coerce EDNS0 usage on
343 or off in the resolver library.
344
345
bc19a55b
PP
346Version 4.75
347------------
348
349 1. In addition to the existing LDAP and LDAP/SSL ("ldaps") support, there
350 is now LDAP/TLS support, given sufficiently modern OpenLDAP client
351 libraries. The following global options have been added in support of
352 this: ldap_ca_cert_dir, ldap_ca_cert_file, ldap_cert_file, ldap_cert_key,
353 ldap_cipher_suite, ldap_require_cert, ldap_start_tls.
354
2fe76745
PP
355 2. The pipe transport now takes a boolean option, "freeze_signal", default
356 false. When true, if the external delivery command exits on a signal then
357 Exim will freeze the message in the queue, instead of generating a bounce.
358
f1e5fef5
PP
359 3. Log filenames may now use %M as an escape, instead of %D (still available).
360 The %M pattern expands to yyyymm, providing month-level resolution.
361
332f5cf3
PP
362 4. The $message_linecount variable is now updated for the maildir_tag option,
363 in the same way as $message_size, to reflect the real number of lines,
364 including any header additions or removals from transport.
365
29cfeb94
PP
366 5. When contacting a pool of SpamAssassin servers configured in spamd_address,
367 Exim now selects entries randomly, to better scale in a cluster setup.
368
bc19a55b 369
a01ba081
PP
370Version 4.74
371------------
372
1670ef10
PP
373 1. SECURITY FIX: privilege escalation flaw fixed. On Linux (and only Linux)
374 the flaw permitted the Exim run-time user to cause root to append to
375 arbitrary files of the attacker's choosing, with the content based
376 on content supplied by the attacker.
377
378 2. Exim now supports loading some lookup types at run-time, using your
a01ba081
PP
379 platform's dlopen() functionality. This has limited platform support
380 and the intention is not to support every variant, it's limited to
381 dlopen(). This permits the main Exim binary to not be linked against
382 all the libraries needed for all the lookup types.
383
384
77bb000f
PP
385Version 4.73
386------------
387
2cfd3221
PP
388 NOTE: this version is not guaranteed backwards-compatible, please read the
389 items below carefully
390
77bb000f
PP
391 1. A new main configuration option, "openssl_options", is available if Exim
392 is built with SSL support provided by OpenSSL. The option allows
393 administrators to specify OpenSSL options to be used on connections;
394 typically this is to set bug compatibility features which the OpenSSL
395 developers have not enabled by default. There may be security
396 consequences for certain options, so these should not be changed
397 frivolously.
398
a29e5231
PP
399 2. A new pipe transport option, "permit_coredumps", may help with problem
400 diagnosis in some scenarios. Note that Exim is typically installed as
401 a setuid binary, which on most OSes will inhibit coredumps by default,
43236f35 402 so that safety mechanism would have to be overridden for this option to
a29e5231
PP
403 be able to take effect.
404
8544e77a
PP
405 3. ClamAV 0.95 is now required for ClamAV support in Exim, unless
406 Local/Makefile sets: WITH_OLD_CLAMAV_STREAM=yes
407 Note that this switches Exim to use a new API ("INSTREAM") and a future
408 release of ClamAV will remove support for the old API ("STREAM").
409
410 The av_scanner option, when set to "clamd", now takes an optional third
411 part, "local", which causes Exim to pass a filename to ClamAV instead of
412 the file content. This is the same behaviour as when clamd is pointed at
413 a Unix-domain socket. For example:
414
415 av_scanner = clamd:192.0.2.3 1234:local
416
491fab4c
PP
417 ClamAV's ExtendedDetectionInfo response format is now handled.
418
8544e77a
PP
419 4. There is now a -bmalware option, restricted to admin users. This option
420 takes one parameter, a filename, and scans that file with Exim's
421 malware-scanning framework. This is intended purely as a debugging aid
422 to ensure that Exim's scanning is working, not to replace other tools.
a9622bc6
PP
423 Note that the ACL framework is not invoked, so if av_scanner references
424 ACL variables without a fallback then this will fail.
8544e77a 425
83e029d5
PP
426 5. There is a new expansion operator, "reverse_ip", which will reverse IP
427 addresses; IPv4 into dotted quad, IPv6 into dotted nibble. Examples:
428
429 ${reverse_ip:192.0.2.4}
430 -> 4.2.0.192
431 ${reverse_ip:2001:0db8:c42:9:1:abcd:192.0.2.3}
432 -> 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
433
ed7f7860
PP
434 6. There is a new ACL control called "debug", to enable debug logging.
435 This allows selective logging of certain incoming transactions within
436 production environments, with some care. It takes two options, "tag"
437 and "opts"; "tag" is included in the filename of the log and "opts"
438 is used as per the -d<options> command-line option. Examples, which
439 don't all make sense in all contexts:
440
441 control = debug
442 control = debug/tag=.$sender_host_address
443 control = debug/opts=+expand+acl
444 control = debug/tag=.$message_exim_id/opts=+expand
445
10385c15
PP
446 7. It has always been implicit in the design and the documentation that
447 "the Exim user" is not root. src/EDITME said that using root was
448 "very strongly discouraged". This is not enough to keep people from
449 shooting themselves in the foot in days when many don't configure Exim
450 themselves but via package build managers. The security consequences of
451 running various bits of network code are severe if there should be bugs in
452 them. As such, the Exim user may no longer be root. If configured
453 statically, Exim will refuse to build. If configured as ref:user then Exim
454 will exit shortly after start-up. If you must shoot yourself in the foot,
455 then henceforth you will have to maintain your own local patches to strip
456 the safeties off.
457
06a6f4ed 458 8. There is a new expansion condition, bool_lax{}. Where bool{} uses the ACL
6a8de854
PP
459 condition logic to determine truth/failure and will fail to expand many
460 strings, bool_lax{} uses the router condition logic, where most strings
461 do evaluate true.
462 Note: bool{00} is false, bool_lax{00} is true.
463
06a6f4ed 464 9. Routers now support multiple "condition" tests.
532be449 465
5dc43717
JJ
46610. There is now a runtime configuration option "tcp_wrappers_daemon_name".
467 Setting this allows an admin to define which entry in the tcpwrappers
468 config file will be used to control access to the daemon. This option
469 is only available when Exim is built with USE_TCP_WRAPPERS. The
470 default value is set at build time using the TCP_WRAPPERS_DAEMON_NAME
471 build option.
472
79d4bc3d
PP
47311. [POSSIBLE CONFIG BREAKAGE] The default value for system_filter_user is now
474 the Exim run-time user, instead of root.
475
2cfd3221
PP
47612. [POSSIBLE CONFIG BREAKAGE] ALT_CONFIG_ROOT_ONLY is no longer optional and
477 is forced on. This is mitigated by the new build option
90b6341f 478 TRUSTED_CONFIG_LIST which defines a list of configuration files which
7f7f0545
DW
479 are trusted; one per line. If a config file is owned by root and matches
480 a pathname in the list, then it may be invoked by the Exim build-time
481 user without Exim relinquishing root privileges.
2cfd3221
PP
482
48313. [POSSIBLE CONFIG BREAKAGE] The Exim user is no longer automatically
484 trusted to supply -D<Macro[=Value]> overrides on the command-line. Going
90b6341f
DW
485 forward, we recommend using TRUSTED_CONFIG_LIST with shim configs that
486 include the main config. As a transition mechanism, we are temporarily
487 providing a work-around: the new build option WHITELIST_D_MACROS provides
43236f35 488 a colon-separated list of macro names which may be overridden by the Exim
90b6341f
DW
489 run-time user. The values of these macros are constrained to the regex
490 ^[A-Za-z0-9_/.-]*$ (which explicitly does allow for empty values).
2cfd3221 491
77bb000f 492
3fc596e4
NM
493Version 4.72
494------------
495
b26eacf1
PP
496 1. TWO SECURITY FIXES: one relating to mail-spools which are globally
497 writable, the other to locking of MBX folders (not mbox).
498
499 2. MySQL stored procedures are now supported.
500
501 3. The dkim_domain transport option is now a list, not a single string, and
502 messages will be signed for each element in the list (discarding
503 duplicates).
504
505 4. The 4.70 release unexpectedly changed the behaviour of dnsdb TXT lookups
506 in the presence of multiple character strings within the RR. Prior to 4.70,
507 only the first string would be returned. The dnsdb lookup now, by default,
508 preserves the pre-4.70 semantics, but also now takes an extended output
8f425947
PP
509 separator specification. The separator can be followed by a semicolon, to
510 concatenate the individual text strings together with no join character,
511 or by a comma and a second separator character, in which case the text
512 strings within a TXT record are joined on that second character.
513 Administrators are reminded that DNS provides no ordering guarantees
514 between multiple records in an RRset. For example:
b26eacf1
PP
515
516 foo.example. IN TXT "a" "b" "c"
517 foo.example. IN TXT "d" "e" "f"
518
519 ${lookup dnsdb{>/ txt=foo.example}} -> "a/d"
520 ${lookup dnsdb{>/; txt=foo.example}} -> "def/abc"
8f425947 521 ${lookup dnsdb{>/,+ txt=foo.example}} -> "a+b+c/d+e+f"
b26eacf1 522
3fc596e4 523
f33253cc
NM
524Version 4.70 / 4.71
525-------------------
65a7d8c3 526
7c6d71af 527 1. Native DKIM support without an external library.
a8c8d6b5
JJ
528 (Note that if no action to prevent it is taken, a straight upgrade will
529 result in DKIM verification of all signed incoming emails. See spec
530 for details on conditionally disabling)
7c6d71af
NM
531
532 2. Experimental DCC support via dccifd (contributed by Wolfgang Breyha).
65a7d8c3 533
f33253cc 534 3. There is now a bool{} expansion condition which maps certain strings to
7d9f747b 535 true/false condition values (most likely of use in conjunction with the
f33253cc
NM
536 and{} expansion operator).
537
538 4. The $spam_score, $spam_bar and $spam_report variables are now available
539 at delivery time.
540
541 5. exim -bP now supports "macros", "macro_list" or "macro MACRO_NAME" as
542 options, provided that Exim is invoked by an admin_user.
543
544 6. There is a new option gnutls_compat_mode, when linked against GnuTLS,
545 which increases compatibility with older clients at the cost of decreased
546 security. Don't set this unless you need to support such clients.
547
548 7. There is a new expansion operator, ${randint:...} which will produce a
549 "random" number less than the supplied integer. This randomness is
550 not guaranteed to be cryptographically strong, but depending upon how
551 Exim was built may be better than the most naive schemes.
552
553 8. Exim now explicitly ensures that SHA256 is available when linked against
554 OpenSSL.
555
556 9. The transport_filter_timeout option now applies to SMTP transports too.
557
65a7d8c3 558
7d9f747b
PP
559Version 4.69
560------------
561
562 1. Preliminary DKIM support in Experimental.
563
564
2b85bce7
PH
565Version 4.68
566------------
567
568 1. The body_linecount and body_zerocount C variables are now exported in the
569 local_scan API.
570
93655c46
PH
571 2. When a dnslists lookup succeeds, the key that was looked up is now placed
572 in $dnslist_matched. When the key is an IP address, it is not reversed in
573 this variable (though it is, of course, in the actual lookup). In simple
574 cases, for example:
575
576 deny dnslists = spamhaus.example
577
578 the key is also available in another variable (in this case,
579 $sender_host_address). In more complicated cases, however, this is not
580 true. For example, using a data lookup might generate a dnslists lookup
581 like this:
582
583 deny dnslists = spamhaus.example/<|192.168.1.2|192.168.6.7|...
584
585 If this condition succeeds, the value in $dnslist_matched might be
586 192.168.6.7 (for example).
587
6c512171
PH
588 3. Authenticators now have a client_condition option. When Exim is running as
589 a client, it skips an authenticator whose client_condition expansion yields
590 "0", "no", or "false". This can be used, for example, to skip plain text
591 authenticators when the connection is not encrypted by a setting such as:
592
593 client_condition = ${if !eq{$tls_cipher}{}}
594
595 Note that the 4.67 documentation states that $tls_cipher contains the
596 cipher used for incoming messages. In fact, during SMTP delivery, it
597 contains the cipher used for the delivery. The same is true for
598 $tls_peerdn.
599
a96603a0
PH
600 4. There is now a -Mvc <message-id> option, which outputs a copy of the
601 message to the standard output, in RFC 2822 format. The option can be used
602 only by an admin user.
603
8f240103
PH
604 5. There is now a /noupdate option for the ratelimit ACL condition. It
605 computes the rate and checks the limit as normal, but it does not update
606 the saved data. This means that, in relevant ACLs, it is possible to lookup
607 the existence of a specified (or auto-generated) ratelimit key without
608 incrementing the ratelimit counter for that key.
609
610 In order for this to be useful, another ACL entry must set the rate
611 for the same key somewhere (otherwise it will always be zero).
612
613 Example:
614
615 acl_check_connect:
616 # Read the rate; if it doesn't exist or is below the maximum
617 # we update it below
618 deny ratelimit = 100 / 5m / strict / noupdate
619 log_message = RATE: $sender_rate / $sender_rate_period \
620 (max $sender_rate_limit)
621
622 [... some other logic and tests...]
623
624 warn ratelimit = 100 / 5m / strict / per_cmd
625 log_message = RATE UPDATE: $sender_rate / $sender_rate_period \
626 (max $sender_rate_limit)
627 condition = ${if le{$sender_rate}{$sender_rate_limit}}
628
629 accept
630
d677b2f2
PH
631 6. The variable $max_received_linelength contains the number of bytes in the
632 longest line that was received as part of the message, not counting the
633 line termination character(s).
634
d52120f2
PH
635 7. Host lists can now include +ignore_defer and +include_defer, analagous to
636 +ignore_unknown and +include_unknown. These options should be used with
637 care, probably only in non-critical host lists such as whitelists.
638
8669f003
PH
639 8. There's a new option called queue_only_load_latch, which defaults true.
640 If set false when queue_only_load is greater than zero, Exim re-evaluates
641 the load for each incoming message in an SMTP session. Otherwise, once one
642 message is queued, the remainder are also.
643
4f054c63 644 9. There is a new ACL, specified by acl_smtp_notquit, which is run in most
8f128379
PH
645 cases when an SMTP session ends without sending QUIT. However, when Exim
646 itself is is bad trouble, such as being unable to write to its log files,
647 this ACL is not run, because it might try to do things (such as write to
648 log files) that make the situation even worse.
649
650 Like the QUIT ACL, this new ACL is provided to make it possible to gather
651 statistics. Whatever it returns (accept or deny) is immaterial. The "delay"
652 modifier is forbidden in this ACL.
653
654 When the NOTQUIT ACL is running, the variable $smtp_notquit_reason is set
655 to a string that indicates the reason for the termination of the SMTP
656 connection. The possible values are:
657
658 acl-drop Another ACL issued a "drop" command
659 bad-commands Too many unknown or non-mail commands
660 command-timeout Timeout while reading SMTP commands
661 connection-lost The SMTP connection has been lost
662 data-timeout Timeout while reading message data
663 local-scan-error The local_scan() function crashed
664 local-scan-timeout The local_scan() function timed out
665 signal-exit SIGTERM or SIGINT
666 synchronization-error SMTP synchronization error
667 tls-failed TLS failed to start
668
669 In most cases when an SMTP connection is closed without having received
670 QUIT, Exim sends an SMTP response message before actually closing the
671 connection. With the exception of acl-drop, the default message can be
672 overridden by the "message" modifier in the NOTQUIT ACL. In the case of a
673 "drop" verb in another ACL, it is the message from the other ACL that is
674 used.
675
b7670459
PH
67610. For MySQL and PostgreSQL lookups, it is now possible to specify a list of
677 servers with individual queries. This is done by starting the query with
678 "servers=x:y:z;", where each item in the list may take one of two forms:
679
680 (1) If it is just a host name, the appropriate global option (mysql_servers
681 or pgsql_servers) is searched for a host of the same name, and the
682 remaining parameters (database, user, password) are taken from there.
683
684 (2) If it contains any slashes, it is taken as a complete parameter set.
685
686 The list of servers is used in exactly the same was as the global list.
687 Once a connection to a server has happened and a query has been
688 successfully executed, processing of the lookup ceases.
689
690 This feature is intended for use in master/slave situations where updates
691 are occurring, and one wants to update a master rather than a slave. If the
692 masters are in the list for reading, you might have:
693
694 mysql_servers = slave1/db/name/pw:slave2/db/name/pw:master/db/name/pw
695
696 In an updating lookup, you could then write
697
698 ${lookup mysql{servers=master; UPDATE ...}
699
700 If, on the other hand, the master is not to be used for reading lookups:
701
702 pgsql_servers = slave1/db/name/pw:slave2/db/name/pw
703
704 you can still update the master by
705
706 ${lookup pgsql{servers=master/db/name/pw; UPDATE ...}
707
ddea74fa
PH
70811. The message_body_newlines option (default FALSE, for backwards
709 compatibility) can be used to control whether newlines are present in
710 $message_body and $message_body_end. If it is FALSE, they are replaced by
711 spaces.
712
2b85bce7 713
b4ed4da0
PH
714Version 4.67
715------------
716
717 1. There is a new log selector called smtp_no_mail, which is not included in
718 the default setting. When it is set, a line is written to the main log
719 whenever an accepted SMTP connection terminates without having issued a
4aa45c31 720 MAIL command.
b4ed4da0 721
431b7361 722 2. When an item in a dnslists list is followed by = and & and a list of IP
4aa45c31
PH
723 addresses, the behaviour was not clear when the lookup returned more than
724 one IP address. This has been solved by the addition of == and =& for "all"
93655c46 725 rather than the default "any" matching.
431b7361 726
4aa45c31
PH
727 3. Up till now, the only control over which cipher suites GnuTLS uses has been
728 for the cipher algorithms. New options have been added to allow some of the
729 other parameters to be varied.
431b7361 730
4aa45c31
PH
731 4. There is a new compile-time option called ENABLE_DISABLE_FSYNC. When it is
732 set, Exim compiles a runtime option called disable_fsync.
431b7361 733
4aa45c31 734 5. There is a new variable called $smtp_count_at_connection_start.
431b7361 735
4aa45c31 736 6. There's a new control called no_pipelining.
cf8b11a5 737
41c7c167 738 7. There are two new variables called $sending_ip_address and $sending_port.
4aa45c31 739 These are set whenever an SMTP connection to another host has been set up.
41c7c167
PH
740
741 8. The expansion of the helo_data option in the smtp transport now happens
4aa45c31 742 after the connection to the server has been made.
41c7c167 743
9c57cbc0 744 9. There is a new expansion operator ${rfc2047d: that decodes strings that
4aa45c31 745 are encoded as per RFC 2047.
9c57cbc0 746
f3f065bb
PH
74710. There is a new log selector called "pid", which causes the current process
748 id to be added to every log line, in square brackets, immediately after the
749 time and date.
750
047bdd8c 75111. Exim has been modified so that it flushes SMTP output before implementing
4c590bd1
PH
752 a delay in an ACL. It also flushes the output before performing a callout,
753 as this can take a substantial time. These behaviours can be disabled by
754 obeying control = no_delay_flush or control = no_callout_flush,
4aa45c31 755 respectively, at some earlier stage of the connection.
047bdd8c 756
0ce9abe6 75712. There are two new expansion conditions that iterate over a list. They are
4aa45c31 758 called forany and forall.
0ce9abe6 759
0e22dfd1
PH
76013. There's a new global option called dsn_from that can be used to vary the
761 contents of From: lines in bounces and other automatically generated
762 messages ("delivery status notifications" - hence the name of the option).
0e22dfd1 763
4aa45c31 76414. The smtp transport has a new option called hosts_avoid_pipelining.
c51b8e75 765
75b1493f 76615. By default, exigrep does case-insensitive matches. There is now a -I option
4aa45c31 767 that makes it case-sensitive.
29f89cad 768
4aa45c31
PH
76916. A number of new features ("addresses", "map", "filter", and "reduce") have
770 been added to string expansions to make it easier to process lists of
771 items, typically addresses.
29f89cad 772
c3611384
PH
77317. There's a new ACL modifier called "continue". It does nothing of itself,
774 and processing of the ACL always continues with the next condition or
775 modifier. It is provided so that the side effects of expanding its argument
4aa45c31 776 can be used.
c3611384 777
ec95d1a6 77818. It is now possible to use newline and other control characters (those with
4aa45c31 779 values less than 32, plus DEL) as separators in lists.
ec95d1a6 780
b2d5182b
PH
78119. The exigrep utility now has a -v option, which inverts the matching
782 condition.
783
c456d9bb 78420. The host_find_failed option in the manualroute router can now be set to
4aa45c31 785 "ignore".
c456d9bb 786
b4ed4da0
PH
787
788Version 4.66
789------------
790
791No new features were added to 4.66.
792
793
794Version 4.65
795------------
796
797No new features were added to 4.65.
798
38a0a95f
PH
799
800Version 4.64
801------------
802
af561417
PH
803 1. ACL variables can now be given arbitrary names, as long as they start with
804 "acl_c" or "acl_m" (for connection variables and message variables), are at
805 least six characters long, with the sixth character being either a digit or
883335dc 806 an underscore.
af561417
PH
807
808 2. There is a new ACL modifier called log_reject_target. It makes it possible
883335dc 809 to specify which logs are used for messages about ACL rejections.
af561417
PH
810
811 3. There is a new authenticator called "dovecot". This is an interface to the
812 authentication facility of the Dovecot POP/IMAP server, which can support a
883335dc 813 number of authentication methods.
af561417
PH
814
815 4. The variable $message_headers_raw provides a concatenation of all the
816 messages's headers without any decoding. This is in contrast to
817 $message_headers, which does RFC2047 decoding on the header contents.
818
883335dc
PH
819 5. In a DNS black list, if two domain names, comma-separated, are given, the
820 second is used first to do an initial check, making use of any IP value
821 restrictions that are set. If there is a match, the first domain is used,
822 without any IP value restrictions, to get the TXT record.
af561417 823
883335dc 824 6. All authenticators now have a server_condition option.
af561417
PH
825
826 7. There is a new command-line option called -Mset. It is useful only in
827 conjunction with -be (that is, when testing string expansions). It must be
828 followed by a message id; Exim loads the given message from its spool
883335dc 829 before doing the expansions.
af561417
PH
830
831 8. Another similar new command-line option is called -bem. It operates like
883335dc
PH
832 -be except that it must be followed by the name of a file that contains a
833 message.
af561417
PH
834
835 9. When an address is delayed because of a 4xx response to a RCPT command, it
836 is now the combination of sender and recipient that is delayed in
883335dc 837 subsequent queue runs until its retry time is reached.
af561417
PH
838
83910. Unary negation and the bitwise logical operators and, or, xor, not, and
883335dc 840 shift, have been added to the eval: and eval10: expansion items.
48c7f9e2 841
194cc0e4
PH
84211. The variables $interface_address and $interface_port have been renamed
843 as $received_ip_address and $received_port, to make it clear that they
844 relate to message reception rather than delivery. (The old names remain
845 available for compatibility.)
846
883335dc
PH
84712. The "message" modifier can now be used on "accept" and "discard" acl verbs
848 to vary the message that is sent when an SMTP command is accepted.
4e88a19f 849
495ae4b0 850
4608d683
PH
851Version 4.63
852------------
853
8541. There is a new Boolean option called filter_prepend_home for the redirect
38a0a95f 855 router.
4608d683 856
45b91596
PH
8572. There is a new acl, set by acl_not_smtp_start, which is run right at the
858 start of receiving a non-SMTP message, before any of the message has been
38a0a95f 859 read.
45b91596 860
a5bd321b
PH
8613. When an SMTP error message is specified in a "message" modifier in an ACL,
862 or in a :fail: or :defer: message in a redirect router, Exim now checks the
38a0a95f 863 start of the message for an SMTP error code.
a5bd321b 864
6ec97b1b 8654. There is a new parameter for LDAP lookups called "referrals", which takes
38a0a95f 866 one of the settings "follow" (the default) or "nofollow".
6ec97b1b 867
e22ca4ac
JJ
8685. Version 20070721.2 of exipick now included, offering these new options:
869 --reverse
870 After all other sorting options have bee processed, reverse order
871 before displaying messages (-R is synonym).
872 --random
873 Randomize order of matching messages before displaying.
874 --size
875 Instead of displaying the matching messages, display the sum
876 of their sizes.
877 --sort <variable>[,<variable>...]
878 Before displaying matching messages, sort the messages according to
879 each messages value for each variable.
880 --not
881 Negate the value for every test (returns inverse output from the
882 same criteria without --not).
883
4608d683 884
1cce3af8
PH
885Version 4.62
886------------
887
8881. The ${readsocket expansion item now supports Internet domain sockets as well
889 as Unix domain sockets. If the first argument begins "inet:", it must be of
890 the form "inet:host:port". The port is mandatory; it may be a number or the
891 name of a TCP port in /etc/services. The host may be a name, or it may be an
892 IP address. An ip address may optionally be enclosed in square brackets.
893 This is best for IPv6 addresses. For example:
894
895 ${readsocket{inet:[::1]:1234}{<request data>}...
896
897 Only a single host name may be given, but if looking it up yield more than
898 one IP address, they are each tried in turn until a connection is made. Once
899 a connection has been made, the behaviour is as for ${readsocket with a Unix
900 domain socket.
901
f7fd3850
PH
9022. If a redirect router sets up file or pipe deliveries for more than one
903 incoming address, and the relevant transport has batch_max set greater than
904 one, a batch delivery now occurs.
905
d6629cdc
PH
9063. The appendfile transport has a new option called maildirfolder_create_regex.
907 Its value is a regular expression. For a maildir delivery, this is matched
908 against the maildir directory; if it matches, Exim ensures that a
909 maildirfolder file is created alongside the new, cur, and tmp directories.
910
1cce3af8 911
7e66e54d
PH
912Version 4.61
913------------
914
4f578862
PH
915The documentation is up-to-date for the 4.61 release. Major new features since
916the 4.60 release are:
917
918. An option called disable_ipv6, to disable the use of IPv6 completely.
919
920. An increase in the number of ACL variables to 20 of each type.
921
922. A change to use $auth1, $auth2, and $auth3 in authenticators instead of $1,
923 $2, $3, (though those are still set) because the numeric variables get used
924 for other things in complicated expansions.
925
843a41e8 926. The default for rfc1413_query_timeout has been changed from 30s to 5s.
4f578862
PH
927
928. It is possible to use setclassresources() on some BSD OS to control the
929 resources used in pipe deliveries.
930
931. A new ACL modifier called add_header, which can be used with any verb.
932
933. More errors are detectable in retry rules.
934
935There are a number of other additions too.
71fafd95 936
7e66e54d 937
425ae40f 938Version 4.60
b5aea5e1
PH
939------------
940
425ae40f
PH
941The documentation is up-to-date for the 4.60 release. Major new features since
942the 4.50 release are:
1a46a8c5 943
425ae40f 944. Support for SQLite.
1a46a8c5 945
425ae40f 946. Support for IGNOREQUOTA in LMTP.
1a46a8c5 947
425ae40f 948. Extensions to the "submission mode" features.
1a46a8c5 949
425ae40f 950. Support for Client SMTP Authorization (CSA).
1a46a8c5 951
425ae40f 952. Support for ratelimiting hosts and users.
b5aea5e1 953
425ae40f 954. New expansion items to help with the BATV "prvs" scheme.
b5aea5e1 955
425ae40f 956. A "match_ip" condition, that matches an IP address against a list.
35edf2ff 957
425ae40f 958There are many more minor changes.
495ae4b0
PH
959
960****