* 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
.active = -1,
.bits = 0,
.certificate_verified = FALSE,
-#ifdef EXPERIMENTAL_DANE
+#ifdef SUPPORT_DANE
.dane_verified = FALSE,
.tlsa_usage = 0,
#endif
.active = -1,
.bits = 0,
.certificate_verified = FALSE,
-#ifdef EXPERIMENTAL_DANE
+#ifdef SUPPORT_DANE
.dane_verified = FALSE,
.tlsa_usage = 0,
#endif
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 = {
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;
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;
uschar *dns_again_means_nonexist = NULL;
int dns_csa_search_limit = 5;
BOOL dns_csa_use_reverse = TRUE;
-#ifdef EXPERIMENTAL_DANE
+#ifdef SUPPORT_DANE
int dns_dane_ok = -1;
#endif
uschar *dns_ipv4_lookup = NULL;
{ 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;
Li_acl_warn_skipped,
Li_connection_reject,
Li_delay_delivery,
+ Li_dkim,
Li_dnslist_defer,
Li_etrn,
Li_host_lookup_failed,
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),
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),
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 */
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;
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;
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 system_filtering = FALSE;
BOOL tcp_fastopen_ok = FALSE;
+blob tcp_fastopen_nodata = { .data = NULL, .len = 0 };
+BOOL tcp_in_fastopen = FALSE;
+BOOL tcp_in_fastopen_logged = FALSE;
BOOL tcp_nodelay = TRUE;
+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;
#endif
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"?";