Skip to content

Commit 384b1ec

Browse files
authored
Add support for BIMI (#11)
1 parent 9023c2c commit 384b1ec

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

check/spam.go

+39
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ type SpamData struct {
2020
IP string
2121
Dmarc []dns.RR
2222
Spf []dns.RR
23+
BIMI []dns.RR
2324
Error string
2425
}
2526

@@ -35,6 +36,7 @@ func NewSpam(s *scan.Scan, ns []structs.NSData) *SpamCheck {
3536
func (c *SpamCheck) Scan(domain string) {
3637
c.ScanDmarc(domain)
3738
c.ScanSpf(domain)
39+
c.ScanBIMI(domain)
3840
}
3941

4042
func (c *SpamCheck) ScanDmarc(domain string) {
@@ -54,6 +56,23 @@ func (c *SpamCheck) ScanDmarc(domain string) {
5456
}
5557
}
5658

59+
func (c *SpamCheck) ScanBIMI(domain string) {
60+
log.Debugf("Spam: scanbimi")
61+
defer log.Debugf("Spam: scanbimi exit")
62+
63+
for _, ns := range c.NS {
64+
for _, nsip := range ns.IP {
65+
data := SpamData{Name: ns.Name, IP: nsip.String()}
66+
67+
bimi, _, err := scan.QueryRRset("default._bimi."+domain, dns.TypeTXT, nsip.String(), true)
68+
if !c.Report.scanError("BIMI scan", ns.Name, nsip.String(), domain, bimi, err) {
69+
data.BIMI = bimi
70+
c.Spam = append(c.Spam, data)
71+
}
72+
}
73+
}
74+
}
75+
5776
func (c *SpamCheck) ScanSpf(domain string) {
5877
log.Debugf("Spam: scanspf")
5978
defer log.Debugf("Spam: scanspf exit")
@@ -182,6 +201,26 @@ func (c *SpamCheck) Values() []ReportResult {
182201
}
183202
}
184203

204+
rrset = nil
205+
for _, ns := range c.Spam {
206+
if ns.BIMI != nil {
207+
rrset = ns.BIMI
208+
break
209+
}
210+
}
211+
212+
if len(rrset) > 0 {
213+
records := []string{}
214+
for _, rr := range rrset {
215+
records = append(records, rr.String())
216+
}
217+
218+
results = append(results, ReportResult{
219+
Result: "INFO: BIMI records found.",
220+
Status: true, Records: records, Name: "BIMI",
221+
})
222+
}
223+
185224
// TODO
186225
// dmarc: p=none recommendation?
187226
// spf: further recommendations ?

0 commit comments

Comments
 (0)