X-Git-Url: https://git.exim.org/exim.git/blobdiff_plain/93c931f83dfa0c448fbb4be09afe1d9fc753fe18..8ac90765750f87c573300b9e953af3d8090cab8b:/src/src/globals.h diff --git a/src/src/globals.h b/src/src/globals.h index 63e0e424c..b28aa5e6e 100644 --- a/src/src/globals.h +++ b/src/src/globals.h @@ -80,7 +80,7 @@ cluttered in several places (e.g. during logging) if we can always refer to them. Also, the tls_ variables are now always visible. */ typedef struct { - int active; /* fd/socket when in a TLS session */ + client_conn_ctx active; /* fd/socket when in a TLS session, and ptr to TLS context */ int bits; /* bits used in TLS session */ BOOL certificate_verified; /* Client certificate verified */ #ifdef SUPPORT_DANE @@ -120,6 +120,11 @@ extern uschar *tls_eccurve; /* EC curve */ extern uschar *tls_ocsp_file; /* OCSP stapling proof file */ # endif extern uschar *tls_privatekey; /* Private key file */ +# ifdef EXPERIMENTAL_REQUIRETLS +extern uschar tls_requiretls; /* REQUIRETLS active for this message */ +extern uschar *tls_advertise_requiretls; /* hosts for which REQUIRETLS adv */ +extern const pcre *regex_REQUIRETLS; /* for recognising the command */ +# endif extern BOOL tls_remember_esmtp; /* For YAEB */ extern uschar *tls_require_ciphers; /* So some can be avoided */ extern uschar *tls_try_verify_hosts; /* Optional client verification */ @@ -228,6 +233,7 @@ extern uschar *authenticated_fail_id; /* ID that failed authentication */ extern uschar *authenticated_id; /* ID that was authenticated */ extern uschar *authenticated_sender; /* From AUTH on MAIL */ extern BOOL authentication_failed; /* TRUE if AUTH was tried and failed */ +extern BOOL authentication_local; /* TRUE if non-smtp (implicit authentication) */ extern uschar *auth_advertise_hosts; /* Only advertise to these */ extern auth_info auths_available[]; /* Vector of available auth mechanisms */ extern auth_instance *auths; /* Chain of instantiated auths */ @@ -313,7 +319,7 @@ typedef struct { unsigned delivery:1; /* When to attempt */ unsigned defer_pass:1; /* Pass 4xx to caller rather than spooling */ unsigned is_tls:1; /* Conn has TLS active */ - int fd; /* Open connection */ + client_conn_ctx cctx; /* Open connection */ int nrcpt; /* Count of addresses */ uschar * transport; /* Name of transport */ uschar * interface; /* (address of) */ @@ -391,10 +397,11 @@ extern BOOL disable_ipv6; /* Don't do any IPv6 things */ extern BOOL disable_logging; /* Disables log writing when TRUE */ #ifndef DISABLE_DKIM -extern BOOL dkim_collect_input; /* Runtime flag that tracks wether SMTP input is fed to DKIM validation */ +extern unsigned dkim_collect_input; /* Runtime count of dkim signtures; tracks wether SMTP input is fed to DKIM validation */ extern uschar *dkim_cur_signer; /* Expansion variable, holds the current "signer" domain or identity during a acl_smtp_dkim run */ extern BOOL dkim_disable_verify; /* Set via ACL control statement. When set, DKIM verification is disabled for the current message */ extern int dkim_key_length; /* Expansion variable, length of signing key in bits */ +extern void *dkim_signatures; /* Actually a (pdkim_signature *) but most files do not need to know */ extern uschar *dkim_signers; /* Expansion variable, holds colon-separated list of domains and identities that have signed a message */ extern uschar *dkim_signing_domain; /* Expansion variable, domain used for signing a message. */ extern uschar *dkim_signing_selector; /* Expansion variable, selector used for signing a message. */ @@ -405,7 +412,6 @@ extern uschar *dkim_verify_reason; /* result for this signature */ #endif #ifdef EXPERIMENTAL_DMARC extern BOOL dmarc_has_been_checked; /* Global variable to check if test has been called yet */ -extern uschar *dmarc_ar_header; /* Expansion variable, suggested header for dmarc auth results */ extern uschar *dmarc_domain_policy; /* Expansion for declared policy of used domain */ extern uschar *dmarc_forensic_sender; /* Set sender address for forensic reports */ extern uschar *dmarc_history_file; /* Expansion variable, file to store dmarc results */ @@ -420,6 +426,7 @@ extern BOOL dmarc_enable_forensic; /* Set via ACL control statement. When se extern uschar *dns_again_means_nonexist; /* Domains that are badly set up */ extern int dns_csa_search_limit; /* How deep to search for CSA SRV records */ extern BOOL dns_csa_use_reverse; /* Check CSA in reverse DNS? (non-standard) */ +extern int dns_cname_loops; /* Follow CNAMEs returned by resolver to this depth */ extern uschar *dns_ipv4_lookup; /* For these domains, don't look for AAAA (or A6) */ #ifdef SUPPORT_DANE extern int dns_dane_ok; /* Ok to use DANE when checking TLS authenticity */ @@ -492,6 +499,10 @@ extern uschar *gecos_name; /* To be expanded when pattern matches */ extern uschar *gecos_pattern; /* Pattern to match */ extern rewrite_rule *global_rewrite_rules; /* Chain of rewriting rules */ +extern volatile sig_atomic_t had_command_timeout; /* Alarm sighandler called */ +extern volatile sig_atomic_t had_command_sigterm; /* TERM sighandler called */ +extern volatile sig_atomic_t had_data_timeout; /* Alarm sighandler called */ +extern volatile sig_atomic_t had_data_sigint; /* TERM/INT sighandler called */ extern int header_insert_maxlen; /* Max for inserting headers */ extern int header_maxsize; /* Max total length for header */ extern int header_line_maxsize; /* Max for an individual line */ @@ -544,10 +555,12 @@ extern BOOL local_from_check; /* For adding Sender: (global value) */ extern uschar *local_from_prefix; /* Permitted prefixes */ extern uschar *local_from_suffix; /* Permitted suffixes */ extern uschar *local_interfaces; /* For forcing specific interfaces */ +#ifdef HAVE_LOCAL_SCAN extern uschar *local_scan_data; /* Text returned by local_scan() */ extern optionlist local_scan_options[];/* Option list for local_scan() */ extern int local_scan_options_count; /* Size of the list */ extern int local_scan_timeout; /* Timeout for local_scan() */ +#endif extern BOOL local_sender_retain; /* Retain Sender: (with no From: check) */ extern gid_t local_user_gid; /* As it says; may be set in routers */ extern uid_t local_user_uid; /* As it says; may be set in routers */ @@ -882,9 +895,11 @@ extern uschar *spf_guess; /* spf best-guess record */ extern uschar *spf_header_comment; /* spf header comment */ extern uschar *spf_received; /* Received-SPF: header */ extern uschar *spf_result; /* spf result in string form */ +extern BOOL spf_result_guessed; /* spf result is of best-guess operation */ extern uschar *spf_smtp_comment; /* spf comment to include in SMTP reply */ #endif extern BOOL split_spool_directory; /* TRUE to use multiple subdirs */ +extern FILE *spool_data_file; /* handle for -D file */ extern uschar *spool_directory; /* Name of spool directory */ extern BOOL spool_file_wireformat; /* current -D file has CRLF rather than NL */ extern BOOL spool_wireformat; /* can write wireformat -D files */