summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Kurz <m.kurz@irregular.at>2018-09-28 19:04:55 +0100
committerJeremy Harris <jgh146exb@wizmail.org>2018-09-28 19:07:00 +0100
commitffbc20ed9c9ed09a68ff0a608f623c3c83d521a8 (patch)
treea7dfcd265ab8fe6c6b5c3a43d48aa1b1122ecfc3
parenteb58ddf5828a161dec94f131ff2c5c926c868354 (diff)
Events: Fire msg:fail:delivery event even when error is being ignored. Bug 2314
-rw-r--r--doc/doc-txt/ChangeLog5
-rw-r--r--src/src/deliver.c18
-rw-r--r--test/aux-fixed/5702.filter3
-rw-r--r--test/aux-fixed/5703.filter3
-rw-r--r--test/aux-fixed/event-logger-acl74
-rw-r--r--test/confs/570075
-rw-r--r--test/confs/570140
-rw-r--r--test/confs/570243
-rw-r--r--test/confs/570343
-rw-r--r--test/log/57006
-rw-r--r--test/log/570120
-rw-r--r--test/log/570220
-rw-r--r--test/log/570332
-rw-r--r--test/scripts/5700-events/57002
-rw-r--r--test/scripts/5700-events/570119
-rw-r--r--test/scripts/5700-events/570226
-rw-r--r--test/scripts/5700-events/570320
-rw-r--r--test/stdout/57004
-rw-r--r--test/stdout/570231
-rw-r--r--test/stdout/570317
20 files changed, 419 insertions, 82 deletions
diff --git a/doc/doc-txt/ChangeLog b/doc/doc-txt/ChangeLog
index 8d64dd4b0..0f50318f7 100644
--- a/doc/doc-txt/ChangeLog
+++ b/doc/doc-txt/ChangeLog
@@ -129,6 +129,11 @@ JH/27 Fix logging of proxy address. Previously, a pointless "PRX=[]:0" would be
included in delivery lines for non-proxied connections, when compiled with
SUPPORT_SOCKS and running with proxy logging enabled.
+JH/28 Bug 2314: Fire msg:fail:delivery event even when error is being ignored.
+ Developement by Matthias Kurz, tweaked by JH. While in that bit of code,
+ move the existing event to fire before the normal logging of message
+ failure so that custom logging is bracketed by normal logging.
+
Exim version 4.91
-----------------
diff --git a/src/src/deliver.c b/src/src/deliver.c
index 9ab740288..bba343c55 100644
--- a/src/src/deliver.c
+++ b/src/src/deliver.c
@@ -890,6 +890,7 @@ deliver_host = addr->host_used ? addr->host_used->name : NULL;
addr->host_used
|| Ustrcmp(addr->transport->driver_name, "smtp") == 0
|| Ustrcmp(addr->transport->driver_name, "lmtp") == 0
+ || Ustrcmp(addr->transport->driver_name, "autoreply") == 0
? addr->message : NULL);
deliver_host_port = save_port;
@@ -1383,6 +1384,16 @@ failure_log(address_item * addr, uschar * driver_kind, uschar * now)
void * reset_point;
gstring * g = reset_point = string_get(256);
+#ifndef DISABLE_EVENT
+/* Message failures for which we will send a DSN get their event raised
+later so avoid doing it here. */
+
+if ( !addr->prop.ignore_error
+ && !(addr->dsn_flags & (rf_dsnflags & ~rf_notify_failure))
+ )
+ msg_event_raise(US"msg:fail:delivery", addr);
+#endif
+
/* Build up the log line for the message and main logs */
/* Create the address string for logging. Must not do this earlier, because
@@ -1431,10 +1442,6 @@ else
log_write(0, LOG_MAIN, "** %s", g->s);
-#ifndef DISABLE_EVENT
-msg_event_raise(US"msg:fail:delivery", addr);
-#endif
-
store_reset(reset_point);
return;
}
@@ -7445,6 +7452,9 @@ while (addr_failed)
addr_failed = addr->next;
if (addr->return_filename) Uunlink(addr->return_filename);
+#ifndef DISABLE_EVENT
+ msg_event_raise(US"msg:fail:delivery", addr);
+#endif
log_write(0, LOG_MAIN, "%s%s%s%s: error ignored",
addr->address,
!addr->parent ? US"" : US" <",
diff --git a/test/aux-fixed/5702.filter b/test/aux-fixed/5702.filter
new file mode 100644
index 000000000..283d823da
--- /dev/null
+++ b/test/aux-fixed/5702.filter
@@ -0,0 +1,3 @@
+# Exim filter
+
+unseen noerror deliver usery@domain1
diff --git a/test/aux-fixed/5703.filter b/test/aux-fixed/5703.filter
new file mode 100644
index 000000000..3083624a8
--- /dev/null
+++ b/test/aux-fixed/5703.filter
@@ -0,0 +1,3 @@
+# Exim filter
+
+deliver usery@domain1
diff --git a/test/aux-fixed/event-logger-acl b/test/aux-fixed/event-logger-acl
new file mode 100644
index 000000000..62cba32d6
--- /dev/null
+++ b/test/aux-fixed/event-logger-acl
@@ -0,0 +1,74 @@
+ev_tcp:
+ accept condition = ${if eq {$event_name}{tcp:connect}}
+ logwrite = . [$host_address]:$host_port
+ accept condition = ${if eq {$event_name}{tcp:close}}
+ logwrite = . [$sending_ip_address] -> \
+ [$host_address]:$host_port
+ accept
+
+ev_smtp:
+ accept
+ logwrite = . [$sending_ip_address] -> \
+ [$host_address]:$host_port
+ logwrite = . banner <$event_data>
+
+ev_msg_fail:
+ accept condition = ${if eq {$event_name}{msg:fail:delivery}}
+ logwrite = . \
+ refused by fdqn <$host> \
+ local_part <$local_part> \
+ domain <$domain> \
+ errstr <$event_data> \
+
+ accept logwrite = . \
+ local_part <$local_part> \
+ domain <$domain> \
+ reason <$event_data>
+
+ev_msg_log:
+ accept logwrite = . \
+ $acl_arg1 \
+ ip <$host_address> \
+ port <$host_port> \
+ fqdn <$host> \
+ local_part <$local_part> \
+ domain <$domain> \
+ $acl_arg2 \
+ router <$router_name> \
+ transport <$transport_name>
+
+ev_msg:
+ accept condition = ${if eq {fail} {${listextract{2}{$event_name}}}}
+ acl = ev_msg_fail
+
+ accept condition = ${if eq {$event_name}{msg:complete}}
+ logwrite = . finished: $message_exim_id
+
+ accept condition = ${if eq {$domain}{expansionfail}}
+ logwrite = $this_expansion_will_fail
+
+ accept condition = ${if eq {$event_name}{msg:delivery}}
+ acl = ev_msg_log delivery "confirmation <$event_data>"
+
+ accept condition = ${if eq {$event_name}{msg:host:defer}}
+ acl = ev_msg_log "host deferral" \
+ "errno <$event_defer_errno> errstr <$event_data>"
+
+ accept condition = ${if eq {$event_name}{msg:rcpt:defer}}
+ set acl_m_ev_lkup = ${eval:$event_defer_errno & 0xff}
+ set acl_m_ev_lkup = ${if = {$acl_m_ev_lkup}{65} {A} \
+ { ${if = {$acl_m_ev_lkup}{77} {MX} \
+ {$acl_m_ev_lkup}}}}
+ set acl_m_ev_code = 4${eval:$event_defer_errno >>8}
+ acl = ev_msg_log "rcpt deferral" \
+ "err <$event_defer_errno>:<$acl_m_ev_lkup:$acl_m_ev_code> \
+ errstr <$event_data>"
+
+logger:
+ warn logwrite = event $event_name
+ accept condition = ${if eq {tcp} {${listextract{1}{$event_name}}}}
+ acl = ev_tcp
+ accept condition = ${if eq {smtp} {${listextract{1}{$event_name}}}}
+ acl = ev_smtp
+ accept condition = ${if eq {msg} {${listextract{1}{$event_name}}}}
+ acl = ev_msg
diff --git a/test/confs/5700 b/test/confs/5700
index e1ce38eae..774e76605 100644
--- a/test/confs/5700
+++ b/test/confs/5700
@@ -15,80 +15,7 @@ event_action = ${acl {logger}}
begin acl
-ev_tcp:
- accept condition = ${if eq {$event_name}{tcp:connect}}
- logwrite = . [$host_address]:$host_port
- accept condition = ${if eq {$event_name}{tcp:close}}
- logwrite = . [$sending_ip_address] -> \
- [$host_address]:$host_port
- accept
-
-ev_smtp:
- accept
- logwrite = . [$sending_ip_address] -> \
- [$host_address]:$host_port
- logwrite = . banner <$event_data>
-
-ev_msg_fail:
- accept condition = ${if eq {$event_name}{msg:fail:delivery}}
- logwrite = . \
- refused by fdqn <$host> \
- local_part <$local_part> \
- domain <$domain> \
- errstr <$event_data> \
-
- accept logwrite = . \
- local_part <$local_part> \
- domain <$domain> \
- reason <$event_data>
-
-ev_msg_log:
- accept logwrite = . \
- $acl_arg1 \
- ip <$host_address> \
- port <$host_port> \
- fqdn <$host> \
- local_part <$local_part> \
- domain <$domain> \
- $acl_arg2 \
- router <$router_name> \
- transport <$transport_name>
-
-ev_msg:
- accept condition = ${if eq {fail} {${listextract{2}{$event_name}}}}
- acl = ev_msg_fail
-
- accept condition = ${if eq {$event_name}{msg:complete}}
- logwrite = . finished: $message_exim_id
-
- accept condition = ${if !eq {$domain}{domain1}}
- logwrite = $this_expansion_will_fail
-
- accept condition = ${if eq {$event_name}{msg:delivery}}
- acl = ev_msg_log delivery "confirmation <$event_data>"
-
- accept condition = ${if eq {$event_name}{msg:host:defer}}
- acl = ev_msg_log "host deferral" \
- "errno <$event_defer_errno> errstr <$event_data>"
-
- accept condition = ${if eq {$event_name}{msg:rcpt:defer}}
- set acl_m_ev_lkup = ${eval:$event_defer_errno & 0xff}
- set acl_m_ev_lkup = ${if = {$acl_m_ev_lkup}{65} {A} \
- { ${if = {$acl_m_ev_lkup}{77} {MX} \
- {$acl_m_ev_lkup}}}}
- set acl_m_ev_code = 4${eval:$event_defer_errno >>8}
- acl = ev_msg_log "rcpt deferral" \
- "err <$event_defer_errno>:<$acl_m_ev_lkup:$acl_m_ev_code> \
- errstr <$event_data>"
-
-logger:
- warn logwrite = event $event_name
- accept condition = ${if eq {tcp} {${listextract{1}{$event_name}}}}
- acl = ev_tcp
- accept condition = ${if eq {smtp} {${listextract{1}{$event_name}}}}
- acl = ev_smtp
- accept condition = ${if eq {msg} {${listextract{1}{$event_name}}}}
- acl = ev_msg
+.include DIR/aux-fixed/event-logger-acl
# ----- Routers -----
diff --git a/test/confs/5701 b/test/confs/5701
new file mode 100644
index 000000000..ff050ffb8
--- /dev/null
+++ b/test/confs/5701
@@ -0,0 +1,40 @@
+# Exim test configuration 5701
+
+.include DIR/aux-var/std_conf_prefix
+
+# ----- Main settings -----
+
+event_action = ${acl {logger}}
+
+# ----- ACL -----
+
+begin acl
+
+.include DIR/aux-fixed/event-logger-acl
+
+# ----- Routers -----
+
+begin routers
+
+router_filter:
+ driver = redirect
+ reply_transport = reply
+ local_parts = userx-filter
+ allow_filter
+ data = #Exim filter\n seen mail text "This is an autoreply."
+ user = EXIMUSER
+
+others:
+ driver = redirect
+ data = :blackhole:
+
+# ----- Transports -----
+
+begin transports
+
+reply:
+ driver = autoreply
+ to = $reply_address
+ event_action = ${acl {logger}}
+
+# End
diff --git a/test/confs/5702 b/test/confs/5702
new file mode 100644
index 000000000..dfc063fa7
--- /dev/null
+++ b/test/confs/5702
@@ -0,0 +1,43 @@
+# Exim test configuration 5702
+
+.include DIR/aux-var/std_conf_prefix
+
+# ----- Main settings -----
+
+event_action = ${acl {logger}}
+
+# ----- ACL -----
+
+begin acl
+
+.include DIR/aux-fixed/event-logger-acl
+
+# ----- Routers -----
+
+begin routers
+
+route_userx:
+ driver = redirect
+ local_parts = userx
+ allow_filter
+ file = DIR/aux-fixed/TESTNUM.filter
+ user = EXIMUSER
+ no_more
+
+route_smtp:
+ driver = manualroute
+ route_list = * 127.0.0.1 byname
+ self = send
+ transport = smtp
+ no_more
+
+# ----- Transports -----
+
+begin transports
+
+smtp:
+ driver = smtp
+ port = PORT_S
+ event_action = ${acl {logger}}
+
+# End
diff --git a/test/confs/5703 b/test/confs/5703
new file mode 100644
index 000000000..267f5fc8d
--- /dev/null
+++ b/test/confs/5703
@@ -0,0 +1,43 @@
+# Exim test configuration 5703
+
+.include DIR/aux-var/std_conf_prefix
+
+# ----- Main settings -----
+
+event_action = ${acl {logger}}
+
+# ----- ACL -----
+
+begin acl
+
+.include DIR/aux-fixed/event-logger-acl
+
+# ----- Routers -----
+
+begin routers
+
+route_userx:
+ driver = redirect
+ local_parts = userx
+ allow_filter
+ file = DIR/aux-fixed/TESTNUM.filter
+ user = EXIMUSER
+ no_more
+
+route_smtp:
+ driver = manualroute
+ route_list = * 127.0.0.1 byname
+ self = send
+ transport = smtp
+ no_more
+
+# ----- Transports -----
+
+begin transports
+
+smtp:
+ driver = smtp
+ port = PORT_S
+ event_action = ${acl {logger}}
+
+# End
diff --git a/test/log/5700 b/test/log/5700
index eda35bca7..6edadc9ce 100644
--- a/test/log/5700
+++ b/test/log/5700
@@ -23,7 +23,7 @@
1999-03-02 09:44:33 10HmaX-0005vi-00 . banner <220 ESMTP>
1999-03-02 09:44:33 10HmaX-0005vi-00 event tcp:close
1999-03-02 09:44:33 10HmaX-0005vi-00 . [127.0.0.1] -> [127.0.0.1]:1224
-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 => userx@expansionfail 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 event msg:delivery
1999-03-02 09:44:33 10HmaX-0005vi-00 failed to expand event_action msg:delivery in smtp: error from acl "logger"
@@ -44,6 +44,8 @@
1999-03-02 09:44:33 10HmaZ-0005vi-00 . host deferral ip <127.0.0.1> port <1224> fqdn <127.0.0.1> local_part <userx> domain <domain1> errno <EEE> errstr <SMTP timeout after EHLO the.local.host.name: Connection timed out> router <others> transport <smtp>
1999-03-02 09:44:33 10HmaZ-0005vi-00 == userx@domain1 R=others T=smtp defer (dd): Connection timed out H=127.0.0.1 [127.0.0.1]: SMTP timeout 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 10HmaZ-0005vi-00 event msg:fail:delivery
+1999-03-02 09:44:33 10HmaZ-0005vi-00 . refused by fdqn <127.0.0.1> local_part <userx> domain <domain1> errstr <SMTP timeout after EHLO the.local.host.name: retry timeout exceeded>
1999-03-02 09:44:33 10HmaZ-0005vi-00 userx@domain1: error ignored
1999-03-02 09:44:33 10HmaZ-0005vi-00 Completed
1999-03-02 09:44:33 10HmaZ-0005vi-00 event msg:complete
@@ -62,6 +64,8 @@
1999-03-02 09:44:33 10HmbA-0005vi-00 . [127.0.0.1] -> [127.0.0.1]:1224
1999-03-02 09:44:33 10HmbA-0005vi-00 == userx@domain1 R=others T=smtp defer (-44) H=127.0.0.1 [127.0.0.1]: SMTP error from remote mail server after RCPT TO:<userx@domain1>: 450 NOT RIGHT NOW
1999-03-02 09:44:33 10HmbA-0005vi-00 ** userx@domain1: retry timeout exceeded
+1999-03-02 09:44:33 10HmbA-0005vi-00 event msg:fail:delivery
+1999-03-02 09:44:33 10HmbA-0005vi-00 . refused by fdqn <127.0.0.1> local_part <userx> domain <domain1> errstr <SMTP error from remote mail server after RCPT TO:<userx@domain1>: 450 NOT RIGHT NOW: retry timeout exceeded>
1999-03-02 09:44:33 10HmbA-0005vi-00 userx@domain1: error ignored
1999-03-02 09:44:33 10HmbA-0005vi-00 Completed
1999-03-02 09:44:33 10HmbA-0005vi-00 event msg:complete
diff --git a/test/log/5701 b/test/log/5701
new file mode 100644
index 000000000..7dfde51bd
--- /dev/null
+++ b/test/log/5701
@@ -0,0 +1,20 @@
+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 10HmaX-0005vi-00 ** >**bad-reply** <userx-filter@domain1> R=router_filter T=reply: filter autoreply generated syntactically invalid recipient
+1999-03-02 09:44:33 10HmaX-0005vi-00 event msg:fail:delivery
+1999-03-02 09:44:33 10HmaX-0005vi-00 . refused by fdqn <> local_part <>**bad-reply**> domain <> errstr <filter autoreply generated syntactically invalid recipient>
+1999-03-02 09:44:33 10HmaX-0005vi-00 >**bad-reply** <userx-filter@domain1>: error ignored
+1999-03-02 09:44:33 10HmaX-0005vi-00 Completed
+1999-03-02 09:44:33 10HmaX-0005vi-00 event msg:complete
+1999-03-02 09:44:33 10HmaX-0005vi-00 . finished: 10HmaX-0005vi-00
+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 10HmaZ-0005vi-00 <= <> R=10HmaY-0005vi-00 U=EXIMUSER P=local S=sss
+1999-03-02 09:44:33 10HmaZ-0005vi-00 => :blackhole: <userx@domain1> R=others
+1999-03-02 09:44:33 10HmaZ-0005vi-00 Completed
+1999-03-02 09:44:33 10HmaZ-0005vi-00 event msg:complete
+1999-03-02 09:44:33 10HmaZ-0005vi-00 . finished: 10HmaZ-0005vi-00
+1999-03-02 09:44:33 10HmaY-0005vi-00 => >userx@domain1 <userx-filter@domain1> R=router_filter T=reply
+1999-03-02 09:44:33 10HmaY-0005vi-00 event msg:delivery
+1999-03-02 09:44:33 10HmaY-0005vi-00 . delivery ip <> port <0> fqdn <> local_part <>userx@domain1> domain <domain1> confirmation <> router <router_filter> transport <reply>
+1999-03-02 09:44:33 10HmaY-0005vi-00 Completed
+1999-03-02 09:44:33 10HmaY-0005vi-00 event msg:complete
+1999-03-02 09:44:33 10HmaY-0005vi-00 . finished: 10HmaY-0005vi-00
diff --git a/test/log/5702 b/test/log/5702
new file mode 100644
index 000000000..66e2b9003
--- /dev/null
+++ b/test/log/5702
@@ -0,0 +1,20 @@
+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 event tcp:connect
+1999-03-02 09:44:33 10HmaX-0005vi-00 . [127.0.0.1]:1111
+1999-03-02 09:44:33 10HmaX-0005vi-00 event smtp:connect
+1999-03-02 09:44:33 10HmaX-0005vi-00 . [127.0.0.1] -> [127.0.0.1]:1224
+1999-03-02 09:44:33 10HmaX-0005vi-00 . banner <220 ESMTP>
+1999-03-02 09:44:33 10HmaX-0005vi-00 event tcp:close
+1999-03-02 09:44:33 10HmaX-0005vi-00 . [127.0.0.1] -> [127.0.0.1]:1224
+1999-03-02 09:44:33 10HmaX-0005vi-00 => userx@domain1 R=route_smtp T=smtp H=127.0.0.1 [127.0.0.1] C="250 OK"
+1999-03-02 09:44:33 10HmaX-0005vi-00 event msg:delivery
+1999-03-02 09:44:33 10HmaX-0005vi-00 . delivery ip <127.0.0.1> port <1224> fqdn <127.0.0.1> local_part <userx> domain <domain1> confirmation <250 OK> router <route_smtp> transport <smtp>
+1999-03-02 09:44:33 10HmaX-0005vi-00 ** usery@domain1 <userx@domain1> R=route_smtp T=smtp H=127.0.0.1 [127.0.0.1]: SMTP error from remote mail server after RCPT TO:<usery@domain1>: 550 Not that one
+1999-03-02 09:44:33 10HmaX-0005vi-00 event msg:fail:delivery
+1999-03-02 09:44:33 10HmaX-0005vi-00 . refused by fdqn <127.0.0.1> local_part <usery> domain <domain1> errstr <SMTP error from remote mail server after RCPT TO:<usery@domain1>: 550 Not that one>
+1999-03-02 09:44:33 10HmaX-0005vi-00 usery@domain1 <userx@domain1>: error ignored
+1999-03-02 09:44:33 10HmaX-0005vi-00 Completed
+1999-03-02 09:44:33 10HmaX-0005vi-00 event msg:complete
+1999-03-02 09:44:33 10HmaX-0005vi-00 . finished: 10HmaX-0005vi-00
+1999-03-02 09:44:33 End queue run: pid=pppp -qqf
diff --git a/test/log/5703 b/test/log/5703
new file mode 100644
index 000000000..ab707c051
--- /dev/null
+++ b/test/log/5703
@@ -0,0 +1,32 @@
+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 event tcp:connect
+1999-03-02 09:44:33 10HmaX-0005vi-00 . [127.0.0.1]:1111
+1999-03-02 09:44:33 10HmaX-0005vi-00 event smtp:connect
+1999-03-02 09:44:33 10HmaX-0005vi-00 . [127.0.0.1] -> [127.0.0.1]:1224
+1999-03-02 09:44:33 10HmaX-0005vi-00 . banner <220 ESMTP>
+1999-03-02 09:44:33 10HmaX-0005vi-00 event tcp:close
+1999-03-02 09:44:33 10HmaX-0005vi-00 . [127.0.0.1] -> [127.0.0.1]:1224
+1999-03-02 09:44:33 10HmaX-0005vi-00 event msg:fail:delivery
+1999-03-02 09:44:33 10HmaX-0005vi-00 . refused by fdqn <127.0.0.1> local_part <usery> domain <domain1> errstr <SMTP error from remote mail server after RCPT TO:<usery@domain1>: 550 Not that one>
+1999-03-02 09:44:33 10HmaX-0005vi-00 ** usery@domain1 <userx@domain1> R=route_smtp T=smtp H=127.0.0.1 [127.0.0.1]: SMTP error from remote mail server after RCPT TO:<usery@domain1>: 550 Not that one
+1999-03-02 09:44:33 10HmaY-0005vi-00 <= <> R=10HmaX-0005vi-00 U=EXIMUSER P=local S=sss
+1999-03-02 09:44:33 10HmaY-0005vi-00 event tcp:connect
+1999-03-02 09:44:33 10HmaY-0005vi-00 . [127.0.0.1]:1111
+1999-03-02 09:44:33 10HmaY-0005vi-00 event tcp:close
+1999-03-02 09:44:33 10HmaY-0005vi-00 . [127.0.0.1] -> [127.0.0.1]:1224
+1999-03-02 09:44:33 10HmaY-0005vi-00 H=127.0.0.1 [127.0.0.1]: Remote host closed connection in response to initial connection
+1999-03-02 09:44:33 10HmaY-0005vi-00 event msg:host:defer
+1999-03-02 09:44:33 10HmaY-0005vi-00 . host deferral ip <127.0.0.1> port <1224> fqdn <127.0.0.1> local_part <CALLER> domain <the.local.host.name> errno <-18> errstr <Remote host closed connection in response to initial connection> router <route_smtp> transport <smtp>
+1999-03-02 09:44:33 10HmaY-0005vi-00 == CALLER@the.local.host.name R=route_smtp T=smtp defer (-18) H=127.0.0.1 [127.0.0.1]: Remote host closed connection in response to initial connection
+1999-03-02 09:44:33 10HmaY-0005vi-00 ** CALLER@the.local.host.name: retry timeout exceeded
+1999-03-02 09:44:33 10HmaY-0005vi-00 event msg:fail:delivery
+1999-03-02 09:44:33 10HmaY-0005vi-00 . refused by fdqn <127.0.0.1> local_part <CALLER> domain <the.local.host.name> errstr <Remote host closed connection in response to initial connection: retry timeout exceeded>
+1999-03-02 09:44:33 10HmaY-0005vi-00 CALLER@the.local.host.name: error ignored
+1999-03-02 09:44:33 10HmaY-0005vi-00 Completed
+1999-03-02 09:44:33 10HmaY-0005vi-00 event msg:complete
+1999-03-02 09:44:33 10HmaY-0005vi-00 . finished: 10HmaY-0005vi-00
+1999-03-02 09:44:33 10HmaX-0005vi-00 Completed
+1999-03-02 09:44:33 10HmaX-0005vi-00 event msg:complete
+1999-03-02 09:44:33 10HmaX-0005vi-00 . finished: 10HmaX-0005vi-00
+1999-03-02 09:44:33 End queue run: pid=pppp -qqf
diff --git a/test/scripts/5700-events/5700 b/test/scripts/5700-events/5700
index 42735dbc7..89b0c5cd5 100644
--- a/test/scripts/5700-events/5700
+++ b/test/scripts/5700-events/5700
@@ -29,7 +29,7 @@ exim -qqf
#
#
#
-exim -odq userx@domain2
+exim -odq userx@expansionfail
A deliverable message which will hit a coding error in the config
****
server PORT_S
diff --git a/test/scripts/5700-events/5701 b/test/scripts/5700-events/5701
new file mode 100644
index 000000000..50e1c27c3
--- /dev/null
+++ b/test/scripts/5700-events/5701
@@ -0,0 +1,19 @@
+# Events for syntactically invalid generated recipient on autoreply
+#
+exim -odi userx-filter@domain1
+Subject: Bad from
+From: "something" x@y
+
+This is a test with a syntactically bad From: line and we process it
+with a filter and fire events.
+****
+#
+#
+#
+#
+exim -odi userx-filter@domain1
+Subject: Good from
+From: "User X" <userx@domain1>
+
+This is a test we process with a filter and fire events.
+****
diff --git a/test/scripts/5700-events/5702 b/test/scripts/5700-events/5702
new file mode 100644
index 000000000..b970ec090
--- /dev/null
+++ b/test/scripts/5700-events/5702
@@ -0,0 +1,26 @@
+# Raise msg:fail:delivery when an error, originated by a filter, gets ignored.
+#
+exim -odq userx@domain1
+Also try to deliver this message to usery via a filter deliver command.
+However that fails. But because of the noerror cmd the error just gets ignored.
+****
+server PORT_S
+220 ESMTP
+EHLO
+250-OK
+250 HELP
+MAIL
+250 OK
+RCPT
+250 OK
+RCPT
+550 Not that one
+DATA
+354 More...
+.
+250 OK
+QUIT
+220 OK
+****
+exim -qqf
+****
diff --git a/test/scripts/5700-events/5703 b/test/scripts/5700-events/5703
new file mode 100644
index 000000000..54fd48544
--- /dev/null
+++ b/test/scripts/5700-events/5703
@@ -0,0 +1,20 @@
+# Raise msg:fail:delivery when an error of a failed bounce gets ignored.
+#
+exim -odq userx@domain1
+Try to deliver this message to usery via a filter deliver "redirect".
+However that fails. Later the bounce also fails.
+****
+server PORT_S 2
+220 ESMTP
+EHLO
+250-OK
+250 HELP
+MAIL
+250 OK
+RCPT
+550 Not that one
+QUIT
+220 OK
+****
+exim -qqf
+****
diff --git a/test/stdout/5700 b/test/stdout/5700
index 066f6ceec..98ba767c1 100644
--- a/test/stdout/5700
+++ b/test/stdout/5700
@@ -37,14 +37,14 @@ EHLO the.local.host.name
250 HELP
MAIL FROM:<>
250 OK
-RCPT TO:<userx@domain2>
+RCPT TO:<userx@expansionfail>
250 OK
DATA
354 More...
Received: from CALLER by the.local.host.name with local (Exim x.yz)
(envelope-from <CALLER@the.local.host.name>)
id 10HmaX-0005vi-00
- for userx@domain2; Tue, 2 Mar 1999 09:44:33 +0000
+ for userx@expansionfail; Tue, 2 Mar 1999 09:44:33 +0000
Message-Id: <E10HmaX-0005vi-00@the.local.host.name>
From: CALLER_NAME <CALLER@the.local.host.name>
Date: Tue, 2 Mar 1999 09:44:33 +0000
diff --git a/test/stdout/5702 b/test/stdout/5702
new file mode 100644
index 000000000..de07377f9
--- /dev/null
+++ b/test/stdout/5702
@@ -0,0 +1,31 @@
+
+******** SERVER ********
+Listening on port 1224 ...
+Connection request from [127.0.0.1]
+220 ESMTP
+EHLO the.local.host.name
+250-OK
+250 HELP
+MAIL FROM:<CALLER@the.local.host.name>
+250 OK
+RCPT TO:<userx@domain1>
+250 OK
+RCPT TO:<usery@domain1>
+550 Not that one
+DATA
+354 More...
+Received: from CALLER by the.local.host.name with local (Exim x.yz)
+ (envelope-from <CALLER@the.local.host.name>)
+ id 10HmaX-0005vi-00
+ for userx@domain1; Tue, 2 Mar 1999 09:44:33 +0000
+Message-Id: <E10HmaX-0005vi-00@the.local.host.name>
+From: CALLER_NAME <CALLER@the.local.host.name>
+Date: Tue, 2 Mar 1999 09:44:33 +0000
+
+Also try to deliver this message to usery via a filter deliver command.
+However that fails. But because of the noerror cmd the error just gets ignored.
+.
+250 OK
+QUIT
+220 OK
+End of script
diff --git a/test/stdout/5703 b/test/stdout/5703
new file mode 100644
index 000000000..c171ca3b5
--- /dev/null
+++ b/test/stdout/5703
@@ -0,0 +1,17 @@
+
+******** SERVER ********
+Listening on port 1224 ...
+Connection request from [127.0.0.1]
+220 ESMTP
+EHLO the.local.host.name
+250-OK
+250 HELP
+MAIL FROM:<CALLER@the.local.host.name>
+250 OK
+RCPT TO:<usery@domain1>
+550 Not that one
+QUIT
+220 OK
+Listening on port 1224 ...
+Connection request from [127.0.0.1]
+End of script