spf-discuss
[Top] [All Lists]

Re: [spf-discuss] Re: Erratum <explanation>

2007-01-16 10:39:53
On Tue, Jan 16, 2007 at 05:28:02PM +0000, Julian Mehnle wrote:

Which implicitly expresses your opinion about an empty explanation
domain. Which poses the question: why was it included in the spec as-is,
what made all people involved do the wrong thing?

This is how it happened:

Time-line of the spec drafts[1]:

       T draft-mengwong-spf.02.9.4
       | draft-mengwong-spf-00
       | draft-mengwong-spf-01
       | draft-mengwong-spf-01.200406
  time | draft-lentczner-spf-00
       | draft-schlitt-spf-classic-00
       | draft-schlitt-spf-classic-01
       | draft-schlitt-spf-classic-02
       V rfc4408

draft-mengwong-spf.02.9.4 said:
| exists = 'exists' ':' macro-string

draft-mengwong-spf-00 changed that to:
| exists = 'exists' ':' domain-spec

On the domain-spec definition, all drafts up to draft-mengwong-spf- 
01.200406 said:
| domain-spec  = domain-name / macro-string
| domain-name  = domain-part *( "." domain-part ) [ "." ]
| domain-part  = as defined in [RFC1034]
| macro-string = *( macro-char / VCHAR )

draft-lentczner-spf-00 changed that to something odd:
| domain-spec  = *( macro-expand / macro-literal )
| macro-string = *( macro-expand / macro-literal / "/" )

The Lentczner draft also introduced the "If <domain-spec> is empty" part.

draft-schlitt-spf-classic-00 changed the grammar "back" to something 
reasonable, however for the first time disallowing an empty string 
(because domain-end cannot be empty) without dropping the "If <domain- 
spec> is empty" part in the "exp=" definition:
| domain-spec  = macro-string domain-end
| domain-end   = ( "." toplabel ) / macro-expand
| toplabel     = ALPHA / ALPHA *[ alphanum / "-" ] alphanum
|                ; LDH rule (See [RFC3696])
| macro-string = *( macro-expand / macro-literal )

There were no further material changes after that.

Conclusion:  The "exp=" argument was never intended to be empty.

draft-mengwong-spf-00 changed that to:
| exists = 'exists' ':' domain-spec
| domain-spec  = domain-name / macro-string
| macro-string = *( macro-char / VCHAR )

thus:  'exists' ':' *( macro-char / VCHAR )
is valid.

Conclusion: draft-mengwong-spf-00 allowed an empty domain-spec.
So did draft-lentczner-spf-00 and draft-mengwong-spf.02.9.4
Only draft-schlitt-spf-classic-00 seems to have the discrepancy.

I am not saying draft-mengwong-spf-00 is gospel which we should follow. I
am saying your argumentation is flawed.

Alex

-------
Sender Policy Framework: http://www.openspf.org/
Archives at http://archives.listbox.com/spf-discuss/current/
To unsubscribe, change your address, or temporarily deactivate your 
subscription, 
please go to http://v2.listbox.com/member/?list_id=735