2023-12-12 17:47:26 +03:00
|
|
|
package dnsbl_test
|
|
|
|
|
|
|
|
import (
|
|
|
|
"context"
|
|
|
|
"log"
|
2024-02-08 16:49:01 +03:00
|
|
|
"log/slog"
|
2023-12-12 17:47:26 +03:00
|
|
|
"net"
|
|
|
|
|
|
|
|
"github.com/mjl-/mox/dns"
|
|
|
|
"github.com/mjl-/mox/dnsbl"
|
|
|
|
)
|
|
|
|
|
|
|
|
func ExampleLookup() {
|
|
|
|
ctx := context.Background()
|
|
|
|
resolver := dns.StrictResolver{}
|
|
|
|
|
|
|
|
// Lookup if ip 127.0.0.2 is in spamhaus blocklist at zone sbl.spamhaus.org.
|
|
|
|
status, explanation, err := dnsbl.Lookup(ctx, slog.Default(), resolver, dns.Domain{ASCII: "sbl.spamhaus.org"}, net.ParseIP("127.0.0.2"))
|
|
|
|
if err != nil {
|
|
|
|
log.Fatalf("dnsbl lookup: %v", err)
|
|
|
|
}
|
|
|
|
switch status {
|
|
|
|
case dnsbl.StatusTemperr:
|
|
|
|
log.Printf("dnsbl lookup, temporary dns error: %v", err)
|
|
|
|
case dnsbl.StatusPass:
|
|
|
|
log.Printf("dnsbl lookup, ip not listed")
|
|
|
|
case dnsbl.StatusFail:
|
|
|
|
log.Printf("dnsbl lookup, ip listed: %s", explanation)
|
|
|
|
}
|
|
|
|
}
|