Events: Fire msg:fail:delivery event even when error is being ignored. Bug 2314
authorMatthias Kurz <m.kurz@irregular.at>
Fri, 28 Sep 2018 18:04:55 +0000 (19:04 +0100)
committerJeremy Harris <jgh146exb@wizmail.org>
Fri, 28 Sep 2018 18:07:00 +0000 (19:07 +0100)
20 files changed:
doc/doc-txt/ChangeLog
src/src/deliver.c
test/aux-fixed/5702.filter [new file with mode: 0644]
test/aux-fixed/5703.filter [new file with mode: 0644]
test/aux-fixed/event-logger-acl [new file with mode: 0644]
test/confs/5700
test/confs/5701 [new file with mode: 0644]
test/confs/5702 [new file with mode: 0644]
test/confs/5703 [new file with mode: 0644]
test/log/5700
test/log/5701 [new file with mode: 0644]
test/log/5702 [new file with mode: 0644]
test/log/5703 [new file with mode: 0644]
test/scripts/5700-events/5700
test/scripts/5700-events/5701 [new file with mode: 0644]
test/scripts/5700-events/5702 [new file with mode: 0644]
test/scripts/5700-events/5703 [new file with mode: 0644]
test/stdout/5700
test/stdout/5702 [new file with mode: 0644]
test/stdout/5703 [new file with mode: 0644]

index 8d64dd4..0f50318 100644 (file)
@@ -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
 -----------------
index 9ab7402..bba343c 100644 (file)
@@ -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 (file)
index 0000000..283d823
--- /dev/null
@@ -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 (file)
index 0000000..3083624
--- /dev/null
@@ -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 (file)
index 0000000..62cba32
--- /dev/null
@@ -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
index e1ce38e..774e766 100644 (file)
@@ -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 (file)
index 0000000..ff050ff
--- /dev/null
@@ -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 (file)
index 0000000..dfc063f
--- /dev/null
@@ -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 (file)
index 0000000..267f5fc
--- /dev/null
@@ -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
index eda35bc..6edadc9 100644 (file)
@@ -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 (file)
index 0000000..7dfde51
--- /dev/null
@@ -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 (file)
index 0000000..66e2b90
--- /dev/null
@@ -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 (file)
index 0000000..ab707c0
--- /dev/null
@@ -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
index 42735db..89b0c5c 100644 (file)
@@ -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 (file)
index 0000000..50e1c27
--- /dev/null
@@ -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 (file)
index 0000000..b970ec0
--- /dev/null
@@ -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 (file)
index 0000000..54fd485
--- /dev/null
@@ -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
+****
index 066f6ce..98ba767 100644 (file)
@@ -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 (file)
index 0000000..de07377
--- /dev/null
@@ -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 (file)
index 0000000..c171ca3
--- /dev/null
@@ -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