Exim version 4.60 ----------------- PH/01 Two changes to the default runtime configuration: (1) Move the checks for relay_from_hosts and authenticated clients from after to before the (commented out) DNS black list checks. (2) Add control=submission to the relay_from_hosts and authenticated clients checks, on the grounds that messages accepted by these statements are most likely to be submissions. PH/02 Several tidies to the handling of ${prvs and ${prvscheck: (1) Generate an error if the third argument for the ${prvs expansion is not a single digit. (2) Treat a missing third argument of ${prvscheck as if it were an empty string. (3) Reset the variables that are obtained from the first argument of ${prvscheck and used in the second argument before leaving the code, because their memory is reclaimed, so using them afterwards may do silly things. (4) Tidy up the code for expanding the arguments of ${prvscheck one by one (it's much easier than Tom thought :-). (5) Because of (4), we can now allow for the use of $prvscheck_result inside the third argument. PH/03 For some reason, the default setting of PATH when running a command from a pipe transport was just "/usr/bin". I have changed it to "/bin:/usr/bin". PH/04 SUPPORT_TRANSLATE_IP_ADDRESS and MOVE_FROZEN_MESSAGES did not cause anything to be listed in the output from -bV. PH/05 When a filter generated an autoreply, the entire To: header line was quoted in the delivery log line, like this: => >A.N.Other ... This has been changed so that it extracts the operative address. There may be more than one such address. If so, they are comma-separated, like this: => >ano@some.domain,ona@other.domain ... PH/06 When a client host used a correct literal IP address in a HELO or EHLO command, (for example, EHLO [1.2.3.4]) and the client's IP address was not being looked up in the rDNS to get a host name, Exim was showing the IP address twice in Received: lines, even though the IP addresses were identical. For example: Received: from [1.2.3.4] (helo=[1.2.3.4]) However, if the real host name was known, it was omitting the HELO data if it matched the actual IP address. This has been tidied up so that it doesn't show the same IP address twice. PH/07 When both +timestamp and +memory debugging was on, the value given by $tod_xxx expansions could be wrong, because the tod_stamp() function was called by the debug printing, thereby overwriting the timestamp buffer. Debugging no longer uses the tod_stamp() function when +timestamp is set. PH/08 When the original message was included in an autoreply transport, it always said "this is a copy of the message, including all the headers", even if body_only or headers_only was set. It now gives an appropriate message. PH/09 Applied a patch from the Sieve maintainer which: o fixes some comments o adds the (disabled) notify extension core o adds some debug output for the result of if/elsif tests o points to the current vacation draft in the documentation and documents the missing references header update and most important: o fixes a bug in processing the envelope test (when testing multiple envelope elements, the last element determinted the result) PH/10 Exim was violating RFC 3834 ("Recommendations for Automatic Responses to Electronic Mail") by including: Auto-submitted: auto-generated in the messages that it generates (bounce messages and others, such as warnings). In the case of bounce messages for non-SMTP mesages, there was also a typo: it was using "Auto_submitted" (underscore instead of hyphen). Since every message generated by Exim is necessarily in response to another message, thes have all been changed to: Auto-Submitted: auto-replied in accordance with these statements in the RFC: The auto-replied keyword: - SHOULD be used on messages sent in direct response to another message by an automatic process, - MUST NOT be used on manually-generated messages, - MAY be used on Delivery Status Notifications (DSNs) and Message Disposition Notifications (MDNs), - MUST NOT be used on messages generated by automatic or periodic processes, except for messages which are automatic responses to other messages. PH/11 Added "${if def:sender_address {(envelope-from <$sender_address>)\n\t}}" to the default Received: header definition. PH/12 Added log selector acl_warn_skipped (default on). PH/13 After a successful wildlsearch lookup, discard the values of numeric variables because (a) they are in the wrong storage pool and (b) even if they were copied, it wouldn't work properly because of the caching. PH/14 Add check_rfc2047_length to disable enforcement of RFC 2047 length checking when decoding. Apparently there are clients that generate overlong encoded strings. Why am I not surprised? PH/15 If the first argument of "${if match_address" was not empty, but did not contain an "@" character, Exim crashed. Now it writes a panic log message and treats the condition as false. PH/16 In autoreply, treat an empty string for "once" the same as unset. PH/17 A further patch from the Sieve maintainer: "Introduce the new Sieve extension "envelope-auth". The code is finished and in agreement with other implementations, but there is no documentation so far and in fact, nobody wrote the draft yet. This extension is currently #undef'ed, thus not changing the active code. Print executed "if" and "elsif" statements when debugging is used. This helps a great deal to understand what a filter does. Document more things not specified clearly in RFC3028. I had all this sorted out, when out of a sudden new issues came to my mind. Oops." PH/18 Exim was not recognizing the "net-" search type prefix in match_ip lists (Bugzilla #53). PH/19 Exim expands the IPv6 address given to -bh to its full non-abbreviated canonical form (as documented). However, after a host name lookup from the IP address, check_host() was doing a simple string comparison with addresses acquired from the DNS when checking that the found name did have the original IP as one of its addresses. Since any found IPv6 addresses are likely to be in abbreviated form, the comparison could fail. Luckily, there already exists a function for doing the comparison by converting both addresses to binary, so now that is used instead of the text comparison. PH/20 There was another similar case to PH/19, when a complete host name was given in a host list; looking up its IP address could give an abbreviated form, whereas the current host's name might or might not be abbreviated. The same fix has been applied. ****