[exim] Can't understand why "no more routers"

Top Page
Delete this message
Reply to this message
Author: Jason Lixfeld
Date:  
To: exim-users
Subject: [exim] Can't understand why "no more routers"
I find this behavior very strange and I can't explain it, so I'm
hoping someone else can. Here's my routers configuration:

virtual_aliases:
driver = redirect
local_part_suffix = +* : -*
local_part_suffix_optional
allow_fail
allow_defer
hide data = ${lookup ldap {ldap:///o=
$domain,ou=hosting,ou=mail,dc=example,dc=ca?mailLocalAddress?sub?(&
(uid=$local_part))}}
file_transport = address_file
pipe_transport = address_pipe

system_aliases:
driver = redirect
allow_fail
allow_defer
data = ${lookup{$local_part}lsearch{/etc/aliases}}
user = mailnull
group = mailnull
file_transport = address_file
pipe_transport = address_pipe

virtual_user:
debug_print = "Virtual User Router Called Here"
driver = accept
check_local_user
local_part_suffix = +* : -*
local_part_suffix_optional
transport = virtual_delivery
cannot_route_message = Unknown user!

...
...
...

begin transports

...
...
...

virtual_delivery:
driver = appendfile
delivery_date_add
envelope_to_add
return_path_add
mode = 0660
hide directory = ${lookup ldap {ldap:///uid=
$local_part,ou=users,ou=auth,dc=example,dc=ca?homeDirectory?}}/Maildir/
create_directory
maildir_format = true

I'm trying to test sending email to jlixfeld@??? using exim -
bhc, however I get a failure:

>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>> routing jlixfeld@???
>>> example.ca in "localhost : mail.example.ca : example.ca"? yes

(matched "example.ca")
>>> example.ca in "! +local_domains"? no (matched "! +local_domains")
>>> calling virtual_aliases router
>>> routed by virtual_aliases router
>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>> routing jlixfeld.example.ca@???
>>> mail.example.ca in "localhost : mail.example.ca : "? yes

(matched "mail.example.ca")
>>> mail.example.ca in "! +local_domains"? no (matched "!

+local_domains")
>>> calling virtual_aliases router
>>> virtual_aliases router declined for

jlixfeld.example.ca@???
>>> calling system_aliases router
>>> system_aliases router declined for

jlixfeld.example.ca@???
>>> no more routers
>>> ----------- end verify ------------
>>> accept: condition test failed
>>> accept: endpass encountered - denying access

550 Unknown user!

Everything looks good up until when the system_aliases router
declines the address. At that point, it *should* be sent to the
virtual_user router, but for some unknown reason, it's not. HOWEVER,
the odd thing is, is the "550 Unknown user!" is taken from the
cannot_route_message line from the virtual_user router. The
debug_print isn't firing, so I'm totally confused about how it's
getting the cannot_route_message if it's not even hitting the
router. I have verified that the cannot_route_message line is in
fact from that router, because I have changed the string and it
matches the debug.

Can anyone give me a pointer to where I might look for a solution?

Thanks in advance...

N.B. I'm not sure if it matters, but I might explain the way our
system works incase someone notices something that might cause this:

It's designed to primarily support virtual users, so the address
jlixfeld@??? expands to
jlixfeld.example.com@???. jlixfeld.example.com is
actually a system user with his own home directory, uid, gid,
maildir, etc. If the domain was foo.org, it would expand to
jlixfeld.foo.org@???. We do this to avoid username
collisions and allow each domain to have any username that might
normally collide with a user from another domain.