[Top] [All Lists]

Re: 2821bis ABNF diff

2005-09-08 19:51:52

Alex van den Bogaerdt wrote:
Where you write "sub-domain", you mean "label".

Yes, using the proper name <label> is better.  In 821 it
was still  <domain> ::= <element> | <element> "." <domain>

Maybe John used <sub-domain> inspired by the old recursive
   Domain = *63(label ".") tld ["."]
   Label  = Let-dig [Ldh-str]

Something in this direction - as Tony said 3696 has it only
in prose.  When I asked Wayne where he found <toblabel> it
was an impressive list of RfCs (2396 etc.) resulting in...

   toplabel = ALPHA / ALPHA *[ alphanum / "-" ] alphanum
              ; LDH rule (See [RFC3696])
   alphanum = ALPHA / DIGIT

...for SPF.  Compressing that a bit combined with your idea
(excl. the limit 63, IIRC the limit is more like 127) we get:

   Domain   = 1*(label ".") toplabel
   label    = Let-dig [Ldh-str]
   toplabel = ALPHA [Ldh-str]

That's the 2821 compatible version.  For 821 as you and Tony
proposed it remove the "1":

   Domain   = *(label ".") toplabel

Problem is, I like the "at-least-one-dot" feature, and John
said it was intentional.  In the dark age hosts tried to get
away with their leftmost label(s) "thinking" that "something"
would add their "default" domain when necessary.

That didn't work as expected, the "at-least-one-dot" rule
only enforces what 821 3.7 already said - minus pathological
cases where the TLD is a "host name".

(Probably Tony's terminolgy "mail domain" is better than
 "host name" - we're all talking about the 2821 <Domain> -
 but for RfC 2821 a TLD clearly never is a "mail domain" ;-)
But why should there be at least one dot?

Because billions of "ehlo oemcomputer" or "helo xyzzy" are a
worse problem than a few TLDs wanting to be a "mail domain".

No fun for the DNS root servers if most MTAs try to create a
timestamp line for this crap.  "Don't bother the root servers"
is also a part of CSV.  To a lesser degree even SPF and other
protocols where you find anything like a <toplabel>.

                         Bye, Frank

<Prev in Thread] Current Thread [Next in Thread>