Subject: CVS commit: pkgsrc/mail/exim
To: None <pkgsrc-changes@NetBSD.org>
From: David Brownlee <abs@netbsd.org>
List: pkgsrc-changes
Date: 01/10/2007 12:54:37
Module Name:	pkgsrc
Committed By:	abs
Date:		Wed Jan 10 12:54:37 UTC 2007

Modified Files:
	pkgsrc/mail/exim: Makefile distinfo
	pkgsrc/mail/exim/patches: patch-aa

Log Message:
Update mail/exim from 4.63 to 4.66

Exim version 4.66
-----------------

PH/01 Two more bugs that were introduced by 4.64/PH/07, in addition to the one
      fixed by 4.65/MH/01 (is this a record?) are fixed:

      (i)  An empty string was always treated as zero by the numeric comparison
           operators. This behaviour has been restored.

      (ii) It is documented that the numeric comparison operators always treat
           their arguments as decimal numbers. This was broken in that numbers
           starting with 0 were being interpreted as octal.

      While fixing these problems I realized that there was another issue that
      hadn't been noticed. Values of message_size_limit (both the global option
      and the transport option) were treated as octal if they started with 0.
      The documentation was vague. These values are now always treated as
      decimal, and I will make that clear in the documentation.

Exim version 4.65
-----------------

TK/01 Disable default definition of HAVE_LINUX_SENDFILE. Clashes with
      Linux large file support (_FILE_OFFSET_BITS=64) on older glibc
      versions. (#438)

MH/01 Don't check that the operands of numeric comparison operators are
      integers when their expansion is in "skipping" mode (fixes bug
      introduced by 4.64-PH/07).

PH/01 If a system filter or a router generates more than SHRT_MAX (32767)
      child addresses, Exim now panics and dies. Previously, because the count
      is held in a short int, deliveries were likely to be lost. As such a
      large number of recipients for a single message is ridiculous
      (performance will be very, very poor), I have chosen to impose a limit
      rather than extend the field.

Exim version 4.64
-----------------

TK/01 Bugzilla #401. Fix DK spooling code so that it can overwrite a
      leftover -K file (the existence of which was triggered by #402).
      While we were at it, introduced process PID as part of the -K
      filename. This should rule out race conditions when creating
      these files.

TK/02 Bugzilla #402. Apply patch from Simon Arlott, speeding up DK signing
      processing considerably. Previous code took too long for large mails,
      triggering a timeout which in turn triggers #401.

TK/03 Introduced HAVE_LINUX_SENDFILE to os.h-Linux. Currently only used
      in the DK code in transports.c. sendfile() is not really portable,
      hence the _LINUX specificness.

TF/01 In the add_headers option to the mail command in an Exim filter,
      there was a bug that Exim would claim a syntax error in any
      header after the first one which had an odd number of characters
      in the field name.

PH/01 If a server that rejects MAIL FROM:<> was the target of a sender
      callout verification, Exim cached a "reject" for the entire domain. This
      is correct for most verifications, but it is not correct for a recipient
      verification with use_sender or use_postmaster set, because in that case
      the callout does not use MAIL FROM:<>. Exim now distinguishes the special
      case of MAIL FROM:<> rejection from other early rejections (e.g.
      rejection of HELO). When verifying a recipient using a non-null MAIL
      address, the cache is ignored if it shows MAIL FROM:<> rejection.
      Whatever the result of the callout, the value of the domain cache is
      left unchanged (for any other kind of callout, getting as far as trying
      RCPT means that the domain itself is ok).

PH/02 Tidied a number of unused variable and signed/unsigned warnings that
      gcc 4.1.1 threw up.

PH/03 On Solaris, an unexpectedly close socket (dropped connection) can
      manifest itself as EPIPE rather than ECONNECT. When tidying away a
      session, the daemon ignores ECONNECT errors and logs others; it now
      ignores EPIPE as well.

PH/04 Applied Nico Erfurth's refactoring patch to tidy up mime.c
      (quoted-printable decoding).

PH/05 Applied Nico Erfurth's refactoring patch to tidy up spool_mbox.c, and
      later the small subsequent patch to fix an introduced bug.

PH/06 Installed the latest Cygwin Makefile from the Cygwin maintainer.

PH/07 There was no check for overflow in expansions such as ${if >{1}{4096M}}.

PH/08 An error is now given if message_size_limit is specified negative.

PH/09 Applied and tidied up Jakob Hirsch's patch for allowing ACL variables
      to be given (somewhat) arbitrary names.

JJ/01 exipick 20060919.0, allow for arbitrary acl_ variables introduced
      in 4.64-PH/09.

JJ/02 exipick 20060919.0, --show-vars args can now be regular expressions,
      miscellaneous code fixes

PH/10 Added the log_reject_target ACL modifier to specify where to log
      rejections.

PH/11 Callouts were setting the name used for EHLO/HELO from $smtp_active_
      hostname. This is wrong, because it relates to the incoming message (and
      probably the interface on which it is arriving) and not to the outgoing
      callout (which could be using a different interface). This has been
      changed to use the value of the helo_data option from the smtp transport
      instead - this is what is used when a message is actually being sent. If
      there is no remote transport (possible with a router that sets up host
      addresses), $smtp_active_hostname is used.

PH/12 Installed Andrey Panin's patch to add a dovecot authenticator. Various
      tweaks were necessary in order to get it to work (see also 21 below):
      (a) The code assumed that strncpy() returns a negative number on buffer
          overflow, which isn't the case. Replaced with Exim's string_format()
          function.
      (b) There were several signed/unsigned issues. I just did the minimum
          hacking in of casts. There is scope for a larger refactoring.
      (c) The code used strcasecmp() which is not a standard C function.
          Replaced with Exim's strcmpic() function.
      (d) The code set only $1; it now sets $auth1 as well.
      (e) A simple test gave the error "authentication client didn't specify
          service in request". It would seem that Dovecot has changed its
          interface. Fortunately there's a specification; I followed it and
          changed what the client sends and it appears to be working now.

PH/13 Added $message_headers_raw to provide the headers without RFC 2047
      decoding.

PH/14 Corrected misleading output from -bv when -v was also used. Suppose the
      address A is aliased to B and C, where B exists and C does not. Without
      -v the output is "A verified" because verification stops after a
      successful redirection if more than one address is generated. However,
      with -v the child addresses are also verified. Exim was outputting "A
      failed to verify" and then showing the successful verification for C,
      with its parentage. It now outputs "B failed to verify", showing B's
      parentage before showing the successful verification of C.

PH/15 Applied Michael Deutschmann's patch to allow DNS black list processing to
      look up a TXT record in a specific list after matching in a combined
      list.

PH/16 It seems that the options setting for the resolver (RES_DEFNAMES and
      RES_DNSRCH) can affect the behaviour of gethostbyname() and friends when
      they consult the DNS. I had assumed they would set it the way they
      wanted; and indeed my experiments on Linux seem to show that in some
      cases they do (I could influence IPv6 lookups but not IPv4 lookups).
      To be on the safe side, however, I have now made the interface to
      host_find_byname() similar to host_find_bydns(), with an argument
      containing the DNS resolver options. The host_find_byname() function now
      sets these options at its start, just as host_find_bydns() does. The smtp
      transport options dns_qualify_single and dns_search_parents are passed to
      host_find_byname() when gethostbyname=TRUE in this transport. Other uses
      of host_find_byname() use the default settings of RES_DEFNAMES
      (qualify_single) but not RES_DNSRCH (search_parents).

PH/17 Applied (a modified version of) Nico Erfurth's patch to make
      spool_read_header() do less string testing, by means of a preliminary
      switch on the second character of optional "-foo" lines. (This is
      overdue, caused by the large number of possibilities that now exist.
      Originally there were few.) While I was there, I also converted the
      str(n)cmp tests so they don't re-test the leading "-" and the first
      character, in the hope this might squeeze out yet more improvement.

PH/18 Two problems with "group" syntax in header lines when verifying: (1) The
      flag allowing group syntax was set by the header_syntax check but not
      turned off, possible causing trouble later; (2) The flag was not being
      set at all for the header_verify test, causing "group"-style headers to
      be rejected. I have now set it in this case, and also caused header_
      verify to ignore an empty address taken from a group. While doing this, I
      came across some other cases where the code for allowing group syntax
      while scanning a header line wasn't quite right (mostly, not resetting
      the flag correctly in the right place). These bugs could have caused
      trouble for malformed header lines. I hope it is now all correct.

PH/19 The functions {pwcheck,saslauthd}_verify_password() are always called
      with the "reply" argument non-NULL. The code, however (which originally
      came from elsewhere) had *some* tests for NULL when it wrote to *reply,
      but it didn't always do it. This confused somebody who was copying the
      code for some other use. I have removed all the tests.

PH/20 It was discovered that the GnuTLS code had support for RSA_EXPORT, a
      feature that was used to support insecure browsers during the U.S. crypto
      embargo. It requires special client support, and Exim is probably the
      only MTA that supported it -- and would never use it because real RSA is
      always available. This code has been removed, because it had the bad
      effect of slowing Exim down by computing (never used) parameters for the
      RSA_EXPORT functionality.

PH/21 On the advice of Timo Sirainen, added a check to the dovecot
      authenticator to fail if there's a tab character in the incoming data
      (there should never be unless someone is messing about, as it's supposed
      to be base64-encoded). Also added, on Timo's advice, the "secured" option
      if the connection is using TLS or if the remote IP is the same as the
      local IP, and the "valid-client-cert option" if a client certificate has
      been verified.

PH/22 As suggested by Dennis Davis, added a server_condition option to *all*
      authenticators. This can be used for authorization after authentication
      succeeds. (In the case of plaintext, it servers for both authentication
      and authorization.)

PH/23 Testing for tls_required and lost_connection in a retry rule didn't work
      if any retry times were supplied.

PH/24 Exim crashed if verify=helo was activated during an incoming -bs
      connection, where there is no client IP address to check. In this
      situation, the verify now always succeeds.

PH/25 Applied John Jetmore's -Mset patch.

PH/26 Added -bem to be like -Mset, but loading a message from a file.

PH/27 In a string expansion for a processed (not raw) header when multiple
      headers of the same name were present, leading whitespace was being
      removed from all of them, but trailing whitespace was being removed only
      from the last one. Now trailing whitespace is removed from each header
      before concatenation. Completely empty headers in a concatenation (as
      before) are ignored.

PH/28 Fixed bug in backwards-compatibility feature of PH/09 (thanks to John
      Jetmore). It would have mis-read ACL variables from pre-4.61 spool files.

PH/29 [Removed. This was a change that I later backed out, and forgot to
      correct the ChangeLog entry (that I had efficiently created) before
      committing the later change.]

PH/30 Exim was sometimes attempting to deliver messages that had suffered
      address errors (4xx response to RCPT) over the same connection as other
      messages routed to the same hosts. Such deliveries are always "forced",
      so retry times are not inspected. This resulted in far too many retries
      for the affected addresses. The effect occurred only when there were more
      hosts than the hosts_max_try setting in the smtp transport when it had
      the 4xx errors. Those hosts that it had tried were not added to the list
      of hosts for which the message was waiting, so if all were tried, there
      was no problem. Two fixes have been applied:

      (i)  If there are any address or message errors in an SMTP delivery, none
           of the hosts (tried or untried) are now added to the list of hosts
           for which the message is waiting, so the message should not be a
           candidate for sending over the same connection that was used for a
           successful delivery of some other message. This seems entirely
           reasonable: after all the message is NOT "waiting for some host".
           This is so "obvious" that I'm not sure why it wasn't done
           previously. Hope I haven't missed anything, but it can't do any
           harm, as the worst effect is to miss an optimization.

      (ii) If, despite (i), such a delivery is accidentally attempted, the
           routing retry time is respected, so at least it doesn't keep
           hammering the server.

PH/31 Installed Andrew Findlay's patch to close the writing end of the socket
      in ${readsocket because some servers need this prod.

PH/32 Added some extra debug output when updating a wait-xxx database.

PH/33 The hint "could be header name not terminated by colon", which has been
      given for certain expansion errors for a long time, was not being given
      for the ${if def:h_colon_omitted{...  case.

PH/34 The spec says: "With one important exception, whenever a domain list is
      being scanned, $domain contains the subject domain." There was at least
      one case where this was not true.

PH/35 The error "getsockname() failed: connection reset by peer" was being
      written to the panic log as well as the main log, but it isn't really
      panic-worthy as it just means the connection died rather early on. I have
      removed the panic log writing for the ECONNRESET error when getsockname()
      fails.

PH/36 After a 4xx response to a RCPT error, that address was delayed (in queue
      runs only) independently of the message's sender address. This meant
      that, if the 4xx error was in fact related to the sender, a different
      message to the same recipient with a different sender could confuse
      things. In particualar, this can happen when sending to a greylisting
      server, but other circumstances could also provoke similar problems.
      I have changed the default so that the retry time for these errors is now
      based a combination of the sender and recipient addresses. This change
      can be overridden by setting address_retry_include_sender=false in the
      smtp transport.

PH/37 For LMTP over TCP/IP (the smtp transport), error responses from the
      remote server are returned as part of bounce messages. This was not
      happening for LMTP over a pipe (the lmtp transport), but now it is the
      same for both kinds of LMTP.

PH/38 Despite being documented as not happening, Exim was rewriting addresses
      in header lines that were in fact CNAMEs. This is no longer the case.

PH/39 If -R or -S was given with -q<time>, the effect of -R or -S was ignored,
      and queue runs started by the daemon processed all messages. This has
      been fixed so that -R and -S can now usefully be given with -q<time>.

PH/40 Import PCRE release 6.7 (fixes some bugs).

PH/41 Add bitwise logical operations to eval (courtesy Brad Jorsch).

PH/42 Give an error if -q is specified more than once.

PH/43 Renamed the variables $interface_address and $interface_port as
      $received_ip_address and $received_port, to make it clear that these
      values apply to message reception, and not to the outgoing interface when
      a message is delivered. (The old names remain recognized, of course.)

PH/44 There was no timeout on the connect() call when using a Unix domain
      socket in the ${readsocket expansion. There now is.

PH/45 Applied a modified version of Brad Jorsch's patch to allow "message" to
      be meaningful with "accept".

SC/01 Eximstats V1.43
     Bug fix for V1.42 with -h0 specified. Spotted by Chris Lear.

SC/02 Eximstats V1.44
      Use a glob alias rather than an array ref in the generated
      parser. This improves both readability and performance.

SC/03 Eximstats V1.45 (Marco Gaiarin / Steve Campbell)
      Collect SpamAssassin and rejection statistics.
      Don't display local sender or destination tables unless
      there is data to show.
      Added average volumes into the top table text output.

SC/04 Eximstats V1.46
      Collect data on the number of addresses (recipients)
      as well as the number of messages.

SC/05 Eximstats V1.47
      Added 'Message too big' to the list of mail rejection
      reasons (thanks to Marco Gaiarin).

SC/06 Eximstats V1.48
      Mainlog lines which have GMT offsets and are too short to
      have a flag are now skipped.

SC/07 Eximstats V1.49 (Alain Williams)
      Added the -emptyok flag.

SC/08 Eximstats V1.50
      Fixes for obtaining the IP address from reject messages.

JJ/03 exipick.20061117.2, made header handling as similar to exim as possible
      (added [br]h_ prefixes, implemented RFC2047 decoding.  Fixed
      whitesspace changes from 4.64-PH/27

JJ/04 exipick.20061117.2, fixed format and added $message_headers_raw to
      match 4.64-PH/13

JJ/05 exipick.20061117.2, bug fixes (error out sooner when invalid criteria
      are found, allow negative numbers in numeric criteria)

JJ/06 exipick.20061117.2, added new $message_body_missing variable

JJ/07 exipick.20061117.2, added $received_ip_address and $received_port
      to match changes made in 4.64-PH/43

PH/46 Applied Jori Hamalainen's patch to add features to exiqsumm.

PH/47 Put in an explicit test for a DNS lookup of an address record where the
      "domain" is actually an IP address, and force a failure. This locks out
      those revolvers/nameservers that support "A-for-A" lookups, in
      contravention of the specifications.

PH/48 When a host name was looked up from an IP address, and the subsequent
      forward lookup of the name timed out, the host name was left in
      $sender_host_name, contrary to the specification.

PH/49 Although default lookup types such as lsearch* or cdb*@ have always been
      restricted to single-key lookups, Exim was not diagnosing an error if
      * or *@ was used with a query-style lookup.

PH/50 Increased the value of DH_BITS in tls-gnu.c from 768 to 1024.

MH/01 local_scan ABI version incremented to 1.1. It should have been updated
      long ago, but noone interested enough thought of it. Let's just say that
      the "1.1" means that there are some new functions that weren't there at
      some point in the past.

PH/51 Error processing for expansion failure of helo_data from an smtp
      transport during callout processing was broken.

PH/52 Applied John Jetmore's patch to allow tls-on-connect and STARTTLS to be
      tested/used via the -bh/-bhc/-bs options.

PH/53 Added missing "#include <time.h>" to pcre/pcretest.c (this was a PCRE
      bug, fixed in subsequent PCRE releases).

PH/54 Applied Robert Bannocks' patch to avoid a problem with references that
      arises when using the Solaris LDAP libraries (but not with OpenLDAP).

PH/55 Check for a ridiculously long file name in exim_dbmbuild.


To generate a diff of this commit:
cvs rdiff -r1.80 -r1.81 pkgsrc/mail/exim/Makefile
cvs rdiff -r1.35 -r1.36 pkgsrc/mail/exim/distinfo
cvs rdiff -r1.17 -r1.18 pkgsrc/mail/exim/patches/patch-aa

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.