On Sun, 24 Dec 2000, Gabor Gludovatz wrote:
> I have the following elements in exim's director section:
> virtual:
> driver = aliasfile
> file_transport = address_file
> pipe_transport = address_pipe
> domains = lsearch;/etc/exim.virtual-domains
> file = /etc/vmail/$domain
> search_type = lsearch
>
> virtual_smart:
> driver = smartuser
> domains = lsearch;/etc/exim.virtual_smart
> new_address =
> ${lookup{$domain}lsearch{/etc/exim.virtual_smart}{$value}fail}
> no_more
>
> [...]
>
> localuser:
> driver = localuser
> transport = local_delivery
>
>
> If a domain has no smartuser set up in /etc/exim.virtual_smart,
> then the message passes along, and it gets delivered to a localuser even
> if there is no such username in the file /etc/vmail/$domain.
One solution to this is to do the defaulting in the virtual director,
instead of having a separate director. You can do this by using the
lsearch* lookup type. Then you can put the default into the alias
files, and add no_more to the director.
But, which version of Exim are you using? I have just tested smartuser
with no_more and a lookup with "fail", like your virtual_smart user, and
it works fine. If the lookup fails, the director does not pass the
address on to the next director.
Aha! I can see how your problem might happen. Maybe you have a different
set of domains in /etc/exim.virtual-domains and /etc/exim.virtual_smart?
So the virtual_smart director doesn't even run for some of the domains?
The only way round that is to ensure that the virtual_smart always runs
for the same domains as virtual.
--
Philip Hazel University of Cambridge Computing Service,
ph10@??? Cambridge, England. Phone: +44 1223 334714.