author | Alberto Bertogli
<albertito@blitiri.com.ar> 2025-04-11 12:00:30 UTC |
committer | Alberto Bertogli
<albertito@blitiri.com.ar> 2025-04-11 13:17:17 UTC |
parent | 9524d307eb481d7169f48e071bdc02124fca9c37 |
test/t-14-tls_tracking/zones | +2 | -2 |
test/t-16-spf/zones.t0 | +2 | -2 |
test/t-16-spf/zones.t1 | +2 | -2 |
test/util/minidns/minidns.go | +15 | -4 |
diff --git a/test/t-14-tls_tracking/zones b/test/t-14-tls_tracking/zones index 76711dc..0e515d4 100644 --- a/test/t-14-tls_tracking/zones +++ b/test/t-14-tls_tracking/zones @@ -1,11 +1,11 @@ # srv-a zone srv-a A 127.0.0.1 srv-a AAAA ::1 -srv-a MX srv-a +srv-a MX 10 srv-a srv-a TXT v=spf1 a # srv-b zone srv-b A 127.0.0.1 srv-b AAAA ::1 -srv-b MX srv-b +srv-b MX 10 srv-b srv-b TXT v=spf1 a diff --git a/test/t-16-spf/zones.t0 b/test/t-16-spf/zones.t0 index 76711dc..0e515d4 100644 --- a/test/t-16-spf/zones.t0 +++ b/test/t-16-spf/zones.t0 @@ -1,11 +1,11 @@ # srv-a zone srv-a A 127.0.0.1 srv-a AAAA ::1 -srv-a MX srv-a +srv-a MX 10 srv-a srv-a TXT v=spf1 a # srv-b zone srv-b A 127.0.0.1 srv-b AAAA ::1 -srv-b MX srv-b +srv-b MX 10 srv-b srv-b TXT v=spf1 a diff --git a/test/t-16-spf/zones.t1 b/test/t-16-spf/zones.t1 index 5f18ca9..bb61daa 100644 --- a/test/t-16-spf/zones.t1 +++ b/test/t-16-spf/zones.t1 @@ -3,11 +3,11 @@ # srv-a zone srv-a A 127.0.0.1 srv-a AAAA ::1 -srv-a MX srv-a +srv-a MX 10 srv-a srv-a TXT v=spf1 -all # srv-b zone srv-b A 127.0.0.1 srv-b AAAA ::1 -srv-b MX srv-b +srv-b MX 10 srv-b srv-b TXT v=spf1 a diff --git a/test/util/minidns/minidns.go b/test/util/minidns/minidns.go index 0205c54..4c625ba 100644 --- a/test/util/minidns/minidns.go +++ b/test/util/minidns/minidns.go @@ -10,7 +10,7 @@ // For example: // // blah A 1.2.3.4 -// blah MX mx1 +// blah MX 10 mx1 // // Supported types: A, AAAA, MX, TXT. // @@ -26,6 +26,7 @@ import ( "net" "os" "regexp" + "strconv" "strings" "sync" @@ -280,13 +281,23 @@ func (m *miniDNS) loadZones(f *os.File) { body = aaaa case "mx": qType = dnsmessage.TypeMX - if !strings.HasPrefix(value, ".") { + if !strings.HasSuffix(value, ".") { value += "." } + // MX records value are in the form of "<preference> <host>". + prefS, host, ok := strings.Cut(value, " ") + if !ok { + log.Fatalf("line %d: invalid MX value %q", lineno, value) + } + pref, err := strconv.ParseUint(prefS, 10, 16) + if err != nil { + log.Fatalf("line %d: invalid MX preference %q", lineno, prefS) + } + body = &dnsmessage.MXResource{ - Pref: 10, - MX: dnsmessage.MustNewName(value), + Pref: uint16(pref), + MX: dnsmessage.MustNewName(host), } case "txt": qType = dnsmessage.TypeTXT