[exim-cvs] Make transport name available in verify-callouts.…

Page principale
Supprimer ce message
Répondre à ce message
Auteur: Exim Git Commits Mailing List
Date:  
À: exim-cvs
Sujet: [exim-cvs] Make transport name available in verify-callouts. Add verify_mode variable
Gitweb: http://git.exim.org/exim.git/commitdiff/aec45841f9139404fd61122e3db1401b13ebb0a8
Commit:     aec45841f9139404fd61122e3db1401b13ebb0a8
Parent:     774ef2d7d0f7fffbfd114271b8567e36485898dc
Author:     Jeremy Harris <jgh146exb@???>
AuthorDate: Thu Oct 23 18:18:43 2014 +0100
Committer:  Jeremy Harris <jgh146exb@???>
CommitDate: Sat Oct 25 21:37:59 2014 +0100


    Make transport name available in verify-callouts.  Add verify_mode variable
---
 doc/doc-docbook/spec.xfpt         |    9 +++++++++
 doc/doc-txt/ChangeLog             |    3 ++-
 doc/doc-txt/experimental-spec.txt |    2 +-
 src/src/expand.c                  |    1 +
 src/src/globals.c                 |   11 ++++++-----
 src/src/globals.h                 |    1 +
 src/src/verify.c                  |    6 ++++--
 7 files changed, 24 insertions(+), 9 deletions(-)


diff --git a/doc/doc-docbook/spec.xfpt b/doc/doc-docbook/spec.xfpt
index e3df085..d3a28a4 100644
--- a/doc/doc-docbook/spec.xfpt
+++ b/doc/doc-docbook/spec.xfpt
@@ -12592,6 +12592,13 @@ This variable contains the result of an expansion lookup, extraction operation,
or external command, as described above. It is also used during a
&*reduce*& expansion.

+.vitem &$verify_mode$&
+.vindex "&$verify_mode$&"
+While a router or transport is being run in verify mode
+or for cutthrough delivery,
+contains "S" for sender-verification or "R" for recipient-verification.
+Otherwise, empty.
+
.vitem &$version_number$&
.vindex "&$version_number$&"
The version number of Exim.
@@ -17779,6 +17786,7 @@ delivering in cutthrough mode
or testing recipient verification using &%-bv%&.
See section &<<SECTrouprecon>>& for a list of the order in which preconditions
are evaluated.
+See also the &$verify_mode$& variable.


.option verify_sender routers&!? boolean true
@@ -17786,6 +17794,7 @@ If this option is false, the router is skipped when verifying sender addresses
or testing sender verification using &%-bvs%&.
See section &<<SECTrouprecon>>& for a list of the order in which preconditions
are evaluated.
+See also the &$verify_mode$& variable.
.ecindex IIDgenoprou1
.ecindex IIDgenoprou2

diff --git a/doc/doc-txt/ChangeLog b/doc/doc-txt/ChangeLog
index 9fece77..50a6e49 100644
--- a/doc/doc-txt/ChangeLog
+++ b/doc/doc-txt/ChangeLog
@@ -54,7 +54,8 @@ JH/07 Add support for directories of certificates when compiled with a GnuTLS
 JH/08 Rename the TPDA expermimental facility to Event Actions.  The #ifdef
       is EXPERIMENTAL_EVENT, the main-configuration and transport options
       both become "event_action", the variables become $event_name, $event_data
-      and $event_defer_errno.
+      and $event_defer_errno.  There is a new variable $verify_mode, usable in
+      routers, transports and related events.



 Exim version 4.84
diff --git a/doc/doc-txt/experimental-spec.txt b/doc/doc-txt/experimental-spec.txt
index 2d34de0..1d3715f 100644
--- a/doc/doc-txt/experimental-spec.txt
+++ b/doc/doc-txt/experimental-spec.txt
@@ -816,7 +816,7 @@ The following variables are likely to be useful depending on the event type:
     tls_out_peercert
     lookup_dnssec_authenticated, tls_out_dane
     sending_ip_address, sending_port
-    message_exim_id
+    message_exim_id, verify_mode



 An example might look like:
diff --git a/src/src/expand.c b/src/src/expand.c
index 623d3f2..ae901d6 100644
--- a/src/src/expand.c
+++ b/src/src/expand.c
@@ -724,6 +724,7 @@ static var_entry var_table[] = {
   { "tod_zulu",            vtype_todzulu,     NULL },
   { "transport_name",      vtype_stringptr,   &transport_name },
   { "value",               vtype_stringptr,   &lookup_value },
+  { "verify_mode",         vtype_stringptr,   &verify_mode },
   { "version_number",      vtype_stringptr,   &version_string },
   { "warn_message_delay",  vtype_stringptr,   &warnmsg_delay },
   { "warn_message_recipient",vtype_stringptr, &warnmsg_recipients },
diff --git a/src/src/globals.c b/src/src/globals.c
index fb3ea32..1eae4a8 100644
--- a/src/src/globals.c
+++ b/src/src/globals.c
@@ -1448,11 +1448,7 @@ uschar *uucp_from_pattern      = US


 uschar *uucp_from_sender       = US"$1";


-uschar *warn_message_file      = NULL;
-uschar *warnmsg_delay          = NULL;
-uschar *warnmsg_recipients     = NULL;
-BOOL    write_rejectlog        = TRUE;
-
+uschar *verify_mode           = NULL;
 uschar *version_copyright      =
  US"Copyright (c) University of Cambridge, 1995 - 2014\n"
    "(c) The Exim Maintainers and contributors in ACKNOWLEDGMENTS file, 2007 - 2014";
@@ -1460,6 +1456,11 @@ uschar *version_date           = US"?";
 uschar *version_cnumber        = US"????";
 uschar *version_string         = US"?";


+uschar *warn_message_file      = NULL;
 int     warning_count          = 0;
+uschar *warnmsg_delay          = NULL;
+uschar *warnmsg_recipients     = NULL;
+BOOL    write_rejectlog        = TRUE;
+


 /*  End of globals.c */
diff --git a/src/src/globals.h b/src/src/globals.h
index c335c34..f4baa0b 100644
--- a/src/src/globals.h
+++ b/src/src/globals.h
@@ -919,6 +919,7 @@ extern uschar *warnmsg_delay;          /* String form of delay time */
 extern uschar *warnmsg_recipients;     /* Recipients of warning message */
 extern BOOL    write_rejectlog;        /* Control of reject logging */


+extern uschar *verify_mode;           /* Running a router in verify mode */
 extern uschar *version_copyright;      /* Copyright notice */
 extern uschar *version_date;           /* Date of compilation */
 extern uschar *version_cnumber;        /* Compile number */
diff --git a/src/src/verify.c b/src/src/verify.c
index dba0916..f8e176b 100644
--- a/src/src/verify.c
+++ b/src/src/verify.c
@@ -468,6 +468,7 @@ else
     deliver_host_address = host->address;
     deliver_host_port = host->port;
     deliver_domain = addr->domain;
+    transport_name = addr->transport->name;


     if (!smtp_get_interface(tf->interface, host_af, addr, NULL, &interface,
             US"callout") ||
@@ -548,6 +549,7 @@ else
       {
       addr->message = string_sprintf("could not connect to %s [%s]: %s",
           host->name, host->address, strerror(errno));
+      transport_name = NULL;
       deliver_host = deliver_host_address = NULL;
       deliver_domain = save_deliver_domain;
       continue;
@@ -879,9 +881,7 @@ else
         /* If accepted, we aren't going to do any further tests below. */


         if (random_ok)
-          {
           new_domain_record.random_result = ccache_accept;
-          }


         /* Otherwise, cache a real negative response, and get back to the right
         state to send RCPT. Unless there's some problem such as a dropped
@@ -1852,8 +1852,10 @@ while (addr_new != NULL)
 #ifdef SUPPORT_TLS
       deliver_set_expansions(addr);
 #endif
+      verify_mode = is_recipient ? US"R" : US"S";
           rc = do_callout(addr, host_list, &tf, callout, callout_overall,
             callout_connect, options, se_mailfrom, pm_mailfrom);
+      verify_mode = NULL;
           }
         }
       else