X-Git-Url: https://git.distorted.org.uk/~mdw/exim-config/blobdiff_plain/df2d1f18b2d9abb8008316439f1b0dcb70042923..aa8d0e75d766748c223b52ae296b488eb4f98644:/vhost.m4 diff --git a/vhost.m4 b/vhost.m4 index 5e81f56..41bc715 100644 --- a/vhost.m4 +++ b/vhost.m4 @@ -24,12 +24,13 @@ m4_define(<:VHOST:>, <:domains = ${if exists{CONF_sysconf_dir/domains.conf} \ {partial0-lsearch; CONF_sysconf_dir/domains.conf} \ - {}} - condition = DOMKV($1):>) + {}}:>) m4_define(<:VHOST_FILTER:>, <:FILTER_BASE - VHOST(<:$1:>) - $2 = ${expand:DOMKV($1, {$value} fail)}:>) + VHOST + condition = DOMKV($2, {true}{false}) + router_home_directory = DOMKV(home, {$value} fail) + $1 = ${expand:DOMKV($2)}:>) m4_define(<:VHOST_USER:>, <:user = DOMKV(owner, {$value}{CONF_filter_user}) errors_to = DOMKV(errors_to, {$value} fail):>) @@ -39,33 +40,47 @@ m4_define(<:VHOST_USER:>, SECTION(routers, route)m4_dnl ## If we're a front-end for some other domain, or we have special information -## about the domain, then pass stuff along as instructed. -route: +## about the domain, then pass stuff along as instructed. The hack for the +## `transport' is very nasty; see the commentary for `smtp'. +virtual_route: driver = manualroute self = fail - VHOST(route) - route_data = DOMKV(route, {$value} fail) + VHOST + condition = DOMKV(route, {true}{false}) + route_data = <;DOMKV(route) same_domain_copy_routing = true - transport = smtp + transport = DOMKV(tls-min-dh-bits, {smtp_dhbits_$value}{smtp}) no_more SECTION(routers, virtual)m4_dnl ## Remap recipients according to the virtual host's instructions. This must ## be done in two passes, so that we can identify the correct user's spam ## threshold during address verification. -virtual_verify_data: - VHOST_FILTER(redirect, data) - FILTER_VERIFY -virtual_verify_file: - VHOST_FILTER(filter, file) - FILTER_VERIFY +FILTER_ROUTER(virtual_data, + <:VHOST_FILTER(data, redirect):>,, <: + VHOST_USER:>) +FILTER_ROUTER(virtual_file, + <:VHOST_FILTER(file, filter):>,, <: + VHOST_USER:>) -virtual_filter_data: - VHOST_FILTER(redirect, data) - VHOST_USER -virtual_filter_file: - VHOST_FILTER(filter, file) - VHOST_USER +SECTION(routers, virtual-tail)m4_dnl +## Last ditch effort for required local parts. This is a bit strange because +## we should only try this for `final' domains -- where we're not going to +## route using the system-wide rules -- and we want the router to decline if +## the local part isn't one of our required set so that routing as a whole +## fails. +virtual_endstop: + VHOST + condition = DOMKV(final, {$value}{true}) + driver = redirect + no_more + data = ${if match_local_part{$local_part}{+required} \ + {DOMKV(errors_to, \ + {$value} \ + {DOMKV(owner, \ + {$value} \ + {postmaster})})} \ + {:unknown:}} DIVERT(null) ###----- That's all, folks --------------------------------------------------