Expansions: new ${authresults {mch}} for an Authentication-Results header
[exim.git] / src / src / dmarc.c
index 275ad46c72112e7254c7c9016999ee2a6b09209f..37ac9c555b69b8e584dd75921e347567833aa6a0 100644 (file)
@@ -12,7 +12,7 @@
 
 #include "exim.h"
 #ifdef EXPERIMENTAL_DMARC
-# if !defined EXPERIMENTAL_SPF
+# if !defined SUPPORT_SPF
 #  error SPF must also be enabled for DMARC
 # elif defined DISABLE_DKIM
 #  error DKIM must also be enabled for DMARC
@@ -44,6 +44,7 @@ typedef struct dmarc_exim_p {
 } dmarc_exim_p;
 
 static dmarc_exim_p dmarc_policy_description[] = {
+  /* name              value */
   { US"",           DMARC_RECORD_P_UNSPECIFIED },
   { US"none",       DMARC_RECORD_P_NONE },
   { US"quarantine", DMARC_RECORD_P_QUARANTINE },
@@ -78,12 +79,12 @@ return eblock;
    messages on the same SMTP connection (that come from the
    same host with the same HELO string) */
 
-int dmarc_init()
+int
+dmarc_init()
 {
 int *netmask   = NULL;   /* Ignored */
 int is_ipv6    = 0;
-char *tld_file = (dmarc_tld_file == NULL) ?
-                DMARC_TLD_FILE : (char *)dmarc_tld_file;
+char *tld_file = dmarc_tld_file ? CS dmarc_tld_file : DMARC_TLD_FILE;
 
 /* Set some sane defaults.  Also clears previous results when
  * multiple messages in one connection. */
@@ -307,7 +308,7 @@ if (!dmarc_abort && !sender_host_authenticated)
                            sr == SPF_RESULT_PERMERROR ? ARES_RESULT_PERMERROR :
                            ARES_RESULT_UNKNOWN;
     origin = DMARC_POLICY_SPF_ORIGIN_MAILFROM;
-    spf_human_readable = (uschar *)spf_response->header_comment;
+    spf_human_readable = US spf_response->header_comment;
     DEBUG(D_receive)
       debug_printf("DMARC using SPF sender domain = %s\n", spf_sender_domain);
     }
@@ -335,7 +336,7 @@ if (!dmarc_abort && !sender_host_authenticated)
                  vs == PDKIM_VERIFY_FAIL ? DMARC_POLICY_DKIM_OUTCOME_FAIL :
                  vs == PDKIM_VERIFY_INVALID ? DMARC_POLICY_DKIM_OUTCOME_TMPFAIL :
                  DMARC_POLICY_DKIM_OUTCOME_NONE;
-    libdm_status = opendmarc_policy_store_dkim(dmarc_pctx, (uschar *)sig->domain,
+    libdm_status = opendmarc_policy_store_dkim(dmarc_pctx, US sig->domain,
                                               dkim_result, US"");
     DEBUG(D_receive)
       debug_printf("DMARC adding DKIM sender domain = %s\n", sig->domain);
@@ -399,7 +400,7 @@ if (!dmarc_abort && !sender_host_authenticated)
   /* Can't use exim's string manipulation functions so allocate memory
    * for libopendmarc using its max hostname length definition. */
 
-  uschar *dmarc_domain = (uschar *)calloc(DMARC_MAXHOSTNAMELEN, sizeof(uschar));
+  uschar *dmarc_domain = US calloc(DMARC_MAXHOSTNAMELEN, sizeof(uschar));
   libdm_status = opendmarc_policy_fetch_utilized_domain(dmarc_pctx,
     dmarc_domain, DMARC_MAXHOSTNAMELEN-1);
   dmarc_used_domain = string_copy(dmarc_domain);
@@ -504,11 +505,11 @@ if (!dmarc_history_file)
 history_file_fd = log_create(dmarc_history_file);
 
 if (history_file_fd < 0)
-{
+  {
   log_write(0, LOG_MAIN|LOG_PANIC, "failure to create DMARC history file: %s",
                           dmarc_history_file);
   return DMARC_HIST_FILE_ERR;
-}
+  }
 
 /* Generate the contents of the history file */
 history_buffer = string_sprintf(
@@ -574,31 +575,24 @@ else
 return DMARC_HIST_OK;
 }
 
+
 uschar *
 dmarc_exim_expand_query(int what)
 {
 if (dmarc_disable_verify || !dmarc_pctx)
   return dmarc_exim_expand_defaults(what);
 
-switch(what)
-  {
-  case DMARC_VERIFY_STATUS:
-    return(dmarc_status);
-  default:
-    return US"";
-  }
+if (what == DMARC_VERIFY_STATUS)
+  return dmarc_status;
+return US"";
 }
 
 uschar *
 dmarc_exim_expand_defaults(int what)
 {
-switch(what)
-  {
-  case DMARC_VERIFY_STATUS:
-    return dmarc_disable_verify ?  US"off" : US"none";
-  default:
-    return US"";
-  }
+if (what == DMARC_VERIFY_STATUS)
+  return dmarc_disable_verify ?  US"off" : US"none";
+return US"";
 }
 
 uschar *
@@ -638,7 +632,7 @@ if (header_from_sender)
 return hdr_tmp;
 }
 
-# endif /* EXPERIMENTAL_SPF */
+# endif /* SUPPORT_SPF */
 #endif /* EXPERIMENTAL_DMARC */
 /* vi: aw ai sw=2
  */