Logging: connection_reject log selector should apply also to the connect acl
authorJeremy Harris <jgh146exb@wizmail.org>
Sun, 2 Oct 2016 13:03:09 +0000 (14:03 +0100)
committerJeremy Harris <jgh146exb@wizmail.org>
Sun, 2 Oct 2016 13:05:32 +0000 (14:05 +0100)
16 files changed:
doc/doc-txt/ChangeLog
src/src/log.c
src/src/smtp_in.c
test/README
test/confs/0021
test/confs/0314
test/log/0314 [new file with mode: 0644]
test/rejectlog/0021
test/rejectlog/0314 [new file with mode: 0644]
test/scripts/0000-Basic/0021
test/scripts/0000-Basic/0314
test/stderr/0002
test/stderr/0314 [deleted file]
test/stderr/3201
test/stdout/0021
test/stdout/0314

index d6d805a..52e0492 100644 (file)
@@ -108,6 +108,10 @@ JH/28 Enable {spool,log} filesystem space and inode checks as default.
       Main config options check_{log,spool}_{inodes,space} are now
       100 inodes, 10MB unless set otherwise in the configuration.
 
+JH/29 Fix the connection_reject log selector to apply to the connect ACL.
+      Previously it only applied to the main-section connection policy
+      options.
+
 
 Exim version 4.87
 -----------------
index f9b0722..fbf1042 100644 (file)
@@ -971,14 +971,14 @@ been opened, but we don't want to keep on writing to it for too long after it
 has been renamed. Therefore, do a stat() and see if the inode has changed, and
 if so, re-open. */
 
-if ((flags & LOG_MAIN) != 0 &&
-    (selector == 0 || (selector & log_selector[0]) != 0))
+if (  flags & LOG_MAIN
+   && (!selector ||  selector & log_selector[0]))
   {
-  if ((logging_mode & LOG_MODE_SYSLOG) != 0 &&
-      (syslog_duplication || (flags & (LOG_REJECT|LOG_PANIC)) == 0))
+  if (  logging_mode & LOG_MODE_SYSLOG
+     && (syslog_duplication || !(flags & (LOG_REJECT|LOG_PANIC))))
     write_syslog(LOG_INFO, log_buffer);
 
-  if ((logging_mode & LOG_MODE_FILE) != 0)
+  if (logging_mode & LOG_MODE_FILE)
     {
     struct stat statbuf;
 
index 9484105..f534d1c 100644 (file)
@@ -2473,7 +2473,6 @@ if (smtp_batched_input) return TRUE;
 proxy_session = FALSE;
 proxy_session_failed = FALSE;
 if (check_proxy_protocol_host())
-  {
   if (setup_proxy_protocol_host() == FALSE)
     {
     proxy_session_failed = TRUE;
@@ -2486,20 +2485,18 @@ if (check_proxy_protocol_host())
     (void)host_name_lookup();
     host_build_sender_fullhost();
     }
-  }
 #endif
 
 /* Run the ACL if it exists */
 
 user_msg = NULL;
-if (acl_smtp_connect != NULL)
+if (acl_smtp_connect)
   {
   int rc;
-  rc = acl_check(ACL_WHERE_CONNECT, NULL, acl_smtp_connect, &user_msg,
-    &log_msg);
-  if (rc != OK)
+  if ((rc = acl_check(ACL_WHERE_CONNECT, NULL, acl_smtp_connect, &user_msg,
+                     &log_msg)) != OK)
     {
-    (void)smtp_handle_acl_fail(ACL_WHERE_CONNECT, rc, user_msg, log_msg);
+    (void) smtp_handle_acl_fail(ACL_WHERE_CONNECT, rc, user_msg, log_msg);
     return FALSE;
     }
   }
@@ -2865,16 +2862,16 @@ uschar *lognl;
 uschar *sender_info = US"";
 uschar *what =
 #ifdef WITH_CONTENT_SCAN
-  (where == ACL_WHERE_MIME)? US"during MIME ACL checks" :
+  where == ACL_WHERE_MIME ? US"during MIME ACL checks" :
 #endif
-  (where == ACL_WHERE_PREDATA)? US"DATA" :
-  (where == ACL_WHERE_DATA)? US"after DATA" :
+  where == ACL_WHERE_PREDATA ? US"DATA" :
+  where == ACL_WHERE_DATA ? US"after DATA" :
 #ifndef DISABLE_PRDR
-  (where == ACL_WHERE_PRDR)? US"after DATA PRDR" :
+  where == ACL_WHERE_PRDR ? US"after DATA PRDR" :
 #endif
-  (smtp_cmd_data == NULL)?
-    string_sprintf("%s in \"connect\" ACL", acl_wherenames[where]) :
-    string_sprintf("%s %s", acl_wherenames[where], smtp_cmd_data);
+  smtp_cmd_data ?
+    string_sprintf("%s %s", acl_wherenames[where], smtp_cmd_data) :
+    string_sprintf("%s in \"connect\" ACL", acl_wherenames[where]);
 
 if (drop) rc = FAIL;
 
@@ -2951,9 +2948,8 @@ if (sender_verified_failed != NULL &&
 
 /* Sort out text for logging */
 
-log_msg = (log_msg == NULL)? US"" : string_sprintf(": %s", log_msg);
-lognl = Ustrchr(log_msg, '\n');
-if (lognl != NULL) *lognl = 0;
+log_msg = log_msg ? string_sprintf(": %s", log_msg) : US"";
+if ((lognl = Ustrchr(log_msg, '\n'))) *lognl = 0;
 
 /* Send permanent failure response to the command, but the code used isn't
 always a 5xx one - see comments at the start of this function. If the original
@@ -2999,7 +2995,8 @@ if (log_reject_target != 0)
 #else
   uschar * tls = US"";
 #endif
-  log_write(0, log_reject_target, "%s%s%s %s%srejected %s%s",
+  log_write(where == ACL_WHERE_CONNECT ? L_connection_reject : 0,
+    log_reject_target, "%s%s%s %s%srejected %s%s",
     LOGGING(dnssec) && sender_host_dnssec ? US" DS" : US"",
     host_and_ident(TRUE),
     tls,
index 8df1678..f72efc6 100644 (file)
@@ -1020,7 +1020,7 @@ Lines in client scripts are of two kinds:
 Here is a simple example:
 
   client 127.0.0.1 PORT_D
-  ??? 250
+  ??? 220
   EHLO xxx
   ??? 250-
   ??? 250
index 6205eae..ae5a309 100644 (file)
@@ -2,6 +2,7 @@
 
 SERVER=
 BR=
+LOG_SELECTOR=
 
 .include DIR/aux-var/std_conf_prefix
 
@@ -21,6 +22,7 @@ acl_smtp_mail = mail
 acl_smtp_rcpt = rcpt
 
 BR
+log_selector = LOG_SELECTOR
 
 qualify_domain = test.ex
 trusted_users = CALLER
index 2ad32db..9dd0295 100644 (file)
@@ -1,10 +1,13 @@
 # Exim test configuration 0314
 
+LOG_SELECTOR=
+
 .include DIR/aux-var/std_conf_prefix
 
 
 # ----- Main settings -----
 
-host_reject_connection = V4NET.0.0.1
+log_selector = LOG_SELECTOR
+host_reject_connection = 127.0.0.1
 
 # End
diff --git a/test/log/0314 b/test/log/0314
new file mode 100644 (file)
index 0000000..90d3e94
--- /dev/null
@@ -0,0 +1,5 @@
+
+******** SERVER ********
+1999-03-02 09:44:33 exim x.yz daemon started: pid=pppp, no queue runs, listening for SMTP on port 1225
+1999-03-02 09:44:33 refused connection from [127.0.0.1] (host_reject_connection)
+1999-03-02 09:44:33 exim x.yz daemon started: pid=pppp, no queue runs, listening for SMTP on port 1225
index edfe63f..0f59e2c 100644 (file)
@@ -29,6 +29,7 @@ I Message-Id: <E10HmaZ-0005vi-00@myhost.test.ex>
 F From: ok@test4
   Date: Tue, 2 Mar 1999 09:44:33 +0000
 1999-03-02 09:44:33 H=[10.9.8.7] U=CALLER rejected connection in "connect" ACL
+1999-03-02 09:44:33 H=[10.9.8.7] U=CALLER rejected connection in "connect" ACL
 1999-03-02 09:44:33 H=[10.9.8.8] U=CALLER rejected MAIL <bad@test1>
 1999-03-02 09:44:33 mail accepted "mail from:<ok@test1>" "<ok@test1>"
 1999-03-02 09:44:33 H=[10.9.8.9] U=CALLER rejected connection in "connect" ACL: forcibly dropped
diff --git a/test/rejectlog/0314 b/test/rejectlog/0314
new file mode 100644 (file)
index 0000000..c18fe0b
--- /dev/null
@@ -0,0 +1,4 @@
+
+******** SERVER ********
+1999-03-02 09:44:33 refused connection from [127.0.0.1] (host_reject_connection)
+1999-03-02 09:44:33 refused connection from [127.0.0.1] (host_reject_connection)
index 8fbf948..16c5c3b 100644 (file)
@@ -24,6 +24,8 @@ Test message 5.
 ****
 exim -bs -oMa 10.9.8.7
 ****
+exim -DLOG_SELECTOR=-connection_reject -bs -oMa 10.9.8.7
+****
 exim -d-all+acl+lists -bs -oMa 10.9.8.8
 mail from:<bad@test1>
 mail from:<ok@test1>
index 6fec248..dd3d399 100644 (file)
@@ -1,5 +1,17 @@
 # host_reject_connection
-exim -bh V4NET.0.0.1
+need_ipv4
+exim -DSERVER=server -bd -oX PORT_D
 ****
-exim -bh V4NET.0.0.2
+client 127.0.0.1 PORT_D
+??? 554
 ****
+client HOSTIPV4 PORT_D
+??? 220
+****
+killdaemon
+exim -DSERVER=server -DLOG_SELECTOR=-connection_reject -bd -oX PORT_D
+****
+client 127.0.0.1 PORT_D
+??? 554
+****
+killdaemon
index 317b4bd..e7c70cf 100644 (file)
@@ -227,7 +227,7 @@ host in "<
 deny: condition test succeeded in ACL "connect1"
 end of ACL "connect1": DENY
 SMTP>> 550 Administrative prohibition
-LOG: MAIN REJECT
+LOG: connection_reject MAIN REJECT
   H=ten-1.test.ex [V4NET.0.0.1] rejected connection in "connect" ACL
 search_tidyup called
 >>>>>>>>>>>>>>>> Exim pid=pppp terminating with rc=0 >>>>>>>>>>>>>>>>
@@ -271,7 +271,7 @@ host in "net-lsearch;TESTSUITE/aux-fixed/0002.lsearch"? no (end of list)
 deny: condition test failed in ACL "connect2"
 end of ACL "connect2": implicit DENY
 SMTP>> 550 Administrative prohibition
-LOG: MAIN REJECT
+LOG: connection_reject MAIN REJECT
   H=[V4NET.0.0.2] rejected connection in "connect" ACL
 search_tidyup called
 >>>>>>>>>>>>>>>> Exim pid=pppp terminating with rc=0 >>>>>>>>>>>>>>>>
diff --git a/test/stderr/0314 b/test/stderr/0314
deleted file mode 100644 (file)
index e14297e..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
->>> host in hosts_connection_nolog? no (option unset)
->>> host in host_lookup? no (option unset)
->>> host in host_reject_connection? yes (matched "V4NET.0.0.1")
-LOG: refused connection from [V4NET.0.0.1] (host_reject_connection)
->>> host in hosts_connection_nolog? no (option unset)
->>> host in host_lookup? no (option unset)
->>> host in host_reject_connection? no (end of list)
->>> host in sender_unqualified_hosts? no (option unset)
->>> host in recipient_unqualified_hosts? no (option unset)
->>> host in helo_verify_hosts? no (option unset)
->>> host in helo_try_verify_hosts? no (option unset)
->>> host in helo_accept_junk_hosts? no (option unset)
index 096248f..10fa6f9 100644 (file)
@@ -36,7 +36,7 @@ host in "testdb;fail"? no (end of list)
 deny: condition test failed in ACL "connect1"
 end of ACL "connect1": implicit DENY
 SMTP>> 550 Administrative prohibition
-LOG: MAIN REJECT
+LOG: connection_reject MAIN REJECT
   H=[10.0.0.1] rejected connection in "connect" ACL
 search_tidyup called
 >>>>>>>>>>>>>>>> Exim pid=pppp terminating with rc=0 >>>>>>>>>>>>>>>>
@@ -78,7 +78,7 @@ host in "net-testdb;fail"? no (end of list)
 deny: condition test failed in ACL "connect2"
 end of ACL "connect2": implicit DENY
 SMTP>> 550 Administrative prohibition
-LOG: MAIN REJECT
+LOG: connection_reject MAIN REJECT
   H=[10.0.0.2] rejected connection in "connect" ACL
 search_tidyup called
 >>>>>>>>>>>>>>>> Exim pid=pppp terminating with rc=0 >>>>>>>>>>>>>>>>
index 5fff92b..a48644f 100644 (file)
@@ -1,4 +1,5 @@
 550 Administrative prohibition\r
+550 Administrative prohibition\r
 220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000\r
 550 Administrative prohibition\r
 250 OK\r
index b6b0ef4..f486d8f 100644 (file)
@@ -1,13 +1,12 @@
-
-**** SMTP testing session as if from host V4NET.0.0.1
-**** but without any ident (RFC 1413) callback.
-**** This is not for real!
-
-554 SMTP service not available\r
-
-**** SMTP testing session as if from host V4NET.0.0.2
-**** but without any ident (RFC 1413) callback.
-**** This is not for real!
-
-220 the.local.host.name ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000\r
-421 the.local.host.name lost input connection\r
+Connecting to 127.0.0.1 port 1225 ... connected
+??? 554
+<<< 554 SMTP service not available
+End of script
+Connecting to ip4.ip4.ip4.ip4 port 1225 ... connected
+??? 220
+<<< 220 the.local.host.name ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000
+End of script
+Connecting to 127.0.0.1 port 1225 ... connected
+??? 554
+<<< 554 SMTP service not available
+End of script