Exim version 4.01 ----------------- 1. When setting TCP_NODELAY, the call to setsockopt() was using SOL_SOCKET instead of IPPROTO_TCP, which caused excessive logging on some systems. 2. Changed the Makefile for Cygwin to set EXIM_USER and EXIM_GROUP to 0. 3. The SMTP rewriting facility was broken. 4. There was some malformatting in the spec.txt file (the other formats were OK). 5. Made convert4r4 change "bydns_a" into "bydns" in route_list options, and to do the same for "bydns_mx", but in this case to comment that it won't work the same (and to suggest a workaround). 6. Removed redundant code in deliver.c for indicating when a reused SMTP connection had been closed in a subprocess - this was being done twice. 7. Change 2 of 3.164 removed Exim's explicit checking that a reverse DNS lookup yielded a name whose forwarded lookup gave the original IP address, because I thought that gethostbyaddr() did this automatically (it seems to on some systems). There is hard evidence that I was wrong, so this test has been put back, and in a better form, because it now checks alias names. This means that the verify=reverse_host_lookup condition in an ACL reduces to requiring that the host name has been looked up, since the checks it previously did are not always applied. 8. When sender verification fails, the error associated with it is given by default before the 550 error for the first RCPT command. Not everybody wants to see this. There is now an option (no_details) that suppresses it. 9. The patterns in rewriting rules with the 'S' flag were not being expanded. For consistency with other patterns (and the documentation), this has been changed. 10. "domainlist", "hostlist", and "addresslist" weren't recognized if the immediately following character was a tab rather than a space. 11. The rules for writing daemon pid files have changed. A new option -oP has been added to provide a way of specifying a pid file path on the command line. Exim now writes a pid file when -bd is used, unless -oX is specified without -oP. 12. The version number of OpenSSL was included in the response to the STARTTLS command - a legacy from the original contributed code that doesn't seem sensible. It no longer appears, and I took it out of the debug output as well because that was the only place left, and the code to compute it was "mysterious magic" that didn't seem worth keeping. 13. When another message was processed in order to send it down an existing SMTP connection, Exim was doing the routing for all the addresses. Even if called from a delivery from a queue runner, this doesn't count as "in a queue run", so retry times were not being inspected. If the message had a large number of recipients, and several of them timed out while routing, the delay could be so large that the server at the other end of the SMTP connection would time out. To avoid this happening, Exim now skips routing for any addresses that have a domain retry time set for routing, whether or not that retry time has arrived, when dealing with a pre-existing SMTP connection. This will be "right" pretty well all of the time, and even when it is "wrong", the only consequence will be some delay. (This doesn't apply to "address" retry times, because those are usually the result of 4xx errors, not timeouts.) 14. Added words to the initial output from -bh pointing out that no ident callback is done. 15. The convert4r4 script wasn't getting it quite right with an aliasfile director that had a "transport" setting. It was missing the "yes/no" in the "condition" setting.