Subject: Re: [spfbis] Question about SPF checks based on RFC 7208

From: "Frank Bulk" <[email-masked]>
Date: Thu, 23 Jun 2016 12:19:14 -0500

I'm looping back into the conversation again because we've had two different
ag-business customers get bitten by this in the last two days, trying to
send emails (via IPv6) to the USDA who apparently uses an SPF implementation
that checks for the MX record's AAAAs and fails on too many void lookups.
The workaround, in both cases, has been for us to move 'mx' to end of the
ag-business' SPF record.

Scott's suggestion that the RFC clarify that that an mx mechanism is only
void if neither A nor AAAA exist is a good one -- would we also need to
state that those void lookups don't count against the maximum of 10 DNS
lookups?

I'm not an RFC writer, but I'd be happy to review any new one or erratum.

Kind regards,

Frank

-----Original Message-----
From: S Moonesamy [mailto:[email-masked]] 
Sent: Monday, May 02, 2016 2:59 AM
To: Frank Bulk <[email-masked]>; [email-masked]
Subject: Re: [spfbis] Question about SPF checks based on RFC 7208

Hi Frank,
At 17:45 30-04-2016, Frank Bulk wrote:
>While working through a SPF failure for a message sent from our
IPv6-capable
>email server (for premieronline.net), I ran an across an SPF checker
>(http://vamsoft.com/support/tools/spf-policy-tester) that had a hard fail
>when these values were entered:
>         2607:fe28:0:4000::20
>         [email-masked]
>
>premieronline.net's record is as follow:
>         v=spf1 mx ip4:96.31.0.0/24 ip6:2607:fe28:0:1000::/64
>ip6:2607:fe28:0:4000::/64 ~all
>
>The tool tries to work through the MX records of premieronline.net, but for
>some reason it specifically queries for an AAAA for each MX record, of
which
>we don't have one (because our inbound email gateway does not yet support
>IPv6).  Since we have four MX records, it work through two of them (which
>both fail) and then the tool hard fails saying that,
>         "The maximum void DNS lookup limit of 2 has been exceeded during
the
>evaluation (see RFC7208 Section 4.6.4.)."

There is the following in Section 5 of RFC 7208:

   'When any mechanism fetches host addresses to compare with <ip>, when
    <ip> is an IPv4, "A" records are fetched; when <ip> is an IPv6
    address, "AAAA" records are fetched.  SPF implementations on IPv6
    servers need to handle both "AAAA" and "A" records, for clients on
    IPv4-mapped IPv6 addresses [RFC4291].  IPv4 <ip> addresses are only
    listed in an SPF record using the "ip4" mechanism.'

It does not make sense to query for an "A" record when the client 
address is an IPv6 address.  The issue in your case is that your 
outbound is over IPv6 while you do not have inbound IPv6.  I took a 
quick look and I did not find a discussion about that in relation to 
the void DNS lookup limit in the mailing list archive.

>This is the only SPF tool to fail in this way, which makes we wonder if
it's
>the site's SPF checking methodology for RFC 7208 section 5.4 is correct.
If
>so, and other email gateways have implemented their SPF checking in the
same
>way, there could be more incorrect SPF evaluation checks out there.  If the
>site's SPF checking methodology is incorrect, can you point me to a section
>in any RFC that would suggest a better/proper approach?

I didn't find any text in the RFC about a better or proper approach.

>Either way, does RFC 7208 need some clarification on this matter?  My guess
>is that "it performs an address lookup on each MX name" is not equivalent
to
>"check for an AAAA on each MX name and check for an A on each MX name", but
>I'm not sure.

Your question is about whether there is a "bug" in the technical 
specification.  The second sentence is about how to get around a 
"void DNS lookup".  At the moment I am not sure about what would be 
the appropriate answer.

Regards,
S. Moonesamy

---

From: S Moonesamy <[email-masked]>
Date: Fri, 24 Jun 2016 11:12:30 -0700

Hi Frank,
>The workaround, in both cases, has been for us to move 'mx' to end of the

I'll look into this in the next few weeks.

Regards,
S. Moonesamy