X-Git-Url: https://git.distorted.org.uk/~mdw/exim-config/blobdiff_plain/185b5456076ca86959643ce2f19c98c0f82f281e..adf15c374bca17f71880007f4d5f64d0e027e091:/local.m4 diff --git a/local.m4 b/local.m4 index 78b3e64..582e1ce 100644 --- a/local.m4 +++ b/local.m4 @@ -47,6 +47,10 @@ addresslist wrong_local = ! +user_extaddr addresslist wrong_domain = ! *@+public addresslist wrong_address = +wrong_local : +wrong_domain untrusted_set_sender = : \ + ${if exists {CONF_sysconf_dir/auth-sender.conf} \ + {${lookup {$sender_ident} \ + lsearch {CONF_sysconf_dir/auth-sender.conf} \ + {$value}}}} : \ ${LOOKUP_DOMAIN($sender_address_domain, {${if and {{match_local_part {$sender_ident} {+dom_users}} \ {match_local_part {$sender_address_local_part} \ @@ -65,7 +69,8 @@ alias: allow_defer = true user = CONF_filter_user FILTER_TRANSPORTS - data = ${lookup {$local_part} lsearch {CONF_alias_file}} + local_parts = nwildlsearch; CONF_alias_file + data = ${expand:$local_part_data} SECTION(routers, real)m4_dnl ## A special hack to get mail to a user who has a forward file. Only for @@ -86,28 +91,30 @@ SECTION(routers, forward)m4_dnl ## rejection if possible). Mail sent directly to the user is handled through ## `~/.mail/forward', or `~/.forward', or if neither of those exists, by ## writing the message to `/var/mail/USER'. -filter_verify: - FILTER_LOCALUSER(CONF_userconf_dir/forward.suffix) - FILTER_VERIFY - local_part_suffix = CONF_user_suffix_list -filter_suffix: - FILTER_LOCALUSER(CONF_userconf_dir/forward.suffix) - local_part_suffix = CONF_user_suffix_list - FILTER_TRANSPORTS -filter: - FILTER_LOCALUSER(CONF_userconf_dir/forward) - FILTER_TRANSPORTS -dot_forward: - FILTER_LOCALUSER($home/.forward) - FILTER_TRANSPORTS +FILTER_ROUTER(filter_suffix, + <:FILTER_LOCALUSER(CONF_userconf_dir/forward.suffix) + local_part_suffix = CONF_user_suffix_list:>) +FILTER_ROUTER(filter, + <:FILTER_LOCALUSER(CONF_userconf_dir/forward):>) +FILTER_ROUTER(dot_forward, + <:FILTER_LOCALUSER($home/.forward):>) SECTION(routers, deliver)m4_dnl ## Deliver mail to a user, in the absence of any other instructions. +m4_define(<:STRIP_HEADERS:>, <:m4_dnl + Content-Length, Status, X-IMAP, X-IMAPbase, m4_dnl + X-Keywords, X-Status, X-UID:>)m4_dnl deliver: driver = accept check_local_user transport = deliver cannot_route_message = Unknown local part + ## Strip headers used by Dovecot for its own purposes. + headers_remove = CLRSEP<::>FOREACH(<:SEP(:)$1:>, <:STRIP_HEADERS:>) + headers_add = CLRSEP<::>FOREACH(<:\ + ${if def:h_$1:{X-Distorted-Renamed-$1: $h_$1:\n}}:>, + <:STRIP_HEADERS:>) + DIVERT(null) ###----- That's all, folks --------------------------------------------------