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
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
US"MIME",
US"DKIM",
US"DATA",
+#ifdef EXPERIMENTAL_PRDR
+ US"PRDR",
+#endif
US"non-SMTP",
US"AUTH",
US"connection",
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 */
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;
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;
uschar *dns_ipv4_lookup = NULL;
int dns_retrans = 0;
int dns_retry = 0;
-int dns_use_dnssec = -1; /* <0 = not coerced */
+int dns_dnssec_ok = -1; /* <0 = not coerced */
int dns_use_edns0 = -1; /* <0 = not coerced */
uschar *dnslist_domain = NULL;
uschar *dnslist_matched = NULL;
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 = {