X-Git-Url: https://git.exim.org/exim.git/blobdiff_plain/d5b80e59458182b2d557a929a18cb8c70cd56b68..d16931c81f3e500fa6eafe5ec1c5d8e7db63e65a:/src/src/globals.c diff --git a/src/src/globals.c b/src/src/globals.c index 57041fc4e..10045f482 100644 --- a/src/src/globals.c +++ b/src/src/globals.c @@ -2,7 +2,7 @@ * Exim - an Internet mail transport agent * *************************************************/ -/* Copyright (c) University of Cambridge 1995 - 2017 */ +/* Copyright (c) University of Cambridge 1995 - 2018 */ /* See the file NOTICE for conditions of use and distribution. */ /* All the global variables are defined together in this one module, so @@ -98,13 +98,14 @@ BOOL move_frozen_messages = FALSE; /* These variables are outside the #ifdef because it keeps the code less cluttered in several places (e.g. during logging) if we can always refer to -them. Also, the tls_ variables are now always visible. */ +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 = -1, + .active = {.sock = -1}, .bits = 0, .certificate_verified = FALSE, -#ifdef EXPERIMENTAL_DANE +#ifdef SUPPORT_DANE .dane_verified = FALSE, .tlsa_usage = 0, #endif @@ -118,10 +119,10 @@ tls_support tls_in = { .ocsp = OCSP_NOT_REQ }; tls_support tls_out = { - .active = -1, + .active = {.sock = -1}, .bits = 0, .certificate_verified = FALSE, -#ifdef EXPERIMENTAL_DANE +#ifdef SUPPORT_DANE .dane_verified = FALSE, .tlsa_usage = 0, #endif @@ -160,6 +161,11 @@ 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; +# endif uschar *tls_try_verify_hosts = NULL; uschar *tls_verify_certificates= US"system"; uschar *tls_verify_hosts = NULL; @@ -420,11 +426,21 @@ BOOL allow_domain_literals = FALSE; BOOL allow_mx_to_ip = FALSE; BOOL allow_unqualified_recipient = TRUE; /* For local messages */ BOOL allow_unqualified_sender = TRUE; /* Reset for SMTP */ -BOOL allow_utf8_domains = FALSE; +BOOL allow_utf8_domains = FALSE; + +#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; BOOL authentication_failed = FALSE; +BOOL authentication_local = FALSE; auth_instance *auths = NULL; uschar *auth_advertise_hosts = US"*"; auth_instance auth_defaults = { @@ -488,7 +504,6 @@ int bounce_return_linesize_limit = 998; BOOL bounce_return_message = TRUE; int bounce_return_size_limit = 100*1024; uschar *bounce_sender_authentication = NULL; -uschar *builtin_macros_create_trigger = NULL; uschar *callout_address = NULL; int callout_cache_domain_positive_expire = 7*24*60*60; @@ -550,7 +565,7 @@ cut_t cutthrough = { .delivery = FALSE, /* when to attempt */ .defer_pass = FALSE, /* on defer: spool locally */ .is_tls = FALSE, /* not a TLS conn yet */ - .fd = -1, /* open connection */ + .cctx = {.sock = -1}, /* open connection */ .nrcpt = 0, /* number of addresses */ }; @@ -660,18 +675,21 @@ BOOL disable_ipv6 = FALSE; BOOL disable_logging = FALSE; #ifndef DISABLE_DKIM -BOOL dkim_collect_input = FALSE; +unsigned dkim_collect_input = 0; uschar *dkim_cur_signer = NULL; BOOL dkim_disable_verify = FALSE; int dkim_key_length = 0; +void *dkim_signatures = NULL; uschar *dkim_signers = NULL; uschar *dkim_signing_domain = NULL; uschar *dkim_signing_selector = NULL; +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 BOOL dmarc_has_been_checked = FALSE; -uschar *dmarc_ar_header = NULL; uschar *dmarc_domain_policy = NULL; uschar *dmarc_forensic_sender = NULL; uschar *dmarc_history_file = NULL; @@ -686,7 +704,8 @@ BOOL dmarc_enable_forensic = FALSE; uschar *dns_again_means_nonexist = NULL; int dns_csa_search_limit = 5; BOOL dns_csa_use_reverse = TRUE; -#ifdef EXPERIMENTAL_DANE +int dns_cname_loops = 1; +#ifdef SUPPORT_DANE int dns_dane_ok = -1; #endif uschar *dns_ipv4_lookup = NULL; @@ -759,6 +778,10 @@ uschar *gecos_name = NULL; uschar *gecos_pattern = NULL; rewrite_rule *global_rewrite_rules = NULL; +volatile sig_atomic_t had_command_timeout = 0; +volatile sig_atomic_t had_command_sigterm = 0; +volatile sig_atomic_t had_data_timeout = 0; +volatile sig_atomic_t had_data_sigint = 0; uschar *headers_charset = US HEADERS_CHARSET; int header_insert_maxlen = 64 * 1024; header_line *header_last = NULL; @@ -783,7 +806,7 @@ header_name header_names[] = { { US"to", 2, TRUE, htype_to } }; -int header_names_size = sizeof(header_names)/sizeof(header_name); +int header_names_size = nelem(header_names); BOOL header_rewritten = FALSE; uschar *helo_accept_junk_hosts = NULL; @@ -842,8 +865,10 @@ uschar *local_interfaces = US"<; ::0 ; 0.0.0.0"; uschar *local_interfaces = US"0.0.0.0"; #endif +#ifdef HAVE_LOCAL_SCAN uschar *local_scan_data = NULL; int local_scan_timeout = 5*60; +#endif BOOL local_sender_retain = FALSE; gid_t local_user_gid = (gid_t)(-1); uid_t local_user_uid = (uid_t)(-1); @@ -856,6 +881,7 @@ int log_default[] = { /* for initializing log_selector */ Li_acl_warn_skipped, Li_connection_reject, Li_delay_delivery, + Li_dkim, Li_dnslist_defer, Li_etrn, Li_host_lookup_failed, @@ -890,6 +916,10 @@ bit_table log_options[] = { /* must be in alphabetical order */ BIT_TABLE(L, delay_delivery), BIT_TABLE(L, deliver_time), BIT_TABLE(L, delivery_size), +#ifndef DISABLE_DKIM + BIT_TABLE(L, dkim), + BIT_TABLE(L, dkim_verbose), +#endif BIT_TABLE(L, dnslist_defer), BIT_TABLE(L, dnssec), BIT_TABLE(L, etrn), @@ -902,12 +932,13 @@ bit_table log_options[] = { /* must be in alphabetical order */ BIT_TABLE(L, outgoing_interface), BIT_TABLE(L, outgoing_port), BIT_TABLE(L, pid), -#if defined(SUPPORT_PROXY) || defined (SUPPORT_SOCKS) +#if defined(SUPPORT_PROXY) || defined(SUPPORT_SOCKS) BIT_TABLE(L, proxy), #endif BIT_TABLE(L, queue_run), BIT_TABLE(L, queue_time), BIT_TABLE(L, queue_time_overall), + BIT_TABLE(L, receive_time), BIT_TABLE(L, received_recipients), BIT_TABLE(L, received_sender), BIT_TABLE(L, rejected_header), @@ -945,6 +976,7 @@ uschar *lookup_dnssec_authenticated = NULL; int lookup_open_max = 25; uschar *lookup_value = NULL; +macro_item *macros_user = NULL; uschar *mailstore_basename = NULL; #ifdef WITH_CONTENT_SCAN uschar *malware_name = NULL; /* Virus Name */ @@ -1113,6 +1145,7 @@ uschar *received_header_text = US int received_headers_max = 30; uschar *received_protocol = NULL; struct timeval received_time = { 0, 0 }; +struct timeval received_time_taken = { 0, 0 }; uschar *recipient_data = NULL; uschar *recipient_unqualified_hosts = NULL; uschar *recipient_verify_failure = NULL; @@ -1267,6 +1300,7 @@ uschar *sender_helo_name = NULL; uschar **sender_host_aliases = &no_aliases; uschar *sender_host_address = NULL; uschar *sender_host_authenticated = NULL; +uschar *sender_host_auth_pubname = NULL; unsigned int sender_host_cache[(MAX_NAMED_LIST * 2)/32]; BOOL sender_host_dnssec = FALSE; uschar *sender_host_name = NULL; @@ -1358,15 +1392,17 @@ uschar *spam_action = NULL; uschar *spam_score = NULL; uschar *spam_score_int = NULL; #endif -#ifdef EXPERIMENTAL_SPF +#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; +BOOL spf_result_guessed = FALSE; uschar *spf_smtp_comment = NULL; #endif BOOL split_spool_directory = FALSE; +FILE *spool_data_file = NULL; uschar *spool_directory = US SPOOL_DIRECTORY "\0<--------------Space to patch spool_directory->"; BOOL spool_file_wireformat = FALSE; @@ -1421,7 +1457,7 @@ blob tcp_fastopen_nodata = { .data = NULL, .len = 0 }; BOOL tcp_in_fastopen = FALSE; BOOL tcp_in_fastopen_logged = FALSE; BOOL tcp_nodelay = TRUE; -BOOL tcp_out_fastopen = FALSE; +int tcp_out_fastopen = 0; BOOL tcp_out_fastopen_logged= FALSE; #ifdef USE_TCP_WRAPPERS uschar *tcp_wrappers_daemon_name = US TCP_WRAPPERS_DAEMON_NAME; @@ -1540,8 +1576,8 @@ uschar *uucp_from_sender = US"$1"; uschar *verify_mode = NULL; uschar *version_copyright = - US"Copyright (c) University of Cambridge, 1995 - 2017\n" - "(c) The Exim Maintainers and contributors in ACKNOWLEDGMENTS file, 2007 - 2017"; + US"Copyright (c) University of Cambridge, 1995 - 2018\n" + "(c) The Exim Maintainers and contributors in ACKNOWLEDGMENTS file, 2007 - 2018"; uschar *version_date = US"?"; uschar *version_cnumber = US"????"; uschar *version_string = US"?";