Events: log a non-success when a client connect is denied by an event
authorJeremy Harris <jgh146exb@wizmail.org>
Sat, 19 Jan 2019 22:28:54 +0000 (22:28 +0000)
committerJeremy Harris <jgh146exb@wizmail.org>
Mon, 11 Feb 2019 00:16:02 +0000 (00:16 +0000)
(cherry picked from commit 6bc9c745b64e669161a04f4dd72de4dbba9fbdd2)

src/src/deliver.c
src/src/log.c
src/src/macros.h
test/confs/5707 [new file with mode: 0644]
test/log/5707 [new file with mode: 0644]
test/scripts/5700-events/5707 [new file with mode: 0644]

index 1baf7d371fe0adfa06d70fdb1e9a2cb7c5a7915b..307989d408099ce0a538a8aae1c4bbd0088620bb 100644 (file)
@@ -856,6 +856,7 @@ if (action)
     {
     DEBUG(D_deliver)
       debug_printf("Event(%s): event_action returned \"%s\"\n", event, s);
+    errno = ERRNO_EVENT;
     return s;
     }
   }
index 4905b6d5441d7aa9b75e6fd7d57bf784c294997f..0aaf94a31fb12dd89fcc684590c63c9c45686ef8 100644 (file)
@@ -112,6 +112,7 @@ static const uschar * exim_errstrings[] = {
   US"Local-only delivery",
   US"Domain in queue_domains",
   US"Transport concurrency limit",
+  US"Event requests alternate response",
 };
 
 
index e797615a13ed3255b24fe2bbabe29baa1540a24b..185ea6aff5c5b632e39e4275ac8045432cf21da4 100644 (file)
@@ -570,6 +570,7 @@ table exim_errstrings[] in log.c */
 #define ERRNO_LOCAL_ONLY     (-54)   /* Local-only delivery */
 #define ERRNO_QUEUE_DOMAIN   (-55)   /* Domain in queue_domains */
 #define ERRNO_TRETRY         (-56)   /* Transport concurrency limit */
+#define ERRNO_EVENT         (-57)   /* Event processing request alternate response */
 
 
 
diff --git a/test/confs/5707 b/test/confs/5707
new file mode 100644 (file)
index 0000000..35d5eff
--- /dev/null
@@ -0,0 +1,56 @@
+# Exim test configuration 5707
+
+.include DIR/aux-var/std_conf_prefix
+
+
+# ----- Main settings -----
+
+acl_smtp_rcpt = accept
+acl_smtp_data = accept
+
+event_action = ${acl {logger}}
+
+
+# ----- ACL -----
+
+begin acl
+
+.include DIR/aux-fixed/event-logger-acl
+
+conn_deny:
+  accept       !condition =    ${if eq {tcp:connect}{$event_name}}
+  deny         logwrite =      Denying tcp connection
+               message =       deny
+
+# ----- Routers -----
+
+begin routers
+
+dump_bounces:
+  driver = redirect
+  senders = :
+  data = :blackhole:
+
+others:
+  driver = manualroute
+  route_list = * 127.0.0.1 byname
+  self = send
+  transport = smtp
+  errors_to = ""
+  no_more
+
+
+# ----- Transports -----
+
+begin transports
+
+smtp:
+  driver =     smtp
+  port =       PORT_S
+  event_action = ${acl {conn_deny}}
+
+# ----- Retry -----
+begin retry
+* * F,5d,10s
+
+# End
diff --git a/test/log/5707 b/test/log/5707
new file mode 100644 (file)
index 0000000..643dad2
--- /dev/null
@@ -0,0 +1,4 @@
+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 Denying tcp connection
+1999-03-02 09:44:33 10HmaX-0005vi-00 H=127.0.0.1 [127.0.0.1] Event requests alternate response
+1999-03-02 09:44:33 10HmaX-0005vi-00 == userx@domain1 R=others T=smtp defer (-57)
diff --git a/test/scripts/5700-events/5707 b/test/scripts/5700-events/5707
new file mode 100644 (file)
index 0000000..a8b5ffe
--- /dev/null
@@ -0,0 +1,6 @@
+# tcp:connect deny
+#
+exim -odf userx@domain1
+A deliverable message
+****
+no_msglog_check