X-Git-Url: https://git.exim.org/exim.git/blobdiff_plain/051018257599e8a91f4ba2c2c99b72697eb0a4a4..8271f864edaf7fb2db0eb3aaa0c4789f55125978:/src/src/globals.c diff --git a/src/src/globals.c b/src/src/globals.c index aa94a276f..50b9c2f2a 100644 --- a/src/src/globals.c +++ b/src/src/globals.c @@ -98,6 +98,10 @@ int sqlite_lock_timeout = 5; BOOL move_frozen_messages = FALSE; #endif +#ifdef ALLOW_INSECURE_TAINTED_DATA +BOOL allow_insecure_tainted_data = FALSE; +#endif + /* 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. Note that these are @@ -120,9 +124,11 @@ uschar *dsn_advertise_hosts = NULL; #ifndef DISABLE_TLS BOOL gnutls_compat_mode = FALSE; BOOL gnutls_allow_auto_pkcs11 = FALSE; +uschar *hosts_require_alpn = NULL; uschar *openssl_options = NULL; const pcre *regex_STARTTLS = NULL; uschar *tls_advertise_hosts = US"*"; +uschar *tls_alpn = US"smtp:esmtp"; uschar *tls_certificate = NULL; uschar *tls_crl = NULL; /* This default matches NSS DH_MAX_P_BITS value at current time (2012), because @@ -143,6 +149,8 @@ uschar *tls_resumption_hosts = NULL; uschar *tls_try_verify_hosts = NULL; uschar *tls_verify_certificates= US"system"; uschar *tls_verify_hosts = NULL; +int tls_watch_fd = -1; +time_t tls_watch_trigger_time = (time_t)0; #else /*DISABLE_TLS*/ uschar *tls_advertise_hosts = NULL; #endif @@ -221,6 +229,7 @@ struct global_flags f = .authentication_local = FALSE, .background_daemon = TRUE, + .bdat_readers_wanted = FALSE, .chunking_offered = FALSE, .config_changed = FALSE, @@ -704,6 +713,10 @@ unsigned chunking_data_left = 0; chunking_state_t chunking_state= CHUNKING_NOT_OFFERED; const pcre *regex_CHUNKING = NULL; +#ifdef EXPERIMENTAL_ESMTP_LIMITS +const pcre *regex_LIMITS = NULL; +#endif + uschar *client_authenticator = NULL; uschar *client_authenticated_id = NULL; uschar *client_authenticated_sender = NULL; @@ -730,10 +743,17 @@ uid_t config_uid = 0; 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; +#ifdef EXPERIMENTAL_ESMTP_LIMITS +unsigned continue_limit_mail = 0; +unsigned continue_limit_rcpt = 0; +unsigned continue_limit_rcptdom= 0; +#endif uschar *csa_status = NULL; cut_t cutthrough = { @@ -976,6 +996,7 @@ uschar *host_reject_connection = NULL; tree_node *hostlist_anchor = NULL; int hostlist_count = 0; uschar *hosts_treat_as_local = NULL; +uschar *hosts_require_helo = US"*"; uschar *hosts_connection_nolog = NULL; int ignore_bounce_errors_after = 10*7*24*60*60; /* 10 weeks */ @@ -993,6 +1014,9 @@ uschar *keep_environment = NULL; int keep_malformed = 4*24*60*60; /* 4 days */ uschar *eldap_dn = NULL; +#ifdef EXPERIMENTAL_ESMTP_LIMITS +uschar *limits_advertise_hosts = US"*"; +#endif int load_average = -2; uschar *local_from_prefix = NULL; uschar *local_from_suffix = NULL; @@ -1026,12 +1050,16 @@ int log_default[] = { /* for initializing log_selector */ Li_outgoing_interface, /* see d_log_interface in deliver.c */ Li_msg_id, Li_queue_run, + Li_queue_time_exclusive, Li_rejected_header, Li_retry_defer, Li_sender_verify_fail, Li_size_reject, Li_skip_delivery, Li_smtp_confirmation, +#ifdef ALLOW_INSECURE_TAINTED_DATA + Li_tainted, +#endif Li_tls_certificate_verified, Li_tls_cipher, -1 @@ -1080,6 +1108,7 @@ bit_table log_options[] = { /* must be in alphabetical order, #endif BIT_TABLE(L, queue_run), BIT_TABLE(L, queue_time), + BIT_TABLE(L, queue_time_exclusive), BIT_TABLE(L, queue_time_overall), BIT_TABLE(L, receive_time), BIT_TABLE(L, received_recipients), @@ -1100,6 +1129,9 @@ bit_table log_options[] = { /* must be in alphabetical order, BIT_TABLE(L, smtp_protocol_error), BIT_TABLE(L, smtp_syntax_error), BIT_TABLE(L, subject), +#ifdef ALLOW_INSECURE_TAINTED_DATA + BIT_TABLE(L, tainted), +#endif BIT_TABLE(L, tls_certificate_verified), BIT_TABLE(L, tls_cipher), BIT_TABLE(L, tls_peerdn), @@ -1135,7 +1167,6 @@ uschar *message_headers = NULL; uschar *message_id; uschar *message_id_domain = NULL; uschar *message_id_text = NULL; -struct timeval message_id_tv = { 0, 0 }; uschar message_id_option[MESSAGE_ID_LENGTH + 3]; uschar *message_id_external; int message_linecount = 0; @@ -1200,6 +1231,7 @@ uschar *proxy_external_address = NULL; int proxy_external_port = 0; uschar *proxy_local_address = NULL; int proxy_local_port = 0; +int proxy_protocol_timeout = 3; #endif uschar *prvscheck_address = NULL; @@ -1265,14 +1297,14 @@ 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 }; +struct timeval received_time_complete = { 0, 0 }; uschar *recipient_data = NULL; uschar *recipient_unqualified_hosts = NULL; uschar *recipient_verify_failure = NULL; int recipients_count = 0; recipient_item *recipients_list = NULL; int recipients_list_max = 0; -int recipients_max = 0; +int recipients_max = 50000; const pcre *regex_AUTH = NULL; const pcre *regex_check_dns_names = NULL; const pcre *regex_From = NULL; @@ -1441,12 +1473,13 @@ int smtp_accept_count = 0; int smtp_accept_max = 20; int smtp_accept_max_nonmail= 10; uschar *smtp_accept_max_nonmail_hosts = US"*"; -int smtp_accept_max_per_connection = 1000; +uschar *smtp_accept_max_per_connection = US"1000"; uschar *smtp_accept_max_per_host = NULL; int smtp_accept_queue = 0; int smtp_accept_queue_per_connection = 10; int smtp_accept_reserve = 0; uschar *smtp_active_hostname = NULL; +int smtp_backlog_monitor = 0; uschar *smtp_banner = US"$smtp_active_hostname ESMTP " "Exim $version_number $tod_full" "\0<---------------Space to patch smtp_banner->"; @@ -1459,8 +1492,10 @@ int smtp_connect_backlog = 20; double smtp_delay_mail = 0.0; double smtp_delay_rcpt = 0.0; FILE *smtp_in = NULL; +int smtp_listen_backlog = 0; int smtp_load_reserve = -1; int smtp_mailcmd_count = 0; +int smtp_mailcmd_max = -1; FILE *smtp_out = NULL; uschar *smtp_etrn_command = NULL; int smtp_max_synprot_errors= 3; @@ -1558,60 +1593,16 @@ struct timeval timestamp_startup; transport_instance *transports = NULL; transport_instance transport_defaults = { - .next = NULL, - .name = NULL, - .info = NULL, - .options_block = NULL, - .driver_name = NULL, - .setup = NULL, + /* All non-mentioned elements zero/NULL/FALSE */ .batch_max = 1, - .batch_id = NULL, - .home_dir = NULL, - .current_dir = NULL, - .expand_multi_domain = NULL, .multi_domain = TRUE, - .overrides_hosts = FALSE, .max_addresses = 100, .connection_max_messages = 500, - .deliver_as_creator = FALSE, - .disable_logging = FALSE, - .initgroups = FALSE, - .uid_set = FALSE, - .gid_set = FALSE, .uid = (uid_t)(-1), .gid = (gid_t)(-1), - .expand_uid = NULL, - .expand_gid = NULL, - .warn_message = NULL, - .shadow = NULL, - .shadow_condition = NULL, - .filter_command = NULL, - .add_headers = NULL, - .remove_headers = NULL, - .return_path = NULL, - .debug_string = NULL, - .max_parallel = NULL, - .message_size_limit = NULL, - .headers_rewrite = NULL, - .rewrite_rules = NULL, - .rewrite_existflags = 0, .filter_timeout = 300, - .body_only = FALSE, - .delivery_date_add = FALSE, - .envelope_to_add = FALSE, - .headers_only = FALSE, - .rcpt_include_affixes = FALSE, - .return_path_add = FALSE, - .return_output = FALSE, - .return_fail_output = FALSE, - .log_output = FALSE, - .log_fail_output = FALSE, - .log_defer_output = FALSE, .retry_use_local_part = TRUE_UNSET, /* retry_use_local_part: BOOL, but set neither 1 nor 0 so can detect unset */ -#ifndef DISABLE_EVENT - .event_action = NULL -#endif }; int transport_count;