"Fossies" - the Fresh Open Source Software Archive  

Source code changes of the file "src/globals.h" between
exim-4.91.tar.xz and exim-4.92.tar.xz

About: Exim is a message transfer agent (MTA).

globals.h  (exim-4.91.tar.xz):globals.h  (exim-4.92.tar.xz)
skipping to change at line 83 skipping to change at line 83
#ifdef SUPPORT_MOVE_FROZEN_MESSAGES #ifdef SUPPORT_MOVE_FROZEN_MESSAGES
extern BOOL move_frozen_messages; /* Get them out of the normal directory * / extern BOOL move_frozen_messages; /* Get them out of the normal directory * /
#endif #endif
/* These variables are outside the #ifdef because it keeps the code less /* These variables are outside the #ifdef because it keeps the code less
cluttered in several places (e.g. during logging) if we can always refer to cluttered in several places (e.g. during logging) if we can always refer to
them. Also, the tls_ variables are now always visible. */ them. Also, the tls_ variables are now always visible. */
typedef struct { 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 */ int bits; /* bits used in TLS session */
BOOL certificate_verified; /* Client certificate verified */ BOOL certificate_verified; /* Client certificate verified */
#ifdef SUPPORT_DANE #ifdef SUPPORT_DANE
BOOL dane_verified; /* ... via DANE */ BOOL dane_verified; /* ... via DANE */
int tlsa_usage; /* TLSA record(s) usage */ int tlsa_usage; /* TLSA record(s) usage */
#endif #endif
uschar *cipher; /* Cipher used */ uschar *cipher; /* Cipher used */
BOOL on_connect; /* For older MTAs that don't STARTTLS */ BOOL on_connect; /* For older MTAs that don't STARTTLS */
uschar *on_connect_ports; /* Ports always tls-on-connect */ uschar *on_connect_ports; /* Ports always tls-on-connect */
void *ourcert; /* Certificate we presented, binary */ void *ourcert; /* Certificate we presented, binary */
skipping to change at line 123 skipping to change at line 123
extern uschar *tls_certificate; /* Certificate file */ extern uschar *tls_certificate; /* Certificate file */
extern uschar *tls_channelbinding_b64; /* string of base64 channel binding */ extern uschar *tls_channelbinding_b64; /* string of base64 channel binding */
extern uschar *tls_crl; /* CRL File */ extern uschar *tls_crl; /* CRL File */
extern int tls_dh_max_bits; /* don't accept higher lib suggestions */ extern int tls_dh_max_bits; /* don't accept higher lib suggestions */
extern uschar *tls_dhparam; /* DH param file */ extern uschar *tls_dhparam; /* DH param file */
extern uschar *tls_eccurve; /* EC curve */ extern uschar *tls_eccurve; /* EC curve */
# ifndef DISABLE_OCSP # ifndef DISABLE_OCSP
extern uschar *tls_ocsp_file; /* OCSP stapling proof file */ extern uschar *tls_ocsp_file; /* OCSP stapling proof file */
# endif # endif
extern uschar *tls_privatekey; /* Private key file */ 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 BOOL tls_remember_esmtp; /* For YAEB */
extern uschar *tls_require_ciphers; /* So some can be avoided */ extern uschar *tls_require_ciphers; /* So some can be avoided */
extern uschar *tls_try_verify_hosts; /* Optional client verification */ extern uschar *tls_try_verify_hosts; /* Optional client verification */
extern uschar *tls_verify_certificates;/* Path for certificates to check */ extern uschar *tls_verify_certificates;/* Path for certificates to check */
extern uschar *tls_verify_hosts; /* Mandatory client verification */ extern uschar *tls_verify_hosts; /* Mandatory client verification */
#endif #endif
extern uschar *tls_advertise_hosts; /* host for which TLS is advertised */ extern uschar *tls_advertise_hosts; /* host for which TLS is advertised */
extern uschar *dsn_envid; /* DSN envid string */ extern uschar *dsn_envid; /* DSN envid string */
extern int dsn_ret; /* DSN ret type*/ extern int dsn_ret; /* DSN ret type*/
skipping to change at line 156 skipping to change at line 161
extern int (*receive_feof)(void); extern int (*receive_feof)(void);
extern int (*receive_ferror)(void); extern int (*receive_ferror)(void);
extern BOOL (*receive_smtp_buffered)(void); extern BOOL (*receive_smtp_buffered)(void);
/* For clearing, saving, restoring address expansion variables. We have to have /* For clearing, saving, restoring address expansion variables. We have to have
the size of this vector set explicitly, because it is referenced from more than the size of this vector set explicitly, because it is referenced from more than
one module. */ one module. */
extern const uschar **address_expansions[ADDRESS_EXPANSIONS_COUNT]; extern const uschar **address_expansions[ADDRESS_EXPANSIONS_COUNT];
/* Flags for which we don't need an address ever so can use a bitfield */
extern struct global_flags {
BOOL acl_temp_details :1; /* TRUE to give details for 4xx error
*/
BOOL active_local_from_check :1; /* For adding Sender: (switch
able) */
BOOL active_local_sender_retain :1; /* For keeping Sender: (switchable) *
/
BOOL address_test_mode :1; /* True for -bt */
BOOL admin_user :1; /* True if caller can do admin */
BOOL allow_auth_unadvertised :1; /* As it says */
BOOL allow_unqualified_recipient :1; /* For local messages */ /* As it
says */
BOOL allow_unqualified_sender :1; /* Reset for SMTP */ /* Ditto *
/
BOOL authentication_local :1; /* TRUE if non-smtp (implicit authent
ication) */
BOOL background_daemon :1; /* Set FALSE to keep in foreground */
BOOL chunking_offered :1;
BOOL config_changed :1; /* True if -C used */
BOOL continue_more :1; /* Flag more addresses waiting */
BOOL daemon_listen :1; /* True if listening required */
BOOL debug_daemon :1; /* Debug the daemon process only */
BOOL deliver_firsttime :1; /* True for first delivery attempt */
BOOL deliver_force :1; /* TRUE if delivery was forced */
BOOL deliver_freeze :1; /* TRUE if delivery is frozen */
BOOL deliver_force_thaw :1; /* TRUE to force thaw in queue run */
BOOL deliver_manual_thaw :1; /* TRUE if manually thawed */
BOOL deliver_selectstring_regex :1; /* String is regex */
BOOL deliver_selectstring_sender_regex :1; /* String is regex */
BOOL disable_callout_flush :1; /* Don't flush before callouts */
BOOL disable_delay_flush :1; /* Don't flush before "delay" in ACL
*/
BOOL disable_logging :1; /* Disables log writing when
TRUE */
#ifndef DISABLE_DKIM
BOOL dkim_disable_verify :1; /* Set via ACL control statement. Whe
n set, DKIM verification is disabled for the current message */
#endif
#ifdef EXPERIMENTAL_DMARC
BOOL dmarc_has_been_checked :1; /* Global variable to check if test h
as been called yet */
BOOL dmarc_disable_verify :1; /* Set via ACL control statement. Whe
n set, DMARC verification is disabled for the current message */
BOOL dmarc_enable_forensic :1; /* Set via ACL control statement. Whe
n set, DMARC forensic reports are enabled for the current message */
#endif
BOOL dont_deliver :1; /* TRUE for -N option */
BOOL dot_ends :1; /* TRUE if "." ends non-SMTP input */
BOOL enable_dollar_recipients :1; /* Make $recipients available */
BOOL expand_string_forcedfail :1; /* TRUE if failure was "expected" */
BOOL filter_running :1; /* TRUE while running a filter */
BOOL header_rewritten :1; /* TRUE if header changed by router *
/
BOOL helo_verified :1; /* True if HELO verified */
BOOL helo_verify_failed :1; /* True if attempt failed */
BOOL host_checking_callout :1; /* TRUE if real callout wanted */
BOOL host_find_failed_syntax :1; /* DNS syntax check failure *
/
BOOL inetd_wait_mode :1; /* Whether running in inetd w
ait mode */
BOOL is_inetd :1; /* True for inetd calls */
BOOL local_error_message :1; /* True if handling one of these */
BOOL log_testing_mode :1; /* TRUE in various testing modes */
#ifdef WITH_CONTENT_SCAN
BOOL no_mbox_unspool :1; /* don't unlink files in /sca
n directory */
#endif
BOOL no_multiline_responses :1; /* For broken clients */
BOOL parse_allow_group :1; /* Allow group syntax */
BOOL parse_found_group :1; /* In the middle of a group */
BOOL pipelining_enable :1; /* As it says */
#if defined(SUPPORT_PROXY) || defined(SUPPORT_SOCKS)
BOOL proxy_session_failed :1; /* TRUE if required proxy negotiation
failed */
#endif
BOOL queue_2stage :1; /* Run queue in 2-stage manner */
BOOL queue_only_policy :1; /* ACL or local_scan wants queue_only
*/
BOOL queue_run_first_delivery :1; /* If TRUE, first deliveries only */
BOOL queue_run_force :1; /* TRUE to force during queue
run */
BOOL queue_run_local :1; /* Local deliveries only in q
ueue run */
BOOL queue_running :1; /* TRUE for queue running process and
*/
BOOL queue_smtp :1; /* Disable all immediate SMTP (-odqs)
*/
BOOL really_exim :1; /* FALSE in utilities */
BOOL receive_call_bombout :1; /* Flag for crashing log */
BOOL recipients_discarded :1; /* By an ACL */
BOOL running_in_test_harness :1; /*TRUE when running_status is
patched */
BOOL search_find_defer :1; /* Set TRUE if lookup deferred */
BOOL sender_address_forced :1; /* Set by -f */
BOOL sender_host_notsocket :1; /* Set for -bs and -bS */
BOOL sender_host_unknown :1; /* TRUE for -bs and -bS except inetd
*/
BOOL sender_local :1; /* TRUE for local senders */
BOOL sender_name_forced :1; /* Set by -F */
BOOL sender_set_untrusted :1; /* Sender set by untrusted caller */
BOOL smtp_authenticated :1; /* Sending client has authenticated *
/
#ifdef EXPERIMENTAL_PIPE_CONNECT
BOOL smtp_in_early_pipe_advertised :1; /* server advertised PIPE_CONNECT */
BOOL smtp_in_early_pipe_no_auth :1; /* too many authenticator names */
BOOL smtp_in_early_pipe_used :1; /* client did send early data
*/
#endif
BOOL smtp_in_pipelining_advertised :1; /* server advertised PIPELINING */
BOOL smtp_in_pipelining_used :1; /* server noted client using
PIPELINING */
BOOL spool_file_wireformat :1; /* current -D file has CRLF rather th
an NL */
BOOL submission_mode :1; /* Can be forced from ACL */
BOOL suppress_local_fixups :1; /* Can be forced from ACL */
BOOL suppress_local_fixups_default :1; /* former is reset to this; override
with -G */
BOOL synchronous_delivery :1; /* TRUE if -odi is set */
BOOL system_filtering :1; /* TRUE when running system filter */
BOOL tcp_fastopen_ok :1; /* appears to be supported by
kernel */
BOOL tcp_in_fastopen :1; /* conn usefully used fastope
n */
BOOL tcp_in_fastopen_data :1; /* fastopen carried data */
BOOL tcp_in_fastopen_logged :1; /* one-time logging */
BOOL tcp_out_fastopen_logged :1; /* one-time logging */
BOOL timestamps_utc :1; /* Use UTC for all times */
BOOL transport_filter_timed_out :1; /* True if it did */
BOOL trusted_caller :1; /* Caller is trusted */
BOOL trusted_config :1; /* Configuration file is trusted */
} f;
/* General global variables */ /* General global variables */
extern BOOL accept_8bitmime; /* Allow *BITMIME incoming */ extern BOOL accept_8bitmime; /* Allow *BITMIME incoming */
extern uschar *add_environment; /* List of environment variables to add * / extern uschar *add_environment; /* List of environment variables to add * /
extern header_line *acl_added_headers; /* Headers added by an ACL */ extern header_line *acl_added_headers; /* Headers added by an ACL */
extern tree_node *acl_anchor; /* Tree of named ACLs */ extern tree_node *acl_anchor; /* Tree of named ACLs */
extern uschar *acl_arg[9]; /* Argument to ACL call */ extern uschar *acl_arg[9]; /* Argument to ACL call */
extern int acl_narg; /* Number of arguments to ACL call */ extern int acl_narg; /* Number of arguments to ACL call */
extern int acl_level; /* Nesting depth and debug indent */ extern int acl_level; /* Nesting depth and debug indent */
extern uschar *acl_not_smtp; /* ACL run for non-SMTP messages */ extern uschar *acl_not_smtp; /* ACL run for non-SMTP messages */
skipping to change at line 195 skipping to change at line 317
extern uschar *acl_smtp_mailauth; /* ACL run for MAIL AUTH */ extern uschar *acl_smtp_mailauth; /* ACL run for MAIL AUTH */
#ifdef WITH_CONTENT_SCAN #ifdef WITH_CONTENT_SCAN
extern uschar *acl_smtp_mime; /* ACL run after DATA, before acl_smtp_da ta, for each MIME part */ extern uschar *acl_smtp_mime; /* ACL run after DATA, before acl_smtp_da ta, for each MIME part */
#endif #endif
extern uschar *acl_smtp_notquit; /* ACL run for disconnects */ extern uschar *acl_smtp_notquit; /* ACL run for disconnects */
extern uschar *acl_smtp_predata; /* ACL run for DATA command */ extern uschar *acl_smtp_predata; /* ACL run for DATA command */
extern uschar *acl_smtp_quit; /* ACL run for QUIT */ extern uschar *acl_smtp_quit; /* ACL run for QUIT */
extern uschar *acl_smtp_rcpt; /* ACL run for RCPT */ extern uschar *acl_smtp_rcpt; /* ACL run for RCPT */
extern uschar *acl_smtp_starttls; /* ACL run for STARTTLS */ extern uschar *acl_smtp_starttls; /* ACL run for STARTTLS */
extern uschar *acl_smtp_vrfy; /* ACL run for VRFY */ extern uschar *acl_smtp_vrfy; /* ACL run for VRFY */
extern BOOL acl_temp_details; /* TRUE to give details for 4xx error */
extern tree_node *acl_var_c; /* ACL connection variables */ extern tree_node *acl_var_c; /* ACL connection variables */
extern tree_node *acl_var_m; /* ACL message variables */ extern tree_node *acl_var_m; /* ACL message variables */
extern uschar *acl_verify_message; /* User message for verify failure */ extern uschar *acl_verify_message; /* User message for verify failure */
extern string_item *acl_warn_logged; /* Logged lines */ extern string_item *acl_warn_logged; /* Logged lines */
extern uschar *acl_wherecodes[]; /* Response codes for ACL fails */ extern uschar *acl_wherecodes[]; /* Response codes for ACL fails */
extern uschar *acl_wherenames[]; /* Names for messages */ extern uschar *acl_wherenames[]; /* Names for messages */
extern BOOL active_local_from_check;/* For adding Sender: (switchable) */
extern BOOL active_local_sender_retain; /* For keeping Sender: (switchable) *
/
extern address_item *addr_duplicate; /* Duplicate address list */ extern address_item *addr_duplicate; /* Duplicate address list */
extern address_item address_defaults; /* Default data for address item */ extern address_item address_defaults; /* Default data for address item */
extern uschar *address_file; /* Name of file when delivering to one */ extern uschar *address_file; /* Name of file when delivering to one */
extern uschar *address_pipe; /* Pipe command when delivering to one */ extern uschar *address_pipe; /* Pipe command when delivering to one */
extern BOOL address_test_mode; /* True for -bt */
extern tree_node *addresslist_anchor; /* Tree of defined address lists */ extern tree_node *addresslist_anchor; /* Tree of defined address lists */
extern int addresslist_count; /* Number defined */ extern int addresslist_count; /* Number defined */
extern gid_t *admin_groups; /* List of admin groups */ extern gid_t *admin_groups; /* List of admin groups */
extern BOOL admin_user; /* True if caller can do admin */
extern BOOL allow_auth_unadvertised;/* As it says */
extern BOOL allow_domain_literals; /* As it says */ extern BOOL allow_domain_literals; /* As it says */
extern BOOL allow_mx_to_ip; /* Allow MX records to -> ip address */ extern BOOL allow_mx_to_ip; /* Allow MX records to -> ip address */
extern BOOL allow_unqualified_recipient; /* As it says */
extern BOOL allow_unqualified_sender; /* Ditto */
#ifdef EXPERIMENTAL_ARC #ifdef EXPERIMENTAL_ARC
struct arc_set *arc_received; /* highest ARC instance evaluation struct */ struct arc_set *arc_received; /* highest ARC instance evaluation struct */
extern int arc_received_instance; /* highest ARC instance number in headers */ extern int arc_received_instance; /* highest ARC instance number in headers */
extern int arc_oldest_pass; /* lowest passing instance number in head ers */ extern int arc_oldest_pass; /* lowest passing instance number in head ers */
extern const uschar *arc_state; /* verification state */ extern const uschar *arc_state; /* verification state */
extern const uschar *arc_state_reason; extern const uschar *arc_state_reason;
#endif #endif
extern BOOL allow_utf8_domains; /* For experimenting */ extern BOOL allow_utf8_domains; /* For experimenting */
extern uschar *authenticated_fail_id; /* ID that failed authentication */ extern uschar *authenticated_fail_id; /* ID that failed authentication */
extern uschar *authenticated_id; /* ID that was authenticated */ extern uschar *authenticated_id; /* ID that was authenticated */
extern uschar *authenticated_sender; /* From AUTH on MAIL */ extern uschar *authenticated_sender; /* From AUTH on MAIL */
extern BOOL authentication_failed; /* TRUE if AUTH was tried and failed */ extern BOOL authentication_failed; /* TRUE if AUTH was tried and failed */
extern BOOL authentication_local; /* TRUE if non-smtp (implicit authenticat ion) */
extern uschar *auth_advertise_hosts; /* Only advertise to these */ extern uschar *auth_advertise_hosts; /* Only advertise to these */
extern auth_info auths_available[]; /* Vector of available auth mechanisms */ extern auth_info auths_available[]; /* Vector of available auth mechanisms */
extern auth_instance *auths; /* Chain of instantiated auths */ extern auth_instance *auths; /* Chain of instantiated auths */
extern auth_instance auth_defaults; /* Default values */ extern auth_instance auth_defaults; /* Default values */
extern uschar *auth_defer_msg; /* Error message for log */ extern uschar *auth_defer_msg; /* Error message for log */
extern uschar *auth_defer_user_msg; /* Error message for user */ extern uschar *auth_defer_user_msg; /* Error message for user */
extern uschar *auth_vars[]; /* $authn variables */ extern uschar *auth_vars[]; /* $authn variables */
extern int auto_thaw; /* Auto-thaw interval */ extern int auto_thaw; /* Auto-thaw interval */
#ifdef WITH_CONTENT_SCAN #ifdef WITH_CONTENT_SCAN
extern BOOL av_failed; /* TRUE if the AV process failed */ extern int av_failed; /* TRUE if the AV process failed */
extern uschar *av_scanner; /* AntiVirus scanner to use for the malwa re condition */ extern uschar *av_scanner; /* AntiVirus scanner to use for the malwa re condition */
#endif #endif
extern BOOL background_daemon; /* Set FALSE to keep in foreground */
extern uschar *base62_chars; /* Table of base-62 characters */ extern uschar *base62_chars; /* Table of base-62 characters */
extern uschar *bi_command; /* Command for -bi option */ extern uschar *bi_command; /* Command for -bi option */
extern uschar *big_buffer; /* Used for various temp things */ extern uschar *big_buffer; /* Used for various temp things */
extern int big_buffer_size; /* Current size (can expand) */ extern int big_buffer_size; /* Current size (can expand) */
#ifdef EXPERIMENTAL_BRIGHTMAIL #ifdef EXPERIMENTAL_BRIGHTMAIL
extern uschar *bmi_alt_location; /* expansion variable that contains the a lternate location for the rcpt (available during routing) */ extern uschar *bmi_alt_location; /* expansion variable that contains the a lternate location for the rcpt (available during routing) */
extern uschar *bmi_base64_tracker_verdict; /* expansion variable with base-64 en coded OLD verdict string (available during routing) */ extern uschar *bmi_base64_tracker_verdict; /* expansion variable with base-64 en coded OLD verdict string (available during routing) */
extern uschar *bmi_base64_verdict; /* expansion variable with base-64 encode d verdict string (available during routing) */ extern uschar *bmi_base64_verdict; /* expansion variable with base-64 encode d verdict string (available during routing) */
extern uschar *bmi_config_file; /* Brightmail config file */ extern uschar *bmi_config_file; /* Brightmail config file */
extern int bmi_deliver; /* Flag that determines if the message sh ould be delivered to the rcpt (available during routing) */ extern int bmi_deliver; /* Flag that determines if the message sh ould be delivered to the rcpt (available during routing) */
skipping to change at line 277 skipping to change at line 389
extern uschar *bounce_sender_authentication; /* AUTH address for bounces */ extern uschar *bounce_sender_authentication; /* AUTH address for bounces */
extern uschar *callout_address; /* Address used for a malware/spamd/veri fy etc. callout */ extern uschar *callout_address; /* Address used for a malware/spamd/veri fy etc. callout */
extern int callout_cache_domain_positive_expire; /* Time for positive domain callout cache records to expire */ extern int callout_cache_domain_positive_expire; /* Time for positive domain callout cache records to expire */
extern int callout_cache_domain_negative_expire; /* Time for negative domain callout cache records to expire */ extern int callout_cache_domain_negative_expire; /* Time for negative domain callout cache records to expire */
extern int callout_cache_positive_expire; /* Time for positive callout cache records to expire */ extern int callout_cache_positive_expire; /* Time for positive callout cache records to expire */
extern int callout_cache_negative_expire; /* Time for negative callout cache records to expire */ extern int callout_cache_negative_expire; /* Time for negative callout cache records to expire */
extern uschar *callout_random_local_part; /* Local part to be used to check if s erver called will accept any local part */ extern uschar *callout_random_local_part; /* Local part to be used to check if s erver called will accept any local part */
extern uschar *check_dns_names_pattern;/* Regex for syntax check */ extern uschar *check_dns_names_pattern;/* Regex for syntax check */
extern int check_log_inodes; /* Minimum for message acceptance */ extern int check_log_inodes; /* Minimum for message acceptance */
extern int check_log_space; /* Minimum for message acceptance */ extern int_eximarith_t check_log_space; /* Minimum for message acceptance */
extern BOOL check_rfc2047_length; /* Check RFC 2047 encoded string length * / extern BOOL check_rfc2047_length; /* Check RFC 2047 encoded string length * /
extern int check_spool_inodes; /* Minimum for message acceptance */ extern int check_spool_inodes; /* Minimum for message acceptance */
extern int check_spool_space; /* Minimum for message acceptance */ extern int_eximarith_t check_spool_space; /* Minimum for message acceptance */
extern uschar *chunking_advertise_hosts; /* RFC 3030 CHUNKING */ extern uschar *chunking_advertise_hosts; /* RFC 3030 CHUNKING */
extern unsigned chunking_datasize; extern unsigned chunking_datasize;
extern unsigned chunking_data_left; extern unsigned chunking_data_left;
extern BOOL chunking_offered;
extern chunking_state_t chunking_state; extern chunking_state_t chunking_state;
extern uschar *client_authenticator; /* Authenticator name used for smtp delivery */ extern uschar *client_authenticator; /* Authenticator name used for smtp delivery */
extern uschar *client_authenticated_id; /* "login" name used for SMTP AUTH * / extern uschar *client_authenticated_id; /* "login" name used for SMTP AUTH * /
extern uschar *client_authenticated_sender; /* AUTH option to SMTP MAIL FROM (no t yet used) */ extern uschar *client_authenticated_sender; /* AUTH option to SMTP MAIL FROM (no t yet used) */
extern int clmacro_count; /* Number of command line macros */ extern int clmacro_count; /* Number of command line macros */
extern uschar *clmacros[]; /* Copy of them, for re-exec */ extern uschar *clmacros[]; /* Copy of them, for re-exec */
extern BOOL commandline_checks_require_admin; /* belt and braces for insecure setups */ extern BOOL commandline_checks_require_admin; /* belt and braces for insecure setups */
extern int connection_max_messages;/* Max down one SMTP connection */ extern int connection_max_messages;/* Max down one SMTP connection */
extern BOOL config_changed; /* True if -C used */
extern FILE *config_file; /* Configuration file */ extern FILE *config_file; /* Configuration file */
extern const uschar *config_filename; /* Configuration file name */ extern const uschar *config_filename; /* Configuration file name */
extern gid_t config_gid; /* Additional group owner */ extern gid_t config_gid; /* Additional group owner */
extern int config_lineno; /* Line number */ extern int config_lineno; /* Line number */
extern uschar *config_main_filelist; /* List of possible config files */ extern uschar *config_main_filelist; /* List of possible config files */
extern uschar *config_main_filename; /* File name actually used */ extern uschar *config_main_filename; /* File name actually used */
extern uschar *config_main_directory; /* Directory where the main config file w as found */ extern uschar *config_main_directory; /* Directory where the main config file w as found */
extern uid_t config_uid; /* Additional owner */ extern uid_t config_uid; /* Additional owner */
extern uschar *continue_proxy_cipher; /* TLS cipher for proxied continued deliv ery */ extern uschar *continue_proxy_cipher; /* TLS cipher for proxied continued deliv ery */
extern uschar *continue_hostname; /* Host for continued delivery */ extern uschar *continue_hostname; /* Host for continued delivery */
extern uschar *continue_host_address; /* IP address for ditto */ extern uschar *continue_host_address; /* IP address for ditto */
extern BOOL continue_more; /* Flag more addresses waiting */
extern int continue_sequence; /* Sequence num for continued delivery */ extern int continue_sequence; /* Sequence num for continued delivery */
extern uschar *continue_transport; /* Transport for continued delivery */ extern uschar *continue_transport; /* Transport for continued delivery */
extern uschar *csa_status; /* Client SMTP Authorization result */ extern uschar *csa_status; /* Client SMTP Authorization result */
typedef struct { typedef struct {
unsigned callout_hold_only:1; /* Conn is only for verify callout */ unsigned callout_hold_only:1; /* Conn is only for verify callout */
unsigned delivery:1; /* When to attempt */ unsigned delivery:1; /* When to attempt */
unsigned defer_pass:1; /* Pass 4xx to caller rather than spoolin g */ unsigned defer_pass:1; /* Pass 4xx to caller rather than spoolin g */
unsigned is_tls:1; /* Conn has TLS active */ unsigned is_tls:1; /* Conn has TLS active */
int fd; /* Open connection */ client_conn_ctx cctx; /* Open connection */
int nrcpt; /* Count of addresses */ int nrcpt; /* Count of addresses */
uschar * transport; /* Name of transport */ uschar * transport; /* Name of transport */
uschar * interface; /* (address of) */ uschar * interface; /* (address of) */
uschar * snd_ip; /* sending_ip_address */ uschar * snd_ip; /* sending_ip_address */
int snd_port; /* sending_port */ int snd_port; /* sending_port */
unsigned peer_options; /* smtp_peer_options */ unsigned peer_options; /* smtp_peer_options */
host_item host; /* Host used */ host_item host; /* Host used */
address_item addr; /* (Chain of) addresses */ address_item addr; /* (Chain of) addresses */
} cut_t; } cut_t;
extern cut_t cutthrough; /* Deliver-concurrently */ extern cut_t cutthrough; /* Deliver-concurrently */
extern BOOL daemon_listen; /* True if listening required */
extern uschar *daemon_smtp_port; /* Can be a list of ports */ extern uschar *daemon_smtp_port; /* Can be a list of ports */
extern int daemon_startup_retries; /* Number of times to retry */ extern int daemon_startup_retries; /* Number of times to retry */
extern int daemon_startup_sleep; /* Sleep between retries */ extern int daemon_startup_sleep; /* Sleep between retries */
#ifdef EXPERIMENTAL_DCC #ifdef EXPERIMENTAL_DCC
extern BOOL dcc_direct_add_header; /* directly add header */ extern BOOL dcc_direct_add_header; /* directly add header */
extern uschar *dcc_header; /* dcc header */ extern uschar *dcc_header; /* dcc header */
extern uschar *dcc_result; /* dcc result */ extern uschar *dcc_result; /* dcc result */
extern uschar *dccifd_address; /* address of the dccifd daemon */ extern uschar *dccifd_address; /* address of the dccifd daemon */
extern uschar *dccifd_options; /* options for the dccifd daemon */ extern uschar *dccifd_options; /* options for the dccifd daemon */
#endif #endif
extern BOOL debug_daemon; /* Debug the daemon process only */
extern int debug_fd; /* The fd for debug_file */ extern int debug_fd; /* The fd for debug_file */
extern FILE *debug_file; /* Where to write debugging info */ extern FILE *debug_file; /* Where to write debugging info */
extern int debug_notall[]; /* Debug options excluded from +all */ extern int debug_notall[]; /* Debug options excluded from +all */
extern bit_table debug_options[]; /* Table of debug options */ extern bit_table debug_options[]; /* Table of debug options */
extern int debug_options_count; /* Size of table */ extern int debug_options_count; /* Size of table */
extern BOOL debug_store; /* Do extra checks on store_reset */ extern BOOL debug_store; /* Do extra checks on store_reset */
extern int delay_warning[]; /* Times between warnings */ extern int delay_warning[]; /* Times between warnings */
extern uschar *delay_warning_condition; /* Condition string for warnings */ extern uschar *delay_warning_condition; /* Condition string for warnings */
extern BOOL delivery_date_remove; /* Remove delivery-date headers */ extern BOOL delivery_date_remove; /* Remove delivery-date headers */
extern uschar *deliver_address_data; /* Arbitrary data for an address */ extern uschar *deliver_address_data; /* Arbitrary data for an address */
extern int deliver_datafile; /* FD for data part of message */ extern int deliver_datafile; /* FD for data part of message */
extern const uschar *deliver_domain; /* The local domain for delivery */ extern const uschar *deliver_domain; /* The local domain for delivery */
extern uschar *deliver_domain_data; /* From domain lookup */ extern uschar *deliver_domain_data; /* From domain lookup */
extern const uschar *deliver_domain_orig; /* The original local domain for deliv ery */ extern const uschar *deliver_domain_orig; /* The original local domain for deliv ery */
extern const uschar *deliver_domain_parent; /* The parent domain for delivery */ extern const uschar *deliver_domain_parent; /* The parent domain for delivery */
extern BOOL deliver_drop_privilege; /* TRUE for unprivileged delivery */ extern BOOL deliver_drop_privilege; /* TRUE for unprivileged delivery */
extern BOOL deliver_firsttime; /* True for first delivery attempt */
extern BOOL deliver_force; /* TRUE if delivery was forced */
extern BOOL deliver_freeze; /* TRUE if delivery is frozen */
extern time_t deliver_frozen_at; /* Time of freezing */ extern time_t deliver_frozen_at; /* Time of freezing */
extern uschar *deliver_home; /* Home directory for pipes */ extern uschar *deliver_home; /* Home directory for pipes */
extern const uschar *deliver_host; /* (First) host for routed local deliveri es */ extern const uschar *deliver_host; /* (First) host for routed local deliveri es */
/* Remote host for filter */ /* Remote host for filter */
extern const uschar *deliver_host_address; /* Address for remote delivery filter */ extern const uschar *deliver_host_address; /* Address for remote delivery filter */
extern int deliver_host_port; /* Address for remote delivery filter */ extern int deliver_host_port; /* Address for remote delivery filter */
extern uschar *deliver_in_buffer; /* Buffer for copying file */ extern uschar *deliver_in_buffer; /* Buffer for copying file */
extern ino_t deliver_inode; /* Inode for appendfile */ extern ino_t deliver_inode; /* Inode for appendfile */
extern uschar *deliver_localpart; /* The local part for delivery */ extern uschar *deliver_localpart; /* The local part for delivery */
extern uschar *deliver_localpart_data; /* From local part lookup */ extern uschar *deliver_localpart_data; /* From local part lookup */
extern uschar *deliver_localpart_orig; /* The original local part for delivery * / extern uschar *deliver_localpart_orig; /* The original local part for delivery * /
extern uschar *deliver_localpart_parent; /* The parent local part for delivery * / extern uschar *deliver_localpart_parent; /* The parent local part for delivery * /
extern uschar *deliver_localpart_prefix; /* The stripped prefix, if any */ extern uschar *deliver_localpart_prefix; /* The stripped prefix, if any */
extern uschar *deliver_localpart_suffix; /* The stripped suffix, if any */ extern uschar *deliver_localpart_suffix; /* The stripped suffix, if any */
extern BOOL deliver_force_thaw; /* TRUE to force thaw in queue run */
extern BOOL deliver_manual_thaw; /* TRUE if manually thawed */
extern uschar *deliver_out_buffer; /* Buffer for copying file */ extern uschar *deliver_out_buffer; /* Buffer for copying file */
extern int deliver_queue_load_max; /* Different value for queue running */ extern int deliver_queue_load_max; /* Different value for queue running */
extern address_item *deliver_recipients; /* Current set of addresses */ extern address_item *deliver_recipients; /* Current set of addresses */
extern uschar *deliver_selectstring; /* For selecting by recipient */ extern uschar *deliver_selectstring; /* For selecting by recipient */
extern BOOL deliver_selectstring_regex; /* String is regex */
extern uschar *deliver_selectstring_sender; /* For selecting by sender */ extern uschar *deliver_selectstring_sender; /* For selecting by sender */
extern BOOL deliver_selectstring_sender_regex; /* String is regex */
extern BOOL disable_callout_flush; /* Don't flush before callouts */
extern BOOL disable_delay_flush; /* Don't flush before "delay" in ACL */
#ifdef ENABLE_DISABLE_FSYNC #ifdef ENABLE_DISABLE_FSYNC
extern BOOL disable_fsync; /* Not for normal use */ extern BOOL disable_fsync; /* Not for normal use */
#endif #endif
extern BOOL disable_ipv6; /* Don't do any IPv6 things */ extern BOOL disable_ipv6; /* Don't do any IPv6 things */
extern BOOL disable_logging; /* Disables log writing when TRUE */
#ifndef DISABLE_DKIM #ifndef DISABLE_DKIM
extern BOOL dkim_collect_input; /* Runtime flag that tracks wether SMTP i nput is fed to DKIM validation */ extern unsigned dkim_collect_input; /* Runtime count of dkim signtures; track s whether 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 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 se t, DKIM verification is disabled for the current message */
extern int dkim_key_length; /* Expansion variable, length of signing key in bits */ 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-separa ted list of domains and identities that have signed a message */ extern uschar *dkim_signers; /* Expansion variable, holds colon-separa ted list of domains and identities that have signed a message */
extern uschar *dkim_signing_domain; /* Expansion variable, domain used for si gning a message. */ extern uschar *dkim_signing_domain; /* Expansion variable, domain used for si gning a message. */
extern uschar *dkim_signing_selector; /* Expansion variable, selector used for signing a message. */ extern uschar *dkim_signing_selector; /* Expansion variable, selector used for signing a message. */
extern uschar *dkim_verify_overall; /* First successful domain verified, or n ull */ extern uschar *dkim_verify_overall; /* First successful domain verified, or n ull */
extern uschar *dkim_verify_signers; /* Colon-separated list of domains for ea ch of which we call the DKIM ACL */ extern uschar *dkim_verify_signers; /* Colon-separated list of domains for ea ch of which we call the DKIM ACL */
extern uschar *dkim_verify_status; /* result for this signature */ extern uschar *dkim_verify_status; /* result for this signature */
extern uschar *dkim_verify_reason; /* result for this signature */ extern uschar *dkim_verify_reason; /* result for this signature */
#endif #endif
#ifdef EXPERIMENTAL_DMARC #ifdef EXPERIMENTAL_DMARC
extern BOOL dmarc_has_been_checked; /* Global variable to check if test has b een called yet */
extern uschar *dmarc_domain_policy; /* Expansion for declared policy of used domain */ extern uschar *dmarc_domain_policy; /* Expansion for declared policy of used domain */
extern uschar *dmarc_forensic_sender; /* Set sender address for forensic report s */ extern uschar *dmarc_forensic_sender; /* Set sender address for forensic report s */
extern uschar *dmarc_history_file; /* Expansion variable, file to store dmar c results */ extern uschar *dmarc_history_file; /* Expansion variable, file to store dmar c results */
extern uschar *dmarc_status; /* Expansion variable, one word value */ extern uschar *dmarc_status; /* Expansion variable, one word value */
extern uschar *dmarc_status_text; /* Expansion variable, human readable val ue */ extern uschar *dmarc_status_text; /* Expansion variable, human readable val ue */
extern uschar *dmarc_tld_file; /* Mozilla TLDs text file */ extern uschar *dmarc_tld_file; /* Mozilla TLDs text file */
extern uschar *dmarc_used_domain; /* Expansion variable, domain libopendmar c chose for DMARC policy lookup */ extern uschar *dmarc_used_domain; /* Expansion variable, domain libopendmar c chose for DMARC policy lookup */
extern BOOL dmarc_disable_verify; /* Set via ACL control statement. When se
t, DMARC verification is disabled for the current message */
extern BOOL dmarc_enable_forensic; /* Set via ACL control statement. When se
t, DMARC forensic reports are enabled for the current message */
#endif #endif
extern uschar *dns_again_means_nonexist; /* Domains that are badly set up */ 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 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-standar d) */ extern BOOL dns_csa_use_reverse; /* Check CSA in reverse DNS? (non-standar d) */
extern int dns_cname_loops; /* Follow CNAMEs returned by resol ver to this depth */
extern uschar *dns_ipv4_lookup; /* For these domains, don't look for AAAA (or A6) */ extern uschar *dns_ipv4_lookup; /* For these domains, don't look for AAAA (or A6) */
#ifdef SUPPORT_DANE #ifdef SUPPORT_DANE
extern int dns_dane_ok; /* Ok to use DANE when checking TLS authe nticity */ extern int dns_dane_ok; /* Ok to use DANE when checking TLS authe nticity */
#endif #endif
extern int dns_retrans; /* Retransmission time setting */ extern int dns_retrans; /* Retransmission time setting */
extern int dns_retry; /* Number of retries */ extern int dns_retry; /* Number of retries */
extern int dns_dnssec_ok; /* When constructing DNS query, set DO fl ag */ extern int dns_dnssec_ok; /* When constructing DNS query, set DO fl ag */
extern uschar *dns_trust_aa; /* DNSSEC trust AA as AD */ extern uschar *dns_trust_aa; /* DNSSEC trust AA as AD */
extern int dns_use_edns0; /* Coerce EDNS0 support on/off in resolve r. */ extern int dns_use_edns0; /* Coerce EDNS0 support on/off in resolve r. */
extern uschar *dnslist_domain; /* DNS (black) list domain */ extern uschar *dnslist_domain; /* DNS (black) list domain */
extern uschar *dnslist_matched; /* DNS (black) list matched key */ extern uschar *dnslist_matched; /* DNS (black) list matched key */
extern uschar *dnslist_text; /* DNS (black) list text message */ extern uschar *dnslist_text; /* DNS (black) list text message */
extern uschar *dnslist_value; /* DNS (black) list IP address */ extern uschar *dnslist_value; /* DNS (black) list IP address */
extern tree_node *domainlist_anchor; /* Tree of defined domain lists */ extern tree_node *domainlist_anchor; /* Tree of defined domain lists */
extern int domainlist_count; /* Number defined */ extern int domainlist_count; /* Number defined */
extern BOOL dont_deliver; /* TRUE for -N option */
extern BOOL dot_ends; /* TRUE if "." ends non-SMTP input */
/* This option is now a no-opt, retained for compatibility */ /* This option is now a no-opt, retained for compatibility */
extern BOOL drop_cr; /* For broken local MUAs */ extern BOOL drop_cr; /* For broken local MUAs */
extern uschar *dsn_from; /* From: string for DSNs */ extern uschar *dsn_from; /* From: string for DSNs */
extern BOOL enable_dollar_recipients; /* Make $recipients available */
extern BOOL envelope_to_remove; /* Remove envelope_to_headers */ extern BOOL envelope_to_remove; /* Remove envelope_to_headers */
extern int errno_quota; /* Quota errno in this OS */ extern int errno_quota; /* Quota errno in this OS */
extern int error_handling; /* Error handling style */ extern int error_handling; /* Error handling style */
extern uschar *errors_copy; /* For taking copies of errors */ extern uschar *errors_copy; /* For taking copies of errors */
extern uschar *errors_reply_to; /* Reply-to for error messages */ extern uschar *errors_reply_to; /* Reply-to for error messages */
extern int errors_sender_rc; /* Return after message to sender*/ extern int errors_sender_rc; /* Return after message to sender*/
#ifndef DISABLE_EVENT #ifndef DISABLE_EVENT
extern uschar *event_action; /* expansion for delivery events */ extern uschar *event_action; /* expansion for delivery events */
extern uschar *event_data; /* event data */ extern uschar *event_data; /* event data */
skipping to change at line 471 skipping to change at line 563
extern BOOL exim_gid_set; /* TRUE if exim_gid set */ extern BOOL exim_gid_set; /* TRUE if exim_gid set */
extern uschar *exim_path; /* Path to exec exim */ extern uschar *exim_path; /* Path to exec exim */
extern const uschar *exim_sieve_extension_list[]; /* list of sieve extensions */ extern const uschar *exim_sieve_extension_list[]; /* list of sieve extensions */
extern uid_t exim_uid; /* Non-root uid for exim */ extern uid_t exim_uid; /* Non-root uid for exim */
extern BOOL exim_uid_set; /* TRUE if exim_uid set */ extern BOOL exim_uid_set; /* TRUE if exim_uid set */
extern int expand_level; /* Nesting depth; indent for debug */ extern int expand_level; /* Nesting depth; indent for debug */
extern int expand_forbid; /* RDO flags for forbidding things */ extern int expand_forbid; /* RDO flags for forbidding things */
extern int expand_nlength[]; /* Lengths of numbered strings */ extern int expand_nlength[]; /* Lengths of numbered strings */
extern int expand_nmax; /* Max numerical value */ extern int expand_nmax; /* Max numerical value */
extern uschar *expand_nstring[]; /* Numbered strings */ extern uschar *expand_nstring[]; /* Numbered strings */
extern BOOL expand_string_forcedfail; /* TRUE if failure was "expected" */
extern BOOL extract_addresses_remove_arguments; /* Controls -t behaviour */ extern BOOL extract_addresses_remove_arguments; /* Controls -t behaviour */
extern uschar *extra_local_interfaces; /* Local, non-listen interfaces */ extern uschar *extra_local_interfaces; /* Local, non-listen interfaces */
extern int fake_response; /* Fake FAIL or DEFER response to data */ extern int fake_response; /* Fake FAIL or DEFER response to data */
extern uschar *fake_response_text; /* User defined message for the above. De fault is in globals.c. */ extern uschar *fake_response_text; /* User defined message for the above. De fault is in globals.c. */
extern int filter_n[FILTER_VARIABLE_COUNT]; /* filter variables */ extern int filter_n[FILTER_VARIABLE_COUNT]; /* filter variables */
extern BOOL filter_running; /* TRUE while running a filter */
extern int filter_sn[FILTER_VARIABLE_COUNT]; /* variables set by system filt er */ extern int filter_sn[FILTER_VARIABLE_COUNT]; /* variables set by system filt er */
extern int filter_test; /* Filter test type */ extern int filter_test; /* Filter test type */
extern uschar *filter_test_sfile; /* System filter test file */ extern uschar *filter_test_sfile; /* System filter test file */
extern uschar *filter_test_ufile; /* User filter test file */ extern uschar *filter_test_ufile; /* User filter test file */
extern uschar *filter_thisaddress; /* For address looping */ extern uschar *filter_thisaddress; /* For address looping */
extern int finduser_retries; /* Retry count for getpwnam() */ extern int finduser_retries; /* Retry count for getpwnam() */
extern uid_t fixed_never_users[]; /* Can't be overridden */ extern uid_t fixed_never_users[]; /* Can't be overridden */
extern uschar *freeze_tell; /* Message on (some) freezings */ extern uschar *freeze_tell; /* Message on (some) freezings */
extern uschar *freeze_tell_config; /* The configured setting */ extern uschar *freeze_tell_config; /* The configured setting */
extern uschar *fudged_queue_times; /* For use in test harness */ extern uschar *fudged_queue_times; /* For use in test harness */
extern uschar *gecos_name; /* To be expanded when pattern matches */ extern uschar *gecos_name; /* To be expanded when pattern matches */
extern uschar *gecos_pattern; /* Pattern to match */ extern uschar *gecos_pattern; /* Pattern to match */
extern rewrite_rule *global_rewrite_rules; /* Chain of rewriting rules */ 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 call
ed */
extern int header_insert_maxlen; /* Max for inserting headers */ extern int header_insert_maxlen; /* Max for inserting headers */
extern int header_maxsize; /* Max total length for header */ extern int header_maxsize; /* Max total length for header */
extern int header_line_maxsize; /* Max for an individual line */ extern int header_line_maxsize; /* Max for an individual line */
extern header_name header_names[]; /* Table of header names */ extern header_name header_names[]; /* Table of header names */
extern int header_names_size; /* Number of entries */ extern int header_names_size; /* Number of entries */
extern BOOL header_rewritten; /* TRUE if header changed by router */
extern uschar *helo_accept_junk_hosts; /* Allowed to use junk arg */ extern uschar *helo_accept_junk_hosts; /* Allowed to use junk arg */
extern uschar *helo_allow_chars; /* Rogue chars to allow in HELO/EHLO */ extern uschar *helo_allow_chars; /* Rogue chars to allow in HELO/EHLO */
extern uschar *helo_lookup_domains; /* If these given, lookup host name */ extern uschar *helo_lookup_domains; /* If these given, lookup host name */
extern uschar *helo_try_verify_hosts; /* Soft check HELO argument for these */ extern uschar *helo_try_verify_hosts; /* Soft check HELO argument for these */
extern BOOL helo_verified; /* True if HELO verified */
extern BOOL helo_verify_failed; /* True if attempt failed */
extern uschar *helo_verify_hosts; /* Hard check HELO argument for these */ extern uschar *helo_verify_hosts; /* Hard check HELO argument for these */
extern const uschar *hex_digits; /* Used in several places */ extern const uschar *hex_digits; /* Used in several places */
extern uschar *hold_domains; /* Hold up deliveries to these */ extern uschar *hold_domains; /* Hold up deliveries to these */
extern BOOL host_find_failed_syntax;/* DNS syntax check failure */
extern BOOL host_checking_callout; /* TRUE if real callout wanted */
extern uschar *host_data; /* Obtained from lookup in ACL */ extern uschar *host_data; /* Obtained from lookup in ACL */
extern uschar *host_lookup; /* For which IP addresses are always look ed up */ extern uschar *host_lookup; /* For which IP addresses are always look ed up */
extern BOOL host_lookup_deferred; /* TRUE if lookup deferred */ extern BOOL host_lookup_deferred; /* TRUE if lookup deferred */
extern BOOL host_lookup_failed; /* TRUE if lookup failed */ extern BOOL host_lookup_failed; /* TRUE if lookup failed */
extern uschar *host_lookup_order; /* Order of host lookup types */ extern uschar *host_lookup_order; /* Order of host lookup types */
extern uschar *host_lookup_msg; /* Text for why it failed */ extern uschar *host_lookup_msg; /* Text for why it failed */
extern int host_number; /* For sharing spools */ extern int host_number; /* For sharing spools */
extern uschar *host_number_string; /* For expanding */ extern uschar *host_number_string; /* For expanding */
extern uschar *host_reject_connection; /* Reject these hosts */ extern uschar *host_reject_connection; /* Reject these hosts */
extern tree_node *hostlist_anchor; /* Tree of defined host lists */ extern tree_node *hostlist_anchor; /* Tree of defined host lists */
extern int hostlist_count; /* Number defined */ extern int hostlist_count; /* Number defined */
extern uschar *hosts_connection_nolog; /* Limits the logging option */ extern uschar *hosts_connection_nolog; /* Limits the logging option */
extern uschar *hosts_treat_as_local; /* For routing */ extern uschar *hosts_treat_as_local; /* For routing */
extern int ignore_bounce_errors_after; /* Keep them for this time. */ extern int ignore_bounce_errors_after; /* Keep them for this time. */
extern BOOL ignore_fromline_local; /* Local SMTP ignore fromline */ extern BOOL ignore_fromline_local; /* Local SMTP ignore fromline */
extern uschar *ignore_fromline_hosts; /* Hosts permitted to send "From " */ extern uschar *ignore_fromline_hosts; /* Hosts permitted to send "From " */
extern BOOL inetd_wait_mode; /* Whether running in inetd wait mode */
extern int inetd_wait_timeout; /* Timeout for inetd wait mode */ extern int inetd_wait_timeout; /* Timeout for inetd wait mode */
extern uschar *initial_cwd; /* The directory we where in at startup * / extern uschar *initial_cwd; /* The directory we where in at startup * /
extern BOOL is_inetd; /* True for inetd calls */
extern uschar *iterate_item; /* Item from iterate list */ extern uschar *iterate_item; /* Item from iterate list */
extern int journal_fd; /* Fd for journal file */ extern int journal_fd; /* Fd for journal file */
extern uschar *keep_environment; /* Whitelist for environment variables */ extern uschar *keep_environment; /* Whitelist for environment variables */
extern int keep_malformed; /* Time to keep malformed messages */ extern int keep_malformed; /* Time to keep malformed messages */
extern uschar *eldap_dn; /* Where LDAP DNs are left */ extern uschar *eldap_dn; /* Where LDAP DNs are left */
extern int load_average; /* Most recently read load average */ extern int load_average; /* Most recently read load average */
extern BOOL local_error_message; /* True if handling one of these */
extern BOOL local_from_check; /* For adding Sender: (global value) */ extern BOOL local_from_check; /* For adding Sender: (global value) */
extern uschar *local_from_prefix; /* Permitted prefixes */ extern uschar *local_from_prefix; /* Permitted prefixes */
extern uschar *local_from_suffix; /* Permitted suffixes */ extern uschar *local_from_suffix; /* Permitted suffixes */
extern uschar *local_interfaces; /* For forcing specific interfaces */ extern uschar *local_interfaces; /* For forcing specific interfaces */
#ifdef HAVE_LOCAL_SCAN
extern uschar *local_scan_data; /* Text returned by local_scan() */ extern uschar *local_scan_data; /* Text returned by local_scan() */
extern optionlist local_scan_options[];/* Option list for 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_options_count; /* Size of the list */
extern int local_scan_timeout; /* Timeout for local_scan() */ extern int local_scan_timeout; /* Timeout for local_scan() */
#endif
extern BOOL local_sender_retain; /* Retain Sender: (with no From: check) * / 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 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 */ extern uid_t local_user_uid; /* As it says; may be set in routers */
extern tree_node *localpartlist_anchor;/* Tree of defined localpart lists */ extern tree_node *localpartlist_anchor;/* Tree of defined localpart lists */
extern int localpartlist_count; /* Number defined */ extern int localpartlist_count; /* Number defined */
extern uschar *log_buffer; /* For constructing log entries */ extern uschar *log_buffer; /* For constructing log entries */
extern int log_default[]; /* Initialization list for log_selector * / extern int log_default[]; /* Initialization list for log_selector * /
extern uschar *log_file_path; /* If unset, use default */ extern uschar *log_file_path; /* If unset, use default */
extern int log_notall[]; /* Log options excluded from +all */ extern int log_notall[]; /* Log options excluded from +all */
extern bit_table log_options[]; /* Table of options */ extern bit_table log_options[]; /* Table of options */
extern int log_options_count; /* Size of table */ extern int log_options_count; /* Size of table */
extern int log_reject_target; /* Target log for ACL rejections */ extern int log_reject_target; /* Target log for ACL rejections */
extern unsigned int log_selector[]; /* Bit map of logging options */ extern unsigned int log_selector[]; /* Bit map of logging options */
extern uschar *log_selector_string; /* As supplied in the config */ extern uschar *log_selector_string; /* As supplied in the config */
extern FILE *log_stderr; /* Copy of stderr for log use, or NULL */ extern FILE *log_stderr; /* Copy of stderr for log use, or NULL */
extern BOOL log_testing_mode; /* TRUE in various testing modes */
extern BOOL log_timezone; /* TRUE to include the timezone in log li nes */ extern BOOL log_timezone; /* TRUE to include the timezone in log li nes */
extern uschar *login_sender_address; /* The actual sender address */ extern uschar *login_sender_address; /* The actual sender address */
extern lookup_info **lookup_list; /* Array of pointers to available lookups */ extern lookup_info **lookup_list; /* Array of pointers to available lookups */
extern int lookup_list_count; /* Number of entries in the list */ extern int lookup_list_count; /* Number of entries in the list */
extern uschar *lookup_dnssec_authenticated; /* AD status of dns lookup */ extern uschar *lookup_dnssec_authenticated; /* AD status of dns lookup */
extern int lookup_open_max; /* Max lookup files to cache */ extern int lookup_open_max; /* Max lookup files to cache */
extern uschar *lookup_value; /* Value looked up from file */ extern uschar *lookup_value; /* Value looked up from file */
extern macro_item *macros; /* Configuration macros */ extern macro_item *macros; /* Configuration macros */
extern macro_item *macros_user; /* Non-builtin configuration macros */ extern macro_item *macros_user; /* Non-builtin configuration macros */
skipping to change at line 632 skipping to change at line 719
extern int mime_is_multipart; extern int mime_is_multipart;
extern int mime_is_coverletter; extern int mime_is_coverletter;
extern int mime_is_rfc822; extern int mime_is_rfc822;
extern int mime_part_count; extern int mime_part_count;
#endif #endif
extern BOOL mua_wrapper; /* TRUE when Exim is wrapping an MUA */ extern BOOL mua_wrapper; /* TRUE when Exim is wrapping an MUA */
extern uid_t *never_users; /* List of uids never to be used */ extern uid_t *never_users; /* List of uids never to be used */
#ifdef WITH_CONTENT_SCAN #ifdef WITH_CONTENT_SCAN
extern BOOL no_mbox_unspool; /* don't unlink files in /scan directory */
#endif #endif
extern BOOL no_multiline_responses; /* For broken clients */
extern const int on; /* For setsockopt */ extern const int on; /* For setsockopt */
extern const int off; extern const int off;
extern optionlist optionlist_auths[]; /* These option lists are made */ extern optionlist optionlist_auths[]; /* These option lists are made */
extern int optionlist_auths_size; /* global so that readconf can */ extern int optionlist_auths_size; /* global so that readconf can */
extern optionlist optionlist_routers[]; /* see them for printing out */ extern optionlist optionlist_routers[]; /* see them for printing out */
extern int optionlist_routers_size; /* the options. */ extern int optionlist_routers_size; /* the options. */
extern optionlist optionlist_transports[]; extern optionlist optionlist_transports[];
extern int optionlist_transports_size; extern int optionlist_transports_size;
extern uid_t original_euid; /* Original effective uid */ extern uid_t original_euid; /* Original effective uid */
extern gid_t originator_gid; /* Gid of whoever wrote spool file */ extern gid_t originator_gid; /* Gid of whoever wrote spool file */
extern uschar *originator_login; /* Login of same */ extern uschar *originator_login; /* Login of same */
extern uschar *originator_name; /* Full name of same */ extern uschar *originator_name; /* Full name of same */
extern uid_t originator_uid; /* Uid of ditto */ extern uid_t originator_uid; /* Uid of ditto */
extern uschar *override_local_interfaces; /* Value of -oX argument */ extern uschar *override_local_interfaces; /* Value of -oX argument */
extern uschar *override_pid_file_path; /* Value of -oP argument */ extern uschar *override_pid_file_path; /* Value of -oP argument */
extern BOOL parse_allow_group; /* Allow group syntax */
extern BOOL parse_found_group; /* In the middle of a group */
extern uschar *percent_hack_domains; /* Local domains for which '% operates */ extern uschar *percent_hack_domains; /* Local domains for which '% operates */
extern uschar *pid_file_path; /* For writing daemon pids */ extern uschar *pid_file_path; /* For writing daemon pids */
#ifdef EXPERIMENTAL_PIPE_CONNECT
extern uschar *pipe_connect_advertise_hosts; /* for banner/EHLO pipelining */
#endif
extern uschar *pipelining_advertise_hosts; /* As it says */ extern uschar *pipelining_advertise_hosts; /* As it says */
extern BOOL pipelining_enable; /* As it says */
#ifndef DISABLE_PRDR #ifndef DISABLE_PRDR
extern BOOL prdr_enable; /* As it says */ extern BOOL prdr_enable; /* As it says */
extern BOOL prdr_requested; /* Connecting mail server wants PRDR */ extern BOOL prdr_requested; /* Connecting mail server wants PRDR */
#endif #endif
extern BOOL preserve_message_logs; /* Save msglog files */ extern BOOL preserve_message_logs; /* Save msglog files */
extern uschar *primary_hostname; /* Primary name of this computer */ extern uschar *primary_hostname; /* Primary name of this computer */
extern BOOL print_topbitchars; /* Topbit chars are printing chars */ extern BOOL print_topbitchars; /* Topbit chars are printing chars */
extern uschar process_info[]; /* For SIGUSR1 output */ extern uschar process_info[]; /* For SIGUSR1 output */
extern int process_info_len; extern int process_info_len;
extern uschar *process_log_path; /* Alternate path */ extern uschar *process_log_path; /* Alternate path */
extern BOOL prod_requires_admin; /* TRUE if prodding requires admin */ extern BOOL prod_requires_admin; /* TRUE if prodding requires admin */
#if defined(SUPPORT_PROXY) || defined(SUPPORT_SOCKS) #if defined(SUPPORT_PROXY) || defined(SUPPORT_SOCKS)
extern uschar *hosts_proxy; /* Hostlist which (require) use proxy pro tocol */ extern uschar *hosts_proxy; /* Hostlist which (require) use proxy pro tocol */
extern uschar *proxy_external_address; /* IP of remote interface of proxy */ extern uschar *proxy_external_address; /* IP of remote interface of proxy */
extern int proxy_external_port; /* Port on remote interface of proxy */ extern int proxy_external_port; /* Port on remote interface of proxy */
extern uschar *proxy_local_address; /* IP of local interface of proxy */ extern uschar *proxy_local_address; /* IP of local interface of proxy */
extern int proxy_local_port; /* Port on local interface of proxy */ extern int proxy_local_port; /* Port on local interface of proxy */
extern BOOL proxy_session; /* TRUE if receiving mail from valid prox y */ extern BOOL proxy_session; /* TRUE if receiving mail from valid prox y */
extern BOOL proxy_session_failed; /* TRUE if required proxy negotiation fai led */
#endif #endif
extern uschar *prvscheck_address; /* Set during prvscheck expansion item */ extern uschar *prvscheck_address; /* Set during prvscheck expansion item */
extern uschar *prvscheck_keynum; /* Set during prvscheck expansion item */ extern uschar *prvscheck_keynum; /* Set during prvscheck expansion item */
extern uschar *prvscheck_result; /* Set during prvscheck expansion item */ extern uschar *prvscheck_result; /* Set during prvscheck expansion item */
extern const uschar *qualify_domain_recipient; /* Domain to qualify recipients w ith */ extern const uschar *qualify_domain_recipient; /* Domain to qualify recipients w ith */
extern uschar *qualify_domain_sender; /* Domain to qualify senders with */ extern uschar *qualify_domain_sender; /* Domain to qualify senders with */
extern BOOL queue_2stage; /* Run queue in 2-stage manner */
extern uschar *queue_domains; /* Queue these domains */ extern uschar *queue_domains; /* Queue these domains */
extern BOOL queue_list_requires_admin; /* TRUE if -bp requires admin */ extern BOOL queue_list_requires_admin; /* TRUE if -bp requires admin */
extern BOOL queue_run_first_delivery; /* If TRUE, first deliveries only */
extern BOOL queue_run_force; /* TRUE to force during queue run */
extern BOOL queue_run_local; /* Local deliveries only in queue run */
extern BOOL queue_running; /* TRUE for queue running process and */
/* immediate children */ /* immediate children */
extern pid_t queue_run_pid; /* PID of the queue running process or 0 */ extern pid_t queue_run_pid; /* PID of the queue running process or 0 */
extern int queue_run_pipe; /* Pipe for synchronizing */ extern int queue_run_pipe; /* Pipe for synchronizing */
extern int queue_interval; /* Queue running interval */ extern int queue_interval; /* Queue running interval */
extern uschar *queue_name; /* Name of queue, if nondefault spooling */ extern uschar *queue_name; /* Name of queue, if nondefault spooling */
extern BOOL queue_only; /* TRUE to disable immediate delivery */ extern BOOL queue_only; /* TRUE to disable immediate delivery */
extern int queue_only_load; /* Max load before auto-queue */ extern int queue_only_load; /* Max load before auto-queue */
extern BOOL queue_only_load_latch; /* Latch queue_only_load TRUE */ extern BOOL queue_only_load_latch; /* Latch queue_only_load TRUE */
extern uschar *queue_only_file; /* Queue if file exists/not-exists */ extern uschar *queue_only_file; /* Queue if file exists/not-exists */
extern BOOL queue_only_override; /* Allow override from command line */ extern BOOL queue_only_override; /* Allow override from command line */
extern BOOL queue_only_policy; /* ACL or local_scan wants queue_only */
extern BOOL queue_run_in_order; /* As opposed to random */ extern BOOL queue_run_in_order; /* As opposed to random */
extern uschar *queue_run_max; /* Max queue runners */ extern uschar *queue_run_max; /* Max queue runners */
extern BOOL queue_smtp; /* Disable all immediate SMTP (-odqs)*/
extern uschar *queue_smtp_domains; /* Ditto, for these domains */ extern uschar *queue_smtp_domains; /* Ditto, for these domains */
extern unsigned int random_seed; /* Seed for random numbers */ extern unsigned int random_seed; /* Seed for random numbers */
extern tree_node *ratelimiters_cmd; /* Results of command ratelimit checks */ extern tree_node *ratelimiters_cmd; /* Results of command ratelimit checks */
extern tree_node *ratelimiters_conn; /* Results of connection ratelimit checks */ extern tree_node *ratelimiters_conn; /* Results of connection ratelimit checks */
extern tree_node *ratelimiters_mail; /* Results of per-mail ratelimit checks * / extern tree_node *ratelimiters_mail; /* Results of per-mail ratelimit checks * /
extern uschar *raw_active_hostname; /* Pre-expansion */ extern uschar *raw_active_hostname; /* Pre-expansion */
extern uschar *raw_sender; /* Before rewriting */ extern uschar *raw_sender; /* Before rewriting */
extern uschar **raw_recipients; /* Before rewriting */ extern uschar **raw_recipients; /* Before rewriting */
extern int raw_recipients_count; extern int raw_recipients_count;
extern int rcpt_count; /* Count of RCPT commands in a message */ extern int rcpt_count; /* Count of RCPT commands in a message */
extern int rcpt_fail_count; /* Those that got 5xx */ extern int rcpt_fail_count; /* Those that got 5xx */
extern int rcpt_defer_count; /* Those that got 4xx */ extern int rcpt_defer_count; /* Those that got 4xx */
extern gid_t real_gid; /* Real gid */ extern gid_t real_gid; /* Real gid */
extern uid_t real_uid; /* Real user running program */ extern uid_t real_uid; /* Real user running program */
extern BOOL really_exim; /* FALSE in utilities */
extern BOOL receive_call_bombout; /* Flag for crashing log */
extern int receive_linecount; /* Mainly for BSMTP errors */ extern int receive_linecount; /* Mainly for BSMTP errors */
extern int receive_messagecount; /* Mainly for BSMTP errors */ extern int receive_messagecount; /* Mainly for BSMTP errors */
extern int receive_timeout; /* For non-SMTP acceptance */ extern int receive_timeout; /* For non-SMTP acceptance */
extern int received_count; /* Count of Received: headers */ extern int received_count; /* Count of Received: headers */
extern uschar *received_for; /* For "for" field */ extern uschar *received_for; /* For "for" field */
extern uschar *received_header_text; /* Definition of Received: header */ extern uschar *received_header_text; /* Definition of Received: header */
extern int received_headers_max; /* Max count of Received: headers */ extern int received_headers_max; /* Max count of Received: headers */
extern struct timeval received_time; /* Time the message was received */ extern struct timeval received_time; /* Time the message was received */
extern struct timeval received_time_taken; /* Interval the message took to be re ceived */ extern struct timeval received_time_taken; /* Interval the message took to be re ceived */
extern uschar *recipient_data; /* lookup data for recipients */ extern uschar *recipient_data; /* lookup data for recipients */
extern uschar *recipient_unqualified_hosts; /* Permitted unqualified recipients */ extern uschar *recipient_unqualified_hosts; /* Permitted unqualified recipients */
extern uschar *recipient_verify_failure; /* What went wrong */ extern uschar *recipient_verify_failure; /* What went wrong */
extern BOOL recipients_discarded; /* By an ACL */
extern int recipients_list_max; /* Maximum number fitting in list */ extern int recipients_list_max; /* Maximum number fitting in list */
extern int recipients_max; /* Max permitted */ extern int recipients_max; /* Max permitted */
extern BOOL recipients_max_reject; /* If TRUE, reject whole message */ extern BOOL recipients_max_reject; /* If TRUE, reject whole message */
extern const pcre *regex_AUTH; /* For recognizing AUTH settings */ extern const pcre *regex_AUTH; /* For recognizing AUTH settings */
extern const pcre *regex_check_dns_names; /* For DNS name checking */ extern const pcre *regex_check_dns_names; /* For DNS name checking */
extern const pcre *regex_From; /* For recognizing "From_" lines */ extern const pcre *regex_From; /* For recognizing "From_" lines */
extern const pcre *regex_CHUNKING; /* For recognizing CHUNKING (RFC 3030) */ extern const pcre *regex_CHUNKING; /* For recognizing CHUNKING (RFC 3030) */
extern const pcre *regex_IGNOREQUOTA; /* For recognizing IGNOREQUOTA (LMTP) */ extern const pcre *regex_IGNOREQUOTA; /* For recognizing IGNOREQUOTA (LMTP) */
extern const pcre *regex_PIPELINING; /* For recognizing PIPELINING */ extern const pcre *regex_PIPELINING; /* For recognizing PIPELINING */
extern const pcre *regex_SIZE; /* For recognizing SIZE settings */ extern const pcre *regex_SIZE; /* For recognizing SIZE settings */
#ifdef EXPERIMENTAL_PIPE_CONNECT
extern const pcre *regex_EARLY_PIPE; /* For recognizing PIPE_CONNCT */
#endif
extern const pcre *regex_ismsgid; /* Compiled r.e. for message it */ extern const pcre *regex_ismsgid; /* Compiled r.e. for message it */
extern const pcre *regex_smtp_code; /* For recognizing SMTP codes */ extern const pcre *regex_smtp_code; /* For recognizing SMTP codes */
extern uschar *regex_vars[]; /* $regexN variables */ extern uschar *regex_vars[]; /* $regexN variables */
#ifdef WHITELIST_D_MACROS #ifdef WHITELIST_D_MACROS
extern const pcre *regex_whitelisted_macro; /* For -D macro values */ extern const pcre *regex_whitelisted_macro; /* For -D macro values */
#endif #endif
#ifdef WITH_CONTENT_SCAN #ifdef WITH_CONTENT_SCAN
extern uschar *regex_match_string; /* regex that matched a line (regex ACL c ondition) */ extern uschar *regex_match_string; /* regex that matched a line (regex ACL c ondition) */
#endif #endif
extern int remote_delivery_count; /* Number of remote addresses */ extern int remote_delivery_count; /* Number of remote addresses */
skipping to change at line 777 skipping to change at line 854
extern int rewrite_existflags; /* Indicate which headers have rewrites * / extern int rewrite_existflags; /* Indicate which headers have rewrites * /
extern uschar *rfc1413_hosts; /* RFC hosts */ extern uschar *rfc1413_hosts; /* RFC hosts */
extern int rfc1413_query_timeout; /* Timeout on RFC 1413 calls */ extern int rfc1413_query_timeout; /* Timeout on RFC 1413 calls */
/* extern BOOL rfc821_domains; */ /* If set, syntax is 821, not 822 => being abolished */ /* extern BOOL rfc821_domains; */ /* If set, syntax is 821, not 822 => being abolished */
extern uid_t root_gid; /* The gid for root */ extern uid_t root_gid; /* The gid for root */
extern uid_t root_uid; /* The uid for root */ extern uid_t root_uid; /* The uid for root */
extern router_info routers_available[];/* Vector of available routers */ extern router_info routers_available[];/* Vector of available routers */
extern router_instance *routers; /* Chain of instantiated routers */ extern router_instance *routers; /* Chain of instantiated routers */
extern router_instance router_defaults;/* Default values */ extern router_instance router_defaults;/* Default values */
extern uschar *router_name; /* Name of router last started */ extern uschar *router_name; /* Name of router last started */
extern BOOL running_in_test_harness; /*TRUE when running_status is patched */
extern ip_address_item *running_interfaces; /* Host's running interfaces */ extern ip_address_item *running_interfaces; /* Host's running interfaces */
extern uschar *running_status; /* Flag string for testing */ extern uschar *running_status; /* Flag string for testing */
extern int runrc; /* rc from ${run} */ extern int runrc; /* rc from ${run} */
extern uschar *search_error_message; /* Details of lookup problem */ extern uschar *search_error_message; /* Details of lookup problem */
extern BOOL search_find_defer; /* Set TRUE if lookup deferred */
extern uschar *self_hostname; /* Self host after routing->directors */ extern uschar *self_hostname; /* Self host after routing->directors */
extern unsigned int sender_address_cache[(MAX_NAMED_LIST * 2)/32]; /* Cache bits for sender */ extern unsigned int sender_address_cache[(MAX_NAMED_LIST * 2)/32]; /* Cache bits for sender */
extern uschar *sender_address_data; /* address_data from sender verify */ extern uschar *sender_address_data; /* address_data from sender verify */
extern BOOL sender_address_forced; /* Set by -f */
extern uschar *sender_address_unrewritten; /* Set if rewritten by verify */ extern uschar *sender_address_unrewritten; /* Set if rewritten by verify */
extern uschar *sender_data; /* lookup result for senders */ extern uschar *sender_data; /* lookup result for senders */
extern unsigned int sender_domain_cache[(MAX_NAMED_LIST * 2)/32]; /* Cache bits for sender domain */ extern unsigned int sender_domain_cache[(MAX_NAMED_LIST * 2)/32]; /* Cache bits for sender domain */
extern uschar *sender_fullhost; /* Sender host name + address */ extern uschar *sender_fullhost; /* Sender host name + address */
extern BOOL sender_helo_dnssec; /* True if HELO verify used DNS and was D NSSEC */ extern BOOL sender_helo_dnssec; /* True if HELO verify used DNS and was D NSSEC */
extern uschar *sender_helo_name; /* Host name from HELO/EHLO */ extern uschar *sender_helo_name; /* Host name from HELO/EHLO */
extern uschar **sender_host_aliases; /* Points to list of alias names */ extern uschar **sender_host_aliases; /* Points to list of alias names */
extern uschar *sender_host_auth_pubname; /* Public-name of authentication method */ extern uschar *sender_host_auth_pubname; /* Public-name of authentication method */
extern unsigned int sender_host_cache[(MAX_NAMED_LIST * 2)/32]; /* Cache bits fo r incoming host */ extern unsigned int sender_host_cache[(MAX_NAMED_LIST * 2)/32]; /* Cache bits fo r incoming host */
extern BOOL sender_host_dnssec; /* true if sender_host_name verified in D NSSEC */ extern BOOL sender_host_dnssec; /* true if sender_host_name verified in D NSSEC */
extern BOOL sender_host_notsocket; /* Set for -bs and -bS */
extern BOOL sender_host_unknown; /* TRUE for -bs and -bS except inetd */
extern uschar *sender_ident; /* Sender identity via RFC 1413 */ extern uschar *sender_ident; /* Sender identity via RFC 1413 */
extern BOOL sender_local; /* TRUE for local senders */
extern BOOL sender_name_forced; /* Set by -F */
extern uschar *sender_rate; /* Sender rate computed by ACL */ extern uschar *sender_rate; /* Sender rate computed by ACL */
extern uschar *sender_rate_limit; /* Configured rate limit */ extern uschar *sender_rate_limit; /* Configured rate limit */
extern uschar *sender_rate_period; /* Configured smoothing period */ extern uschar *sender_rate_period; /* Configured smoothing period */
extern uschar *sender_rcvhost; /* Host data for Received: */ extern uschar *sender_rcvhost; /* Host data for Received: */
extern BOOL sender_set_untrusted; /* Sender set by untrusted caller */
extern uschar *sender_unqualified_hosts; /* Permitted unqualified senders */ extern uschar *sender_unqualified_hosts; /* Permitted unqualified senders */
extern uschar *sender_verify_failure; /* What went wrong */ extern uschar *sender_verify_failure; /* What went wrong */
extern address_item *sender_verified_list; /* Saved chain of sender verifies */ extern address_item *sender_verified_list; /* Saved chain of sender verifies */
extern address_item *sender_verified_failed; /* The one that caused denial */ extern address_item *sender_verified_failed; /* The one that caused denial */
extern uschar *sending_ip_address; /* Address of outgoing (SMTP) interface * / extern uschar *sending_ip_address; /* Address of outgoing (SMTP) interface * /
extern int sending_port; /* Port of outgoing interface */ extern int sending_port; /* Port of outgoing interface */
extern SIGNAL_BOOL sigalrm_seen; /* Flag for sigalrm_handler */ extern SIGNAL_BOOL sigalrm_seen; /* Flag for sigalrm_handler */
extern const uschar *sigalarm_setter; /* For debug, set to callpoint of alarm() */
extern uschar **sighup_argv; /* Args for re-execing after SIGHUP */ extern uschar **sighup_argv; /* Args for re-execing after SIGHUP */
extern int slow_lookup_log; /* Log DNS lookups taking longer than N m illisecs */ extern int slow_lookup_log; /* Log DNS lookups taking longer than N m illisecs */
extern int smtp_accept_count; /* Count of connections */ extern int smtp_accept_count; /* Count of connections */
extern BOOL smtp_accept_keepalive; /* Set keepalive on incoming */ extern BOOL smtp_accept_keepalive; /* Set keepalive on incoming */
extern int smtp_accept_max; /* Max SMTP connections */ extern int smtp_accept_max; /* Max SMTP connections */
extern int smtp_accept_max_nonmail;/* Max non-mail commands in one con */ extern int smtp_accept_max_nonmail;/* Max non-mail commands in one con */
extern uschar *smtp_accept_max_nonmail_hosts; /* Limit non-mail cmds from these hosts */ extern uschar *smtp_accept_max_nonmail_hosts; /* Limit non-mail cmds from these hosts */
extern int smtp_accept_max_per_connection; /* Max msgs per connection */ extern int smtp_accept_max_per_connection; /* Max msgs per connection */
extern uschar *smtp_accept_max_per_host; /* Max SMTP cons from one IP addr */ extern uschar *smtp_accept_max_per_host; /* Max SMTP cons from one IP addr */
extern int smtp_accept_queue; /* Queue after so many connections */ extern int smtp_accept_queue; /* Queue after so many connections */
extern int smtp_accept_queue_per_connection; /* Queue after so many msgs */ extern int smtp_accept_queue_per_connection; /* Queue after so many msgs */
extern int smtp_accept_reserve; /* Reserve these SMTP connections */ extern int smtp_accept_reserve; /* Reserve these SMTP connections */
extern uschar *smtp_active_hostname; /* Hostname for this message */ extern uschar *smtp_active_hostname; /* Hostname for this message */
extern BOOL smtp_authenticated; /* Sending client has authenticated */
extern uschar *smtp_banner; /* Banner string (to be expanded) */ extern uschar *smtp_banner; /* Banner string (to be expanded) */
extern BOOL smtp_check_spool_space; /* TRUE to check SMTP SIZE value */ extern BOOL smtp_check_spool_space; /* TRUE to check SMTP SIZE value */
extern int smtp_ch_index; /* Index in smtp_connection_had */ extern int smtp_ch_index; /* Index in smtp_connection_had */
extern uschar *smtp_cmd_argument; /* For all SMTP commands */ extern uschar *smtp_cmd_argument; /* For all SMTP commands */
extern uschar *smtp_cmd_buffer; /* SMTP command buffer */ extern uschar *smtp_cmd_buffer; /* SMTP command buffer */
extern struct timeval smtp_connection_start; /* Start time of SMTP connection */ extern struct timeval smtp_connection_start; /* Start time of SMTP connection */
extern uschar smtp_connection_had[]; /* Recent SMTP commands */ extern uschar smtp_connection_had[]; /* Recent SMTP commands */
extern int smtp_connect_backlog; /* Max backlog permitted */ extern int smtp_connect_backlog; /* Max backlog permitted */
extern double smtp_delay_mail; /* Current MAIL delay */ extern double smtp_delay_mail; /* Current MAIL delay */
extern double smtp_delay_rcpt; /* Current RCPT delay */ extern double smtp_delay_rcpt; /* Current RCPT delay */
skipping to change at line 888 skipping to change at line 957
#endif #endif
#ifdef SUPPORT_SPF #ifdef SUPPORT_SPF
extern uschar *spf_guess; /* spf best-guess record */ extern uschar *spf_guess; /* spf best-guess record */
extern uschar *spf_header_comment; /* spf header comment */ extern uschar *spf_header_comment; /* spf header comment */
extern uschar *spf_received; /* Received-SPF: header */ extern uschar *spf_received; /* Received-SPF: header */
extern uschar *spf_result; /* spf result in string form */ extern uschar *spf_result; /* spf result in string form */
extern BOOL spf_result_guessed; /* spf result is of best-guess operation */ extern BOOL spf_result_guessed; /* spf result is of best-guess operation */
extern uschar *spf_smtp_comment; /* spf comment to include in SMTP reply * / extern uschar *spf_smtp_comment; /* spf comment to include in SMTP reply * /
#endif #endif
extern BOOL split_spool_directory; /* TRUE to use multiple subdirs */ 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 uschar *spool_directory; /* Name of spool directory */
extern BOOL spool_file_wireformat; /* current -D file has CRLF rather than N L */
extern BOOL spool_wireformat; /* can write wireformat -D files */ extern BOOL spool_wireformat; /* can write wireformat -D files */
#ifdef EXPERIMENTAL_SRS #ifdef EXPERIMENTAL_SRS
extern uschar *srs_config; /* SRS config secret:max age:hash length: use timestamp:use hash */ extern uschar *srs_config; /* SRS config secret:max age:hash length: use timestamp:use hash */
extern uschar *srs_db_address; /* SRS db address */ extern uschar *srs_db_address; /* SRS db address */
extern uschar *srs_db_key; /* SRS db key */ extern uschar *srs_db_key; /* SRS db key */
extern int srs_hashlength; /* SRS hash length */ extern int srs_hashlength; /* SRS hash length */
extern int srs_hashmin; /* SRS minimum hash length */ extern int srs_hashmin; /* SRS minimum hash length */
extern int srs_maxage; /* SRS max age */ extern int srs_maxage; /* SRS max age */
extern uschar *srs_orig_sender; /* SRS original sender */ extern uschar *srs_orig_sender; /* SRS original sender */
extern uschar *srs_orig_recipient; /* SRS original recipient */ extern uschar *srs_orig_recipient; /* SRS original recipient */
skipping to change at line 913 skipping to change at line 982
extern BOOL srs_usehash; /* SRS use hash flag */ extern BOOL srs_usehash; /* SRS use hash flag */
extern BOOL srs_usetimestamp; /* SRS use timestamp flag */ extern BOOL srs_usetimestamp; /* SRS use timestamp flag */
#endif #endif
extern BOOL strict_acl_vars; /* ACL variables have to be set before be ing used */ extern BOOL strict_acl_vars; /* ACL variables have to be set before be ing used */
extern int string_datestamp_offset;/* After insertion by string_format */ extern int string_datestamp_offset;/* After insertion by string_format */
extern int string_datestamp_length;/* After insertion by string_format */ extern int string_datestamp_length;/* After insertion by string_format */
extern int string_datestamp_type; /* After insertion by string_format */ extern int string_datestamp_type; /* After insertion by string_format */
extern BOOL strip_excess_angle_brackets; /* Surrounding route-addrs */ extern BOOL strip_excess_angle_brackets; /* Surrounding route-addrs */
extern BOOL strip_trailing_dot; /* Remove dots at ends of domains */ extern BOOL strip_trailing_dot; /* Remove dots at ends of domains */
extern uschar *submission_domain; /* Domain for submission mode */ extern uschar *submission_domain; /* Domain for submission mode */
extern BOOL submission_mode; /* Can be forced from ACL */
extern uschar *submission_name; /* User name set from ACL */ extern uschar *submission_name; /* User name set from ACL */
extern BOOL suppress_local_fixups; /* Can be forced from ACL */
extern BOOL suppress_local_fixups_default; /* former is reset to this; overri
de with -G */
extern BOOL synchronous_delivery; /* TRUE if -odi is set */
extern BOOL syslog_duplication; /* FALSE => no duplicate logging */ extern BOOL syslog_duplication; /* FALSE => no duplicate logging */
extern int syslog_facility; /* As defined by Syslog.h */ extern int syslog_facility; /* As defined by Syslog.h */
extern BOOL syslog_pid; /* TRUE if PID on syslogs */ extern BOOL syslog_pid; /* TRUE if PID on syslogs */
extern uschar *syslog_processname; /* 'ident' param to openlog() */ extern uschar *syslog_processname; /* 'ident' param to openlog() */
extern BOOL syslog_timestamp; /* TRUE if time on syslogs */ extern BOOL syslog_timestamp; /* TRUE if time on syslogs */
extern uschar *system_filter; /* Name of system filter file */ extern uschar *system_filter; /* Name of system filter file */
extern uschar *system_filter_directory_transport; /* Transports for the */ extern uschar *system_filter_directory_transport; /* Transports for the */
extern uschar *system_filter_file_transport; /* system filter */ extern uschar *system_filter_file_transport; /* system filter */
extern uschar *system_filter_pipe_transport; extern uschar *system_filter_pipe_transport;
extern uschar *system_filter_reply_transport; extern uschar *system_filter_reply_transport;
extern gid_t system_filter_gid; /* Gid for running system filter */ extern gid_t system_filter_gid; /* Gid for running system filter */
extern BOOL system_filter_gid_set; /* TRUE if gid set */ extern BOOL system_filter_gid_set; /* TRUE if gid set */
extern uid_t system_filter_uid; /* Uid for running system filter */ extern uid_t system_filter_uid; /* Uid for running system filter */
extern BOOL system_filter_uid_set; /* TRUE if uid set */ extern BOOL system_filter_uid_set; /* TRUE if uid set */
extern BOOL system_filtering; /* TRUE when running system filter */
extern BOOL tcp_fastopen_ok; /* appears to be supported by kern el */
extern blob tcp_fastopen_nodata; /* for zero-data TFO connect requests */ extern blob tcp_fastopen_nodata; /* for zero-data TFO connect requests */
extern BOOL tcp_in_fastopen; /* conn usefully used fastopen */
extern BOOL tcp_in_fastopen_logged; /* one-time logging */
extern BOOL tcp_nodelay; /* Controls TCP_NODELAY on daemon */ extern BOOL tcp_nodelay; /* Controls TCP_NODELAY on daemon */
extern int tcp_out_fastopen; /* 0: no 1: conn used 2: useful */ extern tfo_state_t tcp_out_fastopen; /* TCP fast open */
extern BOOL tcp_out_fastopen_logged; /* one-time logging */
#ifdef USE_TCP_WRAPPERS #ifdef USE_TCP_WRAPPERS
extern uschar *tcp_wrappers_daemon_name; /* tcpwrappers daemon lookup name */ extern uschar *tcp_wrappers_daemon_name; /* tcpwrappers daemon lookup name */
#endif #endif
extern int test_harness_load_avg; /* For use when testing */ extern int test_harness_load_avg; /* For use when testing */
extern int thismessage_size_limit; /* Limit for this message */ extern int thismessage_size_limit; /* Limit for this message */
extern int timeout_frozen_after; /* Max time to keep frozen messages */ extern int timeout_frozen_after; /* Max time to keep frozen messages */
extern BOOL timestamps_utc; /* Use UTC for all times */
extern uschar *transport_name; /* Name of transport last started */ extern uschar *transport_name; /* Name of transport last started */
extern int transport_count; /* Count of bytes transported */ extern int transport_count; /* Count of bytes transported */
extern int transport_newlines; /* Accurate count of number of newline ch ars transported */ extern int transport_newlines; /* Accurate count of number of newline ch ars transported */
extern const uschar **transport_filter_argv; /* For on-the-fly filtering */ extern const uschar **transport_filter_argv; /* For on-the-fly filtering */
extern int transport_filter_timeout; /* Timeout for same */ extern int transport_filter_timeout; /* Timeout for same */
extern BOOL transport_filter_timed_out; /* True if it did */
extern transport_info transports_available[]; /* Vector of available transports */ extern transport_info transports_available[]; /* Vector of available transports */
extern transport_instance *transports; /* Chain of instantiated transports */ extern transport_instance *transports; /* Chain of instantiated transports */
extern transport_instance transport_defaults; /* Default values */ extern transport_instance transport_defaults; /* Default values */
extern int transport_write_timeout;/* Set to time out individual writes */ extern int transport_write_timeout;/* Set to time out individual writes */
extern tree_node *tree_dns_fails; /* Tree of DNS lookup failures */ extern tree_node *tree_dns_fails; /* Tree of DNS lookup failures */
extern tree_node *tree_duplicates; /* Tree of duplicate addresses */ extern tree_node *tree_duplicates; /* Tree of duplicate addresses */
extern tree_node *tree_nonrecipients; /* Tree of nonrecipient addresses */ extern tree_node *tree_nonrecipients; /* Tree of nonrecipient addresses */
extern tree_node *tree_unusable; /* Tree of unusable addresses */ extern tree_node *tree_unusable; /* Tree of unusable addresses */
extern BOOL trusted_caller; /* Caller is trusted */
extern BOOL trusted_config; /* Configuration file is trusted */
extern gid_t *trusted_groups; /* List of trusted groups */ extern gid_t *trusted_groups; /* List of trusted groups */
extern uid_t *trusted_users; /* List of trusted users */ extern uid_t *trusted_users; /* List of trusted users */
extern uschar *timezone_string; /* Required timezone setting */ extern uschar *timezone_string; /* Required timezone setting */
extern uschar *unknown_login; /* To use when login id unknown */ extern uschar *unknown_login; /* To use when login id unknown */
extern uschar *unknown_username; /* Ditto */ extern uschar *unknown_username; /* Ditto */
extern uschar *untrusted_set_sender; /* Let untrusted users set these senders */ extern uschar *untrusted_set_sender; /* Let untrusted users set these senders */
extern uschar *uucp_from_pattern; /* For recognizing "From " lines */ extern uschar *uucp_from_pattern; /* For recognizing "From " lines */
extern uschar *uucp_from_sender; /* For building the sender */ extern uschar *uucp_from_sender; /* For building the sender */
 End of changes. 76 change blocks. 
93 lines changed or deleted 180 lines changed or added

Home  |  About  |  Features  |  All  |  Newest  |  Dox  |  Diffs  |  RSS Feeds  |  Screenshots  |  Comments  |  Imprint  |  Privacy  |  HTTP(S)