-/* $Cambridge: exim/src/src/globals.c,v 1.60 2006/10/16 15:44:36 ph10 Exp $ */
+/* $Cambridge: exim/src/src/globals.c,v 1.85 2009/10/16 09:51:12 nm4 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
*************************************************/
-/* Copyright (c) University of Cambridge 1995 - 2006 */
+/* Copyright (c) University of Cambridge 1995 - 2007 */
/* See the file NOTICE for conditions of use and distribution. */
/* All the global variables are defined together in this one module, so
data blocks and hence have the opt_public flag set. */
optionlist optionlist_auths[] = {
+ { "client_condition", opt_stringptr | opt_public,
+ (void *)(offsetof(auth_instance, client_condition)) },
{ "driver", opt_stringptr | opt_public,
(void *)(offsetof(auth_instance, driver_name)) },
{ "public_name", opt_stringptr | opt_public,
uschar *tls_peerdn = NULL;
#ifdef SUPPORT_TLS
+BOOL gnutls_compat_mode = FALSE;
+uschar *gnutls_require_mac = NULL;
+uschar *gnutls_require_kx = NULL;
+uschar *gnutls_require_proto = NULL;
const pcre *regex_STARTTLS = NULL;
uschar *tls_advertise_hosts = NULL; /* This is deliberate */
uschar *tls_certificate = NULL;
int (*receive_ungetc)(int) = stdin_ungetc;
int (*receive_feof)(void) = stdin_feof;
int (*receive_ferror)(void) = stdin_ferror;
+BOOL (*receive_smtp_buffered)(void) = NULL; /* Only used for SMTP */
#endif
header_line *acl_added_headers = NULL;
tree_node *acl_anchor = NULL;
+
uschar *acl_not_smtp = NULL;
#ifdef WITH_CONTENT_SCAN
uschar *acl_not_smtp_mime = NULL;
#endif
uschar *acl_not_smtp_start = NULL;
+
uschar *acl_smtp_auth = NULL;
uschar *acl_smtp_connect = NULL;
uschar *acl_smtp_data = NULL;
+#ifndef DISABLE_DKIM
+uschar *acl_smtp_dkim = NULL;
+#endif
uschar *acl_smtp_etrn = NULL;
uschar *acl_smtp_expn = NULL;
uschar *acl_smtp_helo = NULL;
#ifdef WITH_CONTENT_SCAN
uschar *acl_smtp_mime = NULL;
#endif
+uschar *acl_smtp_notquit = NULL;
uschar *acl_smtp_predata = NULL;
uschar *acl_smtp_quit = NULL;
uschar *acl_smtp_rcpt = NULL;
uschar *acl_smtp_starttls = NULL;
uschar *acl_smtp_vrfy = NULL;
+
BOOL acl_temp_details = FALSE;
tree_node *acl_var_c = NULL;
tree_node *acl_var_m = NULL;
US"MAIL",
US"PREDATA",
US"MIME",
+ US"DKIM",
US"DATA",
US"non-SMTP",
US"AUTH",
US"EHLO or HELO",
US"MAILAUTH",
US"non-SMTP-start",
+ US"NOTQUIT",
US"QUIT",
US"STARTTLS",
US"VRFY"
US"550", /* MAIL */
US"550", /* PREDATA */
US"550", /* MIME */
+ US"550", /* DKIM */
US"550", /* DATA */
US"0", /* not SMTP; not relevant */
US"503", /* AUTH */
US"550", /* HELO/EHLO */
US"0", /* MAILAUTH; not relevant */
US"0", /* not SMTP; not relevant */
+ US"0", /* NOTQUIT; not relevant */
US"0", /* QUIT; not relevant */
US"550", /* STARTTLS */
US"252" /* VRFY */
NULL, /* private options block pointer */
NULL, /* driver_name */
NULL, /* advertise_condition */
+ NULL, /* client_condition */
NULL, /* public_name */
NULL, /* set_id */
NULL, /* server_mail_auth_condition */
int callout_cache_positive_expire = 24*60*60;
int callout_cache_negative_expire = 2*60*60;
uschar *callout_random_local_part = US"$primary_hostname-$tod_epoch-testing";
-uschar *check_dns_names_pattern= US"(?i)^(?>(?(1)\\.|())[^\\W_](?>[a-z0-9/-]*[^\\W_])?)+$";
+uschar *check_dns_names_pattern= US"(?i)^(?>(?(1)\\.|())[^\\W](?>[a-z0-9/_-]*[^\\W])?)+(\\.?)$";
int check_log_inodes = 0;
int check_log_space = 0;
BOOL check_rfc2047_length = TRUE;
uschar *daemon_smtp_port = US"smtp";
int daemon_startup_retries = 9;
int daemon_startup_sleep = 30;
+
+#ifdef EXPERIMENTAL_DCC
+BOOL dcc_direct_add_header = FALSE;
+uschar *dcc_header = NULL;
+uschar *dcc_result = NULL;
+uschar *dccifd_address = US"/usr/local/dcc/var/dccifd";
+uschar *dccifd_options = US"header";
+#endif
+
BOOL debug_daemon = FALSE;
int debug_fd = -1;
FILE *debug_file = NULL;
int demime_ok = 0;
uschar *demime_reason = NULL;
#endif
+BOOL disable_callout_flush = FALSE;
+BOOL disable_delay_flush = FALSE;
+#ifdef ENABLE_DISABLE_FSYNC
+BOOL disable_fsync = FALSE;
+#endif
BOOL disable_ipv6 = FALSE;
BOOL disable_logging = FALSE;
-#ifdef EXPERIMENTAL_DOMAINKEYS
-uschar *dk_signing_domain = NULL;
-uschar *dk_signing_selector = NULL;
-int dk_do_verify = 0;
+#ifndef DISABLE_DKIM
+uschar *dkim_cur_signer = NULL;
+uschar *dkim_signers = NULL;
+uschar *dkim_signing_domain = NULL;
+uschar *dkim_signing_selector = NULL;
+uschar *dkim_verify_signers = US"$dkim_signers";
+BOOL dkim_collect_input = FALSE;
+BOOL dkim_disable_verify = FALSE;
#endif
uschar *dns_again_means_nonexist = NULL;
int dns_retrans = 0;
int dns_retry = 0;
uschar *dnslist_domain = NULL;
+uschar *dnslist_matched = NULL;
uschar *dnslist_text = NULL;
uschar *dnslist_value = NULL;
tree_node *domainlist_anchor = NULL;
BOOL dont_deliver = FALSE;
BOOL dot_ends = TRUE;
BOOL drop_cr = FALSE; /* No longer used */
+uschar *dsn_from = US DEFAULT_DSN_FROM;
BOOL enable_dollar_recipients = FALSE;
BOOL envelope_to_remove = TRUE;
uschar *extra_local_interfaces = NULL;
int fake_response = OK;
-uschar *fake_response_text = US"Your message has been rejected but is being kept for evaluation.\nIf it was a legitimate message, it may still be delivered to the target recipient(s).";
+uschar *fake_response_text = US"Your message has been rejected but is "
+ "being kept for evaluation.\nIf it was a "
+ "legitimate message, it may still be "
+ "delivered to the target recipient(s).";
int filter_n[FILTER_VARIABLE_COUNT];
BOOL filter_running = FALSE;
int filter_sn[FILTER_VARIABLE_COUNT];
uschar *interface_address = NULL;
int interface_port = -1;
BOOL is_inetd = FALSE;
+uschar *iterate_item = NULL;
int journal_fd = -1;
independently. This separation became necessary when the number of log
selectors was getting close to filling a 32-bit word. */
+/* Note that this list must be in alphabetical order. */
+
bit_table log_options[] = {
{ US"acl_warn_skipped", LX_acl_warn_skipped },
{ US"address_rewrite", L_address_rewrite },
{ US"incoming_port", LX_incoming_port },
{ US"lost_incoming_connection", L_lost_incoming_connection },
{ US"outgoing_port", LX_outgoing_port },
+ { US"pid", LX_pid },
{ US"queue_run", L_queue_run },
{ US"queue_time", LX_queue_time },
{ US"queue_time_overall", LX_queue_time_overall },
{ US"smtp_confirmation", LX_smtp_confirmation },
{ US"smtp_connection", L_smtp_connection },
{ US"smtp_incomplete_transaction", L_smtp_incomplete_transaction },
+ { US"smtp_no_mail", LX_smtp_no_mail },
{ US"smtp_protocol_error", L_smtp_protocol_error },
{ US"smtp_syntax_error", L_smtp_syntax_error },
{ US"subject", LX_subject },
#ifdef WITH_CONTENT_SCAN
uschar *malware_name = NULL; /* Virus Name */
#endif
+int max_received_linelength= 0;
int max_username_length = 0;
int message_age = 0;
uschar *message_body = NULL;
uschar *message_body_end = NULL;
+BOOL message_body_newlines = FALSE;
int message_body_size = 0;
int message_body_visible = 500;
int message_ended = END_NOTSTARTED;
uschar *percent_hack_domains = NULL;
uschar *pid_file_path = US PID_FILE_PATH
"\0<--------------Space to patch pid_file_path->";
+BOOL pipelining_enable = TRUE;
uschar *pipelining_advertise_hosts = US"*";
BOOL preserve_message_logs = FALSE;
uschar *primary_hostname = NULL;
BOOL queue_only = FALSE;
uschar *queue_only_file = NULL;
int queue_only_load = -1;
+BOOL queue_only_load_latch = TRUE;
BOOL queue_only_override = TRUE;
BOOL queue_only_policy = FALSE;
BOOL queue_run_first_delivery = FALSE;
that compilers are now clever, and share constant strings if they can.
Elsewhere in Exim the string "<" is used. The compiler optimization seems to
make use of the end of this string in order to save space. So the patching then
-wrecks this. We default this optimization by adding some additional characters
+wrecks this. We defeat this optimization by adding some additional characters
onto the end of the string. */
uschar *running_status = US">>>running<<<" "\0EXTRA";
address_item *sender_verified_failed = NULL;
int sender_verified_rc = -1;
BOOL sender_verified_responded = FALSE;
+uschar *sending_ip_address = NULL;
+int sending_port = -1;
volatile BOOL sigalrm_seen = FALSE;
uschar **sighup_argv = NULL;
int smtp_accept_count = 0;
"\0<---------------Space to patch smtp_banner->";
BOOL smtp_batched_input = FALSE;
BOOL smtp_check_spool_space = TRUE;
+int smtp_ch_index = 0;
uschar *smtp_cmd_argument = NULL;
uschar *smtp_cmd_buffer = NULL;
+time_t smtp_connection_start = 0;
+uschar smtp_connection_had[SMTP_HBUFF_SIZE];
int smtp_connect_backlog = 20;
double smtp_delay_mail = 0.0;
double smtp_delay_rcpt = 0.0;
BOOL smtp_etrn_serialize = TRUE;
int smtp_max_synprot_errors= 3;
int smtp_max_unknown_commands = 3;
+uschar *smtp_notquit_reason = NULL;
uschar *smtp_ratelimit_hosts = NULL;
uschar *smtp_ratelimit_mail = NULL;
uschar *smtp_ratelimit_rcpt = NULL;
uschar *spam_score_int = NULL;
#endif
#ifdef EXPERIMENTAL_SPF
+uschar *spf_guess = US"v=spf1 a/24 mx/24 ptr ?all";
uschar *spf_header_comment = NULL;
uschar *spf_received = NULL;
uschar *spf_result = NULL;
BOOL system_filtering = FALSE;
BOOL tcp_nodelay = TRUE;
+int test_harness_load_avg = 0;
int thismessage_size_limit = 0;
int timeout_frozen_after = 0;
BOOL timestamps_utc = FALSE;