Add log selector sender_verify_fail.
authorPhilip Hazel <ph10@hermes.cam.ac.uk>
Tue, 14 Feb 2006 14:55:37 +0000 (14:55 +0000)
committerPhilip Hazel <ph10@hermes.cam.ac.uk>
Tue, 14 Feb 2006 14:55:37 +0000 (14:55 +0000)
doc/doc-txt/ChangeLog
doc/doc-txt/NewStuff
src/src/globals.c
src/src/macros.h
src/src/smtp_in.c
test/confs/0462
test/log/0462
test/rejectlog/0462
test/scripts/0000-Basic/0462
test/stderr/0462
test/stdout/0462

index 4e844d6d0635f370e438d3a9408a965acc6e573a..ce179b7d5e88ebbbf5a586d1c466f549427e62d1 100644 (file)
@@ -1,4 +1,4 @@
-$Cambridge: exim/doc/doc-txt/ChangeLog,v 1.298 2006/02/14 14:26:14 ph10 Exp $
+$Cambridge: exim/doc/doc-txt/ChangeLog,v 1.299 2006/02/14 14:55:37 ph10 Exp $
 
 Change log file for Exim from version 4.21
 -------------------------------------------
@@ -160,6 +160,8 @@ PH/29 In GnuTLS, a forced expansion failure for tls_privatekey was not being
 
 PH/30 Fix eximon buffer overflow bug (Bugzilla #73).
 
+PH/31 Added sender_verify_fail logging option.
+
 
 Exim version 4.60
 -----------------
index d4c307cff4f581ba7ab180d6945063f7b23035a2..fdccff410a35c97e0d71afffed8876979ec90d33 100644 (file)
@@ -1,4 +1,4 @@
-$Cambridge: exim/doc/doc-txt/NewStuff,v 1.84 2006/02/14 14:12:06 ph10 Exp $
+$Cambridge: exim/doc/doc-txt/NewStuff,v 1.85 2006/02/14 14:55:37 ph10 Exp $
 
 New Features in Exim
 --------------------
@@ -49,6 +49,12 @@ PH/05 The "control=freeze" ACL modifier can now be followed by /no_tell. If
 PH/06 In both GnuTLS and OpenSSL, an expansion of tls_privatekey that results
       in an empty string is now treated as unset.
 
+PH/07 There is a new log selector called sender_verify_fail, which is set by
+      default. If it is unset, the separate log line that gives details of a
+      sender verification failure is not written. Log lines for the rejection
+      of SMTP commands (e.g. RCPT) contain just "sender verify failed", so some
+      detail is lost.
+
 
 Version 4.60
 ------------
index 11470fbe49abc4d35520e14a768d3d99a3082937..4031fa2d381ac92750f1a3eda4cac1dbea236523 100644 (file)
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/src/src/globals.c,v 1.48 2006/02/13 12:02:59 ph10 Exp $ */
+/* $Cambridge: exim/src/src/globals.c,v 1.49 2006/02/14 14:55:37 ph10 Exp $ */
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
@@ -677,6 +677,7 @@ bit_table log_options[]        = {
   { US"retry_defer",                  L_retry_defer },
   { US"return_path_on_delivery",      LX_return_path_on_delivery },
   { US"sender_on_delivery",           LX_sender_on_delivery },
+  { US"sender_verify_fail",           LX_sender_verify_fail },
   { US"size_reject",                  L_size_reject },
   { US"skip_delivery",                L_skip_delivery },
   { US"smtp_confirmation",            LX_smtp_confirmation },
index 1deab7ad80469f1f367b2e202b031f45621a1337..497589023abd0e9110ecf71687be028abd22c255 100644 (file)
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/src/src/macros.h,v 1.22 2006/02/07 11:19:00 ph10 Exp $ */
+/* $Cambridge: exim/src/src/macros.h,v 1.23 2006/02/14 14:55:37 ph10 Exp $ */
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
@@ -381,12 +381,13 @@ set all the bits in a multi-word selector. */
 #define LX_rejected_header             0x80001000
 #define LX_return_path_on_delivery     0x80002000
 #define LX_sender_on_delivery          0x80004000
-#define LX_smtp_confirmation           0x80008000
-#define LX_subject                     0x80010000
-#define LX_tls_certificate_verified    0x80020000
-#define LX_tls_cipher                  0x80040000
-#define LX_tls_peerdn                  0x80080000
-#define LX_unknown_in_list             0x80100000
+#define LX_sender_verify_fail          0x80008000
+#define LX_smtp_confirmation           0x80010000
+#define LX_subject                     0x80020000
+#define LX_tls_certificate_verified    0x80040000
+#define LX_tls_cipher                  0x80080000
+#define LX_tls_peerdn                  0x80100000
+#define LX_unknown_in_list             0x80200000
 
 #define L_default     (L_connection_reject        | \
                        L_delay_delivery           | \
@@ -401,6 +402,7 @@ set all the bits in a multi-word selector. */
 
 #define LX_default   ((LX_acl_warn_skipped        | \
                        LX_rejected_header         | \
+                       LX_sender_verify_fail      | \
                        LX_tls_cipher) & 0x7fffffff)
 
 /* Private error numbers for delivery failures, set negative so as not
index a6a14fe2f5271fbf4dec77f0bd850fad471f6302..4ed335c02da40c83a0adf51ce7f8f5d722778ee7 100644 (file)
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/src/src/smtp_in.c,v 1.32 2006/02/13 16:23:57 ph10 Exp $ */
+/* $Cambridge: exim/src/src/smtp_in.c,v 1.33 2006/02/14 14:55:37 ph10 Exp $ */
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
@@ -1845,19 +1845,21 @@ if (where == ACL_WHERE_RCPT || where == ACL_WHERE_DATA || where == ACL_WHERE_MIM
 
 /* If there's been a sender verification failure with a specific message, and
 we have not sent a response about it yet, do so now, as a preliminary line for
-failures, but not defers. However, log it in both cases. */
+failures, but not defers. However, always log it for defer, and log it for fail
+unless the sender_verify_fail log selector has been turned off. */
 
 if (sender_verified_failed != NULL &&
     !testflag(sender_verified_failed, af_sverify_told))
   {
   setflag(sender_verified_failed, af_sverify_told);
 
-  log_write(0, LOG_MAIN|LOG_REJECT, "%s sender verify %s for <%s>%s",
-    host_and_ident(TRUE),
-    ((sender_verified_failed->special_action & 255) == DEFER)? "defer" : "fail",
-    sender_verified_failed->address,
-    (sender_verified_failed->message == NULL)? US"" :
-    string_sprintf(": %s", sender_verified_failed->message));
+  if (rc != FAIL || (log_extra_selector & LX_sender_verify_fail) != 0)
+    log_write(0, LOG_MAIN|LOG_REJECT, "%s sender verify %s for <%s>%s",
+      host_and_ident(TRUE),
+      ((sender_verified_failed->special_action & 255) == DEFER)? "defer":"fail",
+      sender_verified_failed->address,
+      (sender_verified_failed->message == NULL)? US"" :
+      string_sprintf(": %s", sender_verified_failed->message));
 
   if (rc == FAIL && sender_verified_failed->user_message != NULL)
     smtp_respond(code, FALSE, string_sprintf(
index 31560b90f7f8980ebda464d9027b3866c532ca01..7ff47e6b5f9981b9b18caabe6f5905ea4a698b89 100644 (file)
@@ -1,5 +1,7 @@
 # Exim test configuration 0462
 
+SELECTOR=
+
 exim_path = EXIM_PATH
 host_lookup_order = bydns
 primary_hostname = myhost.test.ex
@@ -15,6 +17,7 @@ domainlist local_domains = test.ex
 
 acl_smtp_rcpt = $local_part
 smtp_return_error_details
+log_selector = SELECTOR
 
 # ----- ACL -----
 
index 3a5954e9a51d0e994cba42e72191c5a8637f593e..ec4952f98175985db8c106a817b4106f8f1fba08 100644 (file)
@@ -2,3 +2,4 @@
 1999-03-02 09:44:33 H=[V4NET.0.0.1] U=root F=<Ok@localhost> rejected RCPT <checkpm@test.ex>: Sender verify failed
 1999-03-02 09:44:33 H=[V4NET.0.0.2] U=root sender verify fail for <NOTok@elsewhere>: response to "RCPT TO:<NOTok@elsewhere>" from 127.0.0.1 [127.0.0.1] was: 550 NO
 1999-03-02 09:44:33 H=[V4NET.0.0.2] U=root F=<NOTok@elsewhere> rejected RCPT <nocheckpm@test.ex>: Sender verify failed
+1999-03-02 09:44:33 H=[V4NET.0.0.2] U=root F=<NOTok2@elsewhere> rejected RCPT <nocheckpm@test.ex>: Sender verify failed
index 3a5954e9a51d0e994cba42e72191c5a8637f593e..ec4952f98175985db8c106a817b4106f8f1fba08 100644 (file)
@@ -2,3 +2,4 @@
 1999-03-02 09:44:33 H=[V4NET.0.0.1] U=root F=<Ok@localhost> rejected RCPT <checkpm@test.ex>: Sender verify failed
 1999-03-02 09:44:33 H=[V4NET.0.0.2] U=root sender verify fail for <NOTok@elsewhere>: response to "RCPT TO:<NOTok@elsewhere>" from 127.0.0.1 [127.0.0.1] was: 550 NO
 1999-03-02 09:44:33 H=[V4NET.0.0.2] U=root F=<NOTok@elsewhere> rejected RCPT <nocheckpm@test.ex>: Sender verify failed
+1999-03-02 09:44:33 H=[V4NET.0.0.2] U=root F=<NOTok2@elsewhere> rejected RCPT <nocheckpm@test.ex>: Sender verify failed
index a6f3622baf6870dc63e7e555450e4f8f985a1b06..d12ced725afa1c01776a7ff27c6ec570de979bb9 100644 (file)
@@ -41,3 +41,20 @@ MAIL FROM:<NOTok@elsewhere>
 RCPT TO:<nocheckpm@test.ex>
 QUIT
 ****
+# Same again, but with sender_verify_fail logging turned off
+server PORT_S
+220 Server ready
+HELO
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+550 NO
+QUIT
+250 OK
+****
+sudo exim -DSELECTOR=-sender_verify_fail -d-all+verify -v -bs -oMa V4NET.0.0.2
+MAIL FROM:<NOTok2@elsewhere>
+RCPT TO:<nocheckpm@test.ex>
+QUIT
+****
index 876aacc79b5815601ad0931e2917232f913650e2..23895994531c45770e64c42a01eb900f00175dcd 100644 (file)
@@ -79,3 +79,34 @@ LOG: MAIN REJECT
 LOG: smtp_connection MAIN
   SMTP connection from root closed by QUIT
 >>>>>>>>>>>>>>>> Exim pid=pppp terminating with rc=0 >>>>>>>>>>>>>>>>
+Exim version x.yz ....
+configuration file is TESTSUITE/test-config
+trusted user
+admin user
+LOG: smtp_connection MAIN
+  SMTP connection from root
+>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
+Verifying NOTok2@elsewhere
+>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
+Considering NOTok2@elsewhere
+Attempting full verification using callout
+callout cache: found domain record
+callout cache: no address record found
+interface=NULL port=1224
+Connecting to 127.0.0.1 [127.0.0.1]:1224 ... connected
+  SMTP<< 220 Server ready
+  SMTP>> HELO myhost.test.ex
+  SMTP<< 250 OK
+  SMTP>> MAIL FROM:<>
+  SMTP<< 250 OK
+  SMTP>> RCPT TO:<NOTok2@elsewhere>
+  SMTP<< 550 NO
+  SMTP>> QUIT
+wrote callout cache domain record:
+  result=1 postmaster=0 random=0
+wrote negative callout cache address record
+LOG: MAIN REJECT
+  H=[V4NET.0.0.2] U=root F=<NOTok2@elsewhere> rejected RCPT <nocheckpm@test.ex>: Sender verify failed
+LOG: smtp_connection MAIN
+  SMTP connection from root closed by QUIT
+>>>>>>>>>>>>>>>> Exim pid=pppp terminating with rc=0 >>>>>>>>>>>>>>>>
index f454d0c23ff732d3828f7461e0f11eda6bd37940..004a788afa5938fade038203629c2df4c37c0e40 100644 (file)
 550-Response: 550 NO\r
 550 Sender verify failed\r
 221 myhost.test.ex closing connection\r
+220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000\r
+250 OK\r
+550-Verification failed for <NOTok2@elsewhere>\r
+550-Called:   127.0.0.1\r
+550-Sent:     RCPT TO:<NOTok2@elsewhere>\r
+550-Response: 550 NO\r
+550 Sender verify failed\r
+221 myhost.test.ex closing connection\r
 
 ******** SERVER ********
 Listening on port 1224 ... 
@@ -50,3 +58,15 @@ RCPT TO:<NOTok@elsewhere>
 QUIT
 250 OK
 End of script
+Listening on port 1224 ... 
+Connection request from [127.0.0.1]
+220 Server ready
+HELO myhost.test.ex
+250 OK
+MAIL FROM:<>
+250 OK
+RCPT TO:<NOTok2@elsewhere>
+550 NO
+QUIT
+250 OK
+End of script