ATRN provider
[exim.git] / src / src / globals.c
index 02349497f0f27bf93a725ad770b48de0bec5da22..dcd5dbe3f0da2024ec01ae0f6b975ecc3e856e91 100644 (file)
@@ -22,7 +22,7 @@ optionlist optionlist_auths[] = {
   { "client_set_id", opt_stringptr | opt_public,
                  OPT_OFF(auth_instance, set_client_id) },
   { "driver",        opt_stringptr | opt_public,
-                 OPT_OFF(auth_instance, driver_name) },
+                 OPT_OFF(auth_instance, drinst.driver_name) },
   { "public_name",   opt_stringptr | opt_public,
                  OPT_OFF(auth_instance, public_name) },
   { "server_advertise_condition", opt_stringptr | opt_public,
@@ -411,9 +411,6 @@ BOOL    smtp_enforce_sync      = TRUE;
 BOOL    smtp_etrn_serialize    = TRUE;
 BOOL    smtp_input             = FALSE;
 BOOL    smtp_return_error_details = FALSE;
-#ifdef SUPPORT_SPF
-BOOL    spf_result_guessed     = FALSE;
-#endif
 BOOL    split_spool_directory  = FALSE;
 BOOL    spool_wireformat       = FALSE;
 BOOL    strict_acl_vars        = FALSE;
@@ -444,6 +441,7 @@ uschar *acl_not_smtp_mime      = NULL;
 #endif
 uschar *acl_not_smtp_start     = NULL;
 uschar *acl_removed_headers    = NULL;
+uschar *acl_smtp_atrn          = NULL;
 uschar *acl_smtp_auth          = NULL;
 uschar *acl_smtp_connect       = NULL;
 uschar *acl_smtp_data          = NULL;
@@ -475,6 +473,7 @@ tree_node *acl_var_c           = NULL;
 tree_node *acl_var_m           = NULL;
 uschar *acl_verify_message     = NULL;
 string_item *acl_warn_logged   = NULL;
+int acl_where                 = ACL_WHERE_UNKNOWN;
 
 /* Names of SMTP places for use in ACL error messages, and corresponding SMTP
 error codes (only those used) */
@@ -489,6 +488,7 @@ uschar *acl_wherenames[]       = { [ACL_WHERE_RCPT] =               US"RCPT",
                                    [ACL_WHERE_PRDR] =          US"PRDR",
 #endif
                                    [ACL_WHERE_NOTSMTP] =       US"non-SMTP",
+                                   [ACL_WHERE_ATRN] =          US"ATRN",
                                    [ACL_WHERE_AUTH] =          US"AUTH",
                                    [ACL_WHERE_CONNECT] =       US"connection",
                                    [ACL_WHERE_ETRN] =          US"ETRN",
@@ -516,8 +516,10 @@ uschar *acl_wherecodes[]       = { [ACL_WHERE_RCPT] =      US"550",
 #ifndef DISABLE_PRDR
                                    [ACL_WHERE_PRDR] =  US"550",
 #endif
+                                   [ACL_WHERE_ATRN] =  US"450",
                                    [ACL_WHERE_AUTH] =  US"503",
                                    [ACL_WHERE_CONNECT] = US"550",
+                                   [ACL_WHERE_ATRN] =  US"450",
                                    [ACL_WHERE_ETRN] =  US"458",
                                    [ACL_WHERE_EXPN] =  US"550",
                                    [ACL_WHERE_HELO] =  US"550",
@@ -617,14 +619,8 @@ const uschar *address_pipe           = NULL;
 tree_node *addresslist_anchor  = NULL;
 int     addresslist_count      = 0;
 gid_t  *admin_groups           = NULL;
-
-#ifdef EXPERIMENTAL_ARC
-struct arc_set *arc_received   = NULL;
-int     arc_received_instance  = 0;
-int     arc_oldest_pass                = 0;
-const uschar *arc_state                = NULL;
-const uschar *arc_state_reason = NULL;
-#endif
+const uschar *atrn_domains     = NULL;
+const uschar *atrn_host        = NULL;
 
 uschar *authenticated_fail_id  = NULL;
 uschar *authenticated_id       = NULL;
@@ -632,11 +628,13 @@ uschar *authenticated_sender   = NULL;
 auth_instance  *auths          = NULL;
 uschar *auth_advertise_hosts   = US"*";
 auth_instance auth_defaults    = {
-    .next =            NULL,
-    .name =            NULL,
-    .info =            NULL,
-    .options_block =   NULL,
-    .driver_name =     NULL,
+    .drinst = {
+      .next =          NULL,
+      .name =          NULL,
+      .info =          NULL,
+      .options_block = NULL,
+      .driver_name =   NULL,
+    },
     .advertise_condition = NULL,
     .client_condition =        NULL,
     .public_name =     NULL,
@@ -722,7 +720,7 @@ int     clmacro_count          = 0;
 uschar *clmacros[MAX_CLMACROS];
 FILE   *config_file            = NULL;
 const uschar *config_filename  = NULL;
-int     config_lineno          = 0;
+unsigned config_lineno         = 0;
 #ifdef CONFIGURE_GROUP
 gid_t   config_gid             = CONFIGURE_GROUP;
 #else
@@ -754,7 +752,7 @@ const uschar *continue_hostname      = NULL;
 const uschar *continue_host_address  = NULL;
 uschar  continue_next_id[MESSAGE_ID_LENGTH +1] = {[0]='\0'};
 int     continue_sequence      = 1;
-uschar *continue_transport     = NULL;
+const uschar *continue_transport = NULL;
 #ifndef COMPILE_UTILITY
 open_db *continue_retry_db     = NULL;
 open_db *continue_wait_db      = NULL;
@@ -865,34 +863,6 @@ address_item  *deliver_recipients = NULL;
 uschar *deliver_selectstring   = NULL;
 uschar *deliver_selectstring_sender = NULL;
 
-#ifndef DISABLE_DKIM
-unsigned dkim_collect_input      = 0;
-uschar *dkim_cur_signer          = NULL;
-int     dkim_key_length          = 0;
-void   *dkim_signatures                 = NULL;
-uschar *dkim_signers             = NULL;
-uschar *dkim_signing_domain      = NULL;
-uschar *dkim_signing_selector    = NULL;
-gstring *dkim_signing_record    = NULL;
-uschar *dkim_verify_hashes       = US"sha256:sha512";
-uschar *dkim_verify_keytypes     = US"ed25519:rsa";
-uschar *dkim_verify_min_keysizes = US"rsa=1024 ed25519=250";
-BOOL   dkim_verify_minimal      = FALSE;
-uschar *dkim_verify_overall      = NULL;
-uschar *dkim_verify_signers      = US"$dkim_signers";
-uschar *dkim_verify_status      = NULL;
-uschar *dkim_verify_reason      = NULL;
-#endif
-#ifdef SUPPORT_DMARC
-uschar *dmarc_domain_policy     = NULL;
-uschar *dmarc_forensic_sender   = NULL;
-uschar *dmarc_history_file      = NULL;
-uschar *dmarc_status            = NULL;
-uschar *dmarc_status_text       = NULL;
-uschar *dmarc_tld_file          = NULL;
-uschar *dmarc_used_domain       = NULL;
-#endif
-
 uschar *dns_again_means_nonexist = NULL;
 int     dns_csa_search_limit   = 5;
 int    dns_cname_loops        = 1;
@@ -1367,88 +1337,28 @@ uid_t   root_gid               = ROOT_GID;
 uid_t   root_uid               = ROOT_UID;
 
 router_instance  *routers  = NULL;
-router_instance  router_defaults = {
-    .next =                    NULL,
-    .name =                    NULL,
-    .info =                    NULL,
-    .options_block =           NULL,
-    .driver_name =             NULL,
 
-    .address_data =            NULL,
-#ifdef EXPERIMENTAL_BRIGHTMAIL
-    .bmi_rule =                        NULL,
-#endif
-    .cannot_route_message =    NULL,
-    .condition =               NULL,
-    .current_directory =       NULL,
-    .debug_string =            NULL,
-    .domains =                 NULL,
-    .errors_to =               NULL,
-    .expand_gid =              NULL,
-    .expand_uid =              NULL,
-    .expand_more =             NULL,
-    .expand_unseen =           NULL,
-    .extra_headers =           NULL,
-    .fallback_hosts =          NULL,
-    .home_directory =          NULL,
-    .ignore_target_hosts =     NULL,
-    .local_parts =             NULL,
-    .pass_router_name =                NULL,
-    .prefix =                  NULL,
-    .redirect_router_name =    NULL,
-    .remove_headers =          NULL,
-    .require_files =           NULL,
-    .router_home_directory =   NULL,
+/* All elements not mentioned will be 0/NULL/FALSE */
+router_instance  router_defaults = {
     .self =                    US"freeze",
-    .senders =                 NULL,
-    .suffix =                  NULL,
-    .translate_ip_address =    NULL,
-    .transport_name =          NULL,
 
     .address_test =            TRUE,
-#ifdef EXPERIMENTAL_BRIGHTMAIL
-    .bmi_deliver_alternate =   FALSE,
-    .bmi_deliver_default =     FALSE,
-    .bmi_dont_deliver =                FALSE,
-#endif
     .expn =                    TRUE,
-    .caseful_local_part =      FALSE,
-    .check_local_user =                FALSE,
-    .disable_logging =         FALSE,
-    .fail_verify_recipient =   FALSE,
-    .fail_verify_sender =      FALSE,
-    .gid_set =                 FALSE,
-    .initgroups =              FALSE,
     .log_as_local =            TRUE_UNSET,
     .more =                    TRUE,
-    .pass_on_timeout =         FALSE,
-    .prefix_optional =         FALSE,
     .repeat_use =              TRUE,
     .retry_use_local_part =    TRUE_UNSET,
-    .same_domain_copy_routing =        FALSE,
-    .self_rewrite =            FALSE,
-    .set =                     NULL,
-    .suffix_optional =         FALSE,
-    .verify_only =             FALSE,
     .verify_recipient =                TRUE,
     .verify_sender =           TRUE,
-    .uid_set =                 FALSE,
-    .unseen =                  FALSE,
-    .dsn_lasthop =             FALSE,
 
     .self_code =               self_freeze,
     .uid =                     (uid_t)(-1),
     .gid =                     (gid_t)(-1),
 
-    .fallback_hostlist =       NULL,
-    .transport =               NULL,
-    .pass_router =             NULL,
-    .redirect_router =         NULL,
-
     .dnssec =                   { .request= US"*", .require=NULL },
 };
 
-uschar *router_name            = NULL;
+const uschar *router_name      = NULL;
 tree_node *router_var         = NULL;
 
 ip_address_item *running_interfaces = NULL;
@@ -1559,17 +1469,6 @@ uschar *spam_action            = NULL;
 uschar *spam_score             = NULL;
 uschar *spam_score_int         = NULL;
 #endif
-#ifdef SUPPORT_SPF
-uschar *spf_guess              = US"v=spf1 a/24 mx/24 ptr ?all";
-uschar *spf_header_comment     = NULL;
-uschar *spf_received           = NULL;
-uschar *spf_result             = NULL;
-uschar *spf_smtp_comment       = NULL;
-uschar *spf_smtp_comment_template
-                    /* Used to be: "Please%_see%_http://www.open-spf.org/Why?id=%{S}&ip=%{C}&receiver=%{R}" */
-                               = US"Please%_see%_http://www.open-spf.org/Why";
-
-#endif
 
 FILE   *spool_data_file               = NULL;
 uschar *spool_directory        = US SPOOL_DIRECTORY
@@ -1622,7 +1521,7 @@ transport_instance  transport_defaults = {
 };
 
 int     transport_count;
-uschar *transport_name          = NULL;
+const uschar *transport_name          = NULL;
 int     transport_newlines;
 const uschar **transport_filter_argv  = NULL;
 int     transport_filter_timeout;