X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=src%2Fsrc%2Fglobals.c;h=677c03e77074a12831539d54db65149684490870;hb=ab0e957b09b73546a58b27fbce42569d56c1382b;hp=d834373b5cc7dd5e8c4ed8059462357b4b2ccbb3;hpb=8768d5483a5894400ae1f70cda1beb44ed9b087c;p=exim.git diff --git a/src/src/globals.c b/src/src/globals.c index d834373b5..677c03e77 100644 --- a/src/src/globals.c +++ b/src/src/globals.c @@ -102,38 +102,12 @@ them. Also, the tls_ variables are now always visible. Note that these are only used for smtp connections, not for service-daemon access. */ tls_support tls_in = { - .active = {.sock = -1}, - .bits = 0, - .certificate_verified = FALSE, -#ifdef SUPPORT_DANE - .dane_verified = FALSE, - .tlsa_usage = 0, -#endif - .cipher = NULL, - .on_connect = FALSE, - .on_connect_ports = NULL, - .ourcert = NULL, - .peercert = NULL, - .peerdn = NULL, - .sni = NULL, - .ocsp = OCSP_NOT_REQ + .active = {.sock = -1} + /* all other elements zero */ }; tls_support tls_out = { .active = {.sock = -1}, - .bits = 0, - .certificate_verified = FALSE, -#ifdef SUPPORT_DANE - .dane_verified = FALSE, - .tlsa_usage = 0, -#endif - .cipher = NULL, - .on_connect = FALSE, - .on_connect_ports = NULL, - .ourcert = NULL, - .peercert = NULL, - .peerdn = NULL, - .sni = NULL, - .ocsp = OCSP_NOT_REQ + /* all other elements zero */ }; uschar *dsn_envid = NULL; @@ -141,7 +115,7 @@ int dsn_ret = 0; const pcre *regex_DSN = NULL; uschar *dsn_advertise_hosts = NULL; -#ifdef SUPPORT_TLS +#ifndef DISABLE_TLS BOOL gnutls_compat_mode = FALSE; BOOL gnutls_allow_auto_pkcs11 = FALSE; uschar *openssl_options = NULL; @@ -161,15 +135,13 @@ uschar *tls_ocsp_file = NULL; uschar *tls_privatekey = NULL; BOOL tls_remember_esmtp = FALSE; uschar *tls_require_ciphers = NULL; -# ifdef EXPERIMENTAL_REQUIRETLS -uschar tls_requiretls = 0; /* REQUIRETLS_MSG etc. bit #defines */ -uschar *tls_advertise_requiretls = US"*"; -const pcre *regex_REQUIRETLS = NULL; +# ifdef EXPERIMENTAL_TLS_RESUME +uschar *tls_resumption_hosts = NULL; # endif uschar *tls_try_verify_hosts = NULL; uschar *tls_verify_certificates= US"system"; uschar *tls_verify_hosts = NULL; -#else /*!SUPPORT_TLS*/ +#else /*DISABLE_TLS*/ uschar *tls_advertise_hosts = NULL; #endif @@ -267,7 +239,7 @@ struct global_flags f = #ifndef DISABLE_DKIM .dkim_disable_verify = FALSE, #endif -#ifdef EXPERIMENTAL_DMARC +#ifdef SUPPORT_DMARC .dmarc_has_been_checked = FALSE, .dmarc_disable_verify = FALSE, .dmarc_enable_forensic = FALSE, @@ -315,7 +287,6 @@ struct global_flags f = .really_exim = TRUE, .receive_call_bombout = FALSE, .recipients_discarded = FALSE, -/* BOOL rfc821_domains = FALSE; <<< on the way out */ .running_in_test_harness = FALSE, .search_find_defer = FALSE, @@ -325,8 +296,12 @@ struct global_flags f = .sender_local = FALSE, .sender_name_forced = FALSE, .sender_set_untrusted = FALSE, -/* BOOL sender_verified_responded = FALSE; /* never used? */ .smtp_authenticated = FALSE, +#ifdef SUPPORT_PIPE_CONNECT + .smtp_in_early_pipe_advertised = FALSE, + .smtp_in_early_pipe_no_auth = FALSE, + .smtp_in_early_pipe_used = FALSE, +#endif .smtp_in_pipelining_advertised = FALSE, .smtp_in_pipelining_used = FALSE, .spool_file_wireformat = FALSE, @@ -338,6 +313,7 @@ struct global_flags f = .tcp_fastopen_ok = FALSE, .tcp_in_fastopen = FALSE, + .tcp_in_fastopen_data = FALSE, .tcp_in_fastopen_logged = FALSE, .tcp_out_fastopen_logged= FALSE, .timestamps_utc = FALSE, @@ -572,7 +548,7 @@ address_item address_defaults = { .return_filename = NULL, .self_hostname = NULL, .shadow_message = NULL, -#ifdef SUPPORT_TLS +#ifndef DISABLE_TLS .cipher = NULL, .ourcert = NULL, .peercert = NULL, @@ -609,6 +585,7 @@ address_item address_defaults = { .errors_address = NULL, .extra_headers = NULL, .remove_headers = NULL, + .variables = NULL, #ifdef EXPERIMENTAL_SRS .srs_sender = NULL, #endif @@ -706,9 +683,9 @@ int callout_cache_negative_expire = 2*60*60; uschar *callout_random_local_part = US"$primary_hostname-$tod_epoch-testing"; uschar *check_dns_names_pattern= US"(?i)^(?>(?(1)\\.|())[^\\W](?>[a-z0-9/_-]*[^\\W])?)+(\\.?)$"; int check_log_inodes = 100; -int check_log_space = 10*1024; /* 10K Kbyte == 10MB */ +int_eximarith_t check_log_space = 10*1024; /* 10K Kbyte == 10MB */ int check_spool_inodes = 100; -int check_spool_space = 10*1024; /* 10K Kbyte == 10MB */ +int_eximarith_t check_spool_space = 10*1024; /* 10K Kbyte == 10MB */ uschar *chunking_advertise_hosts = US"*"; unsigned chunking_datasize = 0; @@ -772,9 +749,11 @@ int debug_fd = -1; FILE *debug_file = NULL; int debug_notall[] = { Di_memory, + Di_noutf8, -1 }; -bit_table debug_options[] = { /* must be in alphabetical order */ +bit_table debug_options[] = { /* must be in alphabetical order and use + only the enum values from macro.h */ BIT_TABLE(D, acl), BIT_TABLE(D, all), BIT_TABLE(D, auth), @@ -793,6 +772,7 @@ bit_table debug_options[] = { /* must be in alphabetical order */ BIT_TABLE(D, local_scan), BIT_TABLE(D, lookup), BIT_TABLE(D, memory), + BIT_TABLE(D, noutf8), BIT_TABLE(D, pid), BIT_TABLE(D, process_info), BIT_TABLE(D, queue_run), @@ -850,18 +830,21 @@ void *dkim_signatures = NULL; uschar *dkim_signers = NULL; uschar *dkim_signing_domain = NULL; uschar *dkim_signing_selector = NULL; +uschar *dkim_verify_hashes = US"sha256:sha512:sha1"; +uschar *dkim_verify_keytypes = US"ed25519:rsa"; +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 EXPERIMENTAL_DMARC +#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_tld_file = US DMARC_TLD_FILE; uschar *dmarc_used_domain = NULL; #endif @@ -1026,6 +1009,7 @@ int log_default[] = { /* for initializing log_selector */ Li_host_lookup_failed, Li_lost_incoming_connection, Li_outgoing_interface, /* see d_log_interface in deliver.c */ + Li_msg_id, Li_queue_run, Li_rejected_header, Li_retry_defer, @@ -1044,7 +1028,8 @@ uschar *log_file_path = US LOG_FILE_PATH int log_notall[] = { -1 }; -bit_table log_options[] = { /* must be in alphabetical order */ +bit_table log_options[] = { /* must be in alphabetical order, + with definitions from enum logbit. */ BIT_TABLE(L, 8bitmime), BIT_TABLE(L, acl_warn_skipped), BIT_TABLE(L, address_rewrite), @@ -1068,6 +1053,8 @@ bit_table log_options[] = { /* must be in alphabetical order */ BIT_TABLE(L, incoming_port), BIT_TABLE(L, lost_incoming_connection), BIT_TABLE(L, millisec), + BIT_TABLE(L, msg_id), + BIT_TABLE(L, msg_id_created), BIT_TABLE(L, outgoing_interface), BIT_TABLE(L, outgoing_port), BIT_TABLE(L, pid), @@ -1100,6 +1087,7 @@ bit_table log_options[] = { /* must be in alphabetical order */ BIT_TABLE(L, tls_certificate_verified), BIT_TABLE(L, tls_cipher), BIT_TABLE(L, tls_peerdn), + BIT_TABLE(L, tls_resumption), BIT_TABLE(L, tls_sni), BIT_TABLE(L, unknown_in_list), }; @@ -1179,17 +1167,20 @@ uschar *override_pid_file_path = NULL; uschar *percent_hack_domains = NULL; uschar *pid_file_path = US PID_FILE_PATH "\0<--------------Space to patch pid_file_path->"; +#ifdef SUPPORT_PIPE_CONNECT +uschar *pipe_connect_advertise_hosts = US"*"; +#endif uschar *pipelining_advertise_hosts = US"*"; uschar *primary_hostname = NULL; -uschar process_info[PROCESS_INFO_SIZE]; +uschar *process_info; int process_info_len = 0; uschar *process_log_path = NULL; #if defined(SUPPORT_PROXY) || defined(SUPPORT_SOCKS) -uschar *hosts_proxy = US""; -uschar *proxy_external_address = US""; +uschar *hosts_proxy = NULL; +uschar *proxy_external_address = NULL; int proxy_external_port = 0; -uschar *proxy_local_address = US""; +uschar *proxy_local_address = NULL; int proxy_local_port = 0; #endif @@ -1210,7 +1201,7 @@ pid_t queue_run_pid = (pid_t)0; int queue_run_pipe = -1; uschar *queue_smtp_domains = NULL; -unsigned int random_seed = 0; +uint32_t random_seed = 0; tree_node *ratelimiters_cmd = NULL; tree_node *ratelimiters_conn = NULL; tree_node *ratelimiters_mail = NULL; @@ -1236,13 +1227,13 @@ date will be automatically added on the end. */ uschar *received_header_text = US "Received: " "${if def:sender_rcvhost {from $sender_rcvhost\n\t}" - "{${if def:sender_ident {from ${quote_local_part:$sender_ident} }}" - "${if def:sender_helo_name {(helo=$sender_helo_name)\n\t}}}}" + "{${if def:sender_ident {from ${quote_local_part:$sender_ident} }}" + "${if def:sender_helo_name {(helo=$sender_helo_name)\n\t}}}}" "by $primary_hostname " - "${if def:received_protocol {with $received_protocol}} " - #ifdef SUPPORT_TLS - "${if def:tls_cipher {($tls_cipher)\n\t}}" - #endif + "${if def:received_protocol {with $received_protocol }}" +#ifndef DISABLE_TLS + "${if def:tls_in_cipher_std { tls $tls_in_cipher_std\n\t}}" +#endif "(Exim $version_number)\n\t" "${if def:sender_address {(envelope-from <$sender_address>)\n\t}}" "id $message_exim_id" @@ -1266,6 +1257,9 @@ const pcre *regex_From = NULL; const pcre *regex_IGNOREQUOTA = NULL; const pcre *regex_PIPELINING = NULL; const pcre *regex_SIZE = NULL; +#ifdef SUPPORT_PIPE_CONNECT +const pcre *regex_EARLY_PIPE = NULL; +#endif const pcre *regex_ismsgid = NULL; const pcre *regex_smtp_code = NULL; uschar *regex_vars[REGEX_VARS]; @@ -1350,6 +1344,7 @@ router_instance router_defaults = { .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, @@ -1367,10 +1362,11 @@ router_instance router_defaults = { .pass_router = NULL, .redirect_router = NULL, - .dnssec = { NULL, NULL }, /* dnssec_domains {require,request} */ + .dnssec = { .request= US"*", .require=NULL }, }; uschar *router_name = NULL; +tree_node *router_var = NULL; ip_address_item *running_interfaces = NULL; @@ -1416,6 +1412,7 @@ int sender_verified_rc = -1; uschar *sending_ip_address = NULL; int sending_port = -1; SIGNAL_BOOL sigalrm_seen = FALSE; +const uschar *sigalarm_setter = NULL; uschar **sighup_argv = NULL; int slow_lookup_log = 0; /* millisecs, zero disables */ int smtp_accept_count = 0; @@ -1518,13 +1515,16 @@ gid_t system_filter_gid = 0; uid_t system_filter_uid = (uid_t)-1; blob tcp_fastopen_nodata = { .data = NULL, .len = 0 }; -int tcp_out_fastopen = 0; +tfo_state_t tcp_out_fastopen = TFO_NOT_USED; #ifdef USE_TCP_WRAPPERS uschar *tcp_wrappers_daemon_name = US TCP_WRAPPERS_DAEMON_NAME; #endif int test_harness_load_avg = 0; int thismessage_size_limit = 0; int timeout_frozen_after = 0; +#ifdef MEASURE_TIMING +struct timeval timestamp_startup; +#endif transport_instance *transports = NULL;