If we are saying that the ACE <=> IDN(UTF8) so why is the two headers
not in sync?
because there are things which will know about the old headers and change
those, without changing the new utf8 headers.
If old headers only contains ACE why will those *things* change them, which
means nowadays MTA or MUA may change david(_at_)neteka(_dot_)com to something
this an implementation problem?
the old headers will not "only" contain ACE - they will contain a mixture
of plain ASCII, addresses with ACE domains and ASCII local parts,
addresses with ACE local parts and ASCII domains, and pure ACE.
Even if only the ASCII components are changed this still changes the information
in the header.
because there are things which change the headers, always using the utf-8
headers is not the right thing to do - they might be obsolete.
about the best you can do is require each things that ues the new headers
to check for consistency with the old headers - if they're not consistent,
use the old headers.
I think you miss what I said, I said use ACE with the old headers and UTF8
ONLY in the new headers. Which is not always using utf8 headers.
the party reading the message (whether the recipient or some other agent)
needs to know whether to believe the old headers or the utf8-only
headers that you've proposed. but unless the old headers match the utf8-only
headers, the party reading the message can't tell which headers to believe.
and checking both sets of headers to see that they match is more trouble
than just decoding the ACE.
in general, it's nearly always a bad idea to have two different sources
of the same kind of information and claim that they're both authoritative.
if you're going to have multiple sources of the same information,
you need some way to decide between them for the cases when they don't
So ACE is a bad idea, because it claim authoritative for the ASCII and IDN
names : )
no, dual representations are a bad idea.