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,
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 {
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)

View File

@ -40,5 +40,9 @@ type DMARC struct {
}
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
import ()
import (
"strings"
)
type SPFDirective struct {
Qualifier byte
@ -56,5 +58,9 @@ type SPF struct {
}
func (t *SPF) String() string {
return t.Content
var ret = t.Content
if !strings.HasPrefix(ret, "v=spf1") {
ret = "v=spf1 " + ret
}
return ret
}