1 /*************************************************
2 * Exim - an Internet mail transport agent *
3 *************************************************/
5 /* Copyright (c) University of Cambridge 1995 - 2012 */
6 /* See the file NOTICE for conditions of use and distribution. */
8 /* All the global variables are defined together in this one module, so
9 that they are easy to find. */
14 /* Generic options for auths, all of which live inside auth_instance
15 data blocks and hence have the opt_public flag set. */
17 optionlist optionlist_auths[] = {
18 { "client_condition", opt_stringptr | opt_public,
19 (void *)(offsetof(auth_instance, client_condition)) },
20 { "driver", opt_stringptr | opt_public,
21 (void *)(offsetof(auth_instance, driver_name)) },
22 { "public_name", opt_stringptr | opt_public,
23 (void *)(offsetof(auth_instance, public_name)) },
24 { "server_advertise_condition", opt_stringptr | opt_public,
25 (void *)(offsetof(auth_instance, advertise_condition))},
26 { "server_condition", opt_stringptr | opt_public,
27 (void *)(offsetof(auth_instance, server_condition)) },
28 { "server_debug_print", opt_stringptr | opt_public,
29 (void *)(offsetof(auth_instance, server_debug_string)) },
30 { "server_mail_auth_condition", opt_stringptr | opt_public,
31 (void *)(offsetof(auth_instance, mail_auth_condition)) },
32 { "server_set_id", opt_stringptr | opt_public,
33 (void *)(offsetof(auth_instance, set_id)) }
36 int optionlist_auths_size = sizeof(optionlist_auths)/sizeof(optionlist);
38 /* An empty host aliases list. */
40 uschar *no_aliases = NULL;
43 /* For comments on these variables, see globals.h. I'm too idle to
44 duplicate them here... */
47 uschar *opt_perl_startup = NULL;
48 BOOL opt_perl_at_start = FALSE;
49 BOOL opt_perl_started = FALSE;
53 tree_node *dlobj_anchor = NULL;
57 uschar *ibase_servers = NULL;
61 uschar *eldap_ca_cert_dir = NULL;
62 uschar *eldap_ca_cert_file = NULL;
63 uschar *eldap_cert_file = NULL;
64 uschar *eldap_cert_key = NULL;
65 uschar *eldap_cipher_suite = NULL;
66 uschar *eldap_default_servers = NULL;
67 uschar *eldap_require_cert = NULL;
68 int eldap_version = -1;
69 BOOL eldap_start_tls = FALSE;
73 uschar *mysql_servers = NULL;
77 uschar *oracle_servers = NULL;
81 uschar *pgsql_servers = NULL;
85 int sqlite_lock_timeout = 5;
88 #ifdef SUPPORT_MOVE_FROZEN_MESSAGES
89 BOOL move_frozen_messages = FALSE;
92 /* These variables are outside the #ifdef because it keeps the code less
93 cluttered in several places (e.g. during logging) if we can always refer to
94 them. Also, the tls_ variables are now always visible. */
96 tls_support tls_in = {
99 FALSE,/* tls_certificate_verified */
100 NULL, /* tls_cipher */
101 FALSE,/* tls_on_connect */
102 NULL, /* tls_on_connect_ports */
103 NULL, /* tls_peerdn */
106 tls_support tls_out = {
109 FALSE,/* tls_certificate_verified */
110 NULL, /* tls_cipher */
111 FALSE,/* tls_on_connect */
112 NULL, /* tls_on_connect_ports */
113 NULL, /* tls_peerdn */
119 BOOL gnutls_compat_mode = FALSE;
120 uschar *gnutls_require_mac = NULL;
121 uschar *gnutls_require_kx = NULL;
122 uschar *gnutls_require_proto = NULL;
123 uschar *openssl_options = NULL;
124 const pcre *regex_STARTTLS = NULL;
125 uschar *tls_advertise_hosts = NULL; /* This is deliberate */
126 uschar *tls_certificate = NULL;
127 uschar *tls_crl = NULL;
128 /* This default matches NSS DH_MAX_P_BITS value at current time (2012), because
129 that's the interop problem which has been observed: GnuTLS suggesting a higher
130 bit-count as "NORMAL" (2432) and Thunderbird dropping connection. */
131 int tls_dh_max_bits = 2236;
132 uschar *tls_dhparam = NULL;
133 #if defined(EXPERIMENTAL_OCSP) && !defined(USE_GNUTLS)
134 uschar *tls_ocsp_file = NULL;
136 BOOL tls_offered = FALSE;
137 uschar *tls_privatekey = NULL;
138 BOOL tls_remember_esmtp = FALSE;
139 uschar *tls_require_ciphers = NULL;
140 uschar *tls_try_verify_hosts = NULL;
141 uschar *tls_verify_certificates= NULL;
142 uschar *tls_verify_hosts = NULL;
146 /* Input-reading functions for messages, so we can use special ones for
147 incoming TCP/IP. The defaults use stdin. We never need these for any
148 stand-alone tests. */
151 int (*receive_getc)(void) = stdin_getc;
152 int (*receive_ungetc)(int) = stdin_ungetc;
153 int (*receive_feof)(void) = stdin_feof;
154 int (*receive_ferror)(void) = stdin_ferror;
155 BOOL (*receive_smtp_buffered)(void) = NULL; /* Only used for SMTP */
159 /* List of per-address expansion variables for clearing and saving/restoring
160 when verifying one address while routing/verifying another. We have to have
161 the size explicit, because it is referenced from more than one module. */
163 uschar **address_expansions[ADDRESS_EXPANSIONS_COUNT] = {
164 &deliver_address_data,
166 &deliver_domain_data,
167 &deliver_domain_orig,
168 &deliver_domain_parent,
170 &deliver_localpart_data,
171 &deliver_localpart_orig,
172 &deliver_localpart_parent,
173 &deliver_localpart_prefix,
174 &deliver_localpart_suffix,
175 (uschar **)(&deliver_recipients),
183 int address_expansions_count = sizeof(address_expansions)/sizeof(uschar **);
185 /* General global variables */
187 header_line *acl_added_headers = NULL;
188 tree_node *acl_anchor = NULL;
190 uschar *acl_not_smtp = NULL;
191 #ifdef WITH_CONTENT_SCAN
192 uschar *acl_not_smtp_mime = NULL;
194 uschar *acl_not_smtp_start = NULL;
196 uschar *acl_smtp_auth = NULL;
197 uschar *acl_smtp_connect = NULL;
198 uschar *acl_smtp_data = NULL;
200 uschar *acl_smtp_dkim = NULL;
202 uschar *acl_smtp_etrn = NULL;
203 uschar *acl_smtp_expn = NULL;
204 uschar *acl_smtp_helo = NULL;
205 uschar *acl_smtp_mail = NULL;
206 uschar *acl_smtp_mailauth = NULL;
207 #ifdef WITH_CONTENT_SCAN
208 uschar *acl_smtp_mime = NULL;
210 uschar *acl_smtp_notquit = NULL;
211 uschar *acl_smtp_predata = NULL;
212 uschar *acl_smtp_quit = NULL;
213 uschar *acl_smtp_rcpt = NULL;
214 uschar *acl_smtp_starttls = NULL;
215 uschar *acl_smtp_vrfy = NULL;
217 BOOL acl_temp_details = FALSE;
218 tree_node *acl_var_c = NULL;
219 tree_node *acl_var_m = NULL;
220 uschar *acl_verify_message = NULL;
221 string_item *acl_warn_logged = NULL;
223 /* Names of SMTP places for use in ACL error messages, and corresponding SMTP
224 error codes - keep in step with definitions of ACL_WHERE_xxxx in macros.h. */
226 uschar *acl_wherenames[] = { US"RCPT",
246 uschar *acl_wherecodes[] = { US"550", /* RCPT */
248 US"550", /* PREDATA */
252 US"0", /* not SMTP; not relevant */
254 US"550", /* connect */
257 US"550", /* HELO/EHLO */
258 US"0", /* MAILAUTH; not relevant */
259 US"0", /* not SMTP; not relevant */
260 US"0", /* NOTQUIT; not relevant */
261 US"0", /* QUIT; not relevant */
262 US"550", /* STARTTLS */
266 BOOL active_local_from_check = FALSE;
267 BOOL active_local_sender_retain = FALSE;
268 BOOL accept_8bitmime = TRUE; /* deliberately not RFC compliant */
269 address_item *addr_duplicate = NULL;
271 address_item address_defaults = {
276 NULL, /* start_router */
278 NULL, /* transport */
279 NULL, /* host_list */
280 NULL, /* host_used */
281 NULL, /* fallback_hosts */
286 NULL, /* cc_local_part */
287 NULL, /* lc_local_part */
288 NULL, /* local_part */
292 NULL, /* address_retry_key */
293 NULL, /* domain_retry_key */
294 NULL, /* current_dir */
297 NULL, /* user_message */
298 NULL, /* onetime_parent */
299 NULL, /* pipe_expandn */
300 NULL, /* return_filename */
301 NULL, /* self_hostname */
302 NULL, /* shadow_message */
307 (uid_t)(-1), /* uid */
308 (gid_t)(-1), /* gid */
310 { 0 }, /* domain_cache - any larger array should be zeroed */
311 { 0 }, /* localpart_cache - ditto */
314 ERRNO_UNKNOWNERROR, /* basic_errno */
316 -1, /* return_file */
317 SPECIAL_NONE, /* special_action */
318 DEFER, /* transport_return */
319 { /* fields that are propagated to children */
320 NULL, /* address_data */
321 NULL, /* domain_data */
322 NULL, /* localpart_data */
323 NULL, /* errors_address */
324 NULL, /* extra_headers */
325 NULL, /* remove_headers */
326 #ifdef EXPERIMENTAL_SRS
327 NULL, /* srs_sender */
332 uschar *address_file = NULL;
333 uschar *address_pipe = NULL;
334 BOOL address_test_mode = FALSE;
335 tree_node *addresslist_anchor = NULL;
336 int addresslist_count = 0;
337 gid_t *admin_groups = NULL;
338 BOOL admin_user = FALSE;
339 BOOL allow_auth_unadvertised= FALSE;
340 BOOL allow_domain_literals = FALSE;
341 BOOL allow_mx_to_ip = FALSE;
342 BOOL allow_unqualified_recipient = TRUE; /* For local messages */
343 BOOL allow_unqualified_sender = TRUE; /* Reset for SMTP */
344 BOOL allow_utf8_domains = FALSE;
345 uschar *authenticated_id = NULL;
346 uschar *authenticated_sender = NULL;
347 BOOL authentication_failed = FALSE;
348 auth_instance *auths = NULL;
349 uschar *auth_advertise_hosts = US"*";
350 auth_instance auth_defaults = {
351 NULL, /* chain pointer */
354 NULL, /* private options block pointer */
355 NULL, /* driver_name */
356 NULL, /* advertise_condition */
357 NULL, /* client_condition */
358 NULL, /* public_name */
360 NULL, /* server_mail_auth_condition */
361 NULL, /* server_debug_string */
362 NULL, /* server_condition */
365 FALSE /* advertised */
368 uschar *auth_defer_msg = US"reason not recorded";
369 uschar *auth_defer_user_msg = US"";
370 uschar *auth_vars[AUTH_VARS];
372 #ifdef WITH_CONTENT_SCAN
373 BOOL av_failed = FALSE;
374 uschar *av_scanner = US"sophie:/var/run/sophie"; /* AV scanner */
377 BOOL background_daemon = TRUE;
380 uschar *base62_chars=
381 US"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
383 uschar *base62_chars= US"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
386 uschar *bi_command = NULL;
387 uschar *big_buffer = NULL;
388 int big_buffer_size = BIG_BUFFER_SIZE;
389 #ifdef EXPERIMENTAL_BRIGHTMAIL
390 uschar *bmi_alt_location = NULL;
391 uschar *bmi_base64_tracker_verdict = NULL;
392 uschar *bmi_base64_verdict = NULL;
393 uschar *bmi_config_file = US"/opt/brightmail/etc/brightmail.cfg";
396 uschar *bmi_verdicts = NULL;
398 int body_linecount = 0;
399 int body_zerocount = 0;
400 uschar *bounce_message_file = NULL;
401 uschar *bounce_message_text = NULL;
402 uschar *bounce_recipient = NULL;
403 BOOL bounce_return_body = TRUE;
404 BOOL bounce_return_message = TRUE;
405 int bounce_return_size_limit = 100*1024;
406 uschar *bounce_sender_authentication = NULL;
407 int bsmtp_transaction_linecount = 0;
409 int callout_cache_domain_positive_expire = 7*24*60*60;
410 int callout_cache_domain_negative_expire = 3*60*60;
411 int callout_cache_positive_expire = 24*60*60;
412 int callout_cache_negative_expire = 2*60*60;
413 uschar *callout_random_local_part = US"$primary_hostname-$tod_epoch-testing";
414 uschar *check_dns_names_pattern= US"(?i)^(?>(?(1)\\.|())[^\\W](?>[a-z0-9/_-]*[^\\W])?)+(\\.?)$";
415 int check_log_inodes = 0;
416 int check_log_space = 0;
417 BOOL check_rfc2047_length = TRUE;
418 int check_spool_inodes = 0;
419 int check_spool_space = 0;
420 int clmacro_count = 0;
421 uschar *clmacros[MAX_CLMACROS];
422 BOOL config_changed = FALSE;
423 FILE *config_file = NULL;
424 uschar *config_filename = NULL;
425 int config_lineno = 0;
426 #ifdef CONFIGURE_GROUP
427 gid_t config_gid = CONFIGURE_GROUP;
429 uschar *config_main_filelist = US CONFIGURE_FILE
430 "\0<-----------Space to patch configure_filename->";
431 uschar *config_main_filename = NULL;
433 #ifdef CONFIGURE_OWNER
434 uid_t config_uid = CONFIGURE_OWNER;
437 int connection_max_messages= -1;
438 uschar *continue_hostname = NULL;
439 uschar *continue_host_address = NULL;
440 BOOL continue_more = FALSE;
441 int continue_sequence = 1;
442 uschar *continue_transport = NULL;
444 uschar *csa_status = NULL;
445 BOOL cutthrough_delivery = FALSE;
446 int cutthrough_fd = -1;
448 BOOL daemon_listen = FALSE;
449 uschar *daemon_smtp_port = US"smtp";
450 int daemon_startup_retries = 9;
451 int daemon_startup_sleep = 30;
453 #ifdef EXPERIMENTAL_DCC
454 BOOL dcc_direct_add_header = FALSE;
455 uschar *dcc_header = NULL;
456 uschar *dcc_result = NULL;
457 uschar *dccifd_address = US"/usr/local/dcc/var/dccifd";
458 uschar *dccifd_options = US"header";
461 BOOL debug_daemon = FALSE;
463 FILE *debug_file = NULL;
464 bit_table debug_options[] = {
467 { US"auth", D_auth },
468 { US"deliver", D_deliver },
470 { US"dnsbl", D_dnsbl },
471 { US"exec", D_exec },
472 { US"expand", D_expand },
473 { US"filter", D_filter },
474 { US"hints_lookup", D_hints_lookup },
475 { US"host_lookup", D_host_lookup },
476 { US"ident", D_ident },
477 { US"interface", D_interface },
478 { US"lists", D_lists },
479 { US"load", D_load },
480 { US"local_scan", D_local_scan },
481 { US"lookup", D_lookup },
482 { US"memory", D_memory },
484 { US"process_info", D_process_info },
485 { US"queue_run", D_queue_run },
486 { US"receive", D_receive },
487 { US"resolver", D_resolver },
488 { US"retry", D_retry },
489 { US"rewrite", D_rewrite },
490 { US"route", D_route },
491 { US"timestamp", D_timestamp },
493 { US"transport", D_transport },
495 { US"verify", D_verify }
497 int debug_options_count = sizeof(debug_options)/sizeof(bit_table);
498 unsigned int debug_selector = 0;
499 int delay_warning[DELAY_WARNING_SIZE] = { DELAY_WARNING_SIZE, 1, 24*60*60 };
500 uschar *delay_warning_condition=
502 "{ !eq{$h_list-id:$h_list-post:$h_list-subscribe:}{} }"
503 "{ match{$h_precedence:}{(?i)bulk|list|junk} }"
504 "{ match{$h_auto-submitted:}{(?i)auto-generated|auto-replied} }"
506 BOOL delivery_date_remove = TRUE;
507 uschar *deliver_address_data = NULL;
508 int deliver_datafile = -1;
509 uschar *deliver_domain = NULL;
510 uschar *deliver_domain_data = NULL;
511 uschar *deliver_domain_orig = NULL;
512 uschar *deliver_domain_parent = NULL;
513 BOOL deliver_drop_privilege = FALSE;
514 BOOL deliver_firsttime = FALSE;
515 BOOL deliver_force = FALSE;
516 BOOL deliver_freeze = FALSE;
517 int deliver_frozen_at = 0;
518 uschar *deliver_home = NULL;
519 uschar *deliver_host = NULL;
520 uschar *deliver_host_address = NULL;
521 uschar *deliver_in_buffer = NULL;
522 ino_t deliver_inode = 0;
523 uschar *deliver_localpart = NULL;
524 uschar *deliver_localpart_data = NULL;
525 uschar *deliver_localpart_orig = NULL;
526 uschar *deliver_localpart_parent = NULL;
527 uschar *deliver_localpart_prefix = NULL;
528 uschar *deliver_localpart_suffix = NULL;
529 BOOL deliver_force_thaw = FALSE;
530 BOOL deliver_manual_thaw = FALSE;
531 uschar *deliver_out_buffer = NULL;
532 int deliver_queue_load_max = -1;
533 address_item *deliver_recipients = NULL;
534 uschar *deliver_selectstring = NULL;
535 BOOL deliver_selectstring_regex = FALSE;
536 uschar *deliver_selectstring_sender = NULL;
537 BOOL deliver_selectstring_sender_regex = FALSE;
538 #ifdef WITH_OLD_DEMIME
539 int demime_errorlevel = 0;
541 uschar *demime_reason = NULL;
543 BOOL disable_callout_flush = FALSE;
544 BOOL disable_delay_flush = FALSE;
545 #ifdef ENABLE_DISABLE_FSYNC
546 BOOL disable_fsync = FALSE;
548 BOOL disable_ipv6 = FALSE;
549 BOOL disable_logging = FALSE;
552 uschar *dkim_cur_signer = NULL;
553 uschar *dkim_signers = NULL;
554 uschar *dkim_signing_domain = NULL;
555 uschar *dkim_signing_selector = NULL;
556 uschar *dkim_verify_signers = US"$dkim_signers";
557 BOOL dkim_collect_input = FALSE;
558 BOOL dkim_disable_verify = FALSE;
561 uschar *dns_again_means_nonexist = NULL;
562 int dns_csa_search_limit = 5;
563 BOOL dns_csa_use_reverse = TRUE;
564 uschar *dns_ipv4_lookup = NULL;
567 int dns_use_dnssec = -1; /* <0 = not coerced */
568 int dns_use_edns0 = -1; /* <0 = not coerced */
569 uschar *dnslist_domain = NULL;
570 uschar *dnslist_matched = NULL;
571 uschar *dnslist_text = NULL;
572 uschar *dnslist_value = NULL;
573 tree_node *domainlist_anchor = NULL;
574 int domainlist_count = 0;
575 BOOL dont_deliver = FALSE;
576 BOOL dot_ends = TRUE;
577 BOOL drop_cr = FALSE; /* No longer used */
578 uschar *dsn_from = US DEFAULT_DSN_FROM;
580 BOOL enable_dollar_recipients = FALSE;
581 BOOL envelope_to_remove = TRUE;
582 int errno_quota = ERRNO_QUOTA;
583 uschar *errors_copy = NULL;
584 int error_handling = ERRORS_SENDER;
585 uschar *errors_reply_to = NULL;
586 int errors_sender_rc = EXIT_FAILURE;
588 gid_t exim_gid = EXIM_GID;
589 BOOL exim_gid_set = TRUE; /* This gid is always set */
590 uschar *exim_path = US BIN_DIRECTORY "/exim"
591 "\0<---------------Space to patch exim_path->";
592 uid_t exim_uid = EXIM_UID;
593 BOOL exim_uid_set = TRUE; /* This uid is always set */
594 int expand_forbid = 0;
595 int expand_nlength[EXPAND_MAXN+1];
596 int expand_nmax = -1;
597 uschar *expand_nstring[EXPAND_MAXN+1];
598 BOOL expand_string_forcedfail = FALSE;
599 uschar *expand_string_message;
600 BOOL extract_addresses_remove_arguments = TRUE;
601 uschar *extra_local_interfaces = NULL;
603 int fake_response = OK;
604 uschar *fake_response_text = US"Your message has been rejected but is "
605 "being kept for evaluation.\nIf it was a "
606 "legitimate message, it may still be "
607 "delivered to the target recipient(s).";
608 int filter_n[FILTER_VARIABLE_COUNT];
609 BOOL filter_running = FALSE;
610 int filter_sn[FILTER_VARIABLE_COUNT];
611 int filter_test = FTEST_NONE;
612 uschar *filter_test_sfile = NULL;
613 uschar *filter_test_ufile = NULL;
614 uschar *filter_thisaddress = NULL;
615 int finduser_retries = 0;
616 #ifdef WITH_OLD_DEMIME
617 uschar *found_extension = NULL;
619 uid_t fixed_never_users[] = { FIXED_NEVER_USERS };
620 uschar *freeze_tell = NULL;
621 uschar *freeze_tell_config = NULL;
622 uschar *fudged_queue_times = US"";
624 uschar *gecos_name = NULL;
625 uschar *gecos_pattern = NULL;
626 rewrite_rule *global_rewrite_rules = NULL;
628 uschar *headers_charset = US HEADERS_CHARSET;
629 int header_insert_maxlen = 64 * 1024;
630 header_line *header_last = NULL;
631 header_line *header_list = NULL;
632 int header_maxsize = HEADER_MAXSIZE;
633 int header_line_maxsize = 0;
635 header_name header_names[] = {
636 { US"bcc", 3, TRUE, htype_bcc },
637 { US"cc", 2, TRUE, htype_cc },
638 { US"date", 4, TRUE, htype_date },
639 { US"delivery-date", 13, FALSE, htype_delivery_date },
640 { US"envelope-to", 11, FALSE, htype_envelope_to },
641 { US"from", 4, TRUE, htype_from },
642 { US"message-id", 10, TRUE, htype_id },
643 { US"received", 8, FALSE, htype_received },
644 { US"reply-to", 8, FALSE, htype_reply_to },
645 { US"return-path", 11, FALSE, htype_return_path },
646 { US"sender", 6, TRUE, htype_sender },
647 { US"subject", 7, FALSE, htype_subject },
648 { US"to", 2, TRUE, htype_to }
651 int header_names_size = sizeof(header_names)/sizeof(header_name);
653 BOOL header_rewritten = FALSE;
654 uschar *helo_accept_junk_hosts = NULL;
655 uschar *helo_allow_chars = US"";
656 uschar *helo_lookup_domains = US"@ : @[]";
657 uschar *helo_try_verify_hosts = NULL;
658 BOOL helo_verified = FALSE;
659 BOOL helo_verify_failed = FALSE;
660 uschar *helo_verify_hosts = NULL;
661 const uschar *hex_digits = CUS"0123456789abcdef";
662 uschar *hold_domains = NULL;
663 BOOL host_checking = FALSE;
664 BOOL host_checking_callout = FALSE;
665 uschar *host_data = NULL;
666 BOOL host_find_failed_syntax= FALSE;
667 uschar *host_lookup = NULL;
668 BOOL host_lookup_deferred = FALSE;
669 BOOL host_lookup_failed = FALSE;
670 uschar *host_lookup_order = US"bydns:byaddr";
671 uschar *host_lookup_msg = US"";
673 uschar *host_number_string = NULL;
674 uschar *host_reject_connection = NULL;
675 tree_node *hostlist_anchor = NULL;
676 int hostlist_count = 0;
677 uschar *hosts_treat_as_local = NULL;
678 uschar *hosts_connection_nolog = NULL;
680 int ignore_bounce_errors_after = 10*7*24*60*60; /* 10 weeks */
681 BOOL ignore_fromline_local = FALSE;
682 uschar *ignore_fromline_hosts = NULL;
683 BOOL inetd_wait_mode = FALSE;
684 int inetd_wait_timeout = -1;
685 uschar *interface_address = NULL;
686 int interface_port = -1;
687 BOOL is_inetd = FALSE;
688 uschar *iterate_item = NULL;
692 int keep_malformed = 4*24*60*60; /* 4 days */
694 uschar *eldap_dn = NULL;
695 int load_average = -2;
696 BOOL local_error_message = FALSE;
697 BOOL local_from_check = TRUE;
698 uschar *local_from_prefix = NULL;
699 uschar *local_from_suffix = NULL;
702 uschar *local_interfaces = US"<; ::0 ; 0.0.0.0";
704 uschar *local_interfaces = US"0.0.0.0";
707 uschar *local_scan_data = NULL;
708 int local_scan_timeout = 5*60;
709 BOOL local_sender_retain = FALSE;
710 gid_t local_user_gid = (gid_t)(-1);
711 uid_t local_user_uid = (uid_t)(-1);
713 tree_node *localpartlist_anchor= NULL;
714 int localpartlist_count = 0;
715 uschar *log_buffer = NULL;
716 unsigned int log_extra_selector = LX_default;
717 uschar *log_file_path = US LOG_FILE_PATH
718 "\0<--------------Space to patch log_file_path->";
720 /* Those log options with L_xxx identifiers have values less than 0x800000 and
721 are the ones that get put into log_write_selector. They can be used in calls to
722 log_write() to test for the bit. The options with LX_xxx identifiers have
723 values greater than 0x80000000 and are put into log_extra_selector (without the
724 top bit). They are never used in calls to log_write(), but are tested
725 independently. This separation became necessary when the number of log
726 selectors was getting close to filling a 32-bit word. */
728 /* Note that this list must be in alphabetical order. */
730 bit_table log_options[] = {
731 { US"acl_warn_skipped", LX_acl_warn_skipped },
732 { US"address_rewrite", L_address_rewrite },
734 { US"all_parents", L_all_parents },
735 { US"arguments", LX_arguments },
736 { US"connection_reject", L_connection_reject },
737 { US"delay_delivery", L_delay_delivery },
738 { US"deliver_time", LX_deliver_time },
739 { US"delivery_size", LX_delivery_size },
740 { US"dnslist_defer", L_dnslist_defer },
741 { US"etrn", L_etrn },
742 { US"host_lookup_failed", L_host_lookup_failed },
743 { US"ident_timeout", LX_ident_timeout },
744 { US"incoming_interface", LX_incoming_interface },
745 { US"incoming_port", LX_incoming_port },
746 { US"lost_incoming_connection", L_lost_incoming_connection },
747 { US"outgoing_port", LX_outgoing_port },
749 { US"queue_run", L_queue_run },
750 { US"queue_time", LX_queue_time },
751 { US"queue_time_overall", LX_queue_time_overall },
752 { US"received_recipients", LX_received_recipients },
753 { US"received_sender", LX_received_sender },
754 { US"rejected_header", LX_rejected_header },
755 { US"rejected_headers", LX_rejected_header },
756 { US"retry_defer", L_retry_defer },
757 { US"return_path_on_delivery", LX_return_path_on_delivery },
758 { US"sender_on_delivery", LX_sender_on_delivery },
759 { US"sender_verify_fail", LX_sender_verify_fail },
760 { US"size_reject", L_size_reject },
761 { US"skip_delivery", L_skip_delivery },
762 { US"smtp_confirmation", LX_smtp_confirmation },
763 { US"smtp_connection", L_smtp_connection },
764 { US"smtp_incomplete_transaction", L_smtp_incomplete_transaction },
765 { US"smtp_no_mail", LX_smtp_no_mail },
766 { US"smtp_protocol_error", L_smtp_protocol_error },
767 { US"smtp_syntax_error", L_smtp_syntax_error },
768 { US"subject", LX_subject },
769 { US"tls_certificate_verified", LX_tls_certificate_verified },
770 { US"tls_cipher", LX_tls_cipher },
771 { US"tls_peerdn", LX_tls_peerdn },
772 { US"tls_sni", LX_tls_sni },
773 { US"unknown_in_list", LX_unknown_in_list }
776 int log_options_count = sizeof(log_options)/sizeof(bit_table);
777 int log_reject_target = 0;
778 uschar *log_selector_string = NULL;
779 FILE *log_stderr = NULL;
780 BOOL log_testing_mode = FALSE;
781 BOOL log_timezone = FALSE;
782 unsigned int log_write_selector= L_default;
783 uschar *login_sender_address = NULL;
784 int lookup_open_max = 25;
785 uschar *lookup_value = NULL;
787 macro_item *macros = NULL;
788 uschar *mailstore_basename = NULL;
789 #ifdef WITH_CONTENT_SCAN
790 uschar *malware_name = NULL; /* Virus Name */
792 int max_received_linelength= 0;
793 int max_username_length = 0;
795 uschar *message_body = NULL;
796 uschar *message_body_end = NULL;
797 BOOL message_body_newlines = FALSE;
798 int message_body_size = 0;
799 int message_body_visible = 500;
800 int message_ended = END_NOTSTARTED;
801 uschar *message_headers = NULL;
803 uschar *message_id_domain = NULL;
804 uschar *message_id_text = NULL;
805 struct timeval message_id_tv = { 0, 0 };
806 uschar message_id_option[MESSAGE_ID_LENGTH + 3];
807 uschar *message_id_external;
808 int message_linecount = 0;
809 BOOL message_logs = TRUE;
810 int message_size = 0;
811 uschar *message_size_limit = US"50M";
812 uschar message_subdir[2] = { 0, 0 };
813 uschar *message_reference = NULL;
815 /* MIME ACL expandables */
816 #ifdef WITH_CONTENT_SCAN
817 int mime_anomaly_level = 0;
818 const uschar *mime_anomaly_text = NULL;
819 uschar *mime_boundary = NULL;
820 uschar *mime_charset = NULL;
821 uschar *mime_content_description = NULL;
822 uschar *mime_content_disposition = NULL;
823 uschar *mime_content_id = NULL;
824 unsigned int mime_content_size = 0;
825 uschar *mime_content_transfer_encoding = NULL;
826 uschar *mime_content_type = NULL;
827 uschar *mime_decoded_filename = NULL;
828 uschar *mime_filename = NULL;
829 int mime_is_multipart = 0;
830 int mime_is_coverletter = 0;
831 int mime_is_rfc822 = 0;
832 int mime_part_count = -1;
835 BOOL mua_wrapper = FALSE;
837 uid_t *never_users = NULL;
838 #ifdef WITH_CONTENT_SCAN
839 BOOL no_mbox_unspool = FALSE;
841 BOOL no_multiline_responses = FALSE;
844 gid_t originator_gid;
845 uschar *originator_login = NULL;
846 uschar *originator_name = NULL;
847 uid_t originator_uid;
848 uschar *override_local_interfaces = NULL;
849 uschar *override_pid_file_path = NULL;
851 BOOL parse_allow_group = FALSE;
852 BOOL parse_found_group = FALSE;
853 uschar *percent_hack_domains = NULL;
854 uschar *pid_file_path = US PID_FILE_PATH
855 "\0<--------------Space to patch pid_file_path->";
856 BOOL pipelining_enable = TRUE;
857 uschar *pipelining_advertise_hosts = US"*";
858 BOOL preserve_message_logs = FALSE;
859 uschar *primary_hostname = NULL;
860 BOOL print_topbitchars = FALSE;
861 uschar process_info[PROCESS_INFO_SIZE];
862 int process_info_len = 0;
863 uschar *process_log_path = NULL;
864 BOOL prod_requires_admin = TRUE;
865 uschar *prvscheck_address = NULL;
866 uschar *prvscheck_keynum = NULL;
867 uschar *prvscheck_result = NULL;
870 uschar *qualify_domain_recipient = NULL;
871 uschar *qualify_domain_sender = NULL;
872 BOOL queue_2stage = FALSE;
873 uschar *queue_domains = NULL;
874 int queue_interval = -1;
875 BOOL queue_list_requires_admin = TRUE;
876 BOOL queue_only = FALSE;
877 uschar *queue_only_file = NULL;
878 int queue_only_load = -1;
879 BOOL queue_only_load_latch = TRUE;
880 BOOL queue_only_override = TRUE;
881 BOOL queue_only_policy = FALSE;
882 BOOL queue_run_first_delivery = FALSE;
883 BOOL queue_run_force = FALSE;
884 BOOL queue_run_in_order = FALSE;
885 BOOL queue_run_local = FALSE;
886 int queue_run_max = 5;
887 pid_t queue_run_pid = (pid_t)0;
888 int queue_run_pipe = -1;
889 BOOL queue_running = FALSE;
890 BOOL queue_smtp = FALSE;
891 uschar *queue_smtp_domains = NULL;
893 unsigned int random_seed = 0;
894 tree_node *ratelimiters_cmd = NULL;
895 tree_node *ratelimiters_conn = NULL;
896 tree_node *ratelimiters_mail = NULL;
897 uschar *raw_active_hostname = NULL;
898 uschar *raw_sender = NULL;
899 uschar **raw_recipients = NULL;
900 int raw_recipients_count = 0;
903 int rcpt_fail_count = 0;
904 int rcpt_defer_count = 0;
907 BOOL really_exim = TRUE;
908 BOOL receive_call_bombout = FALSE;
909 int receive_linecount = 0;
910 int receive_messagecount = 0;
911 int receive_timeout = 0;
912 int received_count = 0;
913 uschar *received_for = NULL;
915 /* This is the default text for Received headers generated by Exim. The
916 date will be automatically added on the end. */
918 uschar *received_header_text = US
920 "${if def:sender_rcvhost {from $sender_rcvhost\n\t}"
921 "{${if def:sender_ident {from ${quote_local_part:$sender_ident} }}"
922 "${if def:sender_helo_name {(helo=$sender_helo_name)\n\t}}}}"
923 "by $primary_hostname "
924 "${if def:received_protocol {with $received_protocol}} "
926 "${if def:tls_cipher {($tls_cipher)\n\t}}"
928 "(Exim $version_number)\n\t"
929 "${if def:sender_address {(envelope-from <$sender_address>)\n\t}}"
930 "id $message_exim_id"
931 "${if def:received_for {\n\tfor $received_for}}"
932 "\0<---------------Space to patch received_header_text->";
934 int received_headers_max = 30;
935 uschar *received_protocol = NULL;
936 int received_time = 0;
937 uschar *recipient_data = NULL;
938 uschar *recipient_unqualified_hosts = NULL;
939 uschar *recipient_verify_failure = NULL;
940 int recipients_count = 0;
941 BOOL recipients_discarded = FALSE;
942 recipient_item *recipients_list = NULL;
943 int recipients_list_max = 0;
944 int recipients_max = 0;
945 BOOL recipients_max_reject = FALSE;
946 const pcre *regex_AUTH = NULL;
947 const pcre *regex_check_dns_names = NULL;
948 const pcre *regex_From = NULL;
949 const pcre *regex_IGNOREQUOTA = NULL;
950 const pcre *regex_PIPELINING = NULL;
951 const pcre *regex_SIZE = NULL;
952 const pcre *regex_smtp_code = NULL;
953 const pcre *regex_ismsgid = NULL;
954 #ifdef WHITELIST_D_MACROS
955 const pcre *regex_whitelisted_macro = NULL;
957 #ifdef WITH_CONTENT_SCAN
958 uschar *regex_match_string = NULL;
960 int remote_delivery_count = 0;
961 int remote_max_parallel = 2;
962 uschar *remote_sort_domains = NULL;
963 int retry_data_expire = 7*24*60*60;
964 int retry_interval_max = 24*60*60;
965 int retry_maximum_timeout = 0; /* set from retry config */
966 retry_config *retries = NULL;
967 uschar *return_path = NULL;
968 BOOL return_path_remove = TRUE;
969 int rewrite_existflags = 0;
970 uschar *rfc1413_hosts = US"*";
971 int rfc1413_query_timeout = 5;
972 /* BOOL rfc821_domains = FALSE; <<< on the way out */
973 uid_t root_gid = ROOT_GID;
974 uid_t root_uid = ROOT_UID;
976 router_instance *routers = NULL;
977 router_instance router_defaults = {
978 NULL, /* chain pointer */
981 NULL, /* private options block pointer */
982 NULL, /* driver name */
984 NULL, /* address_data */
985 #ifdef EXPERIMENTAL_BRIGHTMAIL
988 NULL, /* cannot_route_message */
989 NULL, /* condition */
990 NULL, /* current_directory */
991 NULL, /* debug_string */
993 NULL, /* errors_to */
994 NULL, /* expand_gid */
995 NULL, /* expand_uid */
996 NULL, /* expand_more */
997 NULL, /* expand_unseen */
998 NULL, /* extra_headers */
999 NULL, /* fallback_hosts */
1000 NULL, /* home_directory */
1001 NULL, /* ignore_target_hosts */
1002 NULL, /* local_parts */
1003 NULL, /* pass_router_name */
1005 NULL, /* redirect_router_name */
1006 NULL, /* remove_headers */
1007 NULL, /* require_files */
1008 NULL, /* router_home_directory */
1009 US"freeze", /* self */
1012 NULL, /* translate_ip_address */
1013 NULL, /* transport_name */
1015 TRUE, /* address_test */
1016 #ifdef EXPERIMENTAL_BRIGHTMAIL
1017 FALSE, /* bmi_deliver_alternate */
1018 FALSE, /* bmi_deliver_default */
1019 FALSE, /* bmi_dont_deliver */
1022 FALSE, /* caseful_local_part */
1023 FALSE, /* check_local_user */
1024 FALSE, /* disable_logging */
1025 FALSE, /* fail_verify_recipient */
1026 FALSE, /* fail_verify_sender */
1027 FALSE, /* gid_set */
1028 FALSE, /* initgroups */
1029 TRUE_UNSET, /* log_as_local */
1031 FALSE, /* pass_on_timeout */
1032 FALSE, /* prefix_optional */
1033 TRUE, /* repeat_use */
1034 TRUE_UNSET, /* retry_use_local_part - fudge "unset" */
1035 FALSE, /* same_domain_copy_routing */
1036 FALSE, /* self_rewrite */
1037 FALSE, /* suffix_optional */
1038 FALSE, /* verify_only */
1039 TRUE, /* verify_recipient */
1040 TRUE, /* verify_sender */
1041 FALSE, /* uid_set */
1044 self_freeze, /* self_code */
1045 (uid_t)(-1), /* uid */
1046 (gid_t)(-1), /* gid */
1048 NULL, /* fallback_hostlist */
1049 NULL, /* transport instance */
1050 NULL, /* pass_router */
1051 NULL /* redirect_router */
1054 ip_address_item *running_interfaces = NULL;
1055 BOOL running_in_test_harness = FALSE;
1057 /* This is a weird one. The following string gets patched in the binary by the
1058 script that sets up a copy of Exim for running in the test harness. It seems
1059 that compilers are now clever, and share constant strings if they can.
1060 Elsewhere in Exim the string "<" is used. The compiler optimization seems to
1061 make use of the end of this string in order to save space. So the patching then
1062 wrecks this. We defeat this optimization by adding some additional characters
1063 onto the end of the string. */
1065 uschar *running_status = US">>>running<<<" "\0EXTRA";
1069 uschar *search_error_message = NULL;
1070 BOOL search_find_defer = FALSE;
1071 uschar *self_hostname = NULL;
1072 uschar *sender_address = NULL;
1073 unsigned int sender_address_cache[(MAX_NAMED_LIST * 2)/32];
1074 uschar *sender_address_data = NULL;
1075 BOOL sender_address_forced = FALSE;
1076 uschar *sender_address_unrewritten = NULL;
1077 uschar *sender_data = NULL;
1078 unsigned int sender_domain_cache[(MAX_NAMED_LIST * 2)/32];
1079 uschar *sender_fullhost = NULL;
1080 uschar *sender_helo_name = NULL;
1081 uschar **sender_host_aliases = &no_aliases;
1082 uschar *sender_host_address = NULL;
1083 uschar *sender_host_authenticated = NULL;
1084 unsigned int sender_host_cache[(MAX_NAMED_LIST * 2)/32];
1085 BOOL sender_host_dnssec = FALSE;
1086 uschar *sender_host_name = NULL;
1087 int sender_host_port = 0;
1088 BOOL sender_host_notsocket = FALSE;
1089 BOOL sender_host_unknown = FALSE;
1090 uschar *sender_ident = NULL;
1091 BOOL sender_local = FALSE;
1092 BOOL sender_name_forced = FALSE;
1093 uschar *sender_rate = NULL;
1094 uschar *sender_rate_limit = NULL;
1095 uschar *sender_rate_period = NULL;
1096 uschar *sender_rcvhost = NULL;
1097 BOOL sender_set_untrusted = FALSE;
1098 uschar *sender_unqualified_hosts = NULL;
1099 uschar *sender_verify_failure = NULL;
1100 address_item *sender_verified_list = NULL;
1101 address_item *sender_verified_failed = NULL;
1102 int sender_verified_rc = -1;
1103 BOOL sender_verified_responded = FALSE;
1104 uschar *sending_ip_address = NULL;
1105 int sending_port = -1;
1106 SIGNAL_BOOL sigalrm_seen = FALSE;
1107 uschar **sighup_argv = NULL;
1108 int smtp_accept_count = 0;
1109 BOOL smtp_accept_keepalive = TRUE;
1110 int smtp_accept_max = 20;
1111 int smtp_accept_max_nonmail= 10;
1112 uschar *smtp_accept_max_nonmail_hosts = US"*";
1113 int smtp_accept_max_per_connection = 1000;
1114 uschar *smtp_accept_max_per_host = NULL;
1115 int smtp_accept_queue = 0;
1116 int smtp_accept_queue_per_connection = 10;
1117 int smtp_accept_reserve = 0;
1118 uschar *smtp_active_hostname = NULL;
1119 BOOL smtp_authenticated = FALSE;
1120 uschar *smtp_banner = US"$smtp_active_hostname ESMTP "
1121 "Exim $version_number $tod_full"
1122 "\0<---------------Space to patch smtp_banner->";
1123 BOOL smtp_batched_input = FALSE;
1124 BOOL smtp_check_spool_space = TRUE;
1125 int smtp_ch_index = 0;
1126 uschar *smtp_cmd_argument = NULL;
1127 uschar *smtp_cmd_buffer = NULL;
1128 time_t smtp_connection_start = 0;
1129 uschar smtp_connection_had[SMTP_HBUFF_SIZE];
1130 int smtp_connect_backlog = 20;
1131 double smtp_delay_mail = 0.0;
1132 double smtp_delay_rcpt = 0.0;
1133 BOOL smtp_enforce_sync = TRUE;
1134 FILE *smtp_in = NULL;
1135 BOOL smtp_input = FALSE;
1136 int smtp_load_reserve = -1;
1137 int smtp_mailcmd_count = 0;
1138 FILE *smtp_out = NULL;
1139 uschar *smtp_etrn_command = NULL;
1140 BOOL smtp_etrn_serialize = TRUE;
1141 int smtp_max_synprot_errors= 3;
1142 int smtp_max_unknown_commands = 3;
1143 uschar *smtp_notquit_reason = NULL;
1144 uschar *smtp_ratelimit_hosts = NULL;
1145 uschar *smtp_ratelimit_mail = NULL;
1146 uschar *smtp_ratelimit_rcpt = NULL;
1147 uschar *smtp_read_error = US"";
1148 int smtp_receive_timeout = 5*60;
1149 uschar *smtp_reserve_hosts = NULL;
1150 BOOL smtp_return_error_details = FALSE;
1151 int smtp_rlm_base = 0;
1152 double smtp_rlm_factor = 0.0;
1153 int smtp_rlm_limit = 0;
1154 int smtp_rlm_threshold = INT_MAX;
1155 int smtp_rlr_base = 0;
1156 double smtp_rlr_factor = 0.0;
1157 int smtp_rlr_limit = 0;
1158 int smtp_rlr_threshold = INT_MAX;
1159 BOOL smtp_use_pipelining = FALSE;
1160 BOOL smtp_use_size = FALSE;
1162 #ifdef WITH_CONTENT_SCAN
1163 uschar *spamd_address = US"127.0.0.1 783";
1164 uschar *spam_bar = NULL;
1165 uschar *spam_report = NULL;
1166 uschar *spam_score = NULL;
1167 uschar *spam_score_int = NULL;
1169 #ifdef EXPERIMENTAL_SPF
1170 uschar *spf_guess = US"v=spf1 a/24 mx/24 ptr ?all";
1171 uschar *spf_header_comment = NULL;
1172 uschar *spf_received = NULL;
1173 uschar *spf_result = NULL;
1174 uschar *spf_smtp_comment = NULL;
1177 BOOL split_spool_directory = FALSE;
1178 uschar *spool_directory = US SPOOL_DIRECTORY
1179 "\0<--------------Space to patch spool_directory->";
1180 #ifdef EXPERIMENTAL_SRS
1181 uschar *srs_config = NULL;
1182 uschar *srs_db_address = NULL;
1183 uschar *srs_db_key = NULL;
1184 int srs_hashlength = 6;
1185 int srs_hashmin = -1;
1186 int srs_maxage = 31;
1187 uschar *srs_orig_recipient = NULL;
1188 uschar *srs_orig_sender = NULL;
1189 uschar *srs_recipient = NULL;
1190 uschar *srs_secrets = NULL;
1191 uschar *srs_status = NULL;
1192 BOOL srs_usehash = TRUE;
1193 BOOL srs_usetimestamp = TRUE;
1195 BOOL strict_acl_vars = FALSE;
1196 int string_datestamp_offset= -1;
1197 int string_datestamp_length= 0;
1198 int string_datestamp_type = -1;
1199 BOOL strip_excess_angle_brackets = FALSE;
1200 BOOL strip_trailing_dot = FALSE;
1201 uschar *submission_domain = NULL;
1202 BOOL submission_mode = FALSE;
1203 uschar *submission_name = NULL;
1204 BOOL suppress_local_fixups = FALSE;
1205 BOOL suppress_local_fixups_default = FALSE;
1206 BOOL synchronous_delivery = FALSE;
1207 BOOL syslog_duplication = TRUE;
1208 int syslog_facility = LOG_MAIL;
1209 uschar *syslog_processname = US"exim";
1210 BOOL syslog_timestamp = TRUE;
1211 uschar *system_filter = NULL;
1213 uschar *system_filter_directory_transport = NULL;
1214 uschar *system_filter_file_transport = NULL;
1215 uschar *system_filter_pipe_transport = NULL;
1216 uschar *system_filter_reply_transport = NULL;
1218 gid_t system_filter_gid = 0;
1219 BOOL system_filter_gid_set = FALSE;
1220 uid_t system_filter_uid = (uid_t)-1;
1221 BOOL system_filter_uid_set = FALSE;
1222 BOOL system_filtering = FALSE;
1224 BOOL tcp_nodelay = TRUE;
1225 #ifdef USE_TCP_WRAPPERS
1226 uschar *tcp_wrappers_daemon_name = US TCP_WRAPPERS_DAEMON_NAME;
1228 int test_harness_load_avg = 0;
1229 int thismessage_size_limit = 0;
1230 int timeout_frozen_after = 0;
1231 BOOL timestamps_utc = FALSE;
1233 transport_instance *transports = NULL;
1235 transport_instance transport_defaults = {
1236 NULL, /* chain pointer */
1239 NULL, /* private options block pointer */
1240 NULL, /* driver name */
1241 NULL, /* setup entry point */
1243 NULL, /* batch_id */
1244 NULL, /* home_dir */
1245 NULL, /* current_dir */
1246 TRUE, /* multi-domain */
1247 FALSE, /* overrides_hosts */
1248 100, /* max_addresses */
1249 500, /* connection_max_messages */
1250 FALSE, /* deliver_as_creator */
1251 FALSE, /* disable_logging */
1252 FALSE, /* initgroups */
1253 FALSE, /* uid_set */
1254 FALSE, /* gid_set */
1255 (uid_t)(-1), /* uid */
1256 (gid_t)(-1), /* gid */
1257 NULL, /* expand_uid */
1258 NULL, /* expand_gid */
1259 NULL, /* warn_message */
1261 NULL, /* shadow_condition */
1262 NULL, /* filter_command */
1263 NULL, /* add_headers */
1264 NULL, /* remove_headers */
1265 NULL, /* return_path */
1266 NULL, /* debug_string */
1267 NULL, /* message_size_limit */
1268 NULL, /* headers_rewrite */
1269 NULL, /* rewrite_rules */
1270 0, /* rewrite_existflags */
1271 300, /* filter_timeout */
1272 FALSE, /* body_only */
1273 FALSE, /* delivery_date_add */
1274 FALSE, /* envelope_to_add */
1275 FALSE, /* headers_only */
1276 FALSE, /* rcpt_include_affixes */
1277 FALSE, /* return_path_add */
1278 FALSE, /* return_output */
1279 FALSE, /* return_fail_output */
1280 FALSE, /* log_output */
1281 FALSE, /* log_fail_output */
1282 FALSE, /* log_defer_output */
1283 TRUE_UNSET /* retry_use_local_part: BOOL, but set neither
1284 1 nor 0 so can detect unset */
1287 int transport_count;
1288 int transport_newlines;
1289 uschar **transport_filter_argv = NULL;
1290 int transport_filter_timeout;
1291 BOOL transport_filter_timed_out = FALSE;
1292 int transport_write_timeout= 0;
1294 tree_node *tree_dns_fails = NULL;
1295 tree_node *tree_duplicates = NULL;
1296 tree_node *tree_nonrecipients = NULL;
1297 tree_node *tree_unusable = NULL;
1299 BOOL trusted_caller = FALSE;
1300 BOOL trusted_config = TRUE;
1301 gid_t *trusted_groups = NULL;
1302 uid_t *trusted_users = NULL;
1303 uschar *timezone_string = US TIMEZONE_DEFAULT;
1305 uschar *unknown_login = NULL;
1306 uschar *unknown_username = NULL;
1307 uschar *untrusted_set_sender = NULL;
1309 /* A regex for matching a "From_" line in an incoming message, in the form
1311 From ph10 Fri Jan 5 12:35 GMT 1996
1313 which the "mail" commands send to the MTA (undocumented, of course), or in
1316 From ph10 Fri, 7 Jan 97 14:00:00 GMT
1318 which is apparently used by some UUCPs, despite it not being in RFC 976.
1319 Because of variations in time formats, just match up to the minutes. That
1320 should be sufficient. Examples have been seen of time fields like 12:1:03,
1321 so just require one digit for hours and minutes. The weekday is also absent
1324 uschar *uucp_from_pattern = US
1325 "^From\\s+(\\S+)\\s+(?:[a-zA-Z]{3},?\\s+)?" /* Common start */
1326 "(?:" /* Non-extracting bracket */
1327 "[a-zA-Z]{3}\\s+\\d?\\d|" /* First form */
1328 "\\d?\\d\\s+[a-zA-Z]{3}\\s+\\d\\d(?:\\d\\d)?" /* Second form */
1329 ")" /* End alternation */
1330 "\\s+\\d\\d?:\\d\\d?"; /* Start of time */
1332 uschar *uucp_from_sender = US"$1";
1334 uschar *warn_message_file = NULL;
1335 uschar *warnmsg_delay = NULL;
1336 uschar *warnmsg_recipients = NULL;
1337 BOOL write_rejectlog = TRUE;
1339 uschar *version_copyright =
1340 US"Copyright (c) University of Cambridge, 1995 - 2012\n"
1341 "(c) The Exim Maintainers and contributors in ACKNOWLEDGMENTS file, 2007 - 2012";
1342 uschar *version_date = US"?";
1343 uschar *version_cnumber = US"????";
1344 uschar *version_string = US"?";
1346 int warning_count = 0;
1348 /* End of globals.c */