Re: [exim] exim immediately bouncing messages to greylisting…

Top Page
Delete this message
Reply to this message
Author: Philip Hazel
Date:  
To: Marc Haber
CC: exim-users
Subject: Re: [exim] exim immediately bouncing messages to greylisting host?
On Thu, 5 Apr 2007, Marc Haber wrote:

> I am not an expert in reading context diffs, and the patch does not
> seem to apply cleanly when pasted from the web archive, but do I see
> correctly that the patch is the following unified diff?


Below is my version of the patch:

-- 
Philip Hazel            University of Cambridge Computing Service
Get the Exim 4 book:    http://www.uit.co.uk/exim-book




*** exim-4.66/src/deliver.c Mon Jan  8 14:25:36 2007
--- deliver.c    Tue Feb  6 14:19:00 2007
***************
*** 5639,5650 ****
          string_sprintf("R:%s", addr->domain), 0);


      /* Otherwise, if there is an existing retry record in the database, add
!     retry items to delete both forms. Since the domain might have been
!     rewritten (expanded to fully qualified) as a result of routing, ensure
!     that the rewritten form is also deleted. */


      else if (testflag(addr, af_dr_retry_exists))
        {
        retry_add_item(addr, addr->address_retry_key, rf_delete);
        retry_add_item(addr, addr->domain_retry_key, rf_delete);
        if (Ustrcmp(addr->domain, old_domain) != 0)
--- 5637,5652 ----
          string_sprintf("R:%s", addr->domain), 0);


      /* Otherwise, if there is an existing retry record in the database, add
!     retry items to delete both forms. We must also allow for the possibility
!     of a routing retry that includes the sender address. Since the domain might
!     have been rewritten (expanded to fully qualified) as a result of routing,
!     ensure that the rewritten form is also deleted. */


      else if (testflag(addr, af_dr_retry_exists))
        {
+       uschar *altkey = string_sprintf("%s:<%s>", addr->address_retry_key,
+         sender_address);
+       retry_add_item(addr, altkey, rf_delete);
        retry_add_item(addr, addr->address_retry_key, rf_delete);
        retry_add_item(addr, addr->domain_retry_key, rf_delete);
        if (Ustrcmp(addr->domain, old_domain) != 0)
          wmf_text = next_emf(wmf, US"header");
*** exim-4.66/src/transports/smtp.c Mon Jan  8 14:25:37 2007
--- transports/smtp.c    Tue Feb  6 14:19:00 2007
***************
*** 643,652 ****
      addr->transport_return = PENDING_OK;


      /* If af_dr_retry_exists is set, there was a routing delay on this address;
!     ensure that any address-specific retry record is expunged. */


      if (testflag(addr, af_dr_retry_exists))
        retry_add_item(addr, addr->address_retry_key, rf_delete);
      }


    /* Timeout while reading the response */
--- 654,669 ----
      addr->transport_return = PENDING_OK;


      /* If af_dr_retry_exists is set, there was a routing delay on this address;
!     ensure that any address-specific retry record is expunged. We do this both
!     for the basic key and for the version that also includes the sender. */


      if (testflag(addr, af_dr_retry_exists))
+       {
+       uschar *altkey = string_sprintf("%s:<%s>", addr->address_retry_key,
+         sender_address);
+       retry_add_item(addr, altkey, rf_delete);
        retry_add_item(addr, addr->address_retry_key, rf_delete);
+       }
      }


    /* Timeout while reading the response */