# Where the files are
DOMAIN_DIR	= /var/exim/domains

# DB suffix
DB		=
#DB		= .db

# Truly local domains
domainlist local_domains = a.local.domain : and.another.local.domain

# Virtual domains
domainlist virtual_domains = partial-dbm;DOMAIN_DIR/list

# Both of the above, for use in ACL rules and the dnslookup router
domainlist all_local_domains = +local_domains : +virtual_domains

### ROUTERS ###
# Put these immediately after the dnslookup router.

# This router handles privileged aliases (that can't be overrided in
# domain's files, such as Postmaster) for virtual domains.

virtual_admin:
  driver = redirect
  domains = partial-dbm;DOMAIN_DIR/listDB
  data = ${lookup{$local_part}dbm*{DOMAIN_DIR/${domain_data}DB}}
  check_ancestor
  allow_fail
  allow_defer
  forbid_file
  forbid_pipe
  forbid_include


# This router handles aliases for virtual domains, resulting in rewriting
# such as:
#       foo@hairy.dom           -> quux@baz.dom

virtual_aliases:
  driver = redirect
  #domains = +virtual_domains
  domains = partial-dbm;DOMAIN_DIR/listDB
  data = ${lookup{$local_part}dbm*{DOMAIN_DIR/${domain_data}DB}}
  qualify_preserve_domain
  check_ancestor
  allow_fail
  allow_defer
  forbid_file
  forbid_pipe
  forbid_include


# This one is the same as the above, except the local parts may
# have suffix.  The keys in the alias file are specified as
# 'foo-', which matches local parts 'foo' and 'foo-*'.
# Note that the local part 'foo-' is matched by the previous
# director, but it doesn't matter as the result is the same.  The
# added value is that you may create different aliases for 'foo',
# 'foo-bar' and the rest of 'foo-*'.

virtual_aliases_suffixed:
  driver = redirect
  domains = partial-dbm;DOMAIN_DIR/listDB
  local_part_suffix = -*
  local_part_suffix_optional
  data = ${lookup{$local_part-}dbm{DOMAIN_DIR/${domain_data}DB}}
  qualify_preserve_domain
  check_ancestor
  allow_fail
  allow_defer
  forbid_file
  forbid_pipe
  forbid_include


# This router handles possibly suffixed local parts at virtual domains,
# based on alias-type thingies in DOMAIN_DIR/domain that look like:
#       foo:                       quux@baz.dom
# ...which results in rewriting such as:
#       foo-bar@hairy.dom       -> quux-bar@baz.dom

virtual_aliases_preserve_suffix:
  driver = redirect
  #domains = +virtual_domains
  domains = partial-dbm;DOMAIN_DIR/listDB
  local_part_suffix = -*
  local_part_suffix_optional
# WARNING: Ridiculously simplified black magic follows.  In fact, it's
# simplified so much that it's distinguishable from technology.
  data = ${lookup{$local_part+}dbm{DOMAIN_DIR/${domain_data}DB}\
           {${local_part:$value}$local_part_suffix@\
           ${if eq{${domain:$value}}{}{$domain}{${domain:$value}}}}fail}
  check_ancestor
  allow_fail
  allow_defer
  forbid_file
  forbid_pipe
  forbid_include
  no_more
