The exim4 config file is a bit annoying because it is hard to know what statements are assignments and what statements are conditions. Below, the debug_print, driver, and data statements (in the hub_user route) are assignments, while the domains and check_local_user statements are conditions. Note how the config file designer helpfully mixed them together.
hub_user: debug_print = "R: hub_user for $local_part@$domain" driver = redirect domains = +local_domains data = ${local_part}@DCreadhost check_local_user hub_user_smarthost: debug_print = "R: hub_user_smarthost for $local_part@$domain" driver = manualroute domains = DCreadhost transport = remote_smtp_smarthost route_list = * DCsmarthost byname host_find_failed = defer same_domain_copy_routing = yes check_local_user .endif
Anyway, to help with debugging exim4 routers, you can use the -bt option to exim4:
blueeyes:~# exim4 -bt bjb bjb@localhost bjb@blueeyes R: system_aliases for bjb@linuxbutler.ca R: userforward for bjb@linuxbutler.ca R: procmail for bjb@linuxbutler.ca bjb@linuxbutler.ca router = procmail, transport = procmail_pipe R: system_aliases for bjb@localhost R: userforward for bjb@localhost R: procmail for bjb@localhost bjb@localhost router = procmail, transport = procmail_pipe R: system_aliases for bjb@blueeyes R: userforward for bjb@blueeyes R: procmail for bjb@blueeyes bjb@blueeyes router = procmail, transport = procmail_pipe blueeyes:~#
Note to self: “satellite” mail type is for machines whose mail is forwarded to another machine. Use “smarthost” for machines on which I actually read mail.