From e2016f158a749c1966618e25adfa19387b6bad3b Mon Sep 17 00:00:00 2001 From: Jeremy Harris Date: Sun, 21 Jul 2013 23:30:27 +0100 Subject: [PATCH] Log expansion failures --- src/src/deliver.c | 4 ++- src/src/expand.c | 2 +- src/src/transports/smtp.c | 4 ++- test/confs/5700 | 13 +++++++-- test/log/5700 | 31 +++++++++++--------- test/paniclog/5700 | 2 ++ test/scripts/5700-tpt-post-dlv-action/5700 | 33 +++++++++++++++++++--- test/stderr/5700 | 2 ++ test/stdout/5700 | 30 ++++++++++++++++++-- 9 files changed, 95 insertions(+), 26 deletions(-) create mode 100644 test/paniclog/5700 create mode 100644 test/stderr/5700 diff --git a/src/src/deliver.c b/src/src/deliver.c index a3030b5f0..bc6a69fbf 100644 --- a/src/src/deliver.c +++ b/src/src/deliver.c @@ -860,7 +860,9 @@ if (addr->transport->tpda_delivery_action) router_name = addr->router->name; transport_name = addr->transport->name; - expand_string(addr->transport->tpda_delivery_action); + if (!expand_string(addr->transport->tpda_delivery_action) && *expand_string_message) + log_write(0, LOG_MAIN|LOG_PANIC, "failed to expand tpda_deliver_action in %s: %s\n", + transport_name, expand_string_message); router_name = NULL; transport_name = NULL; } diff --git a/src/src/expand.c b/src/src/expand.c index ec60082e1..ac914707a 100644 --- a/src/src/expand.c +++ b/src/src/expand.c @@ -1908,7 +1908,7 @@ while (i < nsub) DEBUG(D_expand) debug_printf("expanding: acl: %s arg: %s%s\n", sub[0], - acl_narg>0 ? sub[1] : US"", + acl_narg>0 ? acl_arg[0] : US"", acl_narg>1 ? " +more" : ""); ret = acl_eval(acl_where, sub[0], user_msgp, &tmp); diff --git a/src/src/transports/smtp.c b/src/src/transports/smtp.c index d37b2a3dc..4d941c511 100644 --- a/src/src/transports/smtp.c +++ b/src/src/transports/smtp.c @@ -628,7 +628,9 @@ DEBUG(D_transport) router_name = addr->router->name; transport_name = addr->transport->name; -expand_string(action); +if (!expand_string(action) && *expand_string_message) + log_write(0, LOG_MAIN|LOG_PANIC, "failed to expand tpda_defer_action in %s: %s\n", + transport_name, expand_string_message); router_name = transport_name = NULL; } #endif diff --git a/test/confs/5700 b/test/confs/5700 index dec90620a..52b28018a 100644 --- a/test/confs/5700 +++ b/test/confs/5700 @@ -19,7 +19,8 @@ acl_smtp_data = accept begin acl logger: - accept logwrite = \ + accept condition = ${if eq {$acl_arg2}{domain1}} + logwrite = \ $acl_arg1 \ ip <$tpda_delivery_ip> \ port <$tpda_delivery_port> \ @@ -32,11 +33,17 @@ logger: router <$router_name> \ transport <$transport_name> + accept logwrite = $this_expansion_will_fail # ----- Routers ----- begin routers +dump_bounces: + driver = redirect + senders = : + data = :blackhole: + others: driver = manualroute route_list = * 127.0.0.1 byname @@ -54,7 +61,7 @@ smtp: port = PORT_S command_timeout = 1s final_timeout = 1s - tpda_delivery_action = ${acl {logger}{delivery}} - tpda_host_defer_action = ${acl {logger}{deferral}} + tpda_delivery_action = ${acl {logger} {delivery} {$domain} } + tpda_host_defer_action = ${acl {logger} {deferral} {$domain} } # End diff --git a/test/log/5700 b/test/log/5700 index edfb932b0..d11936571 100644 --- a/test/log/5700 +++ b/test/log/5700 @@ -1,19 +1,22 @@ +1999-03-02 09:44:33 10HmaY-0005vi-00 <= CALLER@the.local.host.name U=CALLER P=local S=sss +1999-03-02 09:44:33 Start queue run: pid=pppp -qqf +1999-03-02 09:44:33 10HmaY-0005vi-00 => userx@domain1 R=others T=smtp H=127.0.0.1 [127.0.0.1] C="250 OK" +1999-03-02 09:44:33 10HmaY-0005vi-00 delivery ip <127.0.0.1> port <1224> fqdn <127.0.0.1> local_part domain confirmation <250 OK> errno <0> errstr <> router transport +1999-03-02 09:44:33 10HmaY-0005vi-00 Completed +1999-03-02 09:44:33 End queue run: pid=pppp -qqf 1999-03-02 09:44:33 10HmaX-0005vi-00 <= CALLER@the.local.host.name U=CALLER P=local S=sss 1999-03-02 09:44:33 Start queue run: pid=pppp -qqf -1999-03-02 09:44:33 10HmaX-0005vi-00 => userx@domain1 R=others T=smtp H=127.0.0.1 [127.0.0.1] C="250 OK" -1999-03-02 09:44:33 10HmaX-0005vi-00 delivery ip <127.0.0.1> port <1224> fqdn <127.0.0.1> local_part domain confirmation <250 OK> errno <0> errstr <> router transport +1999-03-02 09:44:33 10HmaX-0005vi-00 => userx@domain2 R=others T=smtp H=127.0.0.1 [127.0.0.1] C="250 OK" +1999-03-02 09:44:33 10HmaX-0005vi-00 failed to expand tpda_deliver_action in smtp: error from acl "logger" + 1999-03-02 09:44:33 10HmaX-0005vi-00 Completed 1999-03-02 09:44:33 End queue run: pid=pppp -qqf -1999-03-02 09:44:33 10HmaY-0005vi-00 <= CALLER@the.local.host.name U=CALLER P=local S=sss -1999-03-02 09:44:33 10HmaY-0005vi-00 SMTP timeout while connected to 127.0.0.1 [127.0.0.1] after EHLO the.local.host.name: Connection timed out -1999-03-02 09:44:33 10HmaY-0005vi-00 deferral ip <127.0.0.1> port <1224> fqdn <127.0.0.1> local_part domain confirmation <> errno <110> errstr router transport -1999-03-02 09:44:33 10HmaY-0005vi-00 == userx@domain1.com R=others T=smtp defer (dd): Connection timed out: SMTP timeout while connected to 127.0.0.1 [127.0.0.1] after EHLO the.local.host.name -1999-03-02 09:44:33 10HmaY-0005vi-00 ** userx@domain1.com: retry timeout exceeded -1999-03-02 09:44:33 10HmaZ-0005vi-00 <= <> R=10HmaY-0005vi-00 U=EXIMUSER P=local S=sss -1999-03-02 09:44:33 10HmaZ-0005vi-00 SMTP timeout while connected to 127.0.0.1 [127.0.0.1] after initial connection: Connection timed out -1999-03-02 09:44:33 10HmaZ-0005vi-00 deferral ip <127.0.0.1> port <1224> fqdn <127.0.0.1> local_part domain confirmation <> errno <110> errstr router transport -1999-03-02 09:44:33 10HmaZ-0005vi-00 == CALLER@the.local.host.name R=others T=smtp defer (dd): Connection timed out: SMTP timeout while connected to 127.0.0.1 [127.0.0.1] after initial connection -1999-03-02 09:44:33 10HmaZ-0005vi-00 ** CALLER@the.local.host.name: retry timeout exceeded -1999-03-02 09:44:33 10HmaZ-0005vi-00 CALLER@the.local.host.name: error ignored +1999-03-02 09:44:33 10HmaZ-0005vi-00 <= CALLER@the.local.host.name U=CALLER P=local S=sss +1999-03-02 09:44:33 10HmaZ-0005vi-00 SMTP timeout while connected to 127.0.0.1 [127.0.0.1] after EHLO the.local.host.name: Connection timed out +1999-03-02 09:44:33 10HmaZ-0005vi-00 deferral ip <127.0.0.1> port <1224> fqdn <127.0.0.1> local_part domain confirmation <> errno <110> errstr router transport +1999-03-02 09:44:33 10HmaZ-0005vi-00 == userx@domain1 R=others T=smtp defer (dd): Connection timed out: SMTP timeout while connected to 127.0.0.1 [127.0.0.1] after EHLO the.local.host.name +1999-03-02 09:44:33 10HmaZ-0005vi-00 ** userx@domain1: retry timeout exceeded +1999-03-02 09:44:33 10HmbA-0005vi-00 <= <> R=10HmaZ-0005vi-00 U=EXIMUSER P=local S=sss +1999-03-02 09:44:33 10HmbA-0005vi-00 => :blackhole: R=dump_bounces +1999-03-02 09:44:33 10HmbA-0005vi-00 Completed 1999-03-02 09:44:33 10HmaZ-0005vi-00 Completed -1999-03-02 09:44:33 10HmaY-0005vi-00 Completed diff --git a/test/paniclog/5700 b/test/paniclog/5700 new file mode 100644 index 000000000..4f28d19c4 --- /dev/null +++ b/test/paniclog/5700 @@ -0,0 +1,2 @@ +1999-03-02 09:44:33 10HmaX-0005vi-00 failed to expand tpda_deliver_action in smtp: error from acl "logger" + diff --git a/test/scripts/5700-tpt-post-dlv-action/5700 b/test/scripts/5700-tpt-post-dlv-action/5700 index dccf02ca5..b85231b6e 100644 --- a/test/scripts/5700-tpt-post-dlv-action/5700 +++ b/test/scripts/5700-tpt-post-dlv-action/5700 @@ -1,5 +1,5 @@ # Arbtirary expansion after transport -# (EXPERIMENTAL_BDL - database logging) +# (EXPERIMENTAL_TPDA) # need_ipv4 # @@ -27,13 +27,38 @@ exim -qqf # # # +# +exim -odq userx@domain2 +A deliverable message which will hit a coding error in the config +**** +server PORT_S +220 ESMTP +EHLO +250-OK +250 HELP +MAIL +250 OK +RCPT +250 OK +DATA +354 More... +. +250 OK +QUIT +220 OK +**** +exim -qqf +**** +# +# +# server PORT_S 220 ESMTP EHLO *sleep 4 **** -exim -odi userx@domain1.com -A message which will hit a timeout +exim -odi userx@domain1 +A message which will hit a timeout at the destination server . **** - +# diff --git a/test/stderr/5700 b/test/stderr/5700 new file mode 100644 index 000000000..4f28d19c4 --- /dev/null +++ b/test/stderr/5700 @@ -0,0 +1,2 @@ +1999-03-02 09:44:33 10HmaX-0005vi-00 failed to expand tpda_deliver_action in smtp: error from acl "logger" + diff --git a/test/stdout/5700 b/test/stdout/5700 index 32c3c8948..a45b44c87 100644 --- a/test/stdout/5700 +++ b/test/stdout/5700 @@ -14,9 +14,9 @@ DATA 354 More... Received: from CALLER by the.local.host.name with local (Exim x.yz) (envelope-from ) - id 10HmaX-0005vi-00 + id 10HmaY-0005vi-00 for userx@domain1; Tue, 2 Mar 1999 09:44:33 +0000 -Message-Id: +Message-Id: From: CALLER_NAME Date: Tue, 2 Mar 1999 09:44:33 +0000 @@ -30,5 +30,31 @@ Listening on port 1224 ... Connection request from [127.0.0.1] 220 ESMTP EHLO the.local.host.name +250-OK +250 HELP +MAIL FROM: +250 OK +RCPT TO: +250 OK +DATA +354 More... +Received: from CALLER by the.local.host.name with local (Exim x.yz) + (envelope-from ) + id 10HmaX-0005vi-00 + for userx@domain2; Tue, 2 Mar 1999 09:44:33 +0000 +Message-Id: +From: CALLER_NAME +Date: Tue, 2 Mar 1999 09:44:33 +0000 + +A deliverable message which will hit a coding error in the config +. +250 OK +QUIT +220 OK +End of script +Listening on port 1224 ... +Connection request from [127.0.0.1] +220 ESMTP +EHLO the.local.host.name *sleep 4 End of script -- 2.30.2