DMARC/SPF: auto-add version info

This commit is contained in:
nemunaire 2021-01-22 15:52:29 +01:00
parent 97dbac5c2d
commit 95c36568d4
3 changed files with 15 additions and 5 deletions

View file

@ -137,7 +137,7 @@ func (s *EMail) GenRRs(domain string, ttl uint32, origin string) (rrs []dns.RR)
Class: dns.ClassINET, Class: dns.ClassINET,
Ttl: ttl, Ttl: ttl,
}, },
Txt: utils.SplitN("v=spf1 "+s.SPF.String(), 255), Txt: utils.SplitN(s.SPF.String(), 255),
}) })
} }
@ -276,7 +276,7 @@ func email_analyze(a *svcs.Analyzer) (err error) {
} }
if txt, ok := record.(*dns.TXT); ok { if txt, ok := record.(*dns.TXT); ok {
service.DMARC.Fields = append(service.DMARC.Fields, strings.Split(strings.Join(txt.Txt, ""), ";")...) service.DMARC.Fields = append(service.DMARC.Fields, strings.Split(strings.TrimPrefix(strings.Join(txt.Txt, ""), "v=DMARC1;"), ";")...)
} }
err = a.UseRR(record, domain, service) err = a.UseRR(record, domain, service)

View file

@ -40,5 +40,9 @@ type DMARC struct {
} }
func (t *DMARC) String() string { func (t *DMARC) String() string {
return strings.Join(t.Fields, ";") var fields = t.Fields[:]
if len(t.Fields) == 0 || t.Fields[0] != "v=DMARC1" {
fields = append([]string{"v=DMARC1"}, fields...)
}
return strings.Join(fields, ";")
} }

View file

@ -31,7 +31,9 @@
package svcs package svcs
import () import (
"strings"
)
type SPFDirective struct { type SPFDirective struct {
Qualifier byte Qualifier byte
@ -56,5 +58,9 @@ type SPF struct {
} }
func (t *SPF) String() string { func (t *SPF) String() string {
return t.Content var ret = t.Content
if !strings.HasPrefix(ret, "v=spf1") {
ret = "v=spf1 " + ret
}
return ret
} }