X-Git-Url: https://git.exim.org/exim.git/blobdiff_plain/54fc8428c5c4b3fa90347e5ca7d89c2d752a7032..8669f003e82e39e578787d9ebc1b40f36c024332:/src/src/deliver.c diff --git a/src/src/deliver.c b/src/src/deliver.c index fae67dc79..c712e9aa2 100644 --- a/src/src/deliver.c +++ b/src/src/deliver.c @@ -1,4 +1,4 @@ -/* $Cambridge: exim/src/src/deliver.c,v 1.41 2007/01/22 16:29:54 ph10 Exp $ */ +/* $Cambridge: exim/src/src/deliver.c,v 1.44 2007/02/06 14:19:00 ph10 Exp $ */ /************************************************* * Exim - an Internet mail transport agent * @@ -2043,9 +2043,7 @@ if (addr->special_action == SPECIAL_WARN && !contains_header(US"Reply-To", warn_message)) fprintf(f, "Reply-To: %s\n", errors_reply_to); fprintf(f, "Auto-Submitted: auto-replied\n"); - if (!contains_header(US"From", warn_message)) - fprintf(f, "From: Mail Delivery System \n", - qualify_domain_sender); + if (!contains_header(US"From", warn_message)) moan_write_from(f); fprintf(f, "%s", CS warn_message); /* Close and wait for child process to complete, without a timeout. */ @@ -5480,7 +5478,7 @@ while (addr_new != NULL) /* Loop until all addresses dealt with */ if (address_retry_record == NULL) { - uschar * altkey = string_sprintf("%s:<%s>", addr->address_retry_key, + uschar *altkey = string_sprintf("%s:<%s>", addr->address_retry_key, sender_address); address_retry_record = dbfn_read(dbm_file, altkey); if (address_retry_record != NULL && @@ -5639,12 +5637,16 @@ while (addr_new != NULL) /* Loop until all addresses dealt with */ 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. */ + 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) @@ -6248,8 +6250,7 @@ while (addr_failed != NULL) if (errors_reply_to != NULL) fprintf(f, "Reply-To: %s\n", errors_reply_to); fprintf(f, "Auto-Submitted: auto-replied\n"); - fprintf(f, "From: Mail Delivery System \n", - qualify_domain_sender); + moan_write_from(f); fprintf(f, "To: %s\n", bounce_recipient); /* Open a template file if one is provided. Log failure to open, but @@ -6572,6 +6573,9 @@ if (addr_defer == NULL) readconf_printtime(time(NULL) - received_time)); else log_write(0, LOG_MAIN, "Completed"); + + /* Unset deliver_freeze so that we won't try to move the spool files further down */ + deliver_freeze = FALSE; } /* If there are deferred addresses, we are keeping this message because it is @@ -6770,8 +6774,7 @@ else if (addr_defer != (address_item *)(+1)) if (errors_reply_to != NULL) fprintf(f, "Reply-To: %s\n", errors_reply_to); fprintf(f, "Auto-Submitted: auto-replied\n"); - fprintf(f, "From: Mail Delivery System \n", - qualify_domain_sender); + moan_write_from(f); fprintf(f, "To: %s\n", recipients); wmf_text = next_emf(wmf, US"header");