4 1. The log message for a skipped syntax error in a filter file needed tidying.
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
10 3. Another adjustment to the FreeBSD makefile to make it work in ports and
11 non-ports environments.
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.
16 5. Give the error "no local part" instead of "missing colon in route" for
17 addresses like <@abcd>.
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.
22 7. A macro expansion at the start of a continuation line of a string was
25 8. Escapes such as \n are now handled conventionally in string expansions.
27 9. Added numeric comparisons to string expansions.
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
34 11. Errors in expanding the name of a perl function or its arguments were not
35 being passed back correctly.
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
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
45 14. Added message_size_limit_count_recipients.
47 15. Implemented quota_warn_threshold in appendfile.
49 16. Running exim with -q but without -bd could cause it to crash.
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).
54 18. Removed the "debug" transport as I haven't used it for years and it is
57 19. Write a log line when a message is abandoned because of a ridiculously long
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.
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.
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.
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.
78 24. helo_verify wasn't working in the case where the helo argument was a valid
79 (but incorrect) host name.
81 25. Missing information in log for failures from multiple remote hosts.
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).
91 1. Insert missing fflush() if starting an SMTP session is rejected.
93 2. In the default configuration, changed the retry specification to
95 * * F,2h,15m; G,16h,1h,1.5; F,4d,8h
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.
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.
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.
107 5. Fix exiqsumm so that it correctly recognizes domain literals in recipient
110 6. The install script should now install the Texinfo documentation if
111 INFO_DIRECTORY is defined, and the source is available.
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.
117 8. Multiline responses from a remote host are better formatted when -d is set
118 for the smtp transport.
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.
123 10. Added to the FreeBSD makefile, on Sheldon Hearn's recommendation:
125 .if ${PORTOBJFORMAT} == "elf"
126 XLFLAGS+=-Wl,-rpath,${X11BASE}/lib
129 It allows eximon to be built on FreeBSD ELF systems.
131 11. Fixed bug in libident/support.c causing crashes on malformed ident data.
132 Also fixed another typo bug in libident.
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
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
142 14. Added the "check_local_user" magic to {current,home}_directory in
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.
150 16. When an alias lookup defers because no addresses generated, include the
151 syntax error message in the message.
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.
157 18. Fixed potential segfault crash in MBX delivery (while computing the
160 19. Added $parent_domain, $parent_local_part, $address_file, $address_pipe.
162 20. The router and director options "domains", "local_parts", "senders", and
163 their matching "except_" partners are now expanded.
165 21. The -bp option wasn't reading messages' -J files, and so wasn't marking
166 addresses "delivered" as early as it could.
168 22. Added the queue_only_file option.
170 23. The autoreply transport now has a reply_to option, and the "mail" command
171 in filters supports "from" and "reply-to" keywords.
173 24. Pedantic message correction: "all its recipients" => "all of its
176 25. Added default definition of EX_CONFIG for systems that don't have it.
178 26. Set no_expn on the forwardfile director in the default configuration.
180 27. Skip logwrite in filter files when run as a result of EXPN.
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.
186 29. Added rbl_log_rcpt_count and rbl_log_headers.
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.
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
205 1. Reword message for not-found driver to emphasize which kind of driver.
207 2. Give pid and ppid in message about process creation failure.
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.)
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
217 5. Added match_directory to forwardfile.
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.
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
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.
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.
235 10. Added -bpr, -bpru, -bpra which are like the versions without the 'r', but
236 display the list in random order.
238 11. Added log_smtp_syntax_errors.
240 12. Added ${uc:} operator.
242 13. Added ignore_fromline_nets and ignore_fromline_local.
244 14. After SMTP transport errors such as "connection reset by peer" the text of
245 the error appeared twice in the log line.
247 15. Added :unknown: for use in alias files.
249 16. Give full search_type in debugging info for aliasfile.
251 17. Added generic transport option message_size_limit.
253 18. Added quota_filecount to appendfile, to apply when delivering into a
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.
260 20. Show sender address in debugging output.
262 21. Allow non-trusted users to use -f when running -bt or -bv.
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.
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.
271 24. Expanded transport names on directors and routers are now checked only if
272 the driver handles the address.
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.
277 26. Added support for MBX mailboxes (a) the format and (b) the locking.
280 27. Added body_only and headers_only generic transport options.
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).
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.
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.
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
301 5. Added "rewrite" option to smartuser, cf aliasfile and forwardfile.
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.
306 7. Implemented lookup_open_max for controlling the maximum number of cached
307 lookup opens for lookup types that use real files.
313 1. Added bsdi4.0 as an os-type, equivalent to BSDI.
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.
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.
322 4. Installed PCRE version 2.01 (Perl 5.005 compatible).
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
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.
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
345 8. Unwanted \n at end of log message for too many message in one connection
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.
352 10. Changed the OS/Makefile-FreeBSD setting to X11=$(X11BASE) instead of
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.
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.
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".
367 14. Helo_accept_junk_hosts wasn't allowing the junk to start with [.
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.
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
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".
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".
385 19. When the -t option was set, Exim was barfing at header lines like
387 To: Recipient list not shown:;
389 and complaining about "empty address", even if there were valid addresses in
390 the Cc or Bcc headers.
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.
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.
400 22. Added smtp_accept_max_per_host. Required smtp_accept_max to be set if this
401 or smtp_accept_queue is set.
403 23. Added keepalive options for incoming and outgoing SMTP.
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.)
409 25. Bug in handling exceedingly long configuration lines fixed.
411 26. Added Malcolm Beattie's patch for calling Perl from string expansion.
413 27. A new approach to handling temporary errors in the smtp transport. Details
414 documented in NewStuff.
416 28. Bug in exiqsumm showed up under Perl 5.005; the sorting wasn't working