build: use pkg-config for i18n
[exim.git] / src / src / globals.c
index 2885caa2309973f79e500ff926ba4dad70a91c49..e887c27410aefc9b2ec40275ee157c16b01ad3b5 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) The Exim Maintainers 2020 - 2023 */
+/* Copyright (c) The Exim Maintainers 2020 - 2024 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 /* SPDX-License-Identifier: GPL-2.0-or-later */
@@ -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,
   { "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,
   { "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;
 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;
 BOOL    split_spool_directory  = FALSE;
 BOOL    spool_wireformat       = FALSE;
 BOOL    strict_acl_vars        = FALSE;
@@ -467,7 +464,7 @@ uschar *acl_smtp_quit          = NULL;
 uschar *acl_smtp_rcpt          = NULL;
 uschar *acl_smtp_starttls      = NULL;
 uschar *acl_smtp_vrfy          = NULL;
 uschar *acl_smtp_rcpt          = NULL;
 uschar *acl_smtp_starttls      = NULL;
 uschar *acl_smtp_vrfy          = NULL;
-#ifdef EXPERIMENTAL_WELLKNOWN
+#ifndef DISABLE_WELLKNOWN
 uschar *acl_smtp_wellknown     = NULL;
 #endif
 
 uschar *acl_smtp_wellknown     = NULL;
 #endif
 
@@ -475,6 +472,7 @@ tree_node *acl_var_c           = NULL;
 tree_node *acl_var_m           = NULL;
 uschar *acl_verify_message     = NULL;
 string_item *acl_warn_logged   = 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) */
 
 /* Names of SMTP places for use in ACL error messages, and corresponding SMTP
 error codes (only those used) */
@@ -500,6 +498,9 @@ uschar *acl_wherenames[]       = { [ACL_WHERE_RCPT] =               US"RCPT",
                                    [ACL_WHERE_QUIT] =          US"QUIT",
                                    [ACL_WHERE_STARTTLS] =      US"STARTTLS",
                                    [ACL_WHERE_VRFY] =          US"VRFY",
                                    [ACL_WHERE_QUIT] =          US"QUIT",
                                    [ACL_WHERE_STARTTLS] =      US"STARTTLS",
                                    [ACL_WHERE_VRFY] =          US"VRFY",
+#ifndef DISABLE_WELLKNOWN
+                                  [ACL_WHERE_WELLKNOWN] =      US"WELLKNOWN",
+#endif
                                   [ACL_WHERE_DELIVERY] =       US"delivery",
                                   [ACL_WHERE_UNKNOWN] =        US"unknown"
                                  };
                                   [ACL_WHERE_DELIVERY] =       US"delivery",
                                   [ACL_WHERE_UNKNOWN] =        US"unknown"
                                  };
@@ -519,6 +520,9 @@ uschar *acl_wherecodes[]       = { [ACL_WHERE_RCPT] =       US"550",
                                    [ACL_WHERE_EXPN] =  US"550",
                                    [ACL_WHERE_HELO] =  US"550",
                                    [ACL_WHERE_STARTTLS] = US"550",
                                    [ACL_WHERE_EXPN] =  US"550",
                                    [ACL_WHERE_HELO] =  US"550",
                                    [ACL_WHERE_STARTTLS] = US"550",
+#ifndef DISABLE_WELLKNOWN
+                                   [ACL_WHERE_WELLKNOWN] =US"550",
+#endif
                                    [ACL_WHERE_VRFY] =  US"252",
                                  };
 
                                    [ACL_WHERE_VRFY] =  US"252",
                                  };
 
@@ -612,25 +616,19 @@ tree_node *addresslist_anchor  = NULL;
 int     addresslist_count      = 0;
 gid_t  *admin_groups           = 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
-
 uschar *authenticated_fail_id  = NULL;
 uschar *authenticated_id       = NULL;
 uschar *authenticated_sender   = NULL;
 auth_instance  *auths          = NULL;
 uschar *auth_advertise_hosts   = US"*";
 auth_instance auth_defaults    = {
 uschar *authenticated_fail_id  = NULL;
 uschar *authenticated_id       = NULL;
 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,
     .advertise_condition = NULL,
     .client_condition =        NULL,
     .public_name =     NULL,
@@ -716,7 +714,7 @@ int     clmacro_count          = 0;
 uschar *clmacros[MAX_CLMACROS];
 FILE   *config_file            = NULL;
 const uschar *config_filename  = NULL;
 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
 #ifdef CONFIGURE_GROUP
 gid_t   config_gid             = CONFIGURE_GROUP;
 #else
@@ -733,19 +731,26 @@ uid_t   config_uid             = CONFIGURE_OWNER;
 uid_t   config_uid             = 0;
 #endif
 
 uid_t   config_uid             = 0;
 #endif
 
-uint64_t connection_id        = 0L;
+const uschar *connection_id    = NULL;
 int     connection_max_messages= -1;
 int     connection_max_messages= -1;
-uschar *continue_proxy_cipher  = NULL;
-BOOL    continue_proxy_dane    = FALSE;
-uschar *continue_proxy_sni     = NULL;
-uschar *continue_hostname      = NULL;
-uschar *continue_host_address  = NULL;
-int     continue_sequence      = 1;
-uschar *continue_transport     = NULL;
+unsigned continue_flags               = 0;
 #ifndef DISABLE_ESMTP_LIMITS
 unsigned continue_limit_mail   = 0;
 unsigned continue_limit_rcpt   = 0;
 unsigned continue_limit_rcptdom= 0;
 #ifndef DISABLE_ESMTP_LIMITS
 unsigned continue_limit_mail   = 0;
 unsigned continue_limit_rcpt   = 0;
 unsigned continue_limit_rcptdom= 0;
+int    continue_fd            = -1;
+uschar *continue_proxy_cipher  = NULL;
+BOOL    continue_proxy_dane    = FALSE;
+uschar *continue_proxy_sni     = NULL;
+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;
+const uschar *continue_transport = NULL;
+#ifndef COMPILE_UTILITY
+open_db *continue_retry_db     = NULL;
+open_db *continue_wait_db      = NULL;
+#endif
 #endif
 
 uschar *csa_status             = NULL;
 #endif
 
 uschar *csa_status             = NULL;
@@ -852,34 +857,6 @@ address_item  *deliver_recipients = NULL;
 uschar *deliver_selectstring   = NULL;
 uschar *deliver_selectstring_sender = 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;
 uschar *dns_again_means_nonexist = NULL;
 int     dns_csa_search_limit   = 5;
 int    dns_cname_loops        = 1;
@@ -909,10 +886,10 @@ int     error_handling         = ERRORS_SENDER;
 uschar *errors_reply_to        = NULL;
 int     errors_sender_rc       = EXIT_FAILURE;
 #ifndef DISABLE_EVENT
 uschar *errors_reply_to        = NULL;
 int     errors_sender_rc       = EXIT_FAILURE;
 #ifndef DISABLE_EVENT
-uschar *event_action             = NULL;       /* expansion for delivery events */
-uschar *event_data               = NULL;       /* auxiliary data variable for event */
-int     event_defer_errno        = 0;
-const uschar *event_name         = NULL;       /* event name variable */
+uschar *event_action           = NULL; /* expansion for delivery events */
+const uschar *event_data       = NULL; /* auxiliary data variable for event */
+int     event_defer_errno      = 0;
+const uschar *event_name       = NULL; /* event name variable */
 #endif
 
 
 #endif
 
 
@@ -999,9 +976,6 @@ uschar *hosts_proxy            = NULL;
 #endif
 uschar *hosts_treat_as_local   = NULL;
 uschar *hosts_require_helo     = US"*";
 #endif
 uschar *hosts_treat_as_local   = NULL;
 uschar *hosts_require_helo     = US"*";
-#ifdef EXPERIMENTAL_WELLKNOWN
-uschar *hosts_wellknown               = NULL;
-#endif
 #ifdef EXPERIMENTAL_XCLIENT
 uschar *hosts_xclient         = NULL;
 #endif
 #ifdef EXPERIMENTAL_XCLIENT
 uschar *hosts_xclient         = NULL;
 #endif
@@ -1357,88 +1331,28 @@ uid_t   root_gid               = ROOT_GID;
 uid_t   root_uid               = ROOT_UID;
 
 router_instance  *routers  = NULL;
 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",
     .self =                    US"freeze",
-    .senders =                 NULL,
-    .suffix =                  NULL,
-    .translate_ip_address =    NULL,
-    .transport_name =          NULL,
 
     .address_test =            TRUE,
 
     .address_test =            TRUE,
-#ifdef EXPERIMENTAL_BRIGHTMAIL
-    .bmi_deliver_alternate =   FALSE,
-    .bmi_deliver_default =     FALSE,
-    .bmi_dont_deliver =                FALSE,
-#endif
     .expn =                    TRUE,
     .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,
     .log_as_local =            TRUE_UNSET,
     .more =                    TRUE,
-    .pass_on_timeout =         FALSE,
-    .prefix_optional =         FALSE,
     .repeat_use =              TRUE,
     .retry_use_local_part =    TRUE_UNSET,
     .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,
     .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),
 
 
     .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 },
 };
 
     .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;
 tree_node *router_var         = NULL;
 
 ip_address_item *running_interfaces = NULL;
@@ -1549,17 +1463,6 @@ uschar *spam_action            = NULL;
 uschar *spam_score             = NULL;
 uschar *spam_score_int         = NULL;
 #endif
 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
 
 FILE   *spool_data_file               = NULL;
 uschar *spool_directory        = US SPOOL_DIRECTORY
@@ -1612,7 +1515,7 @@ transport_instance  transport_defaults = {
 };
 
 int     transport_count;
 };
 
 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;
 int     transport_newlines;
 const uschar **transport_filter_argv  = NULL;
 int     transport_filter_timeout;
@@ -1659,7 +1562,7 @@ uschar *uucp_from_sender       = US"$1";
 uschar *verify_mode           = NULL;
 uschar *version_copyright      =
  US"Copyright (c) University of Cambridge, 1995 - 2018\n"
 uschar *verify_mode           = NULL;
 uschar *version_copyright      =
  US"Copyright (c) University of Cambridge, 1995 - 2018\n"
-   "(c) The Exim Maintainers and contributors in ACKNOWLEDGMENTS file, 2007 - 2022";
+   "(c) The Exim Maintainers and contributors in ACKNOWLEDGMENTS file, 2007 - 2024";
 uschar *version_date           = US"?";
 uschar *version_cnumber        = US"????";
 uschar *version_string         = US"?";
 uschar *version_date           = US"?";
 uschar *version_cnumber        = US"????";
 uschar *version_string         = US"?";
@@ -1669,6 +1572,11 @@ int     warning_count          = 0;
 const uschar *warnmsg_delay    = NULL;
 const uschar *warnmsg_recipients = NULL;
 
 const uschar *warnmsg_delay    = NULL;
 const uschar *warnmsg_recipients = NULL;
 
+#ifndef DISABLE_WELLKNOWN
+uschar *wellknown_advertise_hosts = NULL;
+uschar *wellknown_response     = NULL;
+#endif
+
 /*  End of globals.c */
 /* vi: aw ai sw=2
 */
 /*  End of globals.c */
 /* vi: aw ai sw=2
 */