From 48c7f9e2e3b50cd5548447de62c77c7ddfe21519 Mon Sep 17 00:00:00 2001 From: Philip Hazel Date: Mon, 6 Nov 2006 15:50:12 +0000 Subject: [PATCH] Include sender address in retry key for 4xx errors. --- doc/doc-txt/ChangeLog | 13 +++++++- doc/doc-txt/NewStuff | 11 ++++++- doc/doc-txt/OptionLists.txt | 3 +- src/src/deliver.c | 22 ++++++++++--- src/src/transports/smtp.c | 58 +++++++++++++++++++++------------- src/src/transports/smtp.h | 3 +- test/confs/0247 | 1 - test/confs/0388 | 1 + test/log/0357 | 3 ++ test/scripts/0000-Basic/0357 | 2 ++ test/stderr/0357 | 61 ++++++++++++++++++++++++++---------- test/stderr/0358 | 40 ++++++++++++----------- test/stderr/0388 | 1 + test/stderr/5005 | 1 + test/stdout/0357 | 6 ++-- test/stdout/0358 | 8 ++--- test/stdout/0474 | 2 +- test/stdout/0497 | 2 +- 18 files changed, 162 insertions(+), 76 deletions(-) diff --git a/doc/doc-txt/ChangeLog b/doc/doc-txt/ChangeLog index c475c0877..99e28d07a 100644 --- a/doc/doc-txt/ChangeLog +++ b/doc/doc-txt/ChangeLog @@ -1,4 +1,4 @@ -$Cambridge: exim/doc/doc-txt/ChangeLog,v 1.424 2006/11/06 11:27:54 ph10 Exp $ +$Cambridge: exim/doc/doc-txt/ChangeLog,v 1.425 2006/11/06 15:50:12 ph10 Exp $ Change log file for Exim from version 4.21 ------------------------------------------- @@ -236,6 +236,17 @@ PH/35 The error "getsockname() failed: connection reset by peer" was being 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. + Exim version 4.63 ----------------- diff --git a/doc/doc-txt/NewStuff b/doc/doc-txt/NewStuff index 95a207516..695acce86 100644 --- a/doc/doc-txt/NewStuff +++ b/doc/doc-txt/NewStuff @@ -1,4 +1,4 @@ -$Cambridge: exim/doc/doc-txt/NewStuff,v 1.119 2006/10/24 12:56:06 ph10 Exp $ +$Cambridge: exim/doc/doc-txt/NewStuff,v 1.120 2006/11/06 15:50:12 ph10 Exp $ New Features in Exim -------------------- @@ -154,6 +154,15 @@ Version 4.64 line, because further arguments are taken as strings to expand (just like -be). +9. When an address is delayed because of a 4xx response to a RCPT command, it + is now the combination of sender and recipient that is delayed in subsequent + queue runs until its retry time is reached. You can revert to the previous + behavious, that is, delay the recipient independent of the sender, by + setting address_retry_include_sender=false in the smtp transport. However, + this can lead to problems with servers that regularly issue 4xx responses to + RCPT commands. + + Version 4.63 ------------ diff --git a/doc/doc-txt/OptionLists.txt b/doc/doc-txt/OptionLists.txt index f0ef3c2f8..1b73b1e5e 100644 --- a/doc/doc-txt/OptionLists.txt +++ b/doc/doc-txt/OptionLists.txt @@ -1,4 +1,4 @@ -$Cambridge: exim/doc/doc-txt/OptionLists.txt,v 1.26 2006/10/24 12:56:06 ph10 Exp $ +$Cambridge: exim/doc/doc-txt/OptionLists.txt,v 1.27 2006/11/06 15:50:12 ph10 Exp $ LISTS OF EXIM OPTIONS --------------------- @@ -68,6 +68,7 @@ acl_smtp_rcpt string* unset main acl_smtp_starttls string* unset main 4.11 acl_smtp_vrfy string* unset main 4.00 address_data string* unset routers 4.00 +address_retry_include_sender boolean true smtp 4.64 address_test boolean true routers 4.14 admin_groups string list unset main 3.02 allow_domain_literals boolean false main 4.00 replacing forbid_domain_literals diff --git a/src/src/deliver.c b/src/src/deliver.c index 81df0e083..02552317a 100644 --- a/src/src/deliver.c +++ b/src/src/deliver.c @@ -1,4 +1,4 @@ -/* $Cambridge: exim/src/src/deliver.c,v 1.37 2006/10/30 16:41:04 ph10 Exp $ */ +/* $Cambridge: exim/src/src/deliver.c,v 1.38 2006/11/06 15:50:12 ph10 Exp $ */ /************************************************* * Exim - an Internet mail transport agent * @@ -5452,8 +5452,10 @@ while (addr_new != NULL) /* Loop until all addresses dealt with */ } /* Get the routing retry status, saving the two retry keys (with and - without the local part) for subsequent use. Ignore retry records that - are too old. */ + without the local part) for subsequent use. If there is no retry record for + the standard address routing retry key, we look for the same key with the + sender attached, because this form is used by the smtp transport after a + 4xx response to RCPT when address_retry_include_sender is true. */ addr->domain_retry_key = string_sprintf("R:%s", addr->domain); addr->address_retry_key = string_sprintf("R:%s@%s", addr->local_part, @@ -5466,12 +5468,22 @@ while (addr_new != NULL) /* Loop until all addresses dealt with */ domain_retry_record = dbfn_read(dbm_file, addr->domain_retry_key); if (domain_retry_record != NULL && now - domain_retry_record->time_stamp > retry_data_expire) - domain_retry_record = NULL; + domain_retry_record = NULL; /* Ignore if too old */ address_retry_record = dbfn_read(dbm_file, addr->address_retry_key); if (address_retry_record != NULL && now - address_retry_record->time_stamp > retry_data_expire) - address_retry_record = NULL; + address_retry_record = NULL; /* Ignore if too old */ + + if (address_retry_record == NULL) + { + 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 && + now - address_retry_record->time_stamp > retry_data_expire) + address_retry_record = NULL; /* Ignore if too old */ + } } DEBUG(D_deliver|D_retry) diff --git a/src/src/transports/smtp.c b/src/src/transports/smtp.c index ac013470b..f9e56c2e1 100644 --- a/src/src/transports/smtp.c +++ b/src/src/transports/smtp.c @@ -1,4 +1,4 @@ -/* $Cambridge: exim/src/src/transports/smtp.c,v 1.28 2006/10/30 16:41:04 ph10 Exp $ */ +/* $Cambridge: exim/src/src/transports/smtp.c,v 1.29 2006/11/06 15:50:12 ph10 Exp $ */ /************************************************* * Exim - an Internet mail transport agent * @@ -21,6 +21,8 @@ before the lower case letters). Some live in the transport_instance block so as to be publicly visible; these are flagged with opt_public. */ optionlist smtp_transport_options[] = { + { "address_retry_include_sender", opt_bool, + (void *)offsetof(smtp_transport_options_block, address_retry_include_sender) }, { "allow_localhost", opt_bool, (void *)offsetof(smtp_transport_options_block, allow_localhost) }, { "authenticated_sender", opt_stringptr, @@ -159,6 +161,7 @@ smtp_transport_options_block smtp_transport_option_defaults = { 1024, /* size_addition */ 5, /* hosts_max_try */ 50, /* hosts_max_try_hardlimit */ + TRUE, /* address_retry_include_sender */ FALSE, /* allow_localhost */ FALSE, /* authenticated_sender_force */ FALSE, /* gethostbyname */ @@ -555,19 +558,21 @@ subsequent general error, it will get reset accordingly. If not, it will get converted to OK at the end. Arguments: - addrlist the complete address list - include_affixes TRUE if affixes include in RCPT - sync_addr ptr to the ptr of the one to start scanning at (updated) - host the host we are connected to - count the number of responses to read - pending_MAIL true if the first response is for MAIL - pending_DATA 0 if last command sent was not DATA - +1 if previously had a good recipient - -1 if not previously had a good recipient - inblock incoming SMTP block - timeout timeout value - buffer buffer for reading response - buffsize size of buffer + addrlist the complete address list + include_affixes TRUE if affixes include in RCPT + sync_addr ptr to the ptr of the one to start scanning at (updated) + host the host we are connected to + count the number of responses to read + address_retry_ + include_sender true if 4xx retry is to include the sender it its key + pending_MAIL true if the first response is for MAIL + pending_DATA 0 if last command sent was not DATA + +1 if previously had a good recipient + -1 if not previously had a good recipient + inblock incoming SMTP block + timeout timeout value + buffer buffer for reading response + buffsize size of buffer Returns: 3 if at least one address had 2xx and one had 5xx 2 if at least one address had 5xx but none had 2xx @@ -580,7 +585,8 @@ Returns: 3 if at least one address had 2xx and one had 5xx static int sync_responses(address_item *addrlist, BOOL include_affixes, - address_item **sync_addr, host_item *host, int count, BOOL pending_MAIL, + address_item **sync_addr, host_item *host, int count, + BOOL address_retry_include_sender, BOOL pending_MAIL, int pending_DATA, smtp_inblock *inblock, int timeout, uschar *buffer, int buffsize) { @@ -705,10 +711,17 @@ while (count-- > 0) update_waiting = FALSE; - /* Add a retry item for the address so that it doesn't get tried - again too soon. */ + /* Add a retry item for the address so that it doesn't get tried again + too soon. If address_retry_include_sender is true, add the sender address + to the retry key. */ - retry_add_item(addr, addr->address_retry_key, 0); + if (address_retry_include_sender) + { + uschar *altkey = string_sprintf("%s:<%s>", addr->address_retry_key, + sender_address); + retry_add_item(addr, altkey, 0); + } + else retry_add_item(addr, addr->address_retry_key, 0); } } } /* Loop for next RCPT response */ @@ -1404,8 +1417,9 @@ for (addr = first_addr; if (count > 0) { switch(sync_responses(first_addr, tblock->rcpt_include_affixes, - &sync_addr, host, count, pending_MAIL, 0, &inblock, - ob->command_timeout, buffer, sizeof(buffer))) + &sync_addr, host, count, ob->address_retry_include_sender, + pending_MAIL, 0, &inblock, ob->command_timeout, buffer, + sizeof(buffer))) { case 3: ok = TRUE; /* 2xx & 5xx => OK & progress made */ case 2: completed_address = TRUE; /* 5xx (only) => progress made */ @@ -1453,8 +1467,8 @@ if (ok || (smtp_use_pipelining && !mua_wrapper)) int count = smtp_write_command(&outblock, FALSE, "DATA\r\n"); if (count < 0) goto SEND_FAILED; switch(sync_responses(first_addr, tblock->rcpt_include_affixes, &sync_addr, - host, count, pending_MAIL, ok? +1 : -1, &inblock, - ob->command_timeout, buffer, sizeof(buffer))) + host, count, ob->address_retry_include_sender, pending_MAIL, + ok? +1 : -1, &inblock, ob->command_timeout, buffer, sizeof(buffer))) { case 3: ok = TRUE; /* 2xx & 5xx => OK & progress made */ case 2: completed_address = TRUE; /* 5xx (only) => progress made */ diff --git a/src/src/transports/smtp.h b/src/src/transports/smtp.h index 05f02bc00..107b91853 100644 --- a/src/src/transports/smtp.h +++ b/src/src/transports/smtp.h @@ -1,4 +1,4 @@ -/* $Cambridge: exim/src/src/transports/smtp.h,v 1.8 2006/02/28 12:42:47 ph10 Exp $ */ +/* $Cambridge: exim/src/src/transports/smtp.h,v 1.9 2006/11/06 15:50:12 ph10 Exp $ */ /************************************************* * Exim - an Internet mail transport agent * @@ -33,6 +33,7 @@ typedef struct { int size_addition; int hosts_max_try; int hosts_max_try_hardlimit; + BOOL address_retry_include_sender; BOOL allow_localhost; BOOL authenticated_sender_force; BOOL gethostbyname; diff --git a/test/confs/0247 b/test/confs/0247 index 7de97edd1..eb11b0939 100644 --- a/test/confs/0247 +++ b/test/confs/0247 @@ -11,7 +11,6 @@ gecos_name = CALLER_NAME # ----- Main settings ----- - # ----- Routers ----- begin routers diff --git a/test/confs/0388 b/test/confs/0388 index ec41efcaf..0252cbd9e 100644 --- a/test/confs/0388 +++ b/test/confs/0388 @@ -37,6 +37,7 @@ smtp: hosts_max_try = 1 port = PORT_S connect_timeout = 2s + address_retry_include_sender = false # ----- Retry ----- diff --git a/test/log/0357 b/test/log/0357 index b89d3db34..0aa9fd787 100644 --- a/test/log/0357 +++ b/test/log/0357 @@ -6,3 +6,6 @@ 1999-03-02 09:44:33 Start queue run: pid=pppp 1999-03-02 09:44:33 10HmaX-0005vi-00 == userx@test.ex R=r1 T=t1 defer (-44): SMTP error from remote mail server after RCPT TO:: host 127.0.0.1 [127.0.0.1]: 451 Temporary error 1999-03-02 09:44:33 End queue run: pid=pppp +1999-03-02 09:44:33 Start queue run: pid=pppp +1999-03-02 09:44:33 10HmaX-0005vi-00 == userx@test.ex routing defer (-51): retry time not reached +1999-03-02 09:44:33 End queue run: pid=pppp diff --git a/test/scripts/0000-Basic/0357 b/test/scripts/0000-Basic/0357 index 1ca60b12d..ba1f5fa4a 100644 --- a/test/scripts/0000-Basic/0357 +++ b/test/scripts/0000-Basic/0357 @@ -46,4 +46,6 @@ QUIT exim -q -d-all+retry **** dump retry +exim -q -d-all+retry +**** no_msglog_check diff --git a/test/stderr/0357 b/test/stderr/0357 index 7a6ee4d3b..cae10d04f 100644 --- a/test/stderr/0357 +++ b/test/stderr/0357 @@ -24,8 +24,8 @@ After routing: checking status of 127.0.0.1 locking TESTSUITE/spool/db/retry.lockfile no retry data available -added retry item for R:userx@test.ex: errno=-44 more_errno=dd,A flags=0 -reading retry information for R:userx@test.ex from subprocess +added retry item for R:userx@test.ex:: errno=-44 more_errno=dd,A flags=0 +reading retry information for R:userx@test.ex: from subprocess added retry item LOG: MAIN == userx@test.ex R=r1 T=t1 defer (-44): SMTP error from remote mail server after RCPT TO:: host 127.0.0.1 [127.0.0.1]: 451 Temporary error @@ -35,9 +35,9 @@ Failed addresses: Deferred addresses: userx@test.ex locking TESTSUITE/spool/db/retry.lockfile -retry for R:userx@test.ex = * 0 0 +retry for R:userx@test.ex: = * 0 0 failing_interval=ttt message_age=ttt -Writing retry data for R:userx@test.ex +Writing retry data for R:userx@test.ex: first failed=dddd last try=dddd next try=+1 expired=0 errno=-44 more_errno=dd,A SMTP error from remote mail server after RCPT TO:: host 127.0.0.1 [127.0.0.1]: 451 Temporary error end of retry processing @@ -65,15 +65,15 @@ checking status of 127.0.0.1 locking TESTSUITE/spool/db/retry.lockfile no host retry record no message retry record -added retry item for R:userx@test.ex: errno=-44 more_errno=dd,A flags=0 -reading retry information for R:userx@test.ex from subprocess - existing delete item dropped +added retry item for R:userx@test.ex:: errno=-44 more_errno=dd,A flags=0 +reading retry information for R:userx@test.ex: from subprocess added retry item reading retry information for R:test.ex from subprocess existing delete item dropped added delete item reading retry information for R:userx@test.ex from subprocess - delete item not added: non-delete item exists + existing delete item dropped + added delete item LOG: MAIN == userx@test.ex R=r1 T=t1 defer (-44): SMTP error from remote mail server after RCPT TO:: host 127.0.0.1 [127.0.0.1]: 451 Temporary error Processing retry items @@ -82,10 +82,11 @@ Failed addresses: Deferred addresses: userx@test.ex locking TESTSUITE/spool/db/retry.lockfile +deleted retry information for R:userx@test.ex deleted retry information for R:test.ex -retry for R:userx@test.ex = * 0 0 +retry for R:userx@test.ex: = * 0 0 failing_interval=ttt message_age=ttt -Writing retry data for R:userx@test.ex +Writing retry data for R:userx@test.ex: first failed=dddd last try=dddd next try=+1 expired=0 errno=-44 more_errno=dd,A SMTP error from remote mail server after RCPT TO:: host 127.0.0.1 [127.0.0.1]: 451 Temporary error end of retry processing @@ -114,15 +115,15 @@ checking status of 127.0.0.1 locking TESTSUITE/spool/db/retry.lockfile no host retry record no message retry record -added retry item for R:userx@test.ex: errno=-44 more_errno=dd,A flags=0 -reading retry information for R:userx@test.ex from subprocess - existing delete item dropped +added retry item for R:userx@test.ex:: errno=-44 more_errno=dd,A flags=0 +reading retry information for R:userx@test.ex: from subprocess added retry item reading retry information for R:test.ex from subprocess existing delete item dropped added delete item reading retry information for R:userx@test.ex from subprocess - delete item not added: non-delete item exists + existing delete item dropped + added delete item LOG: MAIN == userx@test.ex R=r1 T=t1 defer (-44): SMTP error from remote mail server after RCPT TO:: host 127.0.0.1 [127.0.0.1]: 451 Temporary error Processing retry items @@ -131,13 +132,41 @@ Failed addresses: Deferred addresses: userx@test.ex locking TESTSUITE/spool/db/retry.lockfile +deleted retry information for R:userx@test.ex deleted retry information for R:test.ex -retry for R:userx@test.ex = * 0 0 +retry for R:userx@test.ex: = * 0 0 failing_interval=ttt message_age=ttt -Writing retry data for R:userx@test.ex +Writing retry data for R:userx@test.ex: first failed=dddd last try=dddd next try=+2 expired=0 errno=-44 more_errno=dd,A SMTP error from remote mail server after RCPT TO:: host 127.0.0.1 [127.0.0.1]: 451 Temporary error end of retry processing LOG: queue_run MAIN End queue run: pid=pppp >>>>>>>>>>>>>>>> Exim pid=pppp terminating with rc=0 >>>>>>>>>>>>>>>> +Exim version x.yz .... +configuration file is TESTSUITE/test-config +admin user +LOG: queue_run MAIN + Start queue run: pid=pppp +locking TESTSUITE/spool/db/retry.lockfile +>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +Considering: userx@test.ex +no domain retry record +LOG: retry_defer MAIN + == userx@test.ex routing defer (-51): retry time not reached +>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +After routing: + Local deliveries: + Remote deliveries: + Failed addresses: + Deferred addresses: + userx@test.ex +Processing retry items +Succeeded addresses: +Failed addresses: +Deferred addresses: +userx@test.ex: no retry items +end of retry processing +LOG: queue_run MAIN + End queue run: pid=pppp +>>>>>>>>>>>>>>>> Exim pid=pppp terminating with rc=0 >>>>>>>>>>>>>>>> diff --git a/test/stderr/0358 b/test/stderr/0358 index 40e38ca12..c48a96e4b 100644 --- a/test/stderr/0358 +++ b/test/stderr/0358 @@ -29,11 +29,11 @@ After routing: checking status of 127.0.0.1 locking TESTSUITE/spool/db/retry.lockfile no retry data available -added retry item for R:userx@test.ex: errno=-44 more_errno=dd,A flags=0 -added retry item for R:usery@test.ex: errno=-44 more_errno=dd,A flags=0 -reading retry information for R:userx@test.ex from subprocess +added retry item for R:userx@test.ex:: errno=-44 more_errno=dd,A flags=0 +added retry item for R:usery@test.ex:: errno=-44 more_errno=dd,A flags=0 +reading retry information for R:userx@test.ex: from subprocess added retry item -reading retry information for R:usery@test.ex from subprocess +reading retry information for R:usery@test.ex: from subprocess added retry item LOG: MAIN == userx@test.ex R=r1 T=t1 defer (-44): SMTP error from remote mail server after RCPT TO:: host 127.0.0.1 [127.0.0.1]: 451 Temporary error @@ -45,15 +45,15 @@ Failed addresses: Deferred addresses: usery@test.ex locking TESTSUITE/spool/db/retry.lockfile -retry for R:usery@test.ex = * 0 0 +retry for R:usery@test.ex: = * 0 0 failing_interval=ttt message_age=ttt -Writing retry data for R:usery@test.ex +Writing retry data for R:usery@test.ex: first failed=dddd last try=dddd next try=+1 expired=0 errno=-44 more_errno=dd,A SMTP error from remote mail server after RCPT TO:: host 127.0.0.1 [127.0.0.1]: 451 Temporary error userx@test.ex -retry for R:userx@test.ex = * 0 0 +retry for R:userx@test.ex: = * 0 0 failing_interval=ttt message_age=ttt -Writing retry data for R:userx@test.ex +Writing retry data for R:userx@test.ex: first failed=dddd last try=dddd next try=+1 expired=0 errno=-44 more_errno=dd,A SMTP error from remote mail server after RCPT TO:: host 127.0.0.1 [127.0.0.1]: 451 Temporary error end of retry processing @@ -87,24 +87,24 @@ checking status of 127.0.0.1 locking TESTSUITE/spool/db/retry.lockfile no host retry record no message retry record -added retry item for R:userx@test.ex: errno=-44 more_errno=dd,A flags=0 -added retry item for R:usery@test.ex: errno=-44 more_errno=dd,A flags=0 -reading retry information for R:userx@test.ex from subprocess - existing delete item dropped +added retry item for R:userx@test.ex:: errno=-44 more_errno=dd,A flags=0 +added retry item for R:usery@test.ex:: errno=-44 more_errno=dd,A flags=0 +reading retry information for R:userx@test.ex: from subprocess added retry item reading retry information for R:test.ex from subprocess existing delete item dropped added delete item reading retry information for R:userx@test.ex from subprocess - delete item not added: non-delete item exists -reading retry information for R:usery@test.ex from subprocess existing delete item dropped + added delete item +reading retry information for R:usery@test.ex: from subprocess added retry item reading retry information for R:test.ex from subprocess existing delete item dropped added delete item reading retry information for R:usery@test.ex from subprocess - delete item not added: non-delete item exists + existing delete item dropped + added delete item LOG: MAIN == userx@test.ex R=r1 T=t1 defer (-44): SMTP error from remote mail server after RCPT TO:: host 127.0.0.1 [127.0.0.1]: 451 Temporary error LOG: MAIN @@ -115,17 +115,19 @@ Failed addresses: Deferred addresses: usery@test.ex locking TESTSUITE/spool/db/retry.lockfile +deleted retry information for R:usery@test.ex deleted retry information for R:test.ex -retry for R:usery@test.ex = * 0 0 +retry for R:usery@test.ex: = * 0 0 failing_interval=ttt message_age=ttt -Writing retry data for R:usery@test.ex +Writing retry data for R:usery@test.ex: first failed=dddd last try=dddd next try=+2 expired=0 errno=-44 more_errno=dd,A SMTP error from remote mail server after RCPT TO:: host 127.0.0.1 [127.0.0.1]: 451 Temporary error userx@test.ex +deleted retry information for R:userx@test.ex deleted retry information for R:test.ex -retry for R:userx@test.ex = * 0 0 +retry for R:userx@test.ex: = * 0 0 failing_interval=ttt message_age=ttt -Writing retry data for R:userx@test.ex +Writing retry data for R:userx@test.ex: first failed=dddd last try=dddd next try=+2 expired=0 errno=-44 more_errno=dd,A SMTP error from remote mail server after RCPT TO:: host 127.0.0.1 [127.0.0.1]: 451 Temporary error end of retry processing diff --git a/test/stderr/0388 b/test/stderr/0388 index dc12b2781..e4b6b413c 100644 --- a/test/stderr/0388 +++ b/test/stderr/0388 @@ -224,6 +224,7 @@ Considering: CALLER@myhost.test.ex unique = CALLER@myhost.test.ex dbfn_read: key=R:myhost.test.ex dbfn_read: key=R:CALLER@myhost.test.ex +dbfn_read: key=R:CALLER@myhost.test.ex:<> no domain retry record no address retry record CALLER@myhost.test.ex: queued for routing diff --git a/test/stderr/5005 b/test/stderr/5005 index 4a28a686f..e27fbfaac 100644 --- a/test/stderr/5005 +++ b/test/stderr/5005 @@ -583,6 +583,7 @@ Considering: userx@test.ex unique = userx@test.ex dbfn_read: key=R:test.ex dbfn_read: key=R:userx@test.ex +dbfn_read: key=R:userx@test.ex: no domain retry record no address retry record userx@test.ex: queued for routing diff --git a/test/stdout/0357 b/test/stdout/0357 index 51545f157..f7864bf4b 100644 --- a/test/stdout/0357 +++ b/test/stdout/0357 @@ -1,11 +1,11 @@ +++++++++++++++++++++++++++ - R:userx@test.ex -44 13121 SMTP error from remote mail server after RCPT TO:: host 127.0.0.1 [127.0.0.1]: 451 Temporary error + R:userx@test.ex: -44 13121 SMTP error from remote mail server after RCPT TO:: host 127.0.0.1 [127.0.0.1]: 451 Temporary error first failed = time last try = time2 next try = time2 + 1 +++++++++++++++++++++++++++ - R:userx@test.ex -44 13121 SMTP error from remote mail server after RCPT TO:: host 127.0.0.1 [127.0.0.1]: 451 Temporary error + R:userx@test.ex: -44 13121 SMTP error from remote mail server after RCPT TO:: host 127.0.0.1 [127.0.0.1]: 451 Temporary error first failed = time last try = time2 next try = time2 + 1 +++++++++++++++++++++++++++ - R:userx@test.ex -44 13121 SMTP error from remote mail server after RCPT TO:: host 127.0.0.1 [127.0.0.1]: 451 Temporary error + R:userx@test.ex: -44 13121 SMTP error from remote mail server after RCPT TO:: host 127.0.0.1 [127.0.0.1]: 451 Temporary error first failed = time last try = time2 next try = time2 + 2 ******** SERVER ******** diff --git a/test/stdout/0358 b/test/stdout/0358 index 314342dc6..ab77a784e 100644 --- a/test/stdout/0358 +++ b/test/stdout/0358 @@ -1,12 +1,12 @@ +++++++++++++++++++++++++++ - R:userx@test.ex -44 13121 SMTP error from remote mail server after RCPT TO:: host 127.0.0.1 [127.0.0.1]: 451 Temporary error + R:userx@test.ex: -44 13121 SMTP error from remote mail server after RCPT TO:: host 127.0.0.1 [127.0.0.1]: 451 Temporary error first failed = time last try = time2 next try = time2 + 1 - R:usery@test.ex -44 13121 SMTP error from remote mail server after RCPT TO:: host 127.0.0.1 [127.0.0.1]: 451 Temporary error + R:usery@test.ex: -44 13121 SMTP error from remote mail server after RCPT TO:: host 127.0.0.1 [127.0.0.1]: 451 Temporary error first failed = time last try = time2 next try = time2 + 1 +++++++++++++++++++++++++++ - R:userx@test.ex -44 13121 SMTP error from remote mail server after RCPT TO:: host 127.0.0.1 [127.0.0.1]: 451 Temporary error + R:userx@test.ex: -44 13121 SMTP error from remote mail server after RCPT TO:: host 127.0.0.1 [127.0.0.1]: 451 Temporary error first failed = time last try = time2 next try = time2 + 2 - R:usery@test.ex -44 13121 SMTP error from remote mail server after RCPT TO:: host 127.0.0.1 [127.0.0.1]: 451 Temporary error + R:usery@test.ex: -44 13121 SMTP error from remote mail server after RCPT TO:: host 127.0.0.1 [127.0.0.1]: 451 Temporary error first failed = time last try = time2 next try = time2 + 2 ******** SERVER ******** diff --git a/test/stdout/0474 b/test/stdout/0474 index cd9c9c281..ee42c1e32 100644 --- a/test/stdout/0474 +++ b/test/stdout/0474 @@ -5,7 +5,7 @@ first failed = time last try = time2 next try = time2 + 10 T:127.0.0.1:127.0.0.1:1224:10HmaX-0005vi-00 0 65 SMTP error from remote mail server after MAIL FROM:: host 127.0.0.1 [127.0.0.1]: 850 RUBBISH first failed = time last try = time2 next try = time2 + 10 +++++++++++++++++++++++++++ - R:abcd@xyz -44 12865 SMTP error from remote mail server after RCPT TO:: host 127.0.0.1 [127.0.0.1]: 850 RUBBISH + R:abcd@xyz: -44 12865 SMTP error from remote mail server after RCPT TO:: host 127.0.0.1 [127.0.0.1]: 850 RUBBISH first failed = time last try = time2 next try = time2 + 10 ******** SERVER ******** diff --git a/test/stdout/0497 b/test/stdout/0497 index 6755d429e..3462fd1b3 100644 --- a/test/stdout/0497 +++ b/test/stdout/0497 @@ -2,7 +2,7 @@ T:127.0.0.1:127.0.0.1:1224:10HmaX-0005vi-00 -45 13377 SMTP error from remote mail server after MAIL FROM:: host 127.0.0.1 [127.0.0.1]: 452 temporary error first failed = time last try = time2 next try = time2 + 0 * +++++++++++++++++++++++++++ - R:userx@x.y -44 13377 SMTP error from remote mail server after RCPT TO:: host 127.0.0.1 [127.0.0.1]: 452 temporary error + R:userx@x.y: -44 13377 SMTP error from remote mail server after RCPT TO:: host 127.0.0.1 [127.0.0.1]: 452 temporary error first failed = time last try = time2 next try = time2 + 0 * ******** SERVER ******** -- 2.30.2