Those of you who are following the Exim 4 discussions may recall that
the handling of case sensitivities in addresses has had to change
because of the abolition of "local domains" as a concept wired into
Exim. Instead, I proposed an option for each router, specifying whether
it operates casefully or caselessly on local parts. (Domains are always
handled caselessly.)
That is all fine, except when considering how to handle multiple
addresses in a single message that differ only in the case of their
letters. The problem is in defining exactly what is a "duplicate
address".
I've been trying to find a clean way of doing this, and as far as I can
see, the really only clean way is:
* Two addresses are the same only if they match casefully.
* If there are two addresses that differ only in case in one message,
two deliveries will take place.
* This does not prevent the routing of each address from proceeding in
a caseless manner in those routers that are so configured.
This copes with all cases, I think, including the following pathological
example:
. Consider a message containing the addresses x@domain and X@domain.
. The first router operates casefully, and routes x@domain.
. X@domain falls through to the second router, which routes it
caselessly.
. Should the second router discard X@domain because x@domain has
already been routed?
In my "clean" proposal, x@domain and X@domain are treated as two
different addresses for the purposes of duplication, even if they both
get routed by the same router (caselessly), so there is no conflict.
This, of course, has always been the case for "remote" addresses, where
local parts are required to be treated as significant.
Does anybody have any objections? Other ideas?
--
Philip Hazel University of Cambridge Computing Service,
ph10@??? Cambridge, England. Phone: +44 1223 334714.