Move the does-this-key-exist condition out of the `VHOST' macro and
into `VHOST_FILTER'. Alas, this means we must repeat the logic for
the `virtual_route' router. But we can take the opportunity to elide
the unnecessary existence checks for the domain keys we just tested in
the router conditions.
Also, switch the arguments to `VHOST_FILTER' around. I think they
make more sense like this.
m4_define(<:VHOST:>,
<:domains = ${if exists{CONF_sysconf_dir/domains.conf} \
{partial0-lsearch; CONF_sysconf_dir/domains.conf} \
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
m4_define(<:VHOST_FILTER:>,
<:FILTER_BASE
+ VHOST
+ condition = DOMKV($2, {true}{false})
router_home_directory = DOMKV(home, {$value} fail)
more = ${if bool{DOMKV(final, {$value}{true})} {false} {true}}
router_home_directory = DOMKV(home, {$value} fail)
more = ${if bool{DOMKV(final, {$value}{true})} {false} {true}}
- $2 = ${expand:DOMKV($1, {$value} fail)}:>)
+ $1 = ${expand:DOMKV($2)}:>)
m4_define(<:VHOST_USER:>,
<:user = DOMKV(owner, {$value}{CONF_filter_user})
errors_to = DOMKV(errors_to, {$value} fail):>)
m4_define(<:VHOST_USER:>,
<:user = DOMKV(owner, {$value}{CONF_filter_user})
errors_to = DOMKV(errors_to, {$value} fail):>)
virtual_route:
driver = manualroute
self = fail
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
no_more
same_domain_copy_routing = true
transport = smtp
no_more
## be done in two passes, so that we can identify the correct user's spam
## threshold during address verification.
FILTER_ROUTER(virtual_data,
## be done in two passes, so that we can identify the correct user's spam
## threshold during address verification.
FILTER_ROUTER(virtual_data,
- <:VHOST_FILTER(redirect, data):>,, <:
+ <:VHOST_FILTER(data, redirect):>,, <:
VHOST_USER:>)
FILTER_ROUTER(virtual_file,
VHOST_USER:>)
FILTER_ROUTER(virtual_file,
- <:VHOST_FILTER(filter, file):>,, <:
+ <:VHOST_FILTER(file, filter):>,, <:
VHOST_USER:>)
DIVERT(null)
VHOST_USER:>)
DIVERT(null)