Re: Re: Problems with spf testsuite and dns specification

Stefano Bagnara <[email protected]>
Newsgroups gmane.mail.spam.spf.devel
Message-ID <[email protected]>
Stuart D. Gathman ha scritto:
> On Sat, 16 Jun 2007, Julian Mehnle wrote:
> 
>>> The point is, a live resolver *just might* return multiple identical
>>> records.  In that case (as unlikely as it may be in practice), rfc4408
>>> says the result is PermError.  So this is a legitimate thing to test
>>> for.
>> No, it isn't.  Testing it like the test suite currently does means 
>> implicitly testing for obeyance or non-obeyance of a "should" in RFC 2181.  
>> A resolver (be it live or stub) may very well combine multiple identical 
>> records into a single one and NOT be incompliant with RFC 4408!  Or are 
>> you saying that using a DNS resolver/cache that conforms to RFC 2181 5/1 
>> makes an SPF implementation _incompliant_ with RFC 4408?
>>
>>> The more unlikely, the more important to test for it.
>> This has nothing to do with probabilities.  Both combining and not 
>> combining multiple identical records is legal according to RFC 2181.
> 
> That is irrelevant.  What is relevant is that if you see multiple
> records, whether identical or not, the 4408 result is PermError.
> That 4408 compliance is what we are testing for.  The 2181 behaviour
> makes testing trickier when using live DNS, but otherwise is
> unrelated.

But rfc2181 let anyone working with DNS RRs to compact identical
records. So if I compact them just before applying SPF rules then I will
process the record instead of returning the PermError.

>> But it is obviously relative to RFC 2181 5/1.  _Why_ can a stub resolver 
>> (or test suite driver) not conform to RFC 2181 5/1?  I don't see this 
>> written anywhere.  Why would using a combining _live_ resolver be legal, 
>> whereas using a combining _stub_ resolver would not?
> 
> They are both legal.  But 4408 says that when your stub/resolver 
> gives you multiple identical records, the result is PermError.
> The test suite tests for that very nicely in the case of a stub.
> Live DNS is more difficult to test for this case due to 2181 5/1.

As Julien already told, rfc2181 does IMO apply also to stup
implementations of a DNS resolver.
Why should you use a MUST in a specification when the application of
rfc2181 5/1 invalidate at all your MUST in case of multiple identical
records depending on the transport/implementation choices?
Your MUST will only work when no layer accepted to follow a SHOULD in
the dns specification.

Btw, I think I explained well enough the problem. I hope the SPF council
will analyze this and will report an official decision.

> This is a testing problem, NOT a "what does the standard say" problem.
> The reason to allow both results is not because the standard is
> unclear, but because it is too difficult in practice to do the
> test properly with live DNS.  Live DNS testing is valuable because it
> tests more of the whole system, so making some accomodations for it
> is reasonable.  Also, we promised to also support live DNS in the test
> suite goals.

In rfc2181 there is not "Live" concept, so I don't understand why you
keep referring "Live DNS testing".
Again, IMO the problem with the specification is that it requires a
behaviour that is unknown when you publish the duplicated records.
If you publish multiple different records every compliant implementation
will return PermError indipendently from the DNS implementations in the
chain, if you publish a single record every compliant implementation
will analyze the rule, if you publish multiple identical records you
don't know what a compliant implementation will return because you CAN'T
know what dns resolver/caches/server you have there.

It does not make sense at all: if you are simply telling that what is
wrote in the 4408 is like something said by God and cannot be wrong,
then ok, we can skip this discussion at all, otherwise it should be
considered that the rfc4408 may be inappropriate about this OR the
multiple result must be accepted because of rfc2181 5/1.

The intent of rfc2181 is to have multiple identical records to behave as
a single record. If you implement a specification on top of DNS you
cannot change the intents of the underlying transport and so IMO
considering multiple identical RRs as a single one is perfectly VALID
for rfc4408 because it is built on top of rfc2181 and we simply SHOULD
do that. To be strict the testsuite is simply testing that the
implementor did not follow a SHOULD in rfc2181, nothing more: it seems
to enforce a bad practice at all.

As Julian told the test should be changed to show multiple different
records.

Your explanation did not convice me at all: is like I'm building a
specification that uses TCP/IP as a transport and I add a requirement in
my specification to be followed when IP packet retransmission happens.
Packet retransmission should be hidden inside TCP/IP and protocols build
on top of it do never require different behaviour depending on something
that only belongs to TCP/IP. Whether identical RRs SHOULD be considered
as a single RRs and SHOULD be compacted it already clearly stated in
rfc2181, so anything different in rfc4408 is simply invalid.

Please read again rfc2181 5:
"It is meaningless for two records to ever have label, class, type and
 data all equal"

It is MEANINGLESS means that you cannot add meaning to the existence of
multiple identical records. I'm sure rfc4408 does not suggest to ignore
the dns specification.

Stefano

-------------------------------------------
-----------------------------------------------------------------------
To unsubscribe, change your address, or temporarily deactivate your
subscription,
please go to http://v2.listbox.com/member/?member_id=6959932&user_secret=62b4c45f
Powered by Listbox: http://www.listbox.com
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.