From f77f202b6544cb19c0b7e37634e44a8ebcf2df11 Mon Sep 17 00:00:00 2001 From: Kieran Jacobsen Date: Thu, 3 May 2018 22:54:19 +1000 Subject: [PATCH] Add support for "exists" element in SPF. (#356) * Include support for "exists" element in SPF. * Add exists: SPF entry to test support --- pkg/spflib/parse.go | 2 ++ pkg/spflib/parse_test.go | 1 + 2 files changed, 3 insertions(+) diff --git a/pkg/spflib/parse.go b/pkg/spflib/parse.go index c6441e8be..2f42ad98f 100644 --- a/pkg/spflib/parse.go +++ b/pkg/spflib/parse.go @@ -79,6 +79,8 @@ func Parse(text string, dnsres Resolver) (*SPFRecord, error) { return nil, errors.Errorf("In included spf: %s", err) } } + } else if strings.HasPrefix(part, "exists:") { + p.IsLookup = true } else { return nil, errors.Errorf("Unsupported spf part %s", part) } diff --git a/pkg/spflib/parse_test.go b/pkg/spflib/parse_test.go index 53a07f9b7..3dee50ea1 100644 --- a/pkg/spflib/parse_test.go +++ b/pkg/spflib/parse_test.go @@ -20,6 +20,7 @@ func TestParse(t *testing.T) { "include:servers.mcsv.net", "include:sendgrid.net", "include:spf.mtasv.net", + "exists:%{i}._spf.sparkpostmail.com", "~all"}, " "), dnsres) if err != nil { t.Fatal(err)