extern uschar *acl_smtp_data; /* ACL run after DATA received */
#ifndef DISABLE_PRDR
extern uschar *acl_smtp_data_prdr; /* ACL run after DATA received if in PRDR mode*/
-const extern pcre2_code *regex_PRDR; /* For recognizing PRDR settings */
+extern const pcre2_code *regex_PRDR; /* For recognizing PRDR settings */
#endif
#ifndef DISABLE_DKIM
extern uschar *acl_smtp_dkim; /* ACL run for DKIM signatures / domains */
extern uschar *continue_host_address; /* IP address for ditto */
extern int continue_sequence; /* Sequence num for continued delivery */
extern uschar *continue_transport; /* Transport for continued delivery */
-#ifdef EXPERIMENTAL_ESMTP_LIMITS
+#ifndef DISABLE_ESMTP_LIMITS
extern unsigned continue_limit_mail; /* Peer advertised limit */
extern unsigned continue_limit_rcpt;
extern unsigned continue_limit_rcptdom;
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 gstring *dkim_signing_record; /* domains+selectors used */
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. */
extern uschar *dkim_verify_hashes; /* Preference order for signatures */
extern uschar *eldap_dn; /* Where LDAP DNs are left */
extern const uschar *letter_digit_hyphen_dot; /* Legitimate DNS host name chars */
-#ifdef EXPERIMENTAL_ESMTP_LIMITS
+#ifndef DISABLE_ESMTP_LIMITS
extern uschar *limits_advertise_hosts; /* for banner/EHLO pipelining */
#endif
extern int load_average; /* Most recently read load average */
#ifdef SUPPORT_I18N
extern BOOL message_smtputf8; /* Internationalized mail handling */
extern int message_utf8_downconvert; /* convert from utf8 */
-const extern pcre2_code *regex_UTF8; /* For recognizing SMTPUTF8 settings */
+extern const pcre2_code *regex_UTF8; /* For recognizing SMTPUTF8 settings */
#endif
extern uschar message_subdir[]; /* Subdirectory for messages */
extern const uschar *message_reference;/* Reference for error messages */
extern uschar *recipient_unqualified_hosts; /* Permitted unqualified recipients */
extern uschar *recipient_verify_failure; /* What went wrong */
extern int recipients_list_max; /* Maximum number fitting in list */
-extern int recipients_max; /* Max permitted */
+extern uschar *recipients_max; /* Max permitted */
+extern int recipients_max_expanded;
extern BOOL recipients_max_reject; /* If TRUE, reject whole message */
extern const pcre2_code *regex_AUTH; /* For recognizing AUTH settings */
extern const pcre2_code *regex_check_dns_names; /* For DNS name checking */
extern const pcre2_code *regex_From; /* For recognizing "From_" lines */
extern const pcre2_code *regex_CHUNKING; /* For recognizing CHUNKING (RFC 3030) */
extern const pcre2_code *regex_IGNOREQUOTA; /* For recognizing IGNOREQUOTA (LMTP) */
-#ifdef EXPERIMENTAL_ESMTP_LIMITS
+#ifndef DISABLE_ESMTP_LIMITS
extern const pcre2_code *regex_LIMITS; /* For recognizing LIMITS */
#endif
extern const pcre2_code *regex_PIPELINING; /* For recognizing PIPELINING */