X-Git-Url: https://git.exim.org/exim.git/blobdiff_plain/f45100a3ede668925c8212076b90bc70264a0abb..0b969c4b8f7139537224878fb6159e4c98e81234:/src/src/globals.c diff --git a/src/src/globals.c b/src/src/globals.c index 1c494c1e9..d4589cd18 100644 --- a/src/src/globals.c +++ b/src/src/globals.c @@ -17,6 +17,8 @@ data blocks and hence have the opt_public flag set. */ optionlist optionlist_auths[] = { { "client_condition", opt_stringptr | opt_public, (void *)(offsetof(auth_instance, client_condition)) }, + { "client_set_id", opt_stringptr | opt_public, + (void *)(offsetof(auth_instance, set_client_id)) }, { "driver", opt_stringptr | opt_public, (void *)(offsetof(auth_instance, driver_name)) }, { "public_name", opt_stringptr | opt_public, @@ -93,16 +95,31 @@ BOOL move_frozen_messages = FALSE; cluttered in several places (e.g. during logging) if we can always refer to them. Also, the tls_ variables are now always visible. */ -BOOL tls_active = -1; -int tls_bits = 0; -BOOL tls_certificate_verified = FALSE; -uschar *tls_cipher = NULL; -BOOL tls_on_connect = FALSE; -uschar *tls_on_connect_ports = NULL; -uschar *tls_peerdn = NULL; +tls_support tls_in = { + -1, /* tls_active */ + 0, /* tls_bits */ + FALSE,/* tls_certificate_verified */ + NULL, /* tls_cipher */ + FALSE,/* tls_on_connect */ + NULL, /* tls_on_connect_ports */ + NULL, /* tls_peerdn */ + NULL /* tls_sni */ +}; +tls_support tls_out = { + -1, /* tls_active */ + 0, /* tls_bits */ + FALSE,/* tls_certificate_verified */ + NULL, /* tls_cipher */ + FALSE,/* tls_on_connect */ + NULL, /* tls_on_connect_ports */ + NULL, /* tls_peerdn */ + NULL /* tls_sni */ +}; + #ifdef SUPPORT_TLS BOOL gnutls_compat_mode = FALSE; +BOOL gnutls_enable_pkcs11 = FALSE; uschar *gnutls_require_mac = NULL; uschar *gnutls_require_kx = NULL; uschar *gnutls_require_proto = NULL; @@ -123,12 +140,17 @@ BOOL tls_offered = FALSE; uschar *tls_privatekey = NULL; BOOL tls_remember_esmtp = FALSE; uschar *tls_require_ciphers = NULL; -uschar *tls_sni = NULL; uschar *tls_try_verify_hosts = NULL; uschar *tls_verify_certificates= NULL; uschar *tls_verify_hosts = NULL; #endif +#ifdef EXPERIMENTAL_PRDR +/* Per Recipient Data Response variables */ +BOOL prdr_enable = FALSE; +BOOL prdr_requested = FALSE; +const pcre *regex_PRDR = NULL; +#endif /* Input-reading functions for messages, so we can use special ones for incoming TCP/IP. The defaults use stdin. We never need these for any @@ -173,16 +195,22 @@ int address_expansions_count = sizeof(address_expansions)/sizeof(uschar **); header_line *acl_added_headers = NULL; tree_node *acl_anchor = NULL; +uschar *acl_arg[9] = {NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL}; +int acl_narg = 0; uschar *acl_not_smtp = NULL; #ifdef WITH_CONTENT_SCAN uschar *acl_not_smtp_mime = NULL; #endif uschar *acl_not_smtp_start = NULL; - +uschar *acl_removed_headers = NULL; uschar *acl_smtp_auth = NULL; uschar *acl_smtp_connect = NULL; uschar *acl_smtp_data = NULL; +#ifdef EXPERIMENTAL_PRDR +uschar *acl_smtp_data_prdr = NULL; +#endif #ifndef DISABLE_DKIM uschar *acl_smtp_dkim = NULL; #endif @@ -216,6 +244,9 @@ uschar *acl_wherenames[] = { US"RCPT", US"MIME", US"DKIM", US"DATA", +#ifdef EXPERIMENTAL_PRDR + US"PRDR", +#endif US"non-SMTP", US"AUTH", US"connection", @@ -227,7 +258,9 @@ uschar *acl_wherenames[] = { US"RCPT", US"NOTQUIT", US"QUIT", US"STARTTLS", - US"VRFY" + US"VRFY", + US"delivery", + US"unknown" }; uschar *acl_wherecodes[] = { US"550", /* RCPT */ @@ -236,6 +269,9 @@ uschar *acl_wherecodes[] = { US"550", /* RCPT */ US"550", /* MIME */ US"550", /* DKIM */ US"550", /* DATA */ +#ifdef EXPERIMENTAL_PRDR + US"550", /* RCPT PRDR */ +#endif US"0", /* not SMTP; not relevant */ US"503", /* AUTH */ US"550", /* connect */ @@ -247,11 +283,14 @@ uschar *acl_wherecodes[] = { US"550", /* RCPT */ US"0", /* NOTQUIT; not relevant */ US"0", /* QUIT; not relevant */ US"550", /* STARTTLS */ - US"252" /* VRFY */ + US"252", /* VRFY */ + US"0", /* delivery; not relevant */ + US"0" /* unknown; not relevant */ }; BOOL active_local_from_check = FALSE; BOOL active_local_sender_retain = FALSE; +int body_8bitmime = 0; BOOL accept_8bitmime = TRUE; /* deliberately not RFC compliant */ address_item *addr_duplicate = NULL; @@ -291,6 +330,9 @@ address_item address_defaults = { NULL, /* cipher */ NULL, /* peerdn */ #endif + NULL, /* authenticator */ + NULL, /* auth_id */ + NULL, /* auth_sndr */ (uid_t)(-1), /* uid */ (gid_t)(-1), /* gid */ 0, /* flags */ @@ -329,6 +371,7 @@ 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; +uschar *authenticated_fail_id = NULL; uschar *authenticated_id = NULL; uschar *authenticated_sender = NULL; BOOL authentication_failed = FALSE; @@ -344,6 +387,7 @@ auth_instance auth_defaults = { NULL, /* client_condition */ NULL, /* public_name */ NULL, /* set_id */ + NULL, /* set_client_id */ NULL, /* server_mail_auth_condition */ NULL, /* server_debug_string */ NULL, /* server_condition */ @@ -404,6 +448,9 @@ int check_log_space = 0; BOOL check_rfc2047_length = TRUE; int check_spool_inodes = 0; int check_spool_space = 0; +uschar *client_authenticator = NULL; +uschar *client_authenticated_id = NULL; +uschar *client_authenticated_sender = NULL; int clmacro_count = 0; uschar *clmacros[MAX_CLMACROS]; BOOL config_changed = FALSE; @@ -429,6 +476,8 @@ int continue_sequence = 1; uschar *continue_transport = NULL; uschar *csa_status = NULL; +BOOL cutthrough_delivery = FALSE; +int cutthrough_fd = -1; BOOL daemon_listen = FALSE; uschar *daemon_smtp_port = US"smtp"; @@ -542,6 +591,18 @@ uschar *dkim_verify_signers = US"$dkim_signers"; BOOL dkim_collect_input = FALSE; BOOL dkim_disable_verify = FALSE; #endif +#ifdef EXPERIMENTAL_DMARC +BOOL dmarc_has_been_checked = FALSE; +uschar *dmarc_ar_header = 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_used_domain = NULL; +BOOL dmarc_disable_verify = FALSE; +BOOL dmarc_enable_forensic = FALSE; +#endif uschar *dns_again_means_nonexist = NULL; int dns_csa_search_limit = 5; @@ -549,6 +610,7 @@ BOOL dns_csa_use_reverse = TRUE; uschar *dns_ipv4_lookup = NULL; int dns_retrans = 0; int dns_retry = 0; +int dns_dnssec_ok = -1; /* <0 = not coerced */ int dns_use_edns0 = -1; /* <0 = not coerced */ uschar *dnslist_domain = NULL; uschar *dnslist_matched = NULL; @@ -712,6 +774,7 @@ selectors was getting close to filling a 32-bit word. */ /* Note that this list must be in alphabetical order. */ bit_table log_options[] = { + { US"8bitmime", LX_8bitmime }, { US"acl_warn_skipped", LX_acl_warn_skipped }, { US"address_rewrite", L_address_rewrite }, { US"all", L_all }, @@ -746,6 +809,7 @@ bit_table log_options[] = { { US"smtp_confirmation", LX_smtp_confirmation }, { US"smtp_connection", L_smtp_connection }, { US"smtp_incomplete_transaction", L_smtp_incomplete_transaction }, + { US"smtp_mailauth", LX_smtp_mailauth }, { US"smtp_no_mail", LX_smtp_no_mail }, { US"smtp_protocol_error", L_smtp_protocol_error }, { US"smtp_syntax_error", L_smtp_syntax_error }, @@ -1035,6 +1099,8 @@ router_instance router_defaults = { NULL /* redirect_router */ }; +uschar *router_name = NULL; + ip_address_item *running_interfaces = NULL; BOOL running_in_test_harness = FALSE; @@ -1066,6 +1132,7 @@ uschar **sender_host_aliases = &no_aliases; uschar *sender_host_address = NULL; uschar *sender_host_authenticated = NULL; unsigned int sender_host_cache[(MAX_NAMED_LIST * 2)/32]; +BOOL sender_host_dnssec = FALSE; uschar *sender_host_name = NULL; int sender_host_port = 0; BOOL sender_host_notsocket = FALSE; @@ -1185,6 +1252,7 @@ uschar *submission_domain = NULL; BOOL submission_mode = FALSE; uschar *submission_name = NULL; BOOL suppress_local_fixups = FALSE; +BOOL suppress_local_fixups_default = FALSE; BOOL synchronous_delivery = FALSE; BOOL syslog_duplication = TRUE; int syslog_facility = LOG_MAIL; @@ -1212,6 +1280,17 @@ int thismessage_size_limit = 0; int timeout_frozen_after = 0; BOOL timestamps_utc = FALSE; +#ifdef EXPERIMENTAL_TPDA +int tpda_defer_errno = 0; +uschar *tpda_defer_errstr = NULL; +uschar *tpda_delivery_ip = NULL; +int tpda_delivery_port = 0; +uschar *tpda_delivery_fqdn = NULL; +uschar *tpda_delivery_local_part= NULL; +uschar *tpda_delivery_domain = NULL; +uschar *tpda_delivery_confirmation = NULL; +#endif + transport_instance *transports = NULL; transport_instance transport_defaults = { @@ -1267,6 +1346,7 @@ transport_instance transport_defaults = { }; int transport_count; +uschar *transport_name = NULL; int transport_newlines; uschar **transport_filter_argv = NULL; int transport_filter_timeout; @@ -1320,7 +1400,7 @@ BOOL write_rejectlog = TRUE; uschar *version_copyright = US"Copyright (c) University of Cambridge, 1995 - 2012\n" - "(c) The Exim Maintainers and contributors in ACKNOWLEDGMENTS file, 2007 - 1012"; + "(c) The Exim Maintainers and contributors in ACKNOWLEDGMENTS file, 2007 - 2012"; uschar *version_date = US"?"; uschar *version_cnumber = US"????"; uschar *version_string = US"?";