Add variable $sender_helo_verified
authorJeremy Harris <jgh146exb@wizmail.org>
Tue, 29 Nov 2022 14:34:25 +0000 (14:34 +0000)
committerJeremy Harris <jgh146exb@wizmail.org>
Tue, 29 Nov 2022 16:03:57 +0000 (16:03 +0000)
doc/doc-txt/NewStuff
src/src/acl.c
src/src/expand.c
src/src/functions.h

index 4a912268b32f1bf09ab7e379e99de65cd4555628..0d4557a8b89ac1a368f8f50413f5c05663af8226 100644 (file)
@@ -16,6 +16,7 @@ Version 4.97
  3. Variable $sender_helo_verified with the result of an ACL "verify = helo".
 
  4. Predefined macros for expansion items, operators, conditions and variables.
+ 3. Variable $sender_helo_verified with the result of an ACL verify=helo.
 
 Version 4.96
 ------------
index 143890668fa6cd1c350bc85ba8f8d0d628e3bd07..8e1d924575284d0b3787e258084376f6d8b9e8bc 100644 (file)
@@ -1643,6 +1643,30 @@ return period;
 
 
 
+static BOOL
+sender_helo_verified_internal(void)
+{
+/* We can test the result of optional HELO verification that might have
+occurred earlier. If not, we can attempt the verification now. */
+
+if (!f.helo_verified && !f.helo_verify_failed) smtp_verify_helo();
+return f.helo_verified;
+}
+
+static int
+sender_helo_verified_cond(void)
+{
+return sender_helo_verified_internal() ? OK : FAIL;
+}
+
+uschar *
+sender_helo_verified_boolstr(void)
+{
+return sender_helo_verified_internal() ? US"yes" : US"no";
+}
+
+
+
 /* This function implements the "verify" condition. It is called when
 encountered in any ACL, because some tests are almost always permitted. Some
 just don't make sense, and always fail (for example, an attempt to test a host
@@ -1739,11 +1763,7 @@ switch(vp->value)
     return FAIL;
 
   case VERIFY_HELO:
-    /* We can test the result of optional HELO verification that might have
-    occurred earlier. If not, we can attempt the verification now. */
-
-    if (!f.helo_verified && !f.helo_verify_failed) smtp_verify_helo();
-    return f.helo_verified ? OK : FAIL;
+    return sender_helo_verified_cond();
 
   case VERIFY_CSA:
     /* Do Client SMTP Authorization checks in a separate function, and turn the
index 6def3c102a40be4ca82f0385bc0823051b264e5c..57ad76f777c46d90a36406c493a172a6ba0f1097 100644 (file)
@@ -715,6 +715,7 @@ static var_entry var_table[] = {
   { "sender_fullhost",     vtype_stringptr,   &sender_fullhost },
   { "sender_helo_dnssec",  vtype_bool,        &sender_helo_dnssec },
   { "sender_helo_name",    vtype_stringptr,   &sender_helo_name },
+  { "sender_helo_verified",vtype_string_func, (void *) &sender_helo_verified_boolstr },
   { "sender_host_address", vtype_stringptr,   &sender_host_address },
   { "sender_host_authenticated",vtype_stringptr, &sender_host_authenticated },
   { "sender_host_dnssec",  vtype_bool,        &sender_host_dnssec },
index a2c8976e858921da35a457e161c7f3a108ad4ec4..3ca346c04df4aa6b881e7159b8e48677fa055413 100644 (file)
@@ -489,6 +489,7 @@ extern int     search_findtype_partial(const uschar *, int *, const uschar **, i
                  int *, const uschar **);
 extern void   *search_open(const uschar *, int, int, uid_t *, gid_t *);
 extern void    search_tidyup(void);
+extern uschar *sender_helo_verified_boolstr(void);
 extern void    set_process_info(const char *, ...) PRINTF_FUNCTION(1,2);
 extern void    sha1_end(hctx *, const uschar *, int, uschar *);
 extern void    sha1_mid(hctx *, const uschar *);