X-Git-Url: https://git.exim.org/exim.git/blobdiff_plain/9643095d7cae6866b716d361a45c9a95f605040c..HEAD:/src/src/globals.h?ds=sidebyside diff --git a/src/src/globals.h b/src/src/globals.h index fe4a1610a..5d912254d 100644 --- a/src/src/globals.h +++ b/src/src/globals.h @@ -2,11 +2,14 @@ * 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 */ +#ifndef GLOBALS_H +#define GLOBALS_H + /* Almost all the global variables are defined together in this one header, so that they are easy to find. However, those that are visible during the compilation of the local_scan() function are defined separately in the @@ -342,10 +345,14 @@ extern uschar *acl_smtp_quit; /* ACL run for QUIT */ extern uschar *acl_smtp_rcpt; /* ACL run for RCPT */ extern uschar *acl_smtp_starttls; /* ACL run for STARTTLS */ extern uschar *acl_smtp_vrfy; /* ACL run for VRFY */ +#ifndef DISABLE_WELLKNOWN +extern uschar *acl_smtp_wellknown; /* ACL run for WELLKNOWN */ +#endif extern tree_node *acl_var_c; /* ACL connection variables */ extern tree_node *acl_var_m; /* ACL message variables */ extern uschar *acl_verify_message; /* User message for verify failure */ extern string_item *acl_warn_logged; /* Logged lines */ +extern int acl_where; /* Current running ACL */ extern uschar *acl_wherecodes[]; /* Response codes for ACL fails */ extern uschar *acl_wherenames[]; /* Names for messages */ extern address_item *addr_duplicate; /* Duplicate address list */ @@ -357,13 +364,6 @@ extern int addresslist_count; /* Number defined */ extern gid_t *admin_groups; /* List of admin groups */ extern BOOL allow_domain_literals; /* As it says */ extern BOOL allow_mx_to_ip; /* Allow MX records to -> ip address */ -#ifdef EXPERIMENTAL_ARC -extern struct arc_set *arc_received; /* highest ARC instance evaluation struct */ -extern int arc_received_instance; /* highest ARC instance number in headers */ -extern int arc_oldest_pass; /* lowest passing instance number in headers */ -extern const uschar *arc_state; /* verification state */ -extern const uschar *arc_state_reason; -#endif extern BOOL allow_utf8_domains; /* For experimenting */ extern uschar *authenticated_fail_id; /* ID that failed authentication */ extern uschar *authenticated_id; /* ID that was authenticated */ @@ -371,7 +371,7 @@ extern uschar *authenticated_sender; /* From AUTH on MAIL */ extern BOOL authentication_failed; /* TRUE if AUTH was tried and failed */ extern uschar *authenticator_name; /* for debug and error messages */ extern uschar *auth_advertise_hosts; /* Only advertise to these */ -extern auth_info auths_available[]; /* Vector of available auth mechanisms */ +extern auth_info * auths_available; /* List of available auth mechanisms */ extern auth_instance *auths; /* Chain of instantiated auths */ extern auth_instance auth_defaults; /* Default values */ extern uschar *auth_defer_msg; /* Error message for log */ @@ -432,27 +432,34 @@ extern gstring *client_cmd_log; /* debug log of client cmds & responses * extern int clmacro_count; /* Number of command line macros */ extern uschar *clmacros[]; /* Copy of them, for re-exec */ extern BOOL commandline_checks_require_admin; /* belt and braces for insecure setups */ -extern uint64_t connection_id; /* connection number */ +extern const uschar *connection_id; /* connection cookie for log */ extern int connection_max_messages;/* Max down one SMTP connection */ extern FILE *config_file; /* Configuration file */ extern const uschar *config_filename; /* Configuration file name */ extern gid_t config_gid; /* Additional group owner */ -extern int config_lineno; /* Line number */ +extern unsigned config_lineno; /* Line number */ extern const uschar *config_main_filelist; /* List of possible config files */ extern uschar *config_main_filename; /* File name actually used */ extern uschar *config_main_directory; /* Directory where the main config file was found */ extern uid_t config_uid; /* Additional owner */ +extern unsigned continue_flags; /* TLS-related info for connection */ +#ifndef DISABLE_ESMTP_LIMITS +extern unsigned continue_limit_mail; /* Peer advertised limit */ +extern unsigned continue_limit_rcpt; +extern unsigned continue_limit_rcptdom; +#endif +extern int continue_fd; /* Connection for continuation */ extern uschar *continue_proxy_cipher; /* TLS cipher for proxied continued delivery */ extern BOOL continue_proxy_dane; /* proxied conn is DANE */ extern uschar *continue_proxy_sni; /* proxied conn SNI */ -extern uschar *continue_hostname; /* Host for continued delivery */ -extern uschar *continue_host_address; /* IP address for ditto */ +extern const uschar *continue_hostname; /* Host for continued delivery */ +extern const uschar *continue_host_address; /* IP address for ditto */ +extern uschar continue_next_id[]; /* Next message_id from hintsdb */ extern int continue_sequence; /* Sequence num for continued delivery */ -extern uschar *continue_transport; /* Transport for continued delivery */ -#ifdef EXPERIMENTAL_ESMTP_LIMITS -extern unsigned continue_limit_mail; /* Peer advertised limit */ -extern unsigned continue_limit_rcpt; -extern unsigned continue_limit_rcptdom; +extern const uschar *continue_transport; /* Transport for continued delivery */ +#ifndef COMPILE_UTILITY +extern open_db *continue_retry_db; /* Hintsdb for retries */ +extern open_db *continue_wait_db; /* Hintsdb for wait-transport */ #endif @@ -535,33 +542,6 @@ extern BOOL disable_fsync; /* Not for normal use */ #endif extern BOOL disable_ipv6; /* Don't do any IPv6 things */ -#ifndef DISABLE_DKIM -extern unsigned dkim_collect_input; /* Runtime count of dkim signtures; tracks whether SMTP input is fed to DKIM validation */ -extern uschar *dkim_cur_signer; /* Expansion variable, holds the current "signer" domain or identity during a acl_smtp_dkim run */ -extern int dkim_key_length; /* Expansion variable, length of signing key in bits */ -extern void *dkim_signatures; /* Actually a (pdkim_signature *) but most files do not need to know */ -extern uschar *dkim_signers; /* Expansion variable, holds colon-separated list of domains and identities that have signed a message */ -extern uschar *dkim_signing_domain; /* Expansion variable, domain used for signing a message. */ -extern uschar *dkim_signing_selector; /* Expansion variable, selector used for signing a message. */ -extern uschar *dkim_verify_hashes; /* Preference order for signatures */ -extern uschar *dkim_verify_keytypes; /* Preference order for signatures */ -extern uschar *dkim_verify_min_keysizes; /* list of minimum key sizes, keyed by algo */ -extern BOOL dkim_verify_minimal; /* Shortcircuit signature verification */ -extern uschar *dkim_verify_overall; /* First successful domain verified, or null */ -extern uschar *dkim_verify_signers; /* Colon-separated list of domains for each of which we call the DKIM ACL */ -extern uschar *dkim_verify_status; /* result for this signature */ -extern uschar *dkim_verify_reason; /* result for this signature */ -#endif -#ifdef SUPPORT_DMARC -extern uschar *dmarc_domain_policy; /* Expansion for declared policy of used domain */ -extern uschar *dmarc_forensic_sender; /* Set sender address for forensic reports */ -extern uschar *dmarc_history_file; /* Expansion variable, file to store dmarc results */ -extern uschar *dmarc_status; /* Expansion variable, one word value */ -extern uschar *dmarc_status_text; /* Expansion variable, human readable value */ -extern uschar *dmarc_tld_file; /* Mozilla TLDs text file */ -extern uschar *dmarc_used_domain; /* Expansion variable, domain libopendmarc chose for DMARC policy lookup */ -#endif - extern uschar *dns_again_means_nonexist; /* Domains that are badly set up */ extern int dns_csa_search_limit; /* How deep to search for CSA SRV records */ extern BOOL dns_csa_use_reverse; /* Check CSA in reverse DNS? (non-standard) */ @@ -601,7 +581,7 @@ extern int errors_sender_rc; /* Return after message to sender*/ #ifndef DISABLE_EVENT extern uschar *event_action; /* expansion for delivery events */ -extern uschar *event_data; /* event data */ +extern const uschar *event_data; /* event data */ extern int event_defer_errno; /* error number set when a remote delivery is deferred with a host error */ extern const uschar *event_name; /* event classification */ #endif @@ -609,7 +589,6 @@ extern const uschar *event_name; /* event classification */ extern gid_t exim_gid; /* To be used with exim_uid */ extern BOOL exim_gid_set; /* TRUE if exim_gid set */ extern uschar *exim_path; /* Path to exec exim */ -extern const uschar *exim_sieve_extension_list[]; /* list of sieve extensions */ extern uid_t exim_uid; /* Non-root uid for exim */ extern BOOL exim_uid_set; /* TRUE if exim_uid set */ extern int expand_level; /* Nesting depth; indent for debug */ @@ -687,7 +666,7 @@ extern int keep_malformed; /* Time to keep malformed messages */ extern uschar *eldap_dn; /* Where LDAP DNs are left */ extern const uschar *letter_digit_hyphen_dot; /* Legitimate DNS host name chars */ -#ifdef EXPERIMENTAL_ESMTP_LIMITS +#ifndef DISABLE_ESMTP_LIMITS extern uschar *limits_advertise_hosts; /* for banner/EHLO pipelining */ #endif extern int load_average; /* Most recently read load average */ @@ -718,8 +697,8 @@ extern uschar *log_selector_string; /* As supplied in the config */ extern FILE *log_stderr; /* Copy of stderr for log use, or NULL */ extern BOOL log_timezone; /* TRUE to include the timezone in log lines */ extern uschar *login_sender_address; /* The actual sender address */ -extern lookup_info **lookup_list; /* Array of pointers to available lookups */ -extern int lookup_list_count; /* Number of entries in the list */ +extern tree_node *lookups_tree; /* Tree of available lookups */ +extern unsigned lookup_list_count; /* Number of entries in the list */ extern uschar *lookup_dnssec_authenticated; /* AD status of dns lookup */ extern int lookup_open_max; /* Max lookup files to cache */ extern uschar *lookup_value; /* Value looked up from file */ @@ -894,14 +873,15 @@ extern uschar *recipient_data; /* lookup data for recipients */ extern uschar *recipient_unqualified_hosts; /* Permitted unqualified recipients */ extern uschar *recipient_verify_failure; /* What went wrong */ extern int recipients_list_max; /* Maximum number fitting in list */ -extern int recipients_max; /* Max permitted */ +extern uschar *recipients_max; /* Max permitted */ +extern int recipients_max_expanded; extern BOOL recipients_max_reject; /* If TRUE, reject whole message */ extern const pcre2_code *regex_AUTH; /* For recognizing AUTH settings */ extern const pcre2_code *regex_check_dns_names; /* For DNS name checking */ extern const pcre2_code *regex_From; /* For recognizing "From_" lines */ extern const pcre2_code *regex_CHUNKING; /* For recognizing CHUNKING (RFC 3030) */ extern const pcre2_code *regex_IGNOREQUOTA; /* For recognizing IGNOREQUOTA (LMTP) */ -#ifdef EXPERIMENTAL_ESMTP_LIMITS +#ifndef DISABLE_ESMTP_LIMITS extern const pcre2_code *regex_LIMITS; /* For recognizing LIMITS */ #endif extern const pcre2_code *regex_PIPELINING; /* For recognizing PIPELINING */ @@ -934,10 +914,10 @@ extern int rfc1413_query_timeout; /* Timeout on RFC 1413 calls */ /* extern BOOL rfc821_domains; */ /* If set, syntax is 821, not 822 => being abolished */ extern uid_t root_gid; /* The gid for root */ extern uid_t root_uid; /* The uid for root */ -extern router_info routers_available[];/* Vector of available routers */ +extern router_info *routers_available; /* List of available router drivers */ extern router_instance *routers; /* Chain of instantiated routers */ extern router_instance router_defaults;/* Default values */ -extern uschar *router_name; /* Name of router last started */ +extern const uschar *router_name; /* Name of router last started */ extern tree_node *router_var; /* Variables set by router */ extern ip_address_item *running_interfaces; /* Host's running interfaces */ extern uschar *running_status; /* Flag string for testing */ @@ -1037,16 +1017,6 @@ extern uschar *spam_action; /* the spamd recommended-action */ extern uschar *spam_score; /* the spam score (float) */ extern uschar *spam_score_int; /* spam_score * 10 (int) */ #endif -#ifdef SUPPORT_SPF -extern uschar *spf_guess; /* spf best-guess record */ -extern uschar *spf_header_comment; /* spf header comment */ -extern uschar *spf_received; /* Received-SPF: header */ -extern uschar *spf_result; /* spf result in string form */ -extern BOOL spf_result_guessed; /* spf result is of best-guess operation */ -extern uschar *spf_smtp_comment; /* spf comment to include in SMTP reply */ -extern uschar *spf_smtp_comment_template; - /* template to construct the spf comment by libspf2 */ -#endif extern BOOL split_spool_directory; /* TRUE to use multiple subdirs */ extern FILE *spool_data_file; /* handle for -D file */ extern uschar *spool_directory; /* Name of spool directory */ @@ -1092,15 +1062,15 @@ extern int timeout_frozen_after; /* Max time to keep frozen messages */ extern struct timeval timestamp_startup; /* For development measurements */ #endif -extern uschar *transport_name; /* Name of transport last started */ +extern const uschar *transport_name; /* Name of transport last started */ extern int transport_count; /* Count of bytes transported */ extern int transport_newlines; /* Accurate count of number of newline chars transported */ extern const uschar **transport_filter_argv; /* For on-the-fly filtering */ extern int transport_filter_timeout; /* Timeout for same */ -extern transport_info transports_available[]; /* Vector of available transports */ -extern transport_instance *transports; /* Chain of instantiated transports */ -extern transport_instance transport_defaults; /* Default values */ +extern transport_info * transports_available; /* Listof available transports */ +extern transport_instance *transports; /* Chain of instantiated transports */ +extern transport_instance transport_defaults; /* Default values */ extern int transport_write_timeout;/* Set to time out individual writes */ @@ -1132,4 +1102,10 @@ extern uschar *version_string; /* Version string */ extern int warning_count; /* Delay warnings sent for this msg */ +#ifndef DISABLE_WELLKNOWN +extern uschar *wellknown_advertise_hosts;/* Allow WELLKNOWN command for specified hosts */ +extern uschar *wellknown_response; /* SMTP response for WELLKNOWN verb */ +#endif + +#endif /* whole file */ /* End of globals.h */