# Exim test configuration 0001 # This configuration sets every option that is not dependent on optional code # in the binary, except for exim_user and exim_group, because setting them can # mess up the creation of the spool directory etc. exim_path = EXIM_PATH keep_environment = host_lookup_order = bydns spool_directory = DIR/spool log_file_path = DIR/spool/log/%slog gecos_pattern = "" gecos_name = CALLER_NAME no_accept_8bitmime acl_not_smtp = check_local_message acl_smtp_auth = check_auth acl_smtp_connect = check_connect acl_smtp_data = check_message acl_smtp_etrn = check_etrn acl_smtp_expn = check_expn acl_smtp_helo = check_helo acl_smtp_mail = check_mail acl_smtp_mailauth = check_mailauth acl_smtp_quit = check_quit acl_smtp_predata = check_predata acl_smtp_rcpt = check_recipient acl_smtp_vrfy = check_vrfy admin_groups = 1234 allow_mx_to_ip allow_utf8_domains auth_advertise_hosts = a.a.h auto_thaw = 1d bi_command = bounce_message_file = bounce_message_text = bounce_return_body = false no_bounce_return_message return_size_limit = 12K bounce_return_size_limit = 10K bounce_return_linesize_limit = 997 callout_domain_negative_expire = 1h callout_domain_positive_expire = 1d callout_negative_expire = 5h callout_positive_expire = 1w callout_random_local_part = xxx\ xx check_log_inodes = 0 check_log_space = 0 check_spool_inodes = 0 check_spool_space = 0 daemon_smtp_port = daemon_smtp_ports = daemon_startup_retries = 3 daemon_startup_sleep = 8s delay_warning = 1d delay_warning_condition = ${if match{$h_precedence:}{(?i)bulk|list}{no}{yes}} deliver_drop_privilege deliver_queue_load_max = 6.2 delivery_date_remove dns_again_means_nonexist = *.esri.com:jeni.com dns_check_names_pattern = ^.*$ dns_ipv4_lookup = * dns_retrans = 0s dns_retry = 0 drop_cr envelope_to_remove errors_copy = errors_reply_to = postmaster@cam.ac.uk extra_local_interfaces = 1.2.3.4 no_extract_addresses_remove_arguments finduser_retries = 0 allow_domain_literals freeze_tell = postmaster headers_charset = UTF-8 header_maxsize = 2M header_line_maxsize = 2K helo_accept_junk_hosts = helo_allow_chars = _ helo_lookup_domains = helo_verify_hosts = localhost helo_try_verify_hosts = 1.2.3.4 hold_domains = host_lookup = a.b.c.d host_reject_connection = 10.9.8.7 hosts_connection_nolog = 127.0.0.1 hosts_treat_as_local = ignore_bounce_errors_after = 2m ignore_fromline_hosts = a.b.c.d ignore_fromline_local keep_malformed = 4d no_local_from_check local_from_prefix = *- local_from_suffix = =* local_interfaces = local_scan_timeout = 10s local_sender_retain localhost_number = "3 " log_selector = \ +address_rewrite \ -all \ +all_parents \ +arguments \ -connection_reject \ -delay_delivery \ +incoming_interface \ +incoming_port \ +lost_incoming_connection \ -queue_run \ +received_recipients \ +received_sender \ -retry_defer \ +return_path_on_delivery \ +sender_on_delivery \ +size_reject \ -skip_delivery \ +smtp_confirmation \ +smtp_connection \ +smtp_syntax_error \ +subject \ +tls_cipher \ +tls_peerdn log_timezone lookup_open_max = 16 max_username_length = 8 message_body_visible = 500 message_id_header_domain = a.b.c message_id_header_text = x.y.z no_message_logs message_size_limit = 500K mua_wrapper never_users = root:0 percent_hack_domains = pipelining_advertise_hosts = *.b.c pid_file_path = /some/thing no_preserve_message_logs primary_hostname = some.host.name no_print_topbitchars process_log_path = /a/b/c/d prod_requires_admin qualify_domain = some.dom.ain qualify_recipient = some.dom.ain queue_domains = a.b.c queue_list_requires_admin no_queue_only no_queue_only_override queue_only_file = /var/spool/exim/queue_only queue_only_load = 8.2 no_queue_run_in_order queue_run_max = ${if = {1}{1} {5}{10}} queue_smtp_domains = x.y.z receive_timeout = 0s received_header_text = Received: ${if def:sender_rcvhost {from ${sender_rcvhost}\n\t}{${if def:sender_ident {from ${sender_ident} }}${if def:sender_helo_name {(helo=${sender_helo_name})\n\t}}}}by ${primary_hostname} ${if def:received_protocol {with ${received_protocol}}} (Exim ${version_number} #${compile_number})\n\tid ${message_id}${if def:received_for {\n\tfor $received_for}} received_headers_max = 30 recipient_unqualified_hosts = localhost:some.host.name recipients_max = 0 no_recipients_max_reject remote_max_parallel = 1 remote_sort_domains = retry_data_expire = 24h retry_interval_max = 3d return_path_remove rfc1413_hosts = sender_unqualified_hosts = localhost:some.host.name smtp_accept_keepalive smtp_accept_max = 20 smtp_accept_max_nonmail = 40 smtp_accept_max_nonmail_hosts = ! *.b.c smtp_accept_max_per_connection = 20 smtp_accept_max_per_host = 4 smtp_accept_queue = 0 smtp_accept_queue_per_connection = 10 smtp_active_hostname = x.y.z no_smtp_enforce_sync smtp_max_synprot_errors = 11 smtp_max_unknown_commands = 10 smtp_ratelimit_hosts = * smtp_ratelimit_mail = 1, 1s, 2, 10s smtp_ratelimit_rcpt = 10, 2s, 5, 5m smtp_accept_reserve = 0 smtp_banner = ${primary_hostname} ESMTP Exim ${version_number} #${compile_number} ${tod_full} smtp_check_spool_space smtp_connect_backlog = 5 smtp_etrn_command = smtp_etrn_serialize smtp_load_reserve = 2 smtp_receive_timeout = 1m smtp_reserve_hosts = smtp_return_error_details no_split_spool_directory no_strip_excess_angle_brackets no_strip_trailing_dot no_syslog_duplication syslog_facility = uucp syslog_processname = mta-exim no_syslog_timestamp system_filter = /home/exim/test/filter system_filter_directory_transport = system_filter_file_transport = system_filter_group = MAILGROUP system_filter_pipe_transport = system_filter_reply_transport = system_filter_user = 99 tcp_nodelay = false timeout_frozen_after = 7d timezone = EDT tls_advertise_hosts = trusted_groups = 42 trusted_users = ${readfile{DIR/aux-fixed/TESTNUM.trusted}{:}} unknown_login = unknownlogin unknown_username = Exim Testing untrusted_set_sender = * uucp_from_pattern = ^From\s+(\S+)\s+(?:[a-zA-Z]{3},?\s+)?(?:[a-zA-Z]{3}\s+\d?\d|\d?\d\s+[a-zA-Z]{3}\s+\d\d(?:\d\d)?)\s+\d\d?:\d\d? uucp_from_sender = $1 warn_message_file = /home/exim/test/warnmsg_file write_rejectlog = false # ----- Routers ----- begin routers # The manualroute router manualroute: driver = manualroute address_data = domainlist address data cannot_route_message = can't route this address caseful_local_part condition = debug_print = disable_logging domains = errors_to = no_fail_verify_recipient no_fail_verify_sender fallback_hosts = localhost group = MAILGROUP headers_add = headers_remove = host_find_failed = freeze hosts_randomize no_initgroups local_parts = more no_pass_on_timeout pass_router = manualroute2 redirect_router = manualroute2 require_files = route_data = ${lookup{$local_part}lsearch{/}} router_home_directory = /usr self = freeze senders = transport = smtp no_unseen user = root no_verify_only verify_recipient verify_sender # Manualroute2 router, for mutually exclusive options manualroute2: driver = manualroute domains = ! +local_domains route_list = ^fax(\.cl(\.cam(\.ac\.uk)?)?)?$ cl.cam.ac.uk; \ *.uucp britain.eu.net # The redirect router, in "alias" mode alias: driver = redirect address_data = aliasfile address data allow_fail allow_freeze caseful_local_part no_check_ancestor condition = data = ${lookup{$local_part}lsearch{/etc/aliases}} debug_print = directory_transport = dummy domains = errors_to = expn no_fail_verify_recipient no_fail_verify_sender fallback_hosts = file_transport = dummy forbid_blackhole no_forbid_file forbid_include no_forbid_pipe group = 100 headers_add = headers_remove = hide_child_in_errmsg include_directory = /i/n/c no_initgroups local_part_prefix = no_local_part_prefix_optional local_part_suffix = no_local_part_suffix_optional local_parts = more no_one_time pipe_transport = dummy no_qualify_preserve_domain no_repeat_use qualify_domain = xxxx redirect_router = aliasfile2 require_files = retry_use_local_part no_rewrite senders = sieve_vacation_directory = /thing/thong sieve_subaddress = rhubarb sieve_useraddress = custard no_skip_syntax_errors syntax_errors_to = transport_current_directory = transport_home_directory = no_unseen user = 100 no_verify_only verify_recipient verify_sender # Aliasfile2 for mutually exclusive options aliasfile2: driver = redirect allow_defer caseful_local_part check_group check_owner file = /some/file retry_use_local_part # The redirect router in "forward" mode forward: driver = redirect allow_filter forbid_exim_filter forbid_sieve_filter caseful_local_part check_ancestor check_local_user condition = debug_print = directory_transport = dummy domains = errors_to = expn no_fail_verify_recipient no_fail_verify_sender fallback_hosts = file = //.forward2 file_transport = dummy no_forbid_file forbid_blackhole forbid_filter_existstest no_forbid_filter_logwrite forbid_filter_dlfunc forbid_filter_lookup forbid_filter_readfile forbid_filter_readsocket forbid_filter_reply forbid_filter_run no_forbid_include no_forbid_pipe group = MAILGROUP headers_add = headers_remove = hide_child_in_errmsg no_ignore_eacces no_ignore_enotdir no_initgroups local_part_prefix = xxx- local_part_prefix_optional local_part_suffix = no_local_part_suffix_optional local_parts = modemask = 022 more no_one_time owners = root owngroups = MAILGROUP pipe_transport = dummy no_qualify_preserve_domain redirect_router = aliasfile2 reply_transport = dummy require_files = rewrite senders = no_skip_syntax_errors syntax_errors_text = rhubarb syntax_errors_to = transport_current_directory = transport_home_directory = no_unseen user = root no_verify_only no_verify_recipient no_verify_sender # The accept router localuser: driver = accept no_address_test caseful_local_part check_local_user condition = debug_print = domains = errors_to = expn no_fail_verify_recipient no_fail_verify_sender fallback_hosts = group = MAILGROUP headers_add = X-added: by localuser headers_remove = no_initgroups local_part_prefix = no_local_part_prefix_optional local_part_suffix = no_local_part_suffix_optional local_parts = no_log_as_local more redirect_router = smartuser require_files = senders = transport = ${if eq{$local_part}{caller}{local_mbx_delivery}{local_delivery}} transport_current_directory = transport_home_directory = no_unseen user = 99 no_verify_only verify_recipient verify_sender # The redirect router in "smartuser" mode smartuser: driver = redirect caseful_local_part condition = data = user@domain debug_print = domains = errors_to = expn no_fail_verify_recipient no_fail_verify_sender fallback_hosts = file_transport = dummy forbid_file forbid_pipe group = MAILGROUP headers_add = headers_remove = hide_child_in_errmsg no_initgroups local_part_prefix = no_local_part_prefix_optional local_part_suffix = no_local_part_suffix_optional local_parts = abcd log_as_local more pipe_transport = dummy qualify_preserve_domain redirect_router = localuser require_files = retry_use_local_part no_rewrite senders = no_unseen user = root no_verify_only verify_recipient verify_sender # ----- Transports ----- # Dummy transport, to refer back to begin transports dummy: driver = pipe disable_logging # Appendfile Transport appendfile: driver = appendfile allow_fifo no_allow_symlink batch_max = 100 batch_id = rhubarb body_only no_check_group no_check_owner check_string = abcd create_directory create_file = anywhere current_directory = debug_print = delivery_date_add directory_mode = 0700 envelope_to_add escape_string = xyz file = /home/$local_part/inbox file_format = "From : appendfile" no_file_must_exist group = MAILGROUP headers_add = X-original-domain: $original_domain\nX-original-localp: $original_local_part headers_remove = headers_rewrite = a@b c@d lock_fcntl_timeout = 10s lock_interval = 3s lock_retries = 10 lockfile_mode = 0600 lockfile_timeout = 30m mailbox_size = 1000 mailbox_filecount = 9999 message_size_limit = 1G mode = 0600 mode_fail_narrower no_notify_comsat message_prefix = From ${if def:return_path{$return_path}{MAILER-DAEMON}} ${tod_bsdinbox}\n quota = no_quota_is_inclusive quota_size_regex = (\d+)$ quota_warn_message = "A warning message" quota_warn_threshold = rcpt_include_affixes retry_use_local_part return_path = xxxx return_path_add shadow_condition = $h_return-receipt-to shadow_transport = dummy message_suffix = \n transport_filter = transport_filter_timeout = 10s no_use_crlf use_fcntl_lock use_lockfile user = root # For options that are mutually exclusive with those above appendfile2: driver = appendfile directory = /etc directory_file = afilename quota_directory = /some/directory quota = 1M quota_filecount = 10 use_bsmtp # Ditto appendfile4: driver = appendfile directory = /etc # Smtp transport smtp: driver = smtp authenticated_sender = abcde authenticated_sender_force = true no_allow_localhost command_timeout = 5m connect_timeout = 0s connection_max_messages = 0 data_timeout = 5m debug_print = delay_after_cutoff no_delivery_date_add dns_qualify_single no_dns_search_parents no_envelope_to_add fallback_hosts = localhost final_timeout = 10m no_gethostbyname headers_add = headers_remove = helo_data = some.text hosts = localhost hosts_avoid_esmtp = x.y.z hosts_max_try = 10 hosts_max_try_hardlimit = 20 hosts_override hosts_randomize hosts_require_auth = * hosts_try_auth = * interface = 127.0.0.1 max_rcpt = 0 multi_domain port = 25 retry_include_ip_address no_return_path_add serialize_hosts = size_addition = -1 transport_filter = # End