docs update
[exim-website.git] / changelogs / ChangeLog-2.10.html
1 Version 2.10
2 ------------
3
4 1. The log message for a skipped syntax error in a filter file needed tidying.
5
6 2. After a "foranyaddress" condition succeeds in a filter file, the value of
7 $thisaddress is available in the commands. It holds whatever what the last
8 value tested.
9
10 3. Another adjustment to the FreeBSD makefile to make it work in ports and
11 non-ports environments.
12
13 4. scripts/Configure-Makefile was testing for PERL_COMMAND in the local
14 configuration without anchoring the check to the start of a line.
15
16 5. Give the error "no local part" instead of "missing colon in route" for
17 addresses like <@abcd>.
18
19 6. Nested ${lookup} and ${if} items in expanded strings were not working
20 correctly if "fail" was present in one of the internal items.
21
22 7. A macro expansion at the start of a continuation line of a string was
23 getting ignored.
24
25 8. Escapes such as \n are now handled conventionally in string expansions.
26
27 9. Added numeric comparisons to string expansions.
28
29 10. Changed the space checking to use the f_bavail field returned by the
30 stat(v)fs function instead of f_bfree, thus testing non-superuser space only.
31 Also, for those OS which have it, changed from f_ffree to f_favail for checking
32 the number of inodes.
33
34 11. Errors in expanding the name of a perl function or its arguments were not
35 being passed back correctly.
36
37 12. The count of lines in a message (which is used for computing the value for
38 the SIZE option on outgoing messages) was not being correctly set for incoming
39 non-local SMTP mail.
40
41 13. If no_smtp_check_spool_space is set, Exim refrains from checking that there
42 is enough space in the spool partition when it receives a SIZE setting on an
43 incoming message.
44
45 14. Added message_size_limit_count_recipients.
46
47 15. Implemented quota_warn_threshold in appendfile.
48
49 16. Running exim with -q but without -bd could cause it to crash.
50
51 17. In the delivery log line, don't print the original address in <> if the
52 only difference from the original address is in the case of the domain(s).
53
54 18. Removed the "debug" transport as I haven't used it for years and it is
55 simply clutter.
56
57 19. Write a log line when a message is abandoned because of a ridiculously long
58 header line.
59
60 20. If an error is detected while receiving a batch SMTP message (using -bS)
61 the error message that is sent now contains information about the sender and
62 recipients, and a copy of the headers, when such information has been read
63 before the error was detected.
64
65 21. If errors_to was set in forwardfile, and a headers_add option used
66 $local_part or any other address-specific expansion, the expansion went wrong.
67 (The verification of the errors_to address was clobbering the values.) This
68 could have applied to other directors and routers too.
69
70 22. The smtp_log_connections option should really be called
71 log_smtp_connections to fit in with other naming. Added the "correct" name as
72 a synonym, and hide the old one in displays.
73
74 23. If daemon_smtp_service was set to a named service on a machine with a byte
75 order different to network byte order, Exim listened on the wrong port. This
76 might have been introduced by change 12 of 2.03.
77
78 24. helo_verify wasn't working in the case where the helo argument was a valid
79 (but incorrect) host name.
80
81 25. Missing information in log for failures from multiple remote hosts.
82
83 26. If a malformed response to an SMTP command contained newlines, they were
84 written verbatim to the log. They are now converted to \n (and other
85 non-printing characters are also escaped).
86
87
88 Version 2.054
89 -------------
90
91 1. Insert missing fflush() if starting an SMTP session is rejected.
92
93 2. In the default configuration, changed the retry specification to
94
95  *  *  F,2h,15m; G,16h,1h,1.5; F,4d,8h
96
97 The difference is that after trying every 15 minutes for 2 hours, it next tries
98 one hour later rather than two hours later.
99
100 3. Remove the definition of os_strsignal from the FreeBSD os.h, as it seems it
101 doesn't have it (ditto BSDI) and also from OpenBSD, just in case. My assumption
102 that it's on all BSD systems (based on NetBSD) is clearly false.
103
104 4. Updated exim_tidydb so that with the -f flag, it checks for the continued
105 presence of a message that has a message-specific retry record.
106
107 5. Fix exiqsumm so that it correctly recognizes domain literals in recipient
108 addresses.
109
110 6. The install script should now install the Texinfo documentation if
111 INFO_DIRECTORY is defined, and the source is available.
112
113 7. If a screwed-up host sent an SMTP response that contained LF characters,
114 they got left as LFs when included in the retry database. This could mess up
115 the format of the output from exim_dumpdb. They are now converted into \n.
116
117 8. Multiline responses from a remote host are better formatted when -d is set
118 for the smtp transport.
119
120 9. Fixed a very low-probability file descriptor leak in eximon; if a -J file
121 existed and reading the -H file failed, the -J file didn't get closed.
122
123 10. Added to the FreeBSD makefile, on Sheldon Hearn's recommendation:
124
125 .if ${PORTOBJFORMAT} == "elf"
126 XLFLAGS+=-Wl,-rpath,${X11BASE}/lib
127 .endif
128
129 It allows eximon to be built on FreeBSD ELF systems.
130
131 11. Fixed bug in libident/support.c causing crashes on malformed ident data.
132 Also fixed another typo bug in libident.
133
134 12. If headers_sender_verify was set and there was a syntax error in a header,
135 the error message just said "no valid sender". Now it gives details of the
136 syntax error.
137
138 13. If the expansion of headers_add for pipe and smtp transports failed, the
139 reason for the failure was not included in the error message (it was for
140 appendfile).
141
142 14. Added the "check_local_user" magic to {current,home}_directory in
143 forwardfile.
144
145 15. Changed the way the Makefile works when embedding Perl. The user need now
146 specify only EXIM_PERL=perl.o. The Makefile builder sets default values for the
147 other parameters at the top of the file, using the setting of PERL_COMMAND to
148 run Perl, when EXIM_PERL is set.
149
150 16. When an alias lookup defers because no addresses generated, include the
151 syntax error message in the message.
152
153 17. In the forwardfile director, the skip_syntax_errors option now applies to
154 filter files as well as to conventional .forward files. Added
155 syntax_errors_text option to forwardfile and aliasfile.
156
157 18. Fixed potential segfault crash in MBX delivery (while computing the
158 timestamp).
159
160 19. Added $parent_domain, $parent_local_part, $address_file, $address_pipe.
161
162 20. The router and director options "domains", "local_parts", "senders", and
163 their matching "except_" partners are now expanded.
164
165 21. The -bp option wasn't reading messages' -J files, and so wasn't marking
166 addresses "delivered" as early as it could.
167
168 22. Added the queue_only_file option.
169
170 23. The autoreply transport now has a reply_to option, and the "mail" command
171 in filters supports "from" and "reply-to" keywords.
172
173 24. Pedantic message correction: "all its recipients" => "all of its
174 recipients".
175
176 25. Added default definition of EX_CONFIG for systems that don't have it.
177
178 26. Set no_expn on the forwardfile director in the default configuration.
179
180 27. Skip logwrite in filter files when run as a result of EXPN.
181
182 28. Allow leading dots in local parts. Exim is already extended to allow null
183 components inside or at the end of local parts (e.g. a..b.@xyz) so it doesn't
184 seem worth making this extension specifically configurable.
185
186 29. Added rbl_log_rcpt_count and rbl_log_headers.
187
188 30. The setting of KEEPALIVE on an incoming socket was not being bypassed when
189 -bh was in use, leading to a warning message.
190
191 31. There was a long-standing problem with queue runners when a delivery that
192 was started by a queue runner passed on one or more TCP/IP connections to
193 another process. The problem was that the queue runner did not know this, and
194 went on to start more deliveries. If there were a large number of messages
195 queued for one host, this could cause too many delivery processes to be
196 running. The queue runner process is now told about additional descendent
197 processes, and it waits for them all to finish before moving on to the next
198 message.
199
200
201
202 Version 2.053
203 -------------
204
205 1. Reword message for not-found driver to emphasize which kind of driver.
206
207 2. Give pid and ppid in message about process creation failure.
208
209 3. If addresses on the command line for a -t message cause all included
210 addresses to get deleted, give a special "no recipients" error, mentioning the
211 cause. (Previously the message just never got delivered to anybody.)
212
213 4. If a user's filter file has "seen finish" with no significant deliveries,
214 write a log line of the form "=> discarded <address> D=director" to indicate
215 what has happened.
216
217 5. Added match_directory to forwardfile.
218
219 6. If match_directory was set on localuser, and it was an expanded string, and
220 the resulting pattern was a regular expression, and more than one address was
221 processed by this director such that the expansions gave differing patterns,
222 then things went wrong because the first pattern was used every time owing to
223 caching of the compiled regular expression.
224
225 7. When doing a 2-stage queue run (using the -qq option) a message about
226 queue_smtp was written to each individual message log (though suppressed on the
227 main log).
228
229 8. If the log level is set less than 5, messages about retry time not reached
230 are no longer written to individual message logs.
231
232 9. If the replacement string for a rewrite rule is "*" then addresses matching
233 the patterns and the flags are not rewritten, and no further rules are tried.
234
235 10. Added -bpr, -bpru, -bpra which are like the versions without the 'r', but
236 display the list in random order.
237
238 11. Added log_smtp_syntax_errors.
239
240 12. Added ${uc:} operator.
241
242 13. Added ignore_fromline_nets and ignore_fromline_local.
243
244 14. After SMTP transport errors such as "connection reset by peer" the text of
245 the error appeared twice in the log line.
246
247 15. Added :unknown: for use in alias files.
248
249 16. Give full search_type in debugging info for aliasfile.
250
251 17. Added generic transport option message_size_limit.
252
253 18. Added quota_filecount to appendfile, to apply when delivering into a
254 directory.
255
256 19. When delivering into a directory and quota was exceeded, the "time since
257 last read" field, which applies to individual mailboxes, was getting set to to
258 junk values, and could cause a retry record to time out prematurely.
259
260 20. Show sender address in debugging output.
261
262 21. Allow non-trusted users to use -f when running -bt or -bv.
263
264 22. If a transport returns PANIC, Exim used to panic log and die. Now it just
265 panic logs - so other addresses do get processed.
266
267 23. In aliasfile and forwardfile, the *_transport options can now be expanded
268 strings. If the result isn't a named transport, the address gets deferred, and
269 the message gets frozen.
270
271 24. Expanded transport names on directors and routers are now checked only if
272 the driver handles the address.
273
274 25. Bug introduced in new SMTP temporary problem handling meant that the
275 wait-smtp database wasn't always updated when it should have been.
276
277 26. Added support for MBX mailboxes (a) the format and (b) the locking.
278 Upgraded exim_lock.
279
280 27. Added body_only and headers_only generic transport options.
281
282
283 Version 2.052
284 -------------
285
286 1. Added return_path generic option to the transports. This can re-expand the
287 return path at transport time and do things like sticking in the recipient's
288 address (i.e. it makes VERP support possible).
289
290 2. If, during a remote parallel delivery in a subprocess, an SMTP error
291 response had a humongously long text associated with it, Exim crashed.
292
293 3. When there are no deferred addresses, convert any message-specific retry
294 record updates into deletes. This does some useful tidying in cases when one
295 host produces such an error and a subsequent one succeeds or fails hard.
296
297 4. If retry_include_ip_address was set false in an SMTP transport, then the
298 retrying was not searching for a rule keyed on the domain in addition to a rule
299 keyed on the host.
300
301 5. Added "rewrite" option to smartuser, cf aliasfile and forwardfile.
302
303 6. When verifying or testing an address, if both a director and router are set,
304 show both in the output, as is done on log lines for deliveries.
305
306 7. Implemented lookup_open_max for controlling the maximum number of cached
307 lookup opens for lookup types that use real files.
308
309
310 Version 2.051
311 -------------
312
313 1. Added bsdi4.0 as an os-type, equivalent to BSDI.
314
315 2. Removed definition of DN_EXPAND_ARG4_TYPE as u_char * for IRIX 6.5, as that
316 release of IRIX is now compatible with most other OS so the default is OK.
317
318 3. The exiwhat script no longer uses "cut" to fish the process numbers out of
319 "ps" output because it doesn't work on all systems. (IRIX 6.5 has longer pids.)
320 It now uses awk instead, to get the first field, whatever length it is.
321
322 4. Installed PCRE version 2.01 (Perl 5.005 compatible).
323
324 5. Revamped the way the working makefile in the build directory is created.
325 This also involved some modification to some of the files in the scripts
326 directory. At the top level one still runs "make" on its own, but this no
327 longer involves a nested call to "make" in order to create the lower-level
328 makefile (which is now called Makefile with a capital M). If run from within
329 the build directory, it is no longer capable of re-building itself. Further
330 revampings were done to ensure that the behaviour is the same on IRIX as on
331 other systems with regard to rebuilding. The "make" program on IRIX behaves
332 differently in regard to targets that are forced but don't actually rebuild the
333 file of that name.
334
335 6. The source has been tidied in places as a result of a -fullwarn run on the
336 IRIX 6.5 compiler. In Exim itself, one set of warnings, in store.c, remains; I
337 haven't been able to find a way to write the code so that it doesn't generate
338 them. In the Exim monitor, there are warnings for the modified StripChart and
339 TextPop modules taken from the Athena widgets.
340
341 7. LFLAGS has been set to -Wl,-LD_MSG:off=85 for IRIX 6.5. This suppresses the
342 warning about StripChart and TextPop overriding those in the Xaw library when
343 linking eximon.bin.
344
345 8. Unwanted \n at end of log message for too many message in one connection
346 removed.
347
348 9. Log entries for queued messages on a single SMTP connection other than the
349 first such message were incorrectly given as if the queueing was for too many
350 SMTP connections, instead of for too many messages or load average too high.
351
352 10. Changed the OS/Makefile-FreeBSD setting to X11=$(X11BASE) instead of
353 X11=/usr/X11.
354
355 11. Improved the output for host testing with the -bh option; more detail of
356 the order of testing accept/reject lists etc. is now given.
357
358 12. The pipe transport now gives the signal name in the log message when its
359 child is ended by signal. For Solaris 2, BSD-derived systems, and Linux, the
360 strsignal() function is called. For the rest, there is a built-in function that
361 covers the most important signals.
362
363 13. The pipe transport now attempts to give a possible explanation when its
364 child is ended by a non-zero exit code. As these aren't standardised, it has to
365 use the uncertain phrase "could mean".
366
367 14. Helo_accept_junk_hosts wasn't allowing the junk to start with [.
368
369 15. Remove trailing spaces from Local/Makefile when building Makefile, as
370 they can cause trouble in some of the sed commands for building scripts.
371
372 16. A new test for options settings threw up two obscure ones that were out of
373 alphabetical order in the source. Also some poorly worded configuration error
374 messages.
375
376 17. The domainlist router wasn't accepting the route_queries option if
377 route_list wasn't set, complaining "either route_list or route_file or
378 route_query required".
379
380 18. The queryprogram router had options called "user" and "group" which
381 conflicted with the generic options of the same name (which got invented
382 later, for 1.929). The options for queryprogram have been renamed
383 "command_user" and "command_group".
384
385 19. When the -t option was set, Exim was barfing at header lines like
386
387   To: Recipient list not shown:;
388
389 and complaining about "empty address", even if there were valid addresses in
390 the Cc or Bcc headers.
391
392 20. The second part of change 10 for 2.05 was a disaster in the case of
393 temporary errors after MAIL FROM, DATA, and ".", because it meant that one
394 dodgy message could hold up other mail for the recipients involved. Backed it
395 out. However, the action after RCPT TO is OK, and remains.
396
397 21. If a listening daemon was run without a -q option to start queue-runners,
398 it could occasionally crash when a message-accepting process ended.
399
400 22. Added smtp_accept_max_per_host. Required smtp_accept_max to be set if this
401 or smtp_accept_queue is set.
402
403 23. Added keepalive options for incoming and outgoing SMTP.
404
405 24. Reworded the message that is output at the end of filter testing, as it was
406 confusing to users. (It wasn't clear that 'delivered is false' meant that the
407 message would be delivered normally.)
408
409 25. Bug in handling exceedingly long configuration lines fixed.
410
411 26. Added Malcolm Beattie's patch for calling Perl from string expansion.
412
413 27. A new approach to handling temporary errors in the smtp transport. Details
414 documented in NewStuff.
415
416 28. Bug in exiqsumm showed up under Perl 5.005; the sorting wasn't working
417 correctly.