Exim changelog for Version 3.00 (previous main release 2.12)

Version 3.00

  1. The documentation has been brought up-to-date for release 3.00.
  2. The -oMr option is documented as working for non-SMTP and batch SMTP input. It was being ignored for batch SMTP. This has been fixed.
  3. Add #define DN_EXPAND_ARG4_TYPE u_char * to OS/os.h-SCO because it seems that it is one of the operating systems that defines the fourth argument of dn_expand this way.

Version 2.954

  1. Log reception of the SMTP "debug" command.
  2. Bug introduced by 2.950/15: Exim was incorrectly assuming a dropped SMTP call if the message's data contained a byte with the value 255. (Signed character problem in the private "getc()" code. Sigh.)

Version 2.953

  1. Typo in filter.c fixed; some compilers didn't like it, while others were happy.
  2. Make "fail_soft" for the "self" and host_find_failed domainlist options override a generic setting of no_more.
  3. Set $self_hostname when self=fail_soft in a router.
  4. Added /warn and /reject to rbl_domains.
  5. Reject messages with too many headers instead of just silently pushing the rest into the body.
  6. Recoded handling of multiple headers in expansion to be (hopefully) more efficient in store usage.
  7. Restrict the amount of store used by a $h_ expansion to 64K (to catch lunatic messages with a zillion To: headers).
  8. Add the operator "escape" to string expansions: it escapes all non-printing characters in its argument.
  9. Make HEADER_MAXHEADERS into a config.h macro to match HEADER_MAXLENGTH so it can be changed easily.
  10. If Exim reads EOF on an incoming SMTP connection, it assumes a broken connection, but neverthless writes an error response. This was erroneously using a 554 error code instead of 421.
  11. The private "getc()" code for TCP/IP inputs had the feof and ferror tests the wrong way round (but it shouldn't have mattered much).
  12. Blank lines were getting written to the log after some "no immediate delivery" messages.
  13. Increase the maximum length of RBL TXT record data that Exim reads from 127 to 511.
  14. Include IP address in RBL rejection message.
  15. To aid in debugging "unexpected disconnection" errors, if the result of read() is negative, the errno message is now added to the logged error.

Version 2.952

  1. White space was not being ignored after a search type ending in "*" or "@*" in a lookup expression in an expansion.
  2. If the smtp waiting database failed to open, the error message wasn't printing out the interpretation of the value of errno.
  3. The negative item "!@" was not being correctly handled in a host list.
  4. Changed the expansion of $tod_full so that the day number is always given as two digits (to match the times, and it helps for regression testing).

Version 2.951

  1. Installed PCRE 2.05 (anchoring bug fix).
  2. Retrying was not timing out properly when a message suffered a temporary address error. This could result in retrying every queue run after the time when it should have bounced.
  3. Implemented once_repeat option for the autoreply transport, and a corresponding "once_repeat" option for the mail and vacation commands in mail filters. The vacation command now defaults once_repeat to 7 days.
  4. Added $message_body_size.

Version 2.950

  1. Big, INCOMPATIBLE re-arrangement of the handling of domain/host/net/address lists by adding negation and reducing the number of options.
  2. Remove a number of obsolete features; another INCOMPATIBLE change.
    1. Obsolete options - see README.UPDATING.
    2. No longer allow for pre-0.57 spool files without their names at the top.
    3. No longer cater for spool files that don't have a -body_linecount setting. This came in at 1.91, but affects only SIZE for smtp output, so older spool files might still work.
    4. No longer ignore commas and semicolons for driver options.
  3. Installed PCRE 2.04 - bug fixes and tidies.
  4. The API of DB 2 changed at release 2.5.x by adding an additional option field to the function for starting a cursor. Fixed dbfn.h to cope with both styles - luckily the version number is defined by macros.
  5. The LDAP library in Solaris 7 has yet another way of handling errors from the search functions - different from either UMich LDAP or the Netscape LDAP SDK. (A pity, since everything else appears to be source-compatible.) It does not seem to be possible to detect the differences automatically. There was a previous fudge to distinguish UMich and Netscape, but I haven't found out how to extend it. Anyway, it gets messier and messier. Instead, there is now a configuration option LDAP_LIB_TYPE which the builder of Exim must set. (If not, the current heuristic still applies.)
  6. Some tidies in the smtp transport; some error status information might have got lost when debugging was turned on (failing to preserve errno).
  7. Host names used as part of keys in the retry database were not getting lower cased; consequently if a host appeared in two differently-cased forms (e.g. in MX records, or in a domainlist rule), separate retry records were being created.
  8. Improve wording of some expansion errors.
  9. Exim now takes note of the list of alias host names when it uses gethostbyaddr() to look up a host name. Host checks for relaying etc. now check against the alias list as well as against the primary name.
  10. In the smtp transport, Exim was relying on errno remaining zero after a valid read() call, though one shouldn't really look at its value except in cases of error. It was getting set on at least one OS.
  11. Because "service" is not what people expect, add "port" as a synonym to all the relevant options.
  12. The -bh option wasn't giving any commentary on the testing of the sender address (or any other address testing).
  13. Lower case local parts as well as domains when doing tests of address lists, but allow for exception with +caseful.
  14. Make scripts/os-type recognize "sunos4*" instead of just "sunos4".
  15. When reading from an incoming SMTP call, Exim was always flushing the output after every command. This causes an unnecessary number of TCP/IP packets to be used when the remote client is using pipelining. Instead of using the standard C library functions (getc() etc.) in this case, Exim now reads directly from the socket, and flushes the output only when it needs to refill its input buffer. 16. Re-vamp of the handling of incoming batch SMTP, as suggested by Ian Jackson: (i) sender_verify_batch defaults false. (ii) Always give up entirely on encountering any error while receiving, writing to stdout/stderr and setting a return code. (iii) EOF is now an error. 17. Make -R[f] and -qf skip frozen messages by default, and implement -Rff etc to force thawing. 18. Log ETRN from hosts that are not in the permitted list. 19. The use of log_level to cut out "retry time not reached" from the message log file now applies only to second and subsequent delivery attempts. This means that during the first attempt, something gets written to the file for all addresses, both toplevel ones and generated ones. 20. Added START_SMALL to monitor build-time configuration to start up with small sized window. 21. Added $interface_address to hold the incoming interface address, and -oMi to force it. 22. Cast uids and gids to long int when [s]printf-ing them. 23. Typo in source: if an alias file used :fail: for an address that was being verified, a 450 rather than a 550 error was given. 24. Log (main and reject logs) when a VRFY or EXPN command is rejected on policy grounds. Also log (on main log) when an accepted VRFY command fails to verify the address - this is already done for failing verification of RCPT. 25. For RBL rejections, if prohibition_message is set, use it, with the RBL text in $rbl_text. Otherwise show the text as before. 26. Implemented $message_body_end. In the process, fixed a possible bug involved with $message_body - the data was being put into non-permanent store, so if the variable was used more than once, there could have been problems. 27. If the pattern in a route_list item in the domainlist router is a lookup, the data looked up is now available as $value in the hostlist item. 28. Added the "environment" option to the pipe transport. 29. If -odi is set (synchronous delivery), pass it on to any re-execs or other calls of Exim (e.g. to send error messages). This helps with automatic testing. 30. The converter to Texinfo format was turning @sc{xxx} into actual capital letters in section headings, but not in menu items that refer to them. The latest version of Texinfo picks this up. Menu items are now also capitalized. 31. The change that forces euid=uid when Exim is called by root broke the special processing when CONFIGURE_FILE_USE_EUID is set. This has been fixed. 32. If an LDAP lookup found an entry, but it had no attributes, it was returning junk. Now it behaves as if the entry was not found. 33. During a -qq run, delay warnings were being sent after the first pass. 34. Access to headers in expansion strings is documented only via the syntax $h_name: or $header_name: but *not* using {}. For example, ${h_to} is not documented as legal; by accident it used to work, but ${h_to:} did not because it was taken as an invalid abbreviation for ${hash_to:}. The "accident" has been undone. 35. Patch to scripts/os-type to cater for Unixware 7 and 7.1. 36. Changed SCO_SV configuration (for SCO 5) using Tony Earnshaw's information. 37. Created a Unixware7 configuration using James FitzGibbon's information. ****

$Id: ChangeLog-3.00.html,v 1.2 1999/05/25 20:46:06 nigel Exp $