I'm in the final stages of setting up a cluster here to provide
mail storage/IMAP/web-email services for, initially 4000 users,
rising to 30000 over a year or two. The cluster contains a number
of IMAP servers in its domain named imap1, imap2, etc. The cluster
frontends are the designated DNS name servers for that domain and
have entries of the form "username.domain...." mapping to the
user's actual IMAP server. I use exim smartuser directors on the
frontends and IMAP servers to deliver mail locally (if the user
exists on the local host) or to resend the message via SMTP to
username.domain.
I had been going to use NIS (within the cluster where it's secure)
to provide each IMAP server with the whole user namespace and some
other tables to (for handling the icky long
firstname.lastname@blahblah addresses we have here). In that
situation, I can check for non-existent users fairly easily.
However, I've been having so many problems trying to get NIS on
Solaris running properly with Linux NIS servers that I'm falling
back to other methods. For deciding between local delivery and
cluster-remote delivery it is almost (but not quite) acceptable
just to to do:
# Transports
cluster_smtp:
driver = smtp
hosts = ${local_part}.DOMAIN
# Directors
local_delivery:
domains = DOMAIN:*.DOMAIN
driver = localuser
require_files = ${home}/INBOX
transport = local_delivery
cluster_redirect:
domains = DOMAIN
driver = smartuser
transport = cluster_smtp
However, mistakes in the username part of addresses would (I should
think) end up being bounced to the sending user as some sort of "no
such hostname" error (since badusername.domain does not exist) rather
than a "bad username" error. What I want is a way to encode
"hostname foo exists" (i.e. a DNS lookup succeeds) in a "condition"
line assertion. I could kludge it by adding a TXT record for
everybody and using a dnsdb lookup but that's ugly and I think I'd
rather have a duplicate username DBM table copied to all the IMAP
server than that. Is there anyway I can pervert^Wconfigure exim's
current rules/lookups to do such a yes/no DNS lookup or could it be
added (I'm sure I can scare up a patch but I'd rather minimise local
patches and I don't know whether you'd accept such a feature) or can
you think of another solution I may have missed?
--Malcolm
--
Malcolm Beattie <mbeattie@???>
Unix Systems Programmer
Oxford University Computing Services
--
*** Exim information can be found at
http://www.exim.org/ ***