I: pbuilder: network access will be disabled during build
I: Current time: Sun Feb 22 21:50:58 -12 2026
I: pbuilder-time-stamp: 1771840258
I: Building the build Environment
I: extracting base tarball [/var/cache/pbuilder/unstable-reproducible-base.tgz]
I: copying local configuration
W: --override-config is not set; not updating apt.conf Read the manpage for details.
I: mounting /proc filesystem
I: mounting /sys filesystem
I: creating /{dev,run}/shm
I: mounting /dev/pts filesystem
I: redirecting /dev/ptmx to /dev/pts/ptmx
I: policy-rc.d already exists
I: Copying source file
I: copying [golang-blitiri-go-spf_1.5.1-1.dsc]
I: copying [./golang-blitiri-go-spf_1.5.1.orig.tar.gz]
I: copying [./golang-blitiri-go-spf_1.5.1-1.debian.tar.xz]
I: Extracting source
dpkg-source: warning: cannot verify inline signature for ./golang-blitiri-go-spf_1.5.1-1.dsc: unsupported subcommand
dpkg-source: info: extracting golang-blitiri-go-spf in golang-blitiri-go-spf-1.5.1
dpkg-source: info: unpacking golang-blitiri-go-spf_1.5.1.orig.tar.gz
dpkg-source: info: unpacking golang-blitiri-go-spf_1.5.1-1.debian.tar.xz
I: Not using root during the build.
I: Installing the build-deps
I: user script /srv/workspace/pbuilder/3314642/tmp/hooks/D02_print_environment starting
I: set
  BUILDDIR='/build/reproducible-path'
  BUILDUSERGECOS='first user,first room,first work-phone,first home-phone,first other'
  BUILDUSERNAME='pbuilder1'
  BUILD_ARCH='arm64'
  DEBIAN_FRONTEND='noninteractive'
  DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=12 '
  DISTRIBUTION='unstable'
  HOME='/root'
  HOST_ARCH='arm64'
  IFS=' 	
  '
  INVOCATION_ID='b7fcb6b30e224b8ea0501173408ebe94'
  LANG='C'
  LANGUAGE='en_US:en'
  LC_ALL='C'
  MAIL='/var/mail/root'
  OPTIND='1'
  PATH='/usr/sbin:/usr/bin:/sbin:/bin:/usr/games'
  PBCURRENTCOMMANDLINEOPERATION='build'
  PBUILDER_OPERATION='build'
  PBUILDER_PKGDATADIR='/usr/share/pbuilder'
  PBUILDER_PKGLIBDIR='/usr/lib/pbuilder'
  PBUILDER_SYSCONFDIR='/etc'
  PPID='3314642'
  PS1='# '
  PS2='> '
  PS4='+ '
  PWD='/'
  SHELL='/bin/bash'
  SHLVL='2'
  SUDO_COMMAND='/usr/bin/timeout -k 18.1h 18h /usr/bin/ionice -c 3 /usr/bin/nice /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.t6XnKn3S/pbuilderrc_Z6S5 --distribution unstable --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/unstable-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.t6XnKn3S/b1 --logfile b1/build.log golang-blitiri-go-spf_1.5.1-1.dsc'
  SUDO_GID='109'
  SUDO_UID='104'
  SUDO_USER='jenkins'
  TERM='unknown'
  TZ='/usr/share/zoneinfo/Etc/GMT+12'
  USER='root'
  _='/usr/bin/systemd-run'
  http_proxy='http://192.168.101.4:3128'
I: uname -a
  Linux codethink03-arm64 6.1.0-30-cloud-arm64 #1 SMP Debian 6.1.124-1 (2025-01-12) aarch64 GNU/Linux
I: ls -l /bin
  lrwxrwxrwx 1 root root 7 Nov 22  2024 /bin -> usr/bin
I: user script /srv/workspace/pbuilder/3314642/tmp/hooks/D02_print_environment finished
 -> Attempting to satisfy build-dependencies
 -> Creating pbuilder-satisfydepends-dummy package
Package: pbuilder-satisfydepends-dummy
Version: 0.invalid.0
Architecture: arm64
Maintainer: Debian Pbuilder Team <pbuilder-maint@lists.alioth.debian.org>
Description: Dummy package to satisfy dependencies with aptitude - created by pbuilder
 This package was created automatically by pbuilder to satisfy the
 build-dependencies of the package being currently built.
Depends: debhelper-compat (= 13), dh-golang, golang-any, golang-gopkg-yaml.v3-dev
dpkg-deb: building package 'pbuilder-satisfydepends-dummy' in '/tmp/satisfydepends-aptitude/pbuilder-satisfydepends-dummy.deb'.
Selecting previously unselected package pbuilder-satisfydepends-dummy.
(Reading database ... 19965 files and directories currently installed.)
Preparing to unpack .../pbuilder-satisfydepends-dummy.deb ...
Unpacking pbuilder-satisfydepends-dummy (0.invalid.0) ...
dpkg: pbuilder-satisfydepends-dummy: dependency problems, but configuring anyway as you requested:
 pbuilder-satisfydepends-dummy depends on debhelper-compat (= 13); however:
  Package debhelper-compat is not installed.
 pbuilder-satisfydepends-dummy depends on dh-golang; however:
  Package dh-golang is not installed.
 pbuilder-satisfydepends-dummy depends on golang-any; however:
  Package golang-any is not installed.
 pbuilder-satisfydepends-dummy depends on golang-gopkg-yaml.v3-dev; however:
  Package golang-gopkg-yaml.v3-dev is not installed.

Setting up pbuilder-satisfydepends-dummy (0.invalid.0) ...
Reading package lists...
Building dependency tree...
Reading state information...
Initializing package states...
Writing extended state information...
Building tag database...
pbuilder-satisfydepends-dummy is already installed at the requested version (0.invalid.0)
pbuilder-satisfydepends-dummy is already installed at the requested version (0.invalid.0)
The following NEW packages will be installed:
  autoconf{a} automake{a} autopoint{a} autotools-dev{a} bsdextrautils{a} debhelper{a} dh-autoreconf{a} dh-golang{a} dh-strip-nondeterminism{a} dwz{a} file{a} gettext{a} gettext-base{a} golang-1.23-go{a} golang-1.23-src{a} golang-any{a} golang-go{a} golang-gopkg-yaml.v3-dev{a} golang-src{a} groff-base{a} intltool-debian{a} libarchive-zip-perl{a} libdebhelper-perl{a} libelf1t64{a} libfile-stripnondeterminism-perl{a} libicu72{a} libmagic-mgc{a} libmagic1t64{a} libpipeline1{a} libtool{a} libuchardet0{a} libunistring5{a} libxml2{a} m4{a} man-db{a} po-debconf{a} sensible-utils{a} 
The following packages are RECOMMENDED but will NOT be installed:
  curl libarchive-cpio-perl libltdl-dev libmail-sendmail-perl lynx pkgconf wget 
0 packages upgraded, 37 newly installed, 0 to remove and 0 not upgraded.
Need to get 62.8 MB of archives. After unpacking 320 MB will be used.
Writing extended state information...
Get: 1 http://deb.debian.org/debian unstable/main arm64 sensible-utils all 0.0.24 [24.8 kB]
Get: 2 http://deb.debian.org/debian unstable/main arm64 libmagic-mgc arm64 1:5.45-3+b1 [314 kB]
Get: 3 http://deb.debian.org/debian unstable/main arm64 libmagic1t64 arm64 1:5.45-3+b1 [102 kB]
Get: 4 http://deb.debian.org/debian unstable/main arm64 file arm64 1:5.45-3+b1 [43.4 kB]
Get: 5 http://deb.debian.org/debian unstable/main arm64 gettext-base arm64 0.23.1-1 [241 kB]
Get: 6 http://deb.debian.org/debian unstable/main arm64 libuchardet0 arm64 0.0.8-1+b2 [69.2 kB]
Get: 7 http://deb.debian.org/debian unstable/main arm64 groff-base arm64 1.23.0-7 [1129 kB]
Get: 8 http://deb.debian.org/debian unstable/main arm64 bsdextrautils arm64 2.40.4-1 [91.6 kB]
Get: 9 http://deb.debian.org/debian unstable/main arm64 libpipeline1 arm64 1.5.8-1 [40.2 kB]
Get: 10 http://deb.debian.org/debian unstable/main arm64 man-db arm64 2.13.0-1 [1404 kB]
Get: 11 http://deb.debian.org/debian unstable/main arm64 m4 arm64 1.4.19-5 [284 kB]
Get: 12 http://deb.debian.org/debian unstable/main arm64 autoconf all 2.72-3 [493 kB]
Get: 13 http://deb.debian.org/debian unstable/main arm64 autotools-dev all 20220109.1 [51.6 kB]
Get: 14 http://deb.debian.org/debian unstable/main arm64 automake all 1:1.16.5-1.3 [823 kB]
Get: 15 http://deb.debian.org/debian unstable/main arm64 autopoint all 0.23.1-1 [770 kB]
Get: 16 http://deb.debian.org/debian unstable/main arm64 libdebhelper-perl all 13.24.1 [90.9 kB]
Get: 17 http://deb.debian.org/debian unstable/main arm64 libtool all 2.5.4-2 [539 kB]
Get: 18 http://deb.debian.org/debian unstable/main arm64 dh-autoreconf all 20 [17.1 kB]
Get: 19 http://deb.debian.org/debian unstable/main arm64 libarchive-zip-perl all 1.68-1 [104 kB]
Get: 20 http://deb.debian.org/debian unstable/main arm64 libfile-stripnondeterminism-perl all 1.14.0-1 [19.5 kB]
Get: 21 http://deb.debian.org/debian unstable/main arm64 dh-strip-nondeterminism all 1.14.0-1 [8448 B]
Get: 22 http://deb.debian.org/debian unstable/main arm64 libelf1t64 arm64 0.192-4 [189 kB]
Get: 23 http://deb.debian.org/debian unstable/main arm64 dwz arm64 0.15-1+b1 [102 kB]
Get: 24 http://deb.debian.org/debian unstable/main arm64 libunistring5 arm64 1.3-1 [449 kB]
Get: 25 http://deb.debian.org/debian unstable/main arm64 libicu72 arm64 72.1-6 [9239 kB]
Get: 26 http://deb.debian.org/debian unstable/main arm64 libxml2 arm64 2.12.7+dfsg+really2.9.14-0.2+b1 [630 kB]
Get: 27 http://deb.debian.org/debian unstable/main arm64 gettext arm64 0.23.1-1 [1610 kB]
Get: 28 http://deb.debian.org/debian unstable/main arm64 intltool-debian all 0.35.0+20060710.6 [22.9 kB]
Get: 29 http://deb.debian.org/debian unstable/main arm64 po-debconf all 1.0.21+nmu1 [248 kB]
Get: 30 http://deb.debian.org/debian unstable/main arm64 debhelper all 13.24.1 [920 kB]
Get: 31 http://deb.debian.org/debian unstable/main arm64 dh-golang all 1.62 [24.7 kB]
Get: 32 http://deb.debian.org/debian unstable/main arm64 golang-1.23-src all 1.23.5-1 [19.1 MB]
Get: 33 http://deb.debian.org/debian unstable/main arm64 golang-1.23-go arm64 1.23.5-1 [23.4 MB]
Get: 34 http://deb.debian.org/debian unstable/main arm64 golang-src all 2:1.23~2 [5088 B]
Get: 35 http://deb.debian.org/debian unstable/main arm64 golang-go arm64 2:1.23~2 [44.3 kB]
Get: 36 http://deb.debian.org/debian unstable/main arm64 golang-any arm64 2:1.23~2 [5172 B]
Get: 37 http://deb.debian.org/debian unstable/main arm64 golang-gopkg-yaml.v3-dev all 3.0.1-3 [74.3 kB]
Fetched 62.8 MB in 0s (128 MB/s)
Preconfiguring packages ...
Selecting previously unselected package sensible-utils.
(Reading database ... 
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 19965 files and directories currently installed.)
Preparing to unpack .../00-sensible-utils_0.0.24_all.deb ...
Unpacking sensible-utils (0.0.24) ...
Selecting previously unselected package libmagic-mgc.
Preparing to unpack .../01-libmagic-mgc_1%3a5.45-3+b1_arm64.deb ...
Unpacking libmagic-mgc (1:5.45-3+b1) ...
Selecting previously unselected package libmagic1t64:arm64.
Preparing to unpack .../02-libmagic1t64_1%3a5.45-3+b1_arm64.deb ...
Unpacking libmagic1t64:arm64 (1:5.45-3+b1) ...
Selecting previously unselected package file.
Preparing to unpack .../03-file_1%3a5.45-3+b1_arm64.deb ...
Unpacking file (1:5.45-3+b1) ...
Selecting previously unselected package gettext-base.
Preparing to unpack .../04-gettext-base_0.23.1-1_arm64.deb ...
Unpacking gettext-base (0.23.1-1) ...
Selecting previously unselected package libuchardet0:arm64.
Preparing to unpack .../05-libuchardet0_0.0.8-1+b2_arm64.deb ...
Unpacking libuchardet0:arm64 (0.0.8-1+b2) ...
Selecting previously unselected package groff-base.
Preparing to unpack .../06-groff-base_1.23.0-7_arm64.deb ...
Unpacking groff-base (1.23.0-7) ...
Selecting previously unselected package bsdextrautils.
Preparing to unpack .../07-bsdextrautils_2.40.4-1_arm64.deb ...
Unpacking bsdextrautils (2.40.4-1) ...
Selecting previously unselected package libpipeline1:arm64.
Preparing to unpack .../08-libpipeline1_1.5.8-1_arm64.deb ...
Unpacking libpipeline1:arm64 (1.5.8-1) ...
Selecting previously unselected package man-db.
Preparing to unpack .../09-man-db_2.13.0-1_arm64.deb ...
Unpacking man-db (2.13.0-1) ...
Selecting previously unselected package m4.
Preparing to unpack .../10-m4_1.4.19-5_arm64.deb ...
Unpacking m4 (1.4.19-5) ...
Selecting previously unselected package autoconf.
Preparing to unpack .../11-autoconf_2.72-3_all.deb ...
Unpacking autoconf (2.72-3) ...
Selecting previously unselected package autotools-dev.
Preparing to unpack .../12-autotools-dev_20220109.1_all.deb ...
Unpacking autotools-dev (20220109.1) ...
Selecting previously unselected package automake.
Preparing to unpack .../13-automake_1%3a1.16.5-1.3_all.deb ...
Unpacking automake (1:1.16.5-1.3) ...
Selecting previously unselected package autopoint.
Preparing to unpack .../14-autopoint_0.23.1-1_all.deb ...
Unpacking autopoint (0.23.1-1) ...
Selecting previously unselected package libdebhelper-perl.
Preparing to unpack .../15-libdebhelper-perl_13.24.1_all.deb ...
Unpacking libdebhelper-perl (13.24.1) ...
Selecting previously unselected package libtool.
Preparing to unpack .../16-libtool_2.5.4-2_all.deb ...
Unpacking libtool (2.5.4-2) ...
Selecting previously unselected package dh-autoreconf.
Preparing to unpack .../17-dh-autoreconf_20_all.deb ...
Unpacking dh-autoreconf (20) ...
Selecting previously unselected package libarchive-zip-perl.
Preparing to unpack .../18-libarchive-zip-perl_1.68-1_all.deb ...
Unpacking libarchive-zip-perl (1.68-1) ...
Selecting previously unselected package libfile-stripnondeterminism-perl.
Preparing to unpack .../19-libfile-stripnondeterminism-perl_1.14.0-1_all.deb ...
Unpacking libfile-stripnondeterminism-perl (1.14.0-1) ...
Selecting previously unselected package dh-strip-nondeterminism.
Preparing to unpack .../20-dh-strip-nondeterminism_1.14.0-1_all.deb ...
Unpacking dh-strip-nondeterminism (1.14.0-1) ...
Selecting previously unselected package libelf1t64:arm64.
Preparing to unpack .../21-libelf1t64_0.192-4_arm64.deb ...
Unpacking libelf1t64:arm64 (0.192-4) ...
Selecting previously unselected package dwz.
Preparing to unpack .../22-dwz_0.15-1+b1_arm64.deb ...
Unpacking dwz (0.15-1+b1) ...
Selecting previously unselected package libunistring5:arm64.
Preparing to unpack .../23-libunistring5_1.3-1_arm64.deb ...
Unpacking libunistring5:arm64 (1.3-1) ...
Selecting previously unselected package libicu72:arm64.
Preparing to unpack .../24-libicu72_72.1-6_arm64.deb ...
Unpacking libicu72:arm64 (72.1-6) ...
Selecting previously unselected package libxml2:arm64.
Preparing to unpack .../25-libxml2_2.12.7+dfsg+really2.9.14-0.2+b1_arm64.deb ...
Unpacking libxml2:arm64 (2.12.7+dfsg+really2.9.14-0.2+b1) ...
Selecting previously unselected package gettext.
Preparing to unpack .../26-gettext_0.23.1-1_arm64.deb ...
Unpacking gettext (0.23.1-1) ...
Selecting previously unselected package intltool-debian.
Preparing to unpack .../27-intltool-debian_0.35.0+20060710.6_all.deb ...
Unpacking intltool-debian (0.35.0+20060710.6) ...
Selecting previously unselected package po-debconf.
Preparing to unpack .../28-po-debconf_1.0.21+nmu1_all.deb ...
Unpacking po-debconf (1.0.21+nmu1) ...
Selecting previously unselected package debhelper.
Preparing to unpack .../29-debhelper_13.24.1_all.deb ...
Unpacking debhelper (13.24.1) ...
Selecting previously unselected package dh-golang.
Preparing to unpack .../30-dh-golang_1.62_all.deb ...
Unpacking dh-golang (1.62) ...
Selecting previously unselected package golang-1.23-src.
Preparing to unpack .../31-golang-1.23-src_1.23.5-1_all.deb ...
Unpacking golang-1.23-src (1.23.5-1) ...
Selecting previously unselected package golang-1.23-go.
Preparing to unpack .../32-golang-1.23-go_1.23.5-1_arm64.deb ...
Unpacking golang-1.23-go (1.23.5-1) ...
Selecting previously unselected package golang-src.
Preparing to unpack .../33-golang-src_2%3a1.23~2_all.deb ...
Unpacking golang-src (2:1.23~2) ...
Selecting previously unselected package golang-go:arm64.
Preparing to unpack .../34-golang-go_2%3a1.23~2_arm64.deb ...
Unpacking golang-go:arm64 (2:1.23~2) ...
Selecting previously unselected package golang-any:arm64.
Preparing to unpack .../35-golang-any_2%3a1.23~2_arm64.deb ...
Unpacking golang-any:arm64 (2:1.23~2) ...
Selecting previously unselected package golang-gopkg-yaml.v3-dev.
Preparing to unpack .../36-golang-gopkg-yaml.v3-dev_3.0.1-3_all.deb ...
Unpacking golang-gopkg-yaml.v3-dev (3.0.1-3) ...
Setting up libpipeline1:arm64 (1.5.8-1) ...
Setting up libicu72:arm64 (72.1-6) ...
Setting up bsdextrautils (2.40.4-1) ...
Setting up libmagic-mgc (1:5.45-3+b1) ...
Setting up libarchive-zip-perl (1.68-1) ...
Setting up golang-gopkg-yaml.v3-dev (3.0.1-3) ...
Setting up libdebhelper-perl (13.24.1) ...
Setting up libmagic1t64:arm64 (1:5.45-3+b1) ...
Setting up gettext-base (0.23.1-1) ...
Setting up m4 (1.4.19-5) ...
Setting up file (1:5.45-3+b1) ...
Setting up libelf1t64:arm64 (0.192-4) ...
Setting up autotools-dev (20220109.1) ...
Setting up libunistring5:arm64 (1.3-1) ...
Setting up golang-1.23-src (1.23.5-1) ...
Setting up autopoint (0.23.1-1) ...
Setting up autoconf (2.72-3) ...
Setting up dwz (0.15-1+b1) ...
Setting up sensible-utils (0.0.24) ...
Setting up libuchardet0:arm64 (0.0.8-1+b2) ...
Setting up golang-src (2:1.23~2) ...
Setting up libxml2:arm64 (2.12.7+dfsg+really2.9.14-0.2+b1) ...
Setting up automake (1:1.16.5-1.3) ...
update-alternatives: using /usr/bin/automake-1.16 to provide /usr/bin/automake (automake) in auto mode
Setting up libfile-stripnondeterminism-perl (1.14.0-1) ...
Setting up gettext (0.23.1-1) ...
Setting up libtool (2.5.4-2) ...
Setting up intltool-debian (0.35.0+20060710.6) ...
Setting up dh-autoreconf (20) ...
Setting up golang-1.23-go (1.23.5-1) ...
Setting up dh-strip-nondeterminism (1.14.0-1) ...
Setting up groff-base (1.23.0-7) ...
Setting up golang-go:arm64 (2:1.23~2) ...
Setting up po-debconf (1.0.21+nmu1) ...
Setting up man-db (2.13.0-1) ...
Not building database; man-db/auto-update is not 'true'.
Setting up golang-any:arm64 (2:1.23~2) ...
Setting up debhelper (13.24.1) ...
Setting up dh-golang (1.62) ...
Processing triggers for libc-bin (2.40-5) ...
Reading package lists...
Building dependency tree...
Reading state information...
Reading extended state information...
Initializing package states...
Writing extended state information...
Building tag database...
 -> Finished parsing the build-deps
I: Building the package
I: Running cd /build/reproducible-path/golang-blitiri-go-spf-1.5.1/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-genchanges -S  > ../golang-blitiri-go-spf_1.5.1-1_source.changes
dpkg-buildpackage: info: source package golang-blitiri-go-spf
dpkg-buildpackage: info: source version 1.5.1-1
dpkg-buildpackage: info: source distribution unstable
dpkg-buildpackage: info: source changed by Alberto Bertogli <albertito@blitiri.com.ar>
 dpkg-source --before-build .
dpkg-buildpackage: info: host architecture arm64
 debian/rules clean
dh clean --buildsystem=golang --with=golang
   dh_auto_clean -O--buildsystem=golang
   dh_autoreconf_clean -O--buildsystem=golang
   dh_clean -O--buildsystem=golang
 debian/rules binary
dh binary --buildsystem=golang --with=golang
   dh_update_autotools_config -O--buildsystem=golang
   dh_autoreconf -O--buildsystem=golang
   dh_auto_configure -O--buildsystem=golang
   dh_auto_build -O--buildsystem=golang
	cd obj-aarch64-linux-gnu && go install -trimpath -v -p 12 blitiri.com.ar/go/spf blitiri.com.ar/go/spf/internal/dnstest
internal/goexperiment
internal/coverage/rtcov
internal/unsafeheader
internal/godebugs
internal/byteorder
internal/goarch
internal/profilerecord
internal/asan
internal/cpu
internal/abi
runtime/internal/math
internal/itoa
internal/msan
internal/goos
cmp
internal/runtime/syscall
sync/atomic
runtime/internal/sys
unicode/utf8
internal/nettrace
math/bits
internal/chacha8rand
internal/race
unicode
internal/bytealg
internal/runtime/atomic
math
internal/runtime/exithook
internal/stringslite
runtime
internal/reflectlite
iter
sync
internal/weak
slices
internal/bisect
internal/testlog
internal/singleflight
errors
sort
runtime/cgo
internal/godebug
internal/oserror
path
vendor/golang.org/x/net/dns/dnsmessage
strconv
io
math/rand/v2
syscall
reflect
strings
internal/concurrent
bytes
unique
regexp/syntax
net/netip
time
internal/syscall/unix
internal/syscall/execenv
regexp
context
io/fs
internal/poll
internal/filepathlite
internal/fmtsort
os
fmt
net/url
net
blitiri.com.ar/go/spf
blitiri.com.ar/go/spf/internal/dnstest
   dh_auto_test -O--buildsystem=golang
	cd obj-aarch64-linux-gnu && go test -vet=off -v -p 12 blitiri.com.ar/go/spf blitiri.com.ar/go/spf/internal/dnstest
?   	blitiri.com.ar/go/spf/internal/dnstest	[no test files]
=== RUN   TestBasic
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record ""
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record ""
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1"
    spf.go:444: fallback to neutral
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 "
    spf.go:444: fallback to neutral
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 -"
    spf.go:437: unknown field, permerror
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 all"
    spf.go:397: all: pass
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 exp=blah +all"
    spf.go:430: exp= ignored
    spf.go:397: all: pass
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1  +all"
    spf.go:397: all: pass
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 -all "
    spf.go:397: all: fail
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 ~all"
    spf.go:397: all: softfail
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 ?all"
    spf.go:397: all: neutral
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 a ~all"
    spf.go:747: masks on "a", "domain": "domain" [<nil>, <nil>]
    spf.go:514: void lookup: nxdomain
    spf.go:397: all: softfail
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 a/24"
    spf.go:747: masks on "a/24", "domain": "domain" [/24, <nil>]
    spf.go:514: void lookup: nxdomain
    spf.go:444: fallback to neutral
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 a:d1110/24"
    spf.go:747: masks on "a:d1110/24", "domain": "d1110" [/24, <nil>]
    spf.go:768: a match: 1.1.1.1, 1.1.1.0, [/24, <nil>]
    spf.go:406: "a:d1110/24" pass, matched a
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 a:d1110/montoto"
    spf.go:747: masks on "a:d1110/montoto", "domain": "" [<nil>, <nil>]
    spf.go:406: "a:d1110/montoto" permerror, invalid mask
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 a:d1110/99"
    spf.go:747: masks on "a:d1110/99", "domain": "" [<nil>, <nil>]
    spf.go:406: "a:d1110/99" permerror, invalid mask
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 a:d1110/32"
    spf.go:747: masks on "a:d1110/32", "domain": "d1110" [/32, <nil>]
    spf.go:444: fallback to neutral
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 a:d1110"
    spf.go:747: masks on "a:d1110", "domain": "d1110" [<nil>, <nil>]
    spf.go:444: fallback to neutral
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 a:d1111"
    spf.go:747: masks on "a:d1111", "domain": "d1111" [<nil>, <nil>]
    spf.go:768: a match: 1.1.1.1, 1.1.1.1, [<nil>, <nil>]
    spf.go:406: "a:d1111" pass, matched a
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 a:nothing/24"
    spf.go:747: masks on "a:nothing/24", "domain": "nothing" [/24, <nil>]
    spf.go:514: void lookup: nxdomain
    spf.go:444: fallback to neutral
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 mx"
    spf.go:780: masks on "mx", "domain": "domain" [<nil>, <nil>]
    spf.go:514: void lookup: nxdomain
    spf.go:444: fallback to neutral
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 mx/24"
    spf.go:780: masks on "mx/24", "domain": "domain" [/24, <nil>]
    spf.go:514: void lookup: nxdomain
    spf.go:444: fallback to neutral
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 mx:a/montoto ~all"
    spf.go:780: masks on "mx:a/montoto", "domain": "" [<nil>, <nil>]
    spf.go:411: "mx:a/montoto" permerror, invalid mask
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 mx:d1110/24 ~all"
    spf.go:780: masks on "mx:d1110/24", "domain": "d1110" [/24, <nil>]
    spf.go:828: mx ips: [1.1.1.0]
    spf.go:831: mx match: 1.1.1.1, 1.1.1.0, [/24, <nil>]
    spf.go:411: "mx:d1110/24" pass, matched mx
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 mx:d1110/24//100 ~all"
    spf.go:780: masks on "mx:d1110/24//100", "domain": "d1110" [/24, /100]
    spf.go:828: mx ips: [1.1.1.0]
    spf.go:831: mx match: 1.1.1.1, 1.1.1.0, [/24, /100]
    spf.go:411: "mx:d1110/24//100" pass, matched mx
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 mx:d1110/24//129 ~all"
    spf.go:780: masks on "mx:d1110/24//129", "domain": "" [/24, <nil>]
    spf.go:411: "mx:d1110/24//129" permerror, invalid mask
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 mx:d1110/24/100 ~all"
    spf.go:780: masks on "mx:d1110/24/100", "domain": "" [<nil>, <nil>]
    spf.go:411: "mx:d1110/24/100" permerror, invalid mask
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 mx:d1110/99 ~all"
    spf.go:780: masks on "mx:d1110/99", "domain": "" [<nil>, <nil>]
    spf.go:411: "mx:d1110/99" permerror, invalid mask
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 ip4:1.2.3.4 ~all"
    spf.go:397: all: softfail
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 ip6:12 ~all"
    spf.go:416: "ip6:12" permerror, invalid ipX value
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 ip4:1.1.1.1 -all"
    spf.go:536: ip match: 1.1.1.1
    spf.go:416: "ip4:1.1.1.1" pass, matched ip
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 ip4:1.1.1.1/24 -all"
    spf.go:527: ip match: 1.1.1.0/24 contains 1.1.1.1
    spf.go:416: "ip4:1.1.1.1/24" pass, matched ip
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 ip4:1.1.1.1/lala -all"
    spf.go:416: "ip4:1.1.1.1/lala" permerror, invalid mask
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 ip4:1.1.1.1/33 -all"
    spf.go:416: "ip4:1.1.1.1/33" permerror, invalid mask
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 include:doesnotexist"
    spf.go:308: check "doesnotexist" 1 0
    spf.go:314: dns domain not found: lookup : domain not found (for testing)
    spf.go:401: "include:doesnotexist" permerror, no DNS record found
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 ptr -all"
    spf.go:591: ptr forward resolution "lalala." -> [{"1.1.1.1" ""}]
    spf.go:591: ptr forward resolution "xx.domain." -> [{"1.1.1.1" ""}]
    spf.go:591: ptr forward resolution "d1111." -> [{"1.1.1.1" ""}]
    spf.go:600: ptr evaluating "domain" in ["lalala." "xx.domain." "d1111."]
    spf.go:604: ptr match: "xx.domain."
    spf.go:421: "ptr" pass, matched ptr
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 ptr:d1111 -all"
    spf.go:591: ptr forward resolution "lalala." -> [{"1.1.1.1" ""}]
    spf.go:591: ptr forward resolution "xx.domain." -> [{"1.1.1.1" ""}]
    spf.go:591: ptr forward resolution "d1111." -> [{"1.1.1.1" ""}]
    spf.go:600: ptr evaluating "d1111" in ["lalala." "xx.domain." "d1111."]
    spf.go:604: ptr match: "d1111."
    spf.go:421: "ptr:d1111" pass, matched ptr
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 ptr:lalala -all"
    spf.go:591: ptr forward resolution "lalala." -> [{"1.1.1.1" ""}]
    spf.go:591: ptr forward resolution "xx.domain." -> [{"1.1.1.1" ""}]
    spf.go:591: ptr forward resolution "d1111." -> [{"1.1.1.1" ""}]
    spf.go:600: ptr evaluating "lalala" in ["lalala." "xx.domain." "d1111."]
    spf.go:604: ptr match: "lalala."
    spf.go:421: "ptr:lalala" pass, matched ptr
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 ptr:doesnotexist -all"
    spf.go:591: ptr forward resolution "lalala." -> [{"1.1.1.1" ""}]
    spf.go:591: ptr forward resolution "xx.domain." -> [{"1.1.1.1" ""}]
    spf.go:591: ptr forward resolution "d1111." -> [{"1.1.1.1" ""}]
    spf.go:600: ptr evaluating "doesnotexist" in ["lalala." "xx.domain." "d1111."]
    spf.go:397: all: fail
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 blah"
    spf.go:437: unknown field, permerror
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 exists:d1111 -all"
    spf.go:640: exists match: 1.1.1.1
    spf.go:426: "exists:d1111" pass, matched exists
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 redirect="
    spf.go:434: "redirect=": permerror, invalid domain
--- PASS: TestBasic (0.00s)
=== RUN   TestIPv6
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 all"
    spf.go:397: all: pass
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 a ~all"
    spf.go:747: masks on "a", "domain": "domain" [<nil>, <nil>]
    spf.go:397: all: softfail
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 a/24"
    spf.go:747: masks on "a/24", "domain": "domain" [/24, <nil>]
    spf.go:444: fallback to neutral
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 a:d6660//24"
    spf.go:747: masks on "a:d6660//24", "domain": "d6660" [<nil>, /24]
    spf.go:768: a match: 2001:db8::68, 2001:db8::, [<nil>, /24]
    spf.go:406: "a:d6660//24" pass, matched a
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 a:d6660/24//100"
    spf.go:747: masks on "a:d6660/24//100", "domain": "d6660" [/24, /100]
    spf.go:768: a match: 2001:db8::68, 2001:db8::, [/24, /100]
    spf.go:406: "a:d6660/24//100" pass, matched a
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 a:d6660"
    spf.go:747: masks on "a:d6660", "domain": "d6660" [<nil>, <nil>]
    spf.go:444: fallback to neutral
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 a:d6666"
    spf.go:747: masks on "a:d6666", "domain": "d6666" [<nil>, <nil>]
    spf.go:768: a match: 2001:db8::68, 2001:db8::68, [<nil>, <nil>]
    spf.go:406: "a:d6666" pass, matched a
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 a:nothing//24"
    spf.go:747: masks on "a:nothing//24", "domain": "nothing" [<nil>, /24]
    spf.go:514: void lookup: nxdomain
    spf.go:444: fallback to neutral
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 mx:d6660//24 ~all"
    spf.go:780: masks on "mx:d6660//24", "domain": "d6660" [<nil>, /24]
    spf.go:828: mx ips: [2001:db8::]
    spf.go:831: mx match: 2001:db8::68, 2001:db8::, [<nil>, /24]
    spf.go:411: "mx:d6660//24" pass, matched mx
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 mx:d6660/24//100 ~all"
    spf.go:780: masks on "mx:d6660/24//100", "domain": "d6660" [/24, /100]
    spf.go:828: mx ips: [2001:db8::]
    spf.go:831: mx match: 2001:db8::68, 2001:db8::, [/24, /100]
    spf.go:411: "mx:d6660/24//100" pass, matched mx
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 mx:d6660/24/100 ~all"
    spf.go:780: masks on "mx:d6660/24/100", "domain": "" [<nil>, <nil>]
    spf.go:411: "mx:d6660/24/100" permerror, invalid mask
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 ip6:2001:db8::68 ~all"
    spf.go:536: ip match: 2001:db8::68
    spf.go:416: "ip6:2001:db8::68" pass, matched ip
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 ip6:2001:db8::1/24 ~all"
    spf.go:527: ip match: 2001:d00::/24 contains 2001:db8::68
    spf.go:416: "ip6:2001:db8::1/24" pass, matched ip
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 ip6:2001:db8::1/100 ~all"
    spf.go:527: ip match: 2001:db8::/100 contains 2001:db8::68
    spf.go:416: "ip6:2001:db8::1/100" pass, matched ip
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 ptr -all"
    spf.go:591: ptr forward resolution "sonlas6." -> [{"2001:db8::68" ""}]
    spf.go:591: ptr forward resolution "domain." -> [{"1.1.1.1" ""}]
    spf.go:591: ptr forward resolution "d6666." -> [{"2001:db8::68" ""}]
    spf.go:600: ptr evaluating "domain" in ["sonlas6." "domain." "d6666."]
    spf.go:604: ptr match: "domain."
    spf.go:421: "ptr" pass, matched ptr
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 ptr:d6666 -all"
    spf.go:591: ptr forward resolution "sonlas6." -> [{"2001:db8::68" ""}]
    spf.go:591: ptr forward resolution "domain." -> [{"1.1.1.1" ""}]
    spf.go:591: ptr forward resolution "d6666." -> [{"2001:db8::68" ""}]
    spf.go:600: ptr evaluating "d6666" in ["sonlas6." "domain." "d6666."]
    spf.go:604: ptr match: "d6666."
    spf.go:421: "ptr:d6666" pass, matched ptr
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 ptr:sonlas6 -all"
    spf.go:591: ptr forward resolution "sonlas6." -> [{"2001:db8::68" ""}]
    spf.go:591: ptr forward resolution "domain." -> [{"1.1.1.1" ""}]
    spf.go:591: ptr forward resolution "d6666." -> [{"2001:db8::68" ""}]
    spf.go:600: ptr evaluating "sonlas6" in ["sonlas6." "domain." "d6666."]
    spf.go:604: ptr match: "sonlas6."
    spf.go:421: "ptr:sonlas6" pass, matched ptr
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 ptr:sonlas7 -all"
    spf.go:591: ptr forward resolution "sonlas6." -> [{"2001:db8::68" ""}]
    spf.go:591: ptr forward resolution "domain." -> [{"1.1.1.1" ""}]
    spf.go:591: ptr forward resolution "d6666." -> [{"2001:db8::68" ""}]
    spf.go:600: ptr evaluating "sonlas7" in ["sonlas6." "domain." "d6666."]
    spf.go:397: all: fail
--- PASS: TestIPv6 (0.00s)
=== RUN   TestInclude
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 include:domain2 ip4:1.1.1.1"
    spf.go:308: check "domain2" 1 0
    spf.go:330: dns record ""
    spf.go:401: "include:domain2" permerror, no DNS record found
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 include:domain2 ip4:1.1.1.1"
    spf.go:308: check "domain2" 1 0
    spf.go:330: dns record "v=spf1 all"
    spf.go:397: all: pass
    spf.go:401: "include:domain2" pass, matched all
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 include:domain2 ip4:1.1.1.1"
    spf.go:308: check "domain2" 1 0
    spf.go:330: dns record "v=spf1"
    spf.go:444: fallback to neutral
    spf.go:536: ip match: 1.1.1.1
    spf.go:416: "ip4:1.1.1.1" pass, matched ip
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 include:domain2 ip4:1.1.1.1"
    spf.go:308: check "domain2" 1 0
    spf.go:330: dns record "v=spf1 -all"
    spf.go:397: all: fail
    spf.go:536: ip match: 1.1.1.1
    spf.go:416: "ip4:1.1.1.1" pass, matched ip
--- PASS: TestInclude (0.00s)
=== RUN   TestRecursionLimit
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 include:domain ~all"
    spf.go:308: check "domain" 1 0
    spf.go:330: dns record "v=spf1 include:domain ~all"
    spf.go:308: check "domain" 2 0
    spf.go:330: dns record "v=spf1 include:domain ~all"
    spf.go:308: check "domain" 3 0
    spf.go:330: dns record "v=spf1 include:domain ~all"
    spf.go:308: check "domain" 4 0
    spf.go:330: dns record "v=spf1 include:domain ~all"
    spf.go:308: check "domain" 5 0
    spf.go:330: dns record "v=spf1 include:domain ~all"
    spf.go:308: check "domain" 6 0
    spf.go:330: dns record "v=spf1 include:domain ~all"
    spf.go:308: check "domain" 7 0
    spf.go:330: dns record "v=spf1 include:domain ~all"
    spf.go:308: check "domain" 8 0
    spf.go:330: dns record "v=spf1 include:domain ~all"
    spf.go:308: check "domain" 9 0
    spf.go:330: dns record "v=spf1 include:domain ~all"
    spf.go:308: check "domain" 10 0
    spf.go:330: dns record "v=spf1 include:domain ~all"
    spf.go:308: check "domain" 11 0
    spf.go:330: dns record "v=spf1 include:domain ~all"
    spf.go:373: lookup limit reached
    spf.go:401: "include:domain" permerror, lookup limit reached
    spf.go:401: "include:domain" permerror, lookup limit reached
    spf.go:401: "include:domain" permerror, lookup limit reached
    spf.go:401: "include:domain" permerror, lookup limit reached
    spf.go:401: "include:domain" permerror, lookup limit reached
    spf.go:401: "include:domain" permerror, lookup limit reached
    spf.go:401: "include:domain" permerror, lookup limit reached
    spf.go:401: "include:domain" permerror, lookup limit reached
    spf.go:401: "include:domain" permerror, lookup limit reached
    spf.go:401: "include:domain" permerror, lookup limit reached
    spf.go:401: "include:domain" permerror, lookup limit reached
--- PASS: TestRecursionLimit (0.00s)
=== RUN   TestRedirect
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 redirect=domain2"
    spf.go:308: check "domain2" 1 0
    spf.go:330: dns record "v=spf1 ip4:1.1.1.1 -all"
    spf.go:536: ip match: 1.1.1.1
    spf.go:416: "ip4:1.1.1.1" pass, matched ip
    spf.go:434: "redirect=domain2": pass, matched ip
--- PASS: TestRedirect (0.00s)
=== RUN   TestInvalidRedirect
    spf.go:308: check "doesnotexist" 0 0
    spf.go:314: dns domain not found: lookup : domain not found (for testing)
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 redirect=doesnotexist"
    spf.go:308: check "doesnotexist" 1 0
    spf.go:314: dns domain not found: lookup : domain not found (for testing)
    spf.go:434: "redirect=doesnotexist": permerror, no DNS record found
--- PASS: TestInvalidRedirect (0.00s)
=== RUN   TestRedirectOrder
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 redirect=faildom"
    spf.go:308: check "faildom" 1 0
    spf.go:330: dns record "v=spf1 -all"
    spf.go:397: all: fail
    spf.go:434: "redirect=faildom": fail, matched all
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 redirect=faildom all"
    spf.go:397: all: pass
--- PASS: TestRedirectOrder (0.00s)
=== RUN   TestNoRecord
    spf.go:308: check "d1" 0 0
    spf.go:330: dns record ""
    spf.go:308: check "d2" 0 0
    spf.go:330: dns record ""
    spf.go:308: check "d3" 0 0
    spf.go:314: dns domain not found: lookup : domain not found (for testing)
    spf.go:308: check "nospf" 0 0
    spf.go:314: dns domain not found: lookup : record not found for testing
--- PASS: TestNoRecord (0.00s)
=== RUN   TestDNSTemporaryErrors
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 include:tmperr"
    spf.go:308: check "tmperr" 1 0
    spf.go:318: dns temp error: lookup : temporary error for testing
    spf.go:401: "include:tmperr" temperror, lookup : temporary error for testing
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 a:tmperr"
    spf.go:747: masks on "a:tmperr", "domain": "tmperr" [<nil>, <nil>]
    spf.go:406: "a:tmperr" temperror, lookup : temporary error for testing
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 mx:tmperr"
    spf.go:780: masks on "mx:tmperr", "domain": "tmperr" [<nil>, <nil>]
    spf.go:411: "mx:tmperr" temperror, lookup : temporary error for testing
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 ptr:tmperr"
    spf.go:421: "ptr:tmperr" temperror, lookup : temporary error for testing
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 mx:tmpmx"
    spf.go:780: masks on "mx:tmpmx", "domain": "tmpmx" [<nil>, <nil>]
    spf.go:411: "mx:tmpmx" temperror, lookup : temporary error for testing
--- PASS: TestDNSTemporaryErrors (0.00s)
=== RUN   TestDNSPermanentErrors
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 include:permerr"
    spf.go:308: check "permerr" 1 0
    spf.go:327: dns perm error: lookup : permanent error for testing
    spf.go:401: "include:permerr" permerror, lookup : permanent error for testing
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 a:permerr"
    spf.go:747: masks on "a:permerr", "domain": "permerr" [<nil>, <nil>]
    spf.go:406: "a:permerr" temperror, lookup : permanent error for testing
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 mx:permerr"
    spf.go:780: masks on "mx:permerr", "domain": "permerr" [<nil>, <nil>]
    spf.go:411: "mx:permerr" temperror, lookup : permanent error for testing
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 ptr:permerr"
    spf.go:421: "ptr:permerr" temperror, lookup : permanent error for testing
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 mx:permmx"
    spf.go:780: masks on "mx:permmx", "domain": "permmx" [<nil>, <nil>]
    spf.go:411: "mx:permmx" temperror, lookup : permanent error for testing
--- PASS: TestDNSPermanentErrors (0.00s)
=== RUN   TestMXWithInvalidRecord
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 mx:dom2 -all"
    spf.go:780: masks on "mx:dom2", "domain": "dom2" [<nil>, <nil>]
    spf.go:828: mx ips: [1.1.1.1]
    spf.go:831: mx match: 1.1.1.1, 1.1.1.1, [<nil>, <nil>]
    spf.go:411: "mx:dom2" pass, matched mx
--- PASS: TestMXWithInvalidRecord (0.00s)
=== RUN   TestMacros
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 ptr:%{fff} -all"
    spf.go:923: macro "fff": []
    spf.go:421: "ptr:%{fff}" permerror, invalid macro
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 mx:%{fff} -all"
    spf.go:780: masks on "mx:%{fff}", "domain": "%{fff}" [<nil>, <nil>]
    spf.go:923: macro "fff": []
    spf.go:411: "mx:%{fff}" permerror, invalid macro
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 redirect=%{fff}"
    spf.go:923: macro "fff": []
    spf.go:434: "redirect=%{fff}": permerror, invalid macro
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 a:%{o0}"
    spf.go:747: masks on "a:%{o0}", "domain": "%{o0}" [<nil>, <nil>]
    spf.go:923: macro "o0": ["o0" "o" "0" "" ""]
    spf.go:406: "a:%{o0}" permerror, invalid macro
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 +a:sss-%{s}-sss"
    spf.go:747: masks on "a:sss-%{s}-sss", "domain": "sss-%{s}-sss" [<nil>, <nil>]
    spf.go:923: macro "s": ["s" "s" "" "" ""]
    spf.go:1020: macro expanded "sss-%{s}-sss" to "sss-user@domain-sss"
    spf.go:768: a match: 2001:db8::68, 2001:db8::68, [<nil>, <nil>]
    spf.go:406: "a:sss-%{s}-sss" pass, matched a
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 +a:ooo-%{o}-ooo"
    spf.go:747: masks on "a:ooo-%{o}-ooo", "domain": "ooo-%{o}-ooo" [<nil>, <nil>]
    spf.go:923: macro "o": ["o" "o" "" "" ""]
    spf.go:1020: macro expanded "ooo-%{o}-ooo" to "ooo-domain-ooo"
    spf.go:768: a match: 2001:db8::68, 2001:db8::68, [<nil>, <nil>]
    spf.go:406: "a:ooo-%{o}-ooo" pass, matched a
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 +a:OOO-%{O}-OOO"
    spf.go:747: masks on "a:OOO-%{O}-OOO", "domain": "OOO-%{O}-OOO" [<nil>, <nil>]
    spf.go:923: macro "O": ["O" "O" "" "" ""]
    spf.go:1020: macro expanded "OOO-%{O}-OOO" to "OOO-domain-OOO"
    spf.go:768: a match: 2001:db8::68, 2001:db8::68, [<nil>, <nil>]
    spf.go:406: "a:OOO-%{O}-OOO" pass, matched a
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 +a:ppp-%{p}-ppp"
    spf.go:747: masks on "a:ppp-%{p}-ppp", "domain": "ppp-%{p}-ppp" [<nil>, <nil>]
    spf.go:923: macro "p": ["p" "p" "" "" ""]
    spf.go:1020: macro expanded "ppp-%{p}-ppp" to "ppp-unknown-ppp"
    spf.go:768: a match: 2001:db8::68, 2001:db8::68, [<nil>, <nil>]
    spf.go:406: "a:ppp-%{p}-ppp" pass, matched a
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 +a:hhh-%{h}-hhh"
    spf.go:747: masks on "a:hhh-%{h}-hhh", "domain": "hhh-%{h}-hhh" [<nil>, <nil>]
    spf.go:923: macro "h": ["h" "h" "" "" ""]
    spf.go:1020: macro expanded "hhh-%{h}-hhh" to "hhh-helo-hhh"
    spf.go:768: a match: 2001:db8::68, 2001:db8::68, [<nil>, <nil>]
    spf.go:406: "a:hhh-%{h}-hhh" pass, matched a
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 +a:vvv-%{v}-vvv"
    spf.go:747: masks on "a:vvv-%{v}-vvv", "domain": "vvv-%{v}-vvv" [<nil>, <nil>]
    spf.go:923: macro "v": ["v" "v" "" "" ""]
    spf.go:1020: macro expanded "vvv-%{v}-vvv" to "vvv-ip6-vvv"
    spf.go:768: a match: 2001:db8::68, 2001:db8::68, [<nil>, <nil>]
    spf.go:406: "a:vvv-%{v}-vvv" pass, matched a
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 a:%{x}"
    spf.go:747: masks on "a:%{x}", "domain": "%{x}" [<nil>, <nil>]
    spf.go:923: macro "x": []
    spf.go:406: "a:%{x}" permerror, invalid macro
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 +a:ooo-%{o7}-ooo"
    spf.go:747: masks on "a:ooo-%{o7}-ooo", "domain": "ooo-%{o7}-ooo" [<nil>, <nil>]
    spf.go:923: macro "o7": ["o7" "o" "7" "" ""]
    spf.go:1020: macro expanded "ooo-%{o7}-ooo" to "ooo-domain-ooo"
    spf.go:768: a match: 2001:db8::68, 2001:db8::68, [<nil>, <nil>]
    spf.go:406: "a:ooo-%{o7}-ooo" pass, matched a
    spf.go:308: check "domain" 0 0
    spf.go:330: dns record "v=spf1 exists:%{ir}.vvv -all"
    spf.go:923: macro "ir": ["ir" "i" "" "r" ""]
    spf.go:1020: macro expanded "%{ir}.vvv" to "8.6.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.vvv"
    spf.go:640: exists match: 1.1.1.1
    spf.go:426: "exists:%{ir}.vvv" pass, matched exists
--- PASS: TestMacros (0.00s)
=== RUN   TestMacrosV4
    spf.go:308: check "domain.com" 0 0
    spf.go:330: dns record "v=spf1 +a:sr-%{sr}-sr"
    spf.go:747: masks on "a:sr-%{sr}-sr", "domain.com": "sr-%{sr}-sr" [<nil>, <nil>]
    spf.go:923: macro "sr": ["sr" "s" "" "r" ""]
    spf.go:1020: macro expanded "sr-%{sr}-sr" to "sr-com.user@domain-sr"
    spf.go:768: a match: 1.1.1.1, 1.1.1.1, [<nil>, <nil>]
    spf.go:406: "a:sr-%{sr}-sr" pass, matched a
    spf.go:308: check "domain.com" 0 0
    spf.go:330: dns record "v=spf1 +a:sra-%{sr.}-sra"
    spf.go:747: masks on "a:sra-%{sr.}-sra", "domain.com": "sra-%{sr.}-sra" [<nil>, <nil>]
    spf.go:923: macro "sr.": ["sr." "s" "" "r" "."]
    spf.go:1020: macro expanded "sra-%{sr.}-sra" to "sra-com.user@domain-sra"
    spf.go:768: a match: 1.1.1.1, 1.1.1.1, [<nil>, <nil>]
    spf.go:406: "a:sra-%{sr.}-sra" pass, matched a
    spf.go:308: check "domain.com" 0 0
    spf.go:330: dns record "v=spf1 +a:o7-%{o7}-o7"
    spf.go:747: masks on "a:o7-%{o7}-o7", "domain.com": "o7-%{o7}-o7" [<nil>, <nil>]
    spf.go:923: macro "o7": ["o7" "o" "7" "" ""]
    spf.go:1020: macro expanded "o7-%{o7}-o7" to "o7-domain.com-o7"
    spf.go:768: a match: 1.1.1.1, 1.1.1.1, [<nil>, <nil>]
    spf.go:406: "a:o7-%{o7}-o7" pass, matched a
    spf.go:308: check "domain.com" 0 0
    spf.go:330: dns record "v=spf1 +a:o1-%{o1}-o1"
    spf.go:747: masks on "a:o1-%{o1}-o1", "domain.com": "o1-%{o1}-o1" [<nil>, <nil>]
    spf.go:923: macro "o1": ["o1" "o" "1" "" ""]
    spf.go:1020: macro expanded "o1-%{o1}-o1" to "o1-com-o1"
    spf.go:768: a match: 1.1.1.1, 1.1.1.1, [<nil>, <nil>]
    spf.go:406: "a:o1-%{o1}-o1" pass, matched a
    spf.go:308: check "domain.com" 0 0
    spf.go:330: dns record "v=spf1 +a:o1r-%{o1r}-o1r"
    spf.go:747: masks on "a:o1r-%{o1r}-o1r", "domain.com": "o1r-%{o1r}-o1r" [<nil>, <nil>]
    spf.go:923: macro "o1r": ["o1r" "o" "1" "r" ""]
    spf.go:1020: macro expanded "o1r-%{o1r}-o1r" to "o1r-domain-o1r"
    spf.go:768: a match: 1.1.1.1, 1.1.1.1, [<nil>, <nil>]
    spf.go:406: "a:o1r-%{o1r}-o1r" pass, matched a
    spf.go:308: check "domain.com" 0 0
    spf.go:330: dns record "v=spf1 +a:vvv-%{v}-vvv"
    spf.go:747: masks on "a:vvv-%{v}-vvv", "domain.com": "vvv-%{v}-vvv" [<nil>, <nil>]
    spf.go:923: macro "v": ["v" "v" "" "" ""]
    spf.go:1020: macro expanded "vvv-%{v}-vvv" to "vvv-in-addr-vvv"
    spf.go:768: a match: 1.1.1.1, 1.1.1.1, [<nil>, <nil>]
    spf.go:406: "a:vvv-%{v}-vvv" pass, matched a
--- PASS: TestMacrosV4 (0.00s)
=== RUN   TestIPMatchHelper
--- PASS: TestIPMatchHelper (0.00s)
=== RUN   TestInvalidMacro
    spf.go:923: macro "x": []
    spf.go:923: macro "z": []
    spf.go:923: macro "c": ["c" "c" "" "" ""]
    spf.go:923: macro "r": ["r" "r" "" "" ""]
    spf.go:923: macro "t": ["t" "t" "" "" ""]
--- PASS: TestInvalidMacro (0.00s)
=== RUN   TestNullTrace
--- PASS: TestNullTrace (0.00s)
=== RUN   TestOverrideLookupLimit
    spf.go:308: check "domain1" 0 0
    spf.go:330: dns record "v=spf1 include:domain2"
    spf.go:308: check "domain2" 1 0
    spf.go:330: dns record "v=spf1 include:domain3"
    spf.go:308: check "domain3" 2 0
    spf.go:330: dns record "v=spf1 include:domain4"
    spf.go:308: check "domain4" 3 0
    spf.go:330: dns record "v=spf1 +all"
    spf.go:397: all: pass
    spf.go:401: "include:domain4" pass, matched all
    spf.go:401: "include:domain3" pass, matched all
    spf.go:401: "include:domain2" pass, matched all
    spf.go:308: check "domain1" 0 0
    spf.go:330: dns record "v=spf1 include:domain2"
    spf.go:308: check "domain2" 1 0
    spf.go:330: dns record "v=spf1 include:domain3"
    spf.go:308: check "domain3" 2 0
    spf.go:330: dns record "v=spf1 include:domain4"
    spf.go:308: check "domain4" 3 0
    spf.go:330: dns record "v=spf1 +all"
    spf.go:397: all: pass
    spf.go:401: "include:domain4" pass, matched all
    spf.go:401: "include:domain3" pass, matched all
    spf.go:401: "include:domain2" pass, matched all
    spf.go:308: check "domain1" 0 0
    spf.go:330: dns record "v=spf1 include:domain2"
    spf.go:308: check "domain2" 1 0
    spf.go:330: dns record "v=spf1 include:domain3"
    spf.go:308: check "domain3" 2 0
    spf.go:330: dns record "v=spf1 include:domain4"
    spf.go:308: check "domain4" 3 0
    spf.go:330: dns record "v=spf1 +all"
    spf.go:373: lookup limit reached
    spf.go:401: "include:domain4" permerror, lookup limit reached
    spf.go:401: "include:domain3" permerror, lookup limit reached
    spf.go:401: "include:domain2" permerror, lookup limit reached
--- PASS: TestOverrideLookupLimit (0.00s)
=== RUN   TestOverrideVoidLookupLimit
    spf.go:308: check "domain1" 0 0
    spf.go:330: dns record "v=spf1 exists:%{i}.one include:domain2"
    spf.go:923: macro "i": ["i" "i" "" "" ""]
    spf.go:1020: macro expanded "%{i}.one" to "1.1.1.1.one"
    spf.go:514: void lookup: nxdomain
    spf.go:308: check "domain2" 2 1
    spf.go:330: dns record "v=spf1 exists:%{i}.two include:domain3"
    spf.go:923: macro "i": ["i" "i" "" "" ""]
    spf.go:1020: macro expanded "%{i}.two" to "1.1.1.1.two"
    spf.go:514: void lookup: nxdomain
    spf.go:308: check "domain3" 4 2
    spf.go:330: dns record "v=spf1 exists:%{i}.three include:domain4"
    spf.go:923: macro "i": ["i" "i" "" "" ""]
    spf.go:1020: macro expanded "%{i}.three" to "1.1.1.1.three"
    spf.go:514: void lookup: nxdomain
    spf.go:378: void lookup limit reached
    spf.go:401: "include:domain3" permerror, void lookup limit reached
    spf.go:401: "include:domain2" permerror, void lookup limit reached
    spf.go:308: check "domain1" 0 0
    spf.go:330: dns record "v=spf1 exists:%{i}.one include:domain2"
    spf.go:923: macro "i": ["i" "i" "" "" ""]
    spf.go:1020: macro expanded "%{i}.one" to "1.1.1.1.one"
    spf.go:514: void lookup: nxdomain
    spf.go:308: check "domain2" 2 1
    spf.go:330: dns record "v=spf1 exists:%{i}.two include:domain3"
    spf.go:923: macro "i": ["i" "i" "" "" ""]
    spf.go:1020: macro expanded "%{i}.two" to "1.1.1.1.two"
    spf.go:514: void lookup: nxdomain
    spf.go:308: check "domain3" 4 2
    spf.go:330: dns record "v=spf1 exists:%{i}.three include:domain4"
    spf.go:923: macro "i": ["i" "i" "" "" ""]
    spf.go:1020: macro expanded "%{i}.three" to "1.1.1.1.three"
    spf.go:514: void lookup: nxdomain
    spf.go:308: check "domain4" 6 3
    spf.go:330: dns record "v=spf1 +all"
    spf.go:397: all: pass
    spf.go:401: "include:domain4" pass, matched all
    spf.go:401: "include:domain3" pass, matched all
    spf.go:401: "include:domain2" pass, matched all
    spf.go:308: check "domain1" 0 0
    spf.go:330: dns record "v=spf1 exists:%{i}.one include:domain2"
    spf.go:923: macro "i": ["i" "i" "" "" ""]
    spf.go:1020: macro expanded "%{i}.one" to "1.1.1.1.one"
    spf.go:514: void lookup: nxdomain
    spf.go:308: check "domain2" 2 1
    spf.go:330: dns record "v=spf1 exists:%{i}.two include:domain3"
    spf.go:923: macro "i": ["i" "i" "" "" ""]
    spf.go:1020: macro expanded "%{i}.two" to "1.1.1.1.two"
    spf.go:514: void lookup: nxdomain
    spf.go:378: void lookup limit reached
    spf.go:401: "include:domain2" permerror, void lookup limit reached
    spf.go:308: check "domain1" 0 0
    spf.go:330: dns record "v=spf1 exists:%{i}.one include:domain2"
    spf.go:923: macro "i": ["i" "i" "" "" ""]
    spf.go:1020: macro expanded "%{i}.one" to "1.1.1.1.one"
    spf.go:503: void lookup: no answers
    spf.go:308: check "domain2" 2 1
    spf.go:330: dns record "v=spf1 exists:%{i}.two include:domain3"
    spf.go:923: macro "i": ["i" "i" "" "" ""]
    spf.go:1020: macro expanded "%{i}.two" to "1.1.1.1.two"
    spf.go:503: void lookup: no answers
    spf.go:308: check "domain3" 4 2
    spf.go:330: dns record "v=spf1 exists:%{i}.three include:domain4"
    spf.go:923: macro "i": ["i" "i" "" "" ""]
    spf.go:1020: macro expanded "%{i}.three" to "1.1.1.1.three"
    spf.go:503: void lookup: no answers
    spf.go:378: void lookup limit reached
    spf.go:401: "include:domain3" permerror, void lookup limit reached
    spf.go:401: "include:domain2" permerror, void lookup limit reached
    spf.go:308: check "domain1" 0 0
    spf.go:330: dns record "v=spf1 exists:%{i}.one include:domain2"
    spf.go:923: macro "i": ["i" "i" "" "" ""]
    spf.go:1020: macro expanded "%{i}.one" to "1.1.1.1.one"
    spf.go:503: void lookup: no answers
    spf.go:308: check "domain2" 2 1
    spf.go:330: dns record "v=spf1 exists:%{i}.two include:domain3"
    spf.go:923: macro "i": ["i" "i" "" "" ""]
    spf.go:1020: macro expanded "%{i}.two" to "1.1.1.1.two"
    spf.go:503: void lookup: no answers
    spf.go:308: check "domain3" 4 2
    spf.go:330: dns record "v=spf1 exists:%{i}.three include:domain4"
    spf.go:923: macro "i": ["i" "i" "" "" ""]
    spf.go:1020: macro expanded "%{i}.three" to "1.1.1.1.three"
    spf.go:503: void lookup: no answers
    spf.go:308: check "domain4" 6 3
    spf.go:330: dns record "v=spf1 +all"
    spf.go:397: all: pass
    spf.go:401: "include:domain4" pass, matched all
    spf.go:401: "include:domain3" pass, matched all
    spf.go:401: "include:domain2" pass, matched all
    spf.go:308: check "domain1" 0 0
    spf.go:330: dns record "v=spf1 exists:%{i}.one include:domain2"
    spf.go:923: macro "i": ["i" "i" "" "" ""]
    spf.go:1020: macro expanded "%{i}.one" to "1.1.1.1.one"
    spf.go:503: void lookup: no answers
    spf.go:308: check "domain2" 2 1
    spf.go:330: dns record "v=spf1 exists:%{i}.two include:domain3"
    spf.go:923: macro "i": ["i" "i" "" "" ""]
    spf.go:1020: macro expanded "%{i}.two" to "1.1.1.1.two"
    spf.go:503: void lookup: no answers
    spf.go:378: void lookup limit reached
    spf.go:401: "include:domain2" permerror, void lookup limit reached
--- PASS: TestOverrideVoidLookupLimit (0.00s)
=== RUN   TestWithContext
    spf.go:308: check "domain1" 0 0
    spf.go:330: dns record "v=spf1 include:domain2"
    spf.go:308: check "domain2" 1 0
    spf.go:330: dns record "v=spf1 +all"
    spf.go:397: all: pass
    spf.go:401: "include:domain2" pass, matched all
    spf.go:308: check "domain1" 0 0
    spf.go:327: dns perm error: context canceled
--- PASS: TestWithContext (0.00s)
=== RUN   TestWithResolver
    spf.go:308: check "domain1" 0 0
    spf.go:330: dns record "v=spf1 include:domain2"
    spf.go:308: check "domain2" 1 0
    spf.go:330: dns record "v=spf1 +all"
    spf.go:397: all: pass
    spf.go:401: "include:domain2" pass, matched all
--- PASS: TestWithResolver (0.00s)
=== RUN   TestBadResolverResponse
    spf.go:308: check "domain1" 0 0
    spf.go:330: dns record "v=spf1 a:domain1 -all"
    spf.go:747: masks on "a:domain1", "domain1": "domain1" [<nil>, <nil>]
    spf.go:397: all: fail
    spf.go:308: check "domain1" 0 0
    spf.go:330: dns record "v=spf1 a:domain1//24 -all"
    spf.go:747: masks on "a:domain1//24", "domain1": "domain1" [<nil>, /24]
    spf.go:397: all: fail
    spf.go:308: check "domain1" 0 0
    spf.go:330: dns record "v=spf1 mx:domain1 -all"
    spf.go:780: masks on "mx:domain1", "domain1": "domain1" [<nil>, <nil>]
    spf.go:828: mx ips: [<nil>]
    spf.go:397: all: fail
    spf.go:308: check "domain1" 0 0
    spf.go:330: dns record "v=spf1 mx:domain1//24 -all"
    spf.go:780: masks on "mx:domain1//24", "domain1": "domain1" [<nil>, /24]
    spf.go:828: mx ips: [<nil>]
    spf.go:397: all: fail
--- PASS: TestBadResolverResponse (0.00s)
=== RUN   TestWithTraceFunc
    spf_test.go:698: tracing check "domain1" 0 0
    spf_test.go:698: tracing dns record "v=spf1 include:domain2"
    spf_test.go:698: tracing check "domain2" 1 0
    spf_test.go:698: tracing dns record "v=spf1 +all"
    spf_test.go:698: tracing all: pass
    spf_test.go:698: tracing "include:domain2" pass, matched all
--- PASS: TestWithTraceFunc (0.00s)
=== RUN   TestOurs
    yml_test.go:162: suite: Simple successes
    yml_test.go:167:   domain example.net
    yml_test.go:169:     SPF: [v=spf1 +all]
    yml_test.go:251:   test test1
    yml_test.go:253:     checkhost 1.2.3.4 foobar@example.net
    spf.go:308: check "example.net" 0 0
    spf.go:330: dns record "v=spf1 +all"
    spf.go:397: all: pass
    yml_test.go:260:       success: pass, matched all  [test1]
    yml_test.go:251:   test test2
    yml_test.go:253:     checkhost 1.2.3.4 foobar@example.net
    spf.go:308: check "example.net" 0 0
    spf.go:330: dns record "v=spf1 +all"
    spf.go:397: all: pass
    yml_test.go:260:       success: pass, matched all  [test2]
    yml_test.go:162: suite: Simple failures
    yml_test.go:167:   domain example.net
    yml_test.go:169:     SPF: [v=spf1 -all]
    yml_test.go:251:   test test1
    yml_test.go:253:     checkhost 1.2.3.4 foobar@example.net
    spf.go:308: check "example.net" 0 0
    spf.go:330: dns record "v=spf1 -all"
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [test1]
    yml_test.go:251:   test test2
    yml_test.go:253:     checkhost 1.2.3.4 foobar@example.net
    spf.go:308: check "example.net" 0 0
    spf.go:330: dns record "v=spf1 -all"
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [test2]
    yml_test.go:162: suite: Regexp edge cases for "a", "mx" and "ptr"
    yml_test.go:167:   domain mymx.com
    yml_test.go:169:     A: [1.2.3.4]
    yml_test.go:167:   domain expptr.net
    yml_test.go:169:     SPF: [v=spf1 exp=ptr:lalala.com ~all]
    yml_test.go:167:   domain 4.3.2.1.in-addr.arpa
    yml_test.go:169:     PTR: [ptr:lalala.com.]
    yml_test.go:167:   domain ptr:lalala.com
    yml_test.go:169:     A: [1.2.3.4]
    yml_test.go:167:   domain a1.net
    yml_test.go:169:     SPF: [v=spf1 ip6:a::a ~all]
    yml_test.go:167:   domain a2.net
    yml_test.go:169:     SPF: [v=spf1 ip6:1a0a:cccc::/29 ~all]
    yml_test.go:167:   domain expmx.net
    yml_test.go:169:     SPF: [v=spf1 exp=mx:mymx.com ~all]
    yml_test.go:169:     MX: {10 mymx.com}
    yml_test.go:251:   test ipv6-with-a
    yml_test.go:253:     checkhost a::a foobar@a1.net
    spf.go:308: check "a1.net" 0 0
    spf.go:330: dns record "v=spf1 ip6:a::a ~all"
    spf.go:536: ip match: a::a
    spf.go:416: "ip6:a::a" pass, matched ip
    yml_test.go:260:       success: pass, matched ip  [ipv6-with-a]
    yml_test.go:251:   test bad-a-mask
    yml_test.go:253:     checkhost 2001:db8:ff0:100::2 foobar@a2.net
    spf.go:308: check "a2.net" 0 0
    spf.go:330: dns record "v=spf1 ip6:1a0a:cccc::/29 ~all"
    spf.go:397: all: softfail
    yml_test.go:260:       success: softfail, matched all  [bad-a-mask]
    yml_test.go:251:   test exp-contains-mx
    yml_test.go:253:     checkhost 1.2.3.4 foobar@expmx.net
    spf.go:308: check "expmx.net" 0 0
    spf.go:330: dns record "v=spf1 exp=mx:mymx.com ~all"
    spf.go:430: exp= ignored
    spf.go:397: all: softfail
    yml_test.go:260:       success: softfail, matched all  [exp-contains-mx]
    yml_test.go:251:   test exp-contains-ptr
    yml_test.go:253:     checkhost 1.2.3.4 foobar@expptr.net
    spf.go:308: check "expptr.net" 0 0
    spf.go:330: dns record "v=spf1 exp=ptr:lalala.com ~all"
    spf.go:430: exp= ignored
    spf.go:397: all: softfail
    yml_test.go:260:       success: softfail, matched all  [exp-contains-ptr]
    yml_test.go:162: suite: Error on PTR forward resolution
    yml_test.go:167:   domain domain.net
    yml_test.go:169:     SPF: [v=spf1 ptr:lalala.com ~all]
    yml_test.go:167:   domain 4.3.2.1.in-addr.arpa
    yml_test.go:169:     PTR: [lalala.com]
    yml_test.go:167:   domain lalala.com
    yml_test.go:169:     TIMEOUT
    yml_test.go:251:   test broken-ptr-forward
    yml_test.go:253:     checkhost 1.2.3.4 foo@domain.net
    spf.go:308: check "domain.net" 0 0
    spf.go:330: dns record "v=spf1 ptr:lalala.com ~all"
    spf.go:600: ptr evaluating "lalala.com" in []
    spf.go:397: all: softfail
    yml_test.go:260:       success: softfail, matched all  [broken-ptr-forward]
    yml_test.go:162: suite: Permanent error on 'exists' resolution
    yml_test.go:167:   domain domain.net
    yml_test.go:169:     SPF: [v=spf1 exists:lalala.com ~all]
    yml_test.go:167:   domain lalala.com
    yml_test.go:169:     SERVFAIL
    yml_test.go:251:   test exists-perm-error
    yml_test.go:253:     checkhost 1.2.3.4 foo@domain.net
    spf.go:308: check "domain.net" 0 0
    spf.go:330: dns record "v=spf1 exists:lalala.com ~all"
    spf.go:426: "exists:lalala.com" temperror, lookup : test servfail error
    yml_test.go:260:       success: temperror, lookup : test servfail error  [exists-perm-error]
    yml_test.go:162: suite: Resolve H macros correctly
    yml_test.go:167:   domain domain.net
    yml_test.go:169:     SPF: [v=spf1 exists:%{h}.com ~all]
    yml_test.go:167:   domain holahola.com
    yml_test.go:169:     A: [127.0.0.2]
    yml_test.go:251:   test resolve-h-macros
    yml_test.go:253:     checkhost 1.2.3.4 foo@domain.net
    spf.go:308: check "domain.net" 0 0
    spf.go:330: dns record "v=spf1 exists:%{h}.com ~all"
    spf.go:923: macro "h": ["h" "h" "" "" ""]
    spf.go:1020: macro expanded "%{h}.com" to "holahola.com"
    spf.go:640: exists match: 127.0.0.2
    spf.go:426: "exists:%{h}.com" pass, matched exists
    yml_test.go:260:       success: pass, matched exists  [resolve-h-macros]
    yml_test.go:162: suite: Only include the first 10 PTR results
    yml_test.go:167:   domain dom01.com
    yml_test.go:169:     A: [127.0.0.1]
    yml_test.go:167:   domain dom04.com
    yml_test.go:169:     A: [127.0.0.4]
    yml_test.go:167:   domain dom07.com
    yml_test.go:169:     A: [127.0.0.7]
    yml_test.go:167:   domain dom09.com
    yml_test.go:169:     A: [127.0.0.9]
    yml_test.go:167:   domain dom10.com
    yml_test.go:169:     A: [127.0.0.10]
    yml_test.go:167:   domain 4.3.2.1.in-addr.arpa
    yml_test.go:169:     PTR: [dom01.com]
    yml_test.go:169:     PTR: [dom02.com]
    yml_test.go:169:     PTR: [dom03.com]
    yml_test.go:169:     PTR: [dom04.com]
    yml_test.go:169:     PTR: [dom05.com]
    yml_test.go:169:     PTR: [dom06.com]
    yml_test.go:169:     PTR: [dom07.com]
    yml_test.go:169:     PTR: [dom08.com]
    yml_test.go:169:     PTR: [dom09.com]
    yml_test.go:169:     PTR: [dom10.com]
    yml_test.go:169:     PTR: [domain.net]
    yml_test.go:167:   domain dom02.com
    yml_test.go:169:     A: [127.0.0.2]
    yml_test.go:167:   domain dom03.com
    yml_test.go:169:     A: [127.0.0.3]
    yml_test.go:167:   domain dom05.com
    yml_test.go:169:     A: [127.0.0.5]
    yml_test.go:167:   domain dom06.com
    yml_test.go:169:     A: [127.0.0.6]
    yml_test.go:167:   domain dom08.com
    yml_test.go:169:     A: [127.0.0.8]
    yml_test.go:167:   domain domain.net
    yml_test.go:169:     A: [127.0.0.1]
    yml_test.go:169:     SPF: [v=spf1 ptr ~all]
    yml_test.go:251:   test only-first-10-ptr
    yml_test.go:253:     checkhost 1.2.3.4 foo@domain.net
    spf.go:308: check "domain.net" 0 0
    spf.go:330: dns record "v=spf1 ptr ~all"
    spf.go:579: ptr names trimmed 11 down to 10
    spf.go:591: ptr forward resolution "dom01.com." -> [{"127.0.0.1" ""}]
    spf.go:591: ptr forward resolution "dom02.com." -> [{"127.0.0.2" ""}]
    spf.go:591: ptr forward resolution "dom03.com." -> [{"127.0.0.3" ""}]
    spf.go:591: ptr forward resolution "dom04.com." -> [{"127.0.0.4" ""}]
    spf.go:591: ptr forward resolution "dom05.com." -> [{"127.0.0.5" ""}]
    spf.go:591: ptr forward resolution "dom06.com." -> [{"127.0.0.6" ""}]
    spf.go:591: ptr forward resolution "dom07.com." -> [{"127.0.0.7" ""}]
    spf.go:591: ptr forward resolution "dom08.com." -> [{"127.0.0.8" ""}]
    spf.go:591: ptr forward resolution "dom09.com." -> [{"127.0.0.9" ""}]
    spf.go:591: ptr forward resolution "dom10.com." -> [{"127.0.0.10" ""}]
    spf.go:600: ptr evaluating "domain.net" in ["dom01.com." "dom02.com." "dom03.com." "dom04.com." "dom05.com." "dom06.com." "dom07.com." "dom08.com." "dom09.com." "dom10.com."]
    spf.go:397: all: softfail
    yml_test.go:260:       success: softfail, matched all  [only-first-10-ptr]
    yml_test.go:162: suite: Resolution limits
    yml_test.go:167:   domain d23
    yml_test.go:169:     SPF: [v=spf1 -all]
    yml_test.go:167:   domain okay.com
    yml_test.go:169:     SPF: [v=spf1 include:d11 include:d12 include:d13 include:d14 include:d15 -all]
    yml_test.go:167:   domain d11
    yml_test.go:169:     SPF: [v=spf1 include:d21 ~all]
    yml_test.go:167:   domain d13
    yml_test.go:169:     SPF: [v=spf1 include:d23 ~all]
    yml_test.go:167:   domain d14
    yml_test.go:169:     SPF: [v=spf1 include:d24 ~all]
    yml_test.go:167:   domain d15
    yml_test.go:169:     SPF: [v=spf1 include:d25 ~all]
    yml_test.go:167:   domain d22
    yml_test.go:169:     SPF: [v=spf1 -all]
    yml_test.go:167:   domain bad.com
    yml_test.go:169:     SPF: [v=spf1 include:d00 include:d11 include:d12 include:d13 include:d14 include:d15 -all]
    yml_test.go:167:   domain d00
    yml_test.go:169:     SPF: [v=spf1 -all]
    yml_test.go:167:   domain d12
    yml_test.go:169:     SPF: [v=spf1 include:d22 ~all]
    yml_test.go:167:   domain d21
    yml_test.go:169:     SPF: [v=spf1 -all]
    yml_test.go:167:   domain d24
    yml_test.go:169:     SPF: [v=spf1 -all]
    yml_test.go:167:   domain d25
    yml_test.go:169:     SPF: [v=spf1 all]
    yml_test.go:251:   test resolution-with-10-lookups
    yml_test.go:253:     checkhost 1.2.3.4 foo@okay.com
    spf.go:308: check "okay.com" 0 0
    spf.go:330: dns record "v=spf1 include:d11 include:d12 include:d13 include:d14 include:d15 -all"
    spf.go:308: check "d11" 1 0
    spf.go:330: dns record "v=spf1 include:d21 ~all"
    spf.go:308: check "d21" 2 0
    spf.go:330: dns record "v=spf1 -all"
    spf.go:397: all: fail
    spf.go:397: all: softfail
    spf.go:308: check "d12" 3 0
    spf.go:330: dns record "v=spf1 include:d22 ~all"
    spf.go:308: check "d22" 4 0
    spf.go:330: dns record "v=spf1 -all"
    spf.go:397: all: fail
    spf.go:397: all: softfail
    spf.go:308: check "d13" 5 0
    spf.go:330: dns record "v=spf1 include:d23 ~all"
    spf.go:308: check "d23" 6 0
    spf.go:330: dns record "v=spf1 -all"
    spf.go:397: all: fail
    spf.go:397: all: softfail
    spf.go:308: check "d14" 7 0
    spf.go:330: dns record "v=spf1 include:d24 ~all"
    spf.go:308: check "d24" 8 0
    spf.go:330: dns record "v=spf1 -all"
    spf.go:397: all: fail
    spf.go:397: all: softfail
    spf.go:308: check "d15" 9 0
    spf.go:330: dns record "v=spf1 include:d25 ~all"
    spf.go:308: check "d25" 10 0
    spf.go:330: dns record "v=spf1 all"
    spf.go:397: all: pass
    spf.go:401: "include:d25" pass, matched all
    spf.go:401: "include:d15" pass, matched all
    yml_test.go:260:       success: pass, matched all  [resolution-with-10-lookups]
    yml_test.go:251:   test resolution-with-11-lookups
    yml_test.go:253:     checkhost 1.2.3.4 foo@bad.com
    spf.go:308: check "bad.com" 0 0
    spf.go:330: dns record "v=spf1 include:d00 include:d11 include:d12 include:d13 include:d14 include:d15 -all"
    spf.go:308: check "d00" 1 0
    spf.go:330: dns record "v=spf1 -all"
    spf.go:397: all: fail
    spf.go:308: check "d11" 2 0
    spf.go:330: dns record "v=spf1 include:d21 ~all"
    spf.go:308: check "d21" 3 0
    spf.go:330: dns record "v=spf1 -all"
    spf.go:397: all: fail
    spf.go:397: all: softfail
    spf.go:308: check "d12" 4 0
    spf.go:330: dns record "v=spf1 include:d22 ~all"
    spf.go:308: check "d22" 5 0
    spf.go:330: dns record "v=spf1 -all"
    spf.go:397: all: fail
    spf.go:397: all: softfail
    spf.go:308: check "d13" 6 0
    spf.go:330: dns record "v=spf1 include:d23 ~all"
    spf.go:308: check "d23" 7 0
    spf.go:330: dns record "v=spf1 -all"
    spf.go:397: all: fail
    spf.go:397: all: softfail
    spf.go:308: check "d14" 8 0
    spf.go:330: dns record "v=spf1 include:d24 ~all"
    spf.go:308: check "d24" 9 0
    spf.go:330: dns record "v=spf1 -all"
    spf.go:397: all: fail
    spf.go:397: all: softfail
    spf.go:308: check "d15" 10 0
    spf.go:330: dns record "v=spf1 include:d25 ~all"
    spf.go:308: check "d25" 11 0
    spf.go:330: dns record "v=spf1 all"
    spf.go:373: lookup limit reached
    spf.go:401: "include:d25" permerror, lookup limit reached
    spf.go:401: "include:d15" permerror, lookup limit reached
    yml_test.go:260:       success: permerror, lookup limit reached  [resolution-with-11-lookups]
    yml_test.go:162: suite: MX resolution limits
    yml_test.go:167:   domain mx10
    yml_test.go:169:     SPF: [v=spf1 mx:domain mx:domain mx:domain mx:domain mx:domain mx:domain mx:domain mx:domain mx:domain mx:domain all]
    yml_test.go:167:   domain mx11
    yml_test.go:169:     SPF: [v=spf1 mx:domain mx:domain mx:domain mx:domain mx:domain mx:domain mx:domain mx:domain mx:domain mx:domain mx:domain all]
    yml_test.go:167:   domain domain
    yml_test.go:169:     MX: {1 blah1}
    yml_test.go:169:     MX: {2 blah2}
    yml_test.go:169:     MX: {3 blah3}
    yml_test.go:251:   test mx-resolution-10-terms
    yml_test.go:253:     checkhost 1.2.3.4 foo@mx10
    spf.go:308: check "mx10" 0 0
    spf.go:330: dns record "v=spf1 mx:domain mx:domain mx:domain mx:domain mx:domain mx:domain mx:domain mx:domain mx:domain mx:domain all"
    spf.go:780: masks on "mx:domain", "mx10": "domain" [<nil>, <nil>]
    spf.go:828: mx ips: []
    spf.go:780: masks on "mx:domain", "mx10": "domain" [<nil>, <nil>]
    spf.go:828: mx ips: []
    spf.go:780: masks on "mx:domain", "mx10": "domain" [<nil>, <nil>]
    spf.go:828: mx ips: []
    spf.go:780: masks on "mx:domain", "mx10": "domain" [<nil>, <nil>]
    spf.go:828: mx ips: []
    spf.go:780: masks on "mx:domain", "mx10": "domain" [<nil>, <nil>]
    spf.go:828: mx ips: []
    spf.go:780: masks on "mx:domain", "mx10": "domain" [<nil>, <nil>]
    spf.go:828: mx ips: []
    spf.go:780: masks on "mx:domain", "mx10": "domain" [<nil>, <nil>]
    spf.go:828: mx ips: []
    spf.go:780: masks on "mx:domain", "mx10": "domain" [<nil>, <nil>]
    spf.go:828: mx ips: []
    spf.go:780: masks on "mx:domain", "mx10": "domain" [<nil>, <nil>]
    spf.go:828: mx ips: []
    spf.go:780: masks on "mx:domain", "mx10": "domain" [<nil>, <nil>]
    spf.go:828: mx ips: []
    spf.go:397: all: pass
    yml_test.go:260:       success: pass, matched all  [mx-resolution-10-terms]
    yml_test.go:251:   test mx-resolution-11-terms
    yml_test.go:253:     checkhost 1.2.3.4 foo@mx11
    spf.go:308: check "mx11" 0 0
    spf.go:330: dns record "v=spf1 mx:domain mx:domain mx:domain mx:domain mx:domain mx:domain mx:domain mx:domain mx:domain mx:domain mx:domain all"
    spf.go:780: masks on "mx:domain", "mx11": "domain" [<nil>, <nil>]
    spf.go:828: mx ips: []
    spf.go:780: masks on "mx:domain", "mx11": "domain" [<nil>, <nil>]
    spf.go:828: mx ips: []
    spf.go:780: masks on "mx:domain", "mx11": "domain" [<nil>, <nil>]
    spf.go:828: mx ips: []
    spf.go:780: masks on "mx:domain", "mx11": "domain" [<nil>, <nil>]
    spf.go:828: mx ips: []
    spf.go:780: masks on "mx:domain", "mx11": "domain" [<nil>, <nil>]
    spf.go:828: mx ips: []
    spf.go:780: masks on "mx:domain", "mx11": "domain" [<nil>, <nil>]
    spf.go:828: mx ips: []
    spf.go:780: masks on "mx:domain", "mx11": "domain" [<nil>, <nil>]
    spf.go:828: mx ips: []
    spf.go:780: masks on "mx:domain", "mx11": "domain" [<nil>, <nil>]
    spf.go:828: mx ips: []
    spf.go:780: masks on "mx:domain", "mx11": "domain" [<nil>, <nil>]
    spf.go:828: mx ips: []
    spf.go:780: masks on "mx:domain", "mx11": "domain" [<nil>, <nil>]
    spf.go:828: mx ips: []
    spf.go:780: masks on "mx:domain", "mx11": "domain" [<nil>, <nil>]
    spf.go:828: mx ips: []
    spf.go:373: lookup limit reached
    yml_test.go:260:       success: permerror, lookup limit reached  [mx-resolution-11-terms]
    yml_test.go:162: suite: NXDOMAIN tests
    yml_test.go:167:   domain d03
    yml_test.go:169:     SPF: [v=spf1 redirect=doesnotexist]
    yml_test.go:167:   domain sender
    yml_test.go:169:     A: [1.2.3.4]
    yml_test.go:167:   domain d00
    yml_test.go:169:     SPF: [v=spf1 mx -all]
    yml_test.go:169:     MX: {10 doesnotexist}
    yml_test.go:169:     MX: {20 sender}
    yml_test.go:167:   domain d01
    yml_test.go:169:     SPF: [v=spf1 mx ip4:1.2.3.4 -all]
    yml_test.go:169:     MX: {10 doesnotexist}
    yml_test.go:169:     MX: {20 doesnotexist}
    yml_test.go:167:   domain d02
    yml_test.go:169:     SPF: [v=spf1 include:doesnotexist all]
    yml_test.go:251:   test one-mx-not-found
    yml_test.go:253:     checkhost 1.2.3.4 foo@d00
    spf.go:308: check "d00" 0 0
    spf.go:330: dns record "v=spf1 mx -all"
    spf.go:780: masks on "mx", "d00": "d00" [<nil>, <nil>]
    spf.go:828: mx ips: [1.2.3.4]
    spf.go:831: mx match: 1.2.3.4, 1.2.3.4, [<nil>, <nil>]
    spf.go:411: "mx" pass, matched mx
    yml_test.go:260:       success: pass, matched mx  [one-mx-not-found]
    yml_test.go:251:   test all-mx-not-found
    yml_test.go:253:     checkhost 1.2.3.4 foo@d01
    spf.go:308: check "d01" 0 0
    spf.go:330: dns record "v=spf1 mx ip4:1.2.3.4 -all"
    spf.go:780: masks on "mx", "d01": "d01" [<nil>, <nil>]
    spf.go:828: mx ips: []
    spf.go:536: ip match: 1.2.3.4
    spf.go:416: "ip4:1.2.3.4" pass, matched ip
    yml_test.go:260:       success: pass, matched ip  [all-mx-not-found]
    yml_test.go:251:   test domain-not-found
    yml_test.go:253:     checkhost 1.2.3.4 foo@doesnotexist
    spf.go:308: check "doesnotexist" 0 0
    spf.go:314: dns domain not found: lookup : domain not found (for testing)
    yml_test.go:260:       success: none, no DNS record found  [domain-not-found]
    yml_test.go:251:   test include-not-found
    yml_test.go:253:     checkhost 1.2.3.4 foo@d02
    spf.go:308: check "d02" 0 0
    spf.go:330: dns record "v=spf1 include:doesnotexist all"
    spf.go:308: check "doesnotexist" 1 0
    spf.go:314: dns domain not found: lookup : domain not found (for testing)
    spf.go:401: "include:doesnotexist" permerror, no DNS record found
    yml_test.go:260:       success: permerror, no DNS record found  [include-not-found]
    yml_test.go:251:   test redirect-not-found
    yml_test.go:253:     checkhost 1.2.3.4 foo@d03
    spf.go:308: check "d03" 0 0
    spf.go:330: dns record "v=spf1 redirect=doesnotexist"
    spf.go:308: check "doesnotexist" 1 0
    spf.go:314: dns domain not found: lookup : domain not found (for testing)
    spf.go:434: "redirect=doesnotexist": permerror, no DNS record found
    yml_test.go:260:       success: permerror, no DNS record found  [redirect-not-found]
--- PASS: TestOurs (0.00s)
=== RUN   TestRFC4408
    yml_test.go:162: suite: Initial processing
    yml_test.go:167:   domain a.example.net
    yml_test.go:169:     SPF: [v=spf1 -all exp=exp.example.net]
    yml_test.go:167:   domain exp.example.net
    yml_test.go:169:     TXT: [%{l}]
    yml_test.go:167:   domain a12345678901234567890123456789012345678901234567890123456789012.example.com
    yml_test.go:169:     SPF: [v=spf1 -all]
    yml_test.go:167:   domain hosed.example.com
    yml_test.go:169:     SPF: [v=spf1 a:garbage.example.net -all]
    yml_test.go:167:   domain hosed3.example.com
    yml_test.go:169:     SPF: [v=spf1 a:example.net –all]
    yml_test.go:167:   domain example.net
    yml_test.go:169:     SPF: [v=spf1 -all exp=exp.example.net]
    yml_test.go:167:   domain hosed2.example.com
    yml_test.go:169:     SPF: [v=spf1 €a:example.net -all]
    yml_test.go:167:   domain nothosed.example.com
    yml_test.go:169:     SPF: [v=spf1 a:example.net -all]
    yml_test.go:169:     SPF: [–]
    yml_test.go:167:   domain fine.example.com
    yml_test.go:169:     TXT: [v=spf1 a  -all]
    yml_test.go:167:   domain example.com
    yml_test.go:169:     TIMEOUT
    yml_test.go:251:   test domain-literal
    yml_test.go:253:     checkhost 1.2.3.5 foo@[1.2.3.5]
    spf.go:308: check "[1.2.3.5]" 0 0
    spf.go:314: dns domain not found: lookup : domain not found (for testing)
    yml_test.go:260:       success: none, no DNS record found  [domain-literal]
    yml_test.go:251:   test non-ascii-non-spf
    yml_test.go:253:     checkhost 1.2.3.4 foobar@nothosed.example.com
    spf.go:308: check "nothosed.example.com" 0 0
    spf.go:330: dns record "v=spf1 a:example.net -all"
    spf.go:747: masks on "a:example.net", "nothosed.example.com": "example.net" [<nil>, <nil>]
    spf.go:514: void lookup: nxdomain
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [non-ascii-non-spf]
    yml_test.go:251:   test longlabel
    yml_test.go:253:     checkhost 1.2.3.5 lyme.eater@A12345678901234567890123456789012345678901234567890123456789012.example.com
    spf.go:308: check "A12345678901234567890123456789012345678901234567890123456789012.example.com" 0 0
    spf.go:330: dns record "v=spf1 -all"
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [longlabel]
    yml_test.go:251:   test emptylabel
    yml_test.go:253:     checkhost 1.2.3.5 lyme.eater@A...example.com
    spf.go:308: check "A...example.com" 0 0
    spf.go:314: dns domain not found: lookup : domain not found (for testing)
    yml_test.go:260:       success: none, no DNS record found  [emptylabel]
    yml_test.go:251:   test helo-not-fqdn
    yml_test.go:253:     checkhost 1.2.3.5 
    spf.go:308: check "A2345678" 0 0
    spf.go:314: dns domain not found: lookup : domain not found (for testing)
    yml_test.go:260:       success: none, no DNS record found  [helo-not-fqdn]
    yml_test.go:251:   test helo-domain-literal
    yml_test.go:253:     checkhost 1.2.3.5 
    spf.go:308: check "[1.2.3.5]" 0 0
    spf.go:314: dns domain not found: lookup : domain not found (for testing)
    yml_test.go:260:       success: none, no DNS record found  [helo-domain-literal]
    yml_test.go:251:   test nolocalpart
    yml_test.go:253:     checkhost 1.2.3.4 @example.net
    spf.go:308: check "example.net" 0 0
    spf.go:330: dns record "v=spf1 -all exp=exp.example.net"
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [nolocalpart]
    yml_test.go:251:   test non-ascii-result
    yml_test.go:253:     checkhost 1.2.3.4 foobar@hosed3.example.com
    spf.go:308: check "hosed3.example.com" 0 0
    spf.go:330: dns record "v=spf1 a:example.net \u0096all"
    spf.go:747: masks on "a:example.net", "hosed3.example.com": "example.net" [<nil>, <nil>]
    spf.go:514: void lookup: nxdomain
    spf.go:437: unknown field, permerror
    yml_test.go:260:       success: permerror, unknown field  [non-ascii-result]
    yml_test.go:251:   test two-spaces
    yml_test.go:253:     checkhost 1.2.3.4 actually@fine.example.com
    spf.go:308: check "fine.example.com" 0 0
    spf.go:330: dns record "v=spf1 a  -all"
    spf.go:747: masks on "a", "fine.example.com": "fine.example.com" [<nil>, <nil>]
    spf.go:514: void lookup: nxdomain
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [two-spaces]
    yml_test.go:251:   test toolonglabel
    yml_test.go:253:     checkhost 1.2.3.5 lyme.eater@A123456789012345678901234567890123456789012345678901234567890123.example.com
    spf.go:308: check "A123456789012345678901234567890123456789012345678901234567890123.example.com" 0 0
    spf.go:314: dns domain not found: lookup : domain not found (for testing)
    yml_test.go:260:       success: none, no DNS record found  [toolonglabel]
    yml_test.go:162: suite: Record lookup
    yml_test.go:167:   domain nospftxttimeout.example.net
    yml_test.go:169:     SPF: [v=spf3 !a:yahoo.com -all]
    yml_test.go:169:     TXT: [NONE]
    yml_test.go:169:     TIMEOUT
    yml_test.go:167:   domain alltimeout.example.net
    yml_test.go:169:     TIMEOUT
    yml_test.go:167:   domain both.example.net
    yml_test.go:169:     TXT: [v=spf1 -all]
    yml_test.go:169:     SPF: [v=spf1 -all]
    yml_test.go:167:   domain txtonly.example.net
    yml_test.go:169:     TXT: [v=spf1 -all]
    yml_test.go:167:   domain spfonly.example.net
    yml_test.go:169:     SPF: [v=spf1 -all]
    yml_test.go:169:     TXT: [NONE]
    yml_test.go:167:   domain spftimeout.example.net
    yml_test.go:169:     TXT: [v=spf1 -all]
    yml_test.go:169:     TIMEOUT
    yml_test.go:167:   domain txttimeout.example.net
    yml_test.go:169:     SPF: [v=spf1 -all]
    yml_test.go:169:     TXT: [NONE]
    yml_test.go:169:     TIMEOUT
    yml_test.go:251:   test both
    yml_test.go:253:     checkhost 1.2.3.4 foo@both.example.net
    spf.go:308: check "both.example.net" 0 0
    spf.go:330: dns record "v=spf1 -all"
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [both]
    yml_test.go:251:   test txtonly
    yml_test.go:253:     checkhost 1.2.3.4 foo@txtonly.example.net
    spf.go:308: check "txtonly.example.net" 0 0
    spf.go:330: dns record "v=spf1 -all"
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [txtonly]
    yml_test.go:251:   test spfonly
    yml_test.go:253:     checkhost 1.2.3.4 foo@spfonly.example.net
    spf.go:308: check "spfonly.example.net" 0 0
    spf.go:330: dns record ""
    yml_test.go:260:       success: none, no DNS record found  [spfonly]
    yml_test.go:251:   test spftimeout
    yml_test.go:253:     checkhost 1.2.3.4 foo@spftimeout.example.net
    spf.go:308: check "spftimeout.example.net" 0 0
    spf.go:318: dns temp error: lookup : test timeout error
    yml_test.go:260:       success: temperror, lookup : test timeout error  [spftimeout]
    yml_test.go:251:   test txttimeout
    yml_test.go:253:     checkhost 1.2.3.4 foo@txttimeout.example.net
    spf.go:308: check "txttimeout.example.net" 0 0
    spf.go:318: dns temp error: lookup : test timeout error
    yml_test.go:260:       success: temperror, lookup : test timeout error  [txttimeout]
    yml_test.go:251:   test nospftxttimeout
    yml_test.go:253:     checkhost 1.2.3.4 foo@nospftxttimeout.example.net
    spf.go:308: check "nospftxttimeout.example.net" 0 0
    spf.go:318: dns temp error: lookup : test timeout error
    yml_test.go:260:       success: temperror, lookup : test timeout error  [nospftxttimeout]
    yml_test.go:251:   test alltimeout
    yml_test.go:253:     checkhost 1.2.3.4 foo@alltimeout.example.net
    spf.go:308: check "alltimeout.example.net" 0 0
    spf.go:318: dns temp error: lookup : test timeout error
    yml_test.go:260:       success: temperror, lookup : test timeout error  [alltimeout]
    yml_test.go:162: suite: Selecting records
    yml_test.go:167:   domain example5.com
    yml_test.go:169:     SPF: [v=spf1 +all]
    yml_test.go:169:     TXT: [v=spf1 -all]
    yml_test.go:169:     TXT: [v=spf1 +all]
    yml_test.go:167:   domain example7.com
    yml_test.go:169:     SPF: [v=spf1 -all]
    yml_test.go:169:     SPF: [v=spf1 -all]
    yml_test.go:167:   domain example8.com
    yml_test.go:169:     SPF: [V=spf1 -all]
    yml_test.go:169:     SPF: [v=spf1 -all]
    yml_test.go:169:     TXT: [v=spf1 +all]
    yml_test.go:167:   domain example9.com
    yml_test.go:169:     SPF: [v=SpF1 ~all]
    yml_test.go:167:   domain example4.com
    yml_test.go:169:     SPF: [v=spf1 +all]
    yml_test.go:169:     TXT: [v=spf1 -all]
    yml_test.go:167:   domain example6.com
    yml_test.go:169:     SPF: [v=spf1 -all]
    yml_test.go:169:     SPF: [V=sPf1 +all]
    yml_test.go:167:   domain example3.com
    yml_test.go:169:     SPF: [v=spf10]
    yml_test.go:169:     SPF: [v=spf1 mx]
    yml_test.go:169:     MX: {0 mail.example1.com}
    yml_test.go:167:   domain example1.com
    yml_test.go:169:     SPF: [v=spf1]
    yml_test.go:167:   domain example2.com
    yml_test.go:169:     SPF: [v=spf1 mx]
    yml_test.go:167:   domain mail.example1.com
    yml_test.go:169:     A: [1.2.3.4]
    yml_test.go:251:   test empty
    yml_test.go:253:     checkhost 1.2.3.4 foo@example1.com
    spf.go:308: check "example1.com" 0 0
    spf.go:330: dns record "v=spf1"
    spf.go:444: fallback to neutral
    yml_test.go:260:       success: neutral, <nil>  [empty]
    yml_test.go:251:   test case-insensitive
    yml_test.go:253:     checkhost 1.2.3.4 foo@example9.com
    spf.go:308: check "example9.com" 0 0
    spf.go:330: dns record "v=SpF1 ~all"
    spf.go:397: all: softfail
    yml_test.go:260:       success: softfail, matched all  [case-insensitive]
    yml_test.go:251:   test multitxt2
    yml_test.go:253:     checkhost 1.2.3.4 foo@example6.com
    spf.go:308: check "example6.com" 0 0
    spf.go:322: multiple dns records
    yml_test.go:260:       success: permerror, multiple matching DNS records  [multitxt2]
    yml_test.go:251:   test multispf1
    yml_test.go:253:     checkhost 1.2.3.4 foo@example7.com
    spf.go:308: check "example7.com" 0 0
    spf.go:322: multiple dns records
    yml_test.go:260:       success: permerror, multiple matching DNS records  [multispf1]
    yml_test.go:251:   test multispf2
    yml_test.go:253:     checkhost 1.2.3.4 foo@example8.com
    spf.go:308: check "example8.com" 0 0
    spf.go:330: dns record "v=spf1 +all"
    spf.go:397: all: pass
    yml_test.go:260:       success: pass, matched all  [multispf2]
    yml_test.go:251:   test nospf
    yml_test.go:253:     checkhost 1.2.3.4 foo@mail.example1.com
    spf.go:308: check "mail.example1.com" 0 0
    spf.go:314: dns domain not found: lookup : domain not found (for testing)
    yml_test.go:260:       success: none, no DNS record found  [nospf]
    yml_test.go:251:   test nospace1
    yml_test.go:253:     checkhost 1.2.3.4 foo@example2.com
    spf.go:308: check "example2.com" 0 0
    spf.go:330: dns record ""
    yml_test.go:260:       success: none, no DNS record found  [nospace1]
    yml_test.go:251:   test nospace2
    yml_test.go:253:     checkhost 1.2.3.4 foo@example3.com
    spf.go:308: check "example3.com" 0 0
    spf.go:330: dns record "v=spf1 mx"
    spf.go:780: masks on "mx", "example3.com": "example3.com" [<nil>, <nil>]
    spf.go:828: mx ips: [1.2.3.4]
    spf.go:831: mx match: 1.2.3.4, 1.2.3.4, [<nil>, <nil>]
    spf.go:411: "mx" pass, matched mx
    yml_test.go:260:       success: pass, matched mx  [nospace2]
    yml_test.go:251:   test spfoverride
    yml_test.go:253:     checkhost 1.2.3.4 foo@example4.com
    spf.go:308: check "example4.com" 0 0
    spf.go:330: dns record "v=spf1 -all"
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [spfoverride]
    yml_test.go:251:   test multitxt1
    yml_test.go:253:     checkhost 1.2.3.4 foo@example5.com
    spf.go:308: check "example5.com" 0 0
    spf.go:322: multiple dns records
    yml_test.go:260:       success: permerror, multiple matching DNS records  [multitxt1]
    yml_test.go:162: suite: Record evaluation
    yml_test.go:167:   domain t5.example.com
    yml_test.go:169:     SPF: [v=spf1 redirect=t5.example.com ~all]
    yml_test.go:167:   domain t7.example.com
    yml_test.go:169:     SPF: [v=spf1 ip4:1.2.3.4]
    yml_test.go:167:   domain t9.example.com
    yml_test.go:169:     SPF: [v=spf1 a:foo-bar -all]
    yml_test.go:167:   domain mail.example.com
    yml_test.go:169:     A: [1.2.3.4]
    yml_test.go:167:   domain t1.example.com
    yml_test.go:169:     SPF: [v=spf1 ip4:1.2.3.4 -all moo]
    yml_test.go:167:   domain t2.example.com
    yml_test.go:169:     SPF: [v=spf1 moo.cow-far_out=man:dog/cat ip4:1.2.3.4 -all]
    yml_test.go:167:   domain t3.example.com
    yml_test.go:169:     SPF: [v=spf1 moo.cow/far_out=man:dog/cat ip4:1.2.3.4 -all]
    yml_test.go:167:   domain t4.example.com
    yml_test.go:169:     SPF: [v=spf1 moo.cow:far_out=man:dog/cat ip4:1.2.3.4 -all]
    yml_test.go:167:   domain t6.example.com
    yml_test.go:169:     SPF: [v=spf1 ip4:1.2.3.4 redirect=t2.example.com]
    yml_test.go:167:   domain t8.example.com
    yml_test.go:169:     SPF: [v=spf1 ip4:1.2.3.4 redirect:t2.example.com]
    yml_test.go:167:   domain t10.example.com
    yml_test.go:169:     SPF: [v=spf1 a:mail.example...com -all]
    yml_test.go:167:   domain t11.example.com
    yml_test.go:169:     SPF: [v=spf1 a:a123456789012345678901234567890123456789012345678901234567890123.example.com -all]
    yml_test.go:167:   domain t12.example.com
    yml_test.go:169:     SPF: [v=spf1 a:%{H}.bar -all]
    yml_test.go:251:   test modifier-charset-bad2
    yml_test.go:253:     checkhost 1.2.3.4 foo@t4.example.com
    spf.go:308: check "t4.example.com" 0 0
    spf.go:330: dns record "v=spf1 moo.cow:far_out=man:dog/cat ip4:1.2.3.4 -all"
    spf.go:437: unknown field, permerror
    yml_test.go:260:       success: permerror, unknown field  [modifier-charset-bad2]
    yml_test.go:251:   test invalid-domain-empty-label
    yml_test.go:253:     checkhost 1.2.3.4 foo@t10.example.com
    spf.go:308: check "t10.example.com" 0 0
    spf.go:330: dns record "v=spf1 a:mail.example...com -all"
    spf.go:747: masks on "a:mail.example...com", "t10.example.com": "mail.example...com" [<nil>, <nil>]
    spf.go:514: void lookup: nxdomain
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [invalid-domain-empty-label]
    yml_test.go:251:   test invalid-domain-long
    yml_test.go:253:     checkhost 1.2.3.4 foo@t11.example.com
    spf.go:308: check "t11.example.com" 0 0
    spf.go:330: dns record "v=spf1 a:a123456789012345678901234567890123456789012345678901234567890123.example.com -all"
    spf.go:747: masks on "a:a123456789012345678901234567890123456789012345678901234567890123.example.com", "t11.example.com": "a123456789012345678901234567890123456789012345678901234567890123.example.com" [<nil>, <nil>]
    spf.go:514: void lookup: nxdomain
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [invalid-domain-long]
    yml_test.go:251:   test invalid-domain-long-via-macro
    yml_test.go:253:     checkhost 1.2.3.4 foo@t12.example.com
    spf.go:308: check "t12.example.com" 0 0
    spf.go:330: dns record "v=spf1 a:%{H}.bar -all"
    spf.go:747: masks on "a:%{H}.bar", "t12.example.com": "%{H}.bar" [<nil>, <nil>]
    spf.go:923: macro "H": ["H" "H" "" "" ""]
    spf.go:1020: macro expanded "%{H}.bar" to "%25%25%25%25%25%25%25%25%25%25%25%25%25%25%25%25%25%25%25%25%25%25.bar"
    spf.go:514: void lookup: nxdomain
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [invalid-domain-long-via-macro]
    yml_test.go:251:   test modifier-charset-bad1
    yml_test.go:253:     checkhost 1.2.3.4 foo@t3.example.com
    spf.go:308: check "t3.example.com" 0 0
    spf.go:330: dns record "v=spf1 moo.cow/far_out=man:dog/cat ip4:1.2.3.4 -all"
    spf.go:437: unknown field, permerror
    yml_test.go:260:       success: permerror, unknown field  [modifier-charset-bad1]
    yml_test.go:251:   test redirect-after-mechanisms1
    yml_test.go:253:     checkhost 1.2.3.4 foo@t5.example.com
    spf.go:308: check "t5.example.com" 0 0
    spf.go:330: dns record "v=spf1 redirect=t5.example.com ~all"
    spf.go:397: all: softfail
    yml_test.go:260:       success: softfail, matched all  [redirect-after-mechanisms1]
    yml_test.go:251:   test default-result
    yml_test.go:253:     checkhost 1.2.3.5 foo@t7.example.com
    spf.go:308: check "t7.example.com" 0 0
    spf.go:330: dns record "v=spf1 ip4:1.2.3.4"
    spf.go:444: fallback to neutral
    yml_test.go:260:       success: neutral, <nil>  [default-result]
    yml_test.go:162: suite: ALL mechanism syntax
    yml_test.go:167:   domain mail.example.com
    yml_test.go:169:     A: [1.2.3.4]
    yml_test.go:167:   domain e1.example.com
    yml_test.go:169:     SPF: [v=spf1 -all.]
    yml_test.go:167:   domain e2.example.com
    yml_test.go:169:     SPF: [v=spf1 -all:foobar]
    yml_test.go:167:   domain e3.example.com
    yml_test.go:169:     SPF: [v=spf1 -all/8]
    yml_test.go:167:   domain e4.example.com
    yml_test.go:169:     SPF: [v=spf1 ?all]
    yml_test.go:167:   domain e5.example.com
    yml_test.go:169:     SPF: [v=spf1 all -all]
    yml_test.go:251:   test all-cidr
    yml_test.go:253:     checkhost 1.2.3.4 foo@e3.example.com
    spf.go:308: check "e3.example.com" 0 0
    spf.go:330: dns record "v=spf1 -all/8"
    spf.go:437: unknown field, permerror
    yml_test.go:260:       success: permerror, unknown field  [all-cidr]
    yml_test.go:251:   test all-neutral
    yml_test.go:253:     checkhost 1.2.3.4 foo@e4.example.com
    spf.go:308: check "e4.example.com" 0 0
    spf.go:330: dns record "v=spf1 ?all"
    spf.go:397: all: neutral
    yml_test.go:260:       success: neutral, matched all  [all-neutral]
    yml_test.go:251:   test all-double
    yml_test.go:253:     checkhost 1.2.3.4 foo@e5.example.com
    spf.go:308: check "e5.example.com" 0 0
    spf.go:330: dns record "v=spf1 all -all"
    spf.go:397: all: pass
    yml_test.go:260:       success: pass, matched all  [all-double]
    yml_test.go:251:   test all-dot
    yml_test.go:253:     checkhost 1.2.3.4 foo@e1.example.com
    spf.go:308: check "e1.example.com" 0 0
    spf.go:330: dns record "v=spf1 -all."
    spf.go:437: unknown field, permerror
    yml_test.go:260:       success: permerror, unknown field  [all-dot]
    yml_test.go:251:   test all-arg
    yml_test.go:253:     checkhost 1.2.3.4 foo@e2.example.com
    spf.go:308: check "e2.example.com" 0 0
    spf.go:330: dns record "v=spf1 -all:foobar"
    spf.go:437: unknown field, permerror
    yml_test.go:260:       success: permerror, unknown field  [all-arg]
    yml_test.go:162: suite: PTR mechanism syntax
    yml_test.go:167:   domain mail.example.com
    yml_test.go:169:     A: [1.2.3.4]
    yml_test.go:167:   domain e1.example.com
    yml_test.go:169:     SPF: [v=spf1 ptr/0 -all]
    yml_test.go:167:   domain e2.example.com
    yml_test.go:169:     SPF: [v=spf1 ptr:example.com -all]
    yml_test.go:167:   domain 4.3.2.1.in-addr.arpa
    yml_test.go:169:     PTR: [e3.example.com]
    yml_test.go:169:     PTR: [e4.example.com]
    yml_test.go:169:     PTR: [mail.example.com]
    yml_test.go:167:   domain 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.E.B.A.B.E.F.A.C.ip6.arpa
    yml_test.go:169:     PTR: [e3.example.com]
    yml_test.go:167:   domain e3.example.com
    yml_test.go:169:     SPF: [v=spf1 ptr -all]
    yml_test.go:169:     A: [1.2.3.4]
    yml_test.go:169:     AAAA: [CAFE:BABE::1]
    yml_test.go:167:   domain e4.example.com
    yml_test.go:169:     SPF: [v=spf1 ptr -all]
    yml_test.go:167:   domain e5.example.com
    yml_test.go:169:     SPF: [v=spf1 ptr:]
    yml_test.go:251:   test ptr-match-implicit
    yml_test.go:253:     checkhost 1.2.3.4 foo@e3.example.com
    spf.go:308: check "e3.example.com" 0 0
    spf.go:330: dns record "v=spf1 ptr -all"
    spf.go:591: ptr forward resolution "e3.example.com." -> [{"1.2.3.4" ""} {"cafe:babe::1" ""}]
    spf.go:591: ptr forward resolution "mail.example.com." -> [{"1.2.3.4" ""}]
    spf.go:600: ptr evaluating "e3.example.com" in ["e3.example.com." "mail.example.com."]
    spf.go:604: ptr match: "e3.example.com."
    spf.go:421: "ptr" pass, matched ptr
    yml_test.go:260:       success: pass, matched ptr  [ptr-match-implicit]
    yml_test.go:251:   test ptr-nomatch-invalid
    yml_test.go:253:     checkhost 1.2.3.4 foo@e4.example.com
    spf.go:308: check "e4.example.com" 0 0
    spf.go:330: dns record "v=spf1 ptr -all"
    spf.go:591: ptr forward resolution "e3.example.com." -> [{"1.2.3.4" ""} {"cafe:babe::1" ""}]
    spf.go:591: ptr forward resolution "mail.example.com." -> [{"1.2.3.4" ""}]
    spf.go:600: ptr evaluating "e4.example.com" in ["e3.example.com." "mail.example.com."]
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [ptr-nomatch-invalid]
    yml_test.go:251:   test ptr-match-ip6
    yml_test.go:253:     checkhost cafe:babe::1 foo@e3.example.com
    spf.go:308: check "e3.example.com" 0 0
    spf.go:330: dns record "v=spf1 ptr -all"
    spf.go:591: ptr forward resolution "e3.example.com." -> [{"1.2.3.4" ""} {"cafe:babe::1" ""}]
    spf.go:600: ptr evaluating "e3.example.com" in ["e3.example.com."]
    spf.go:604: ptr match: "e3.example.com."
    spf.go:421: "ptr" pass, matched ptr
    yml_test.go:260:       success: pass, matched ptr  [ptr-match-ip6]
    yml_test.go:251:   test ptr-empty-domain
    yml_test.go:253:     checkhost 1.2.3.4 foo@e5.example.com
    spf.go:308: check "e5.example.com" 0 0
    spf.go:330: dns record "v=spf1 ptr:"
    spf.go:421: "ptr:" permerror, invalid domain
    yml_test.go:260:       success: permerror, invalid domain  [ptr-empty-domain]
    yml_test.go:251:   test ptr-cidr
    yml_test.go:253:     checkhost 1.2.3.4 foo@e1.example.com
    spf.go:308: check "e1.example.com" 0 0
    spf.go:330: dns record "v=spf1 ptr/0 -all"
    spf.go:437: unknown field, permerror
    yml_test.go:260:       success: permerror, unknown field  [ptr-cidr]
    yml_test.go:251:   test ptr-match-target
    yml_test.go:253:     checkhost 1.2.3.4 foo@e2.example.com
    spf.go:308: check "e2.example.com" 0 0
    spf.go:330: dns record "v=spf1 ptr:example.com -all"
    spf.go:591: ptr forward resolution "e3.example.com." -> [{"1.2.3.4" ""} {"cafe:babe::1" ""}]
    spf.go:591: ptr forward resolution "mail.example.com." -> [{"1.2.3.4" ""}]
    spf.go:600: ptr evaluating "example.com" in ["e3.example.com." "mail.example.com."]
    spf.go:604: ptr match: "e3.example.com."
    spf.go:421: "ptr:example.com" pass, matched ptr
    yml_test.go:260:       success: pass, matched ptr  [ptr-match-target]
    yml_test.go:162: suite: A mechanism syntax
    yml_test.go:167:   domain e5a.example.com
    yml_test.go:169:     SPF: [v=spf1 a:museum]
    yml_test.go:167:   domain e8e.example.com
    yml_test.go:169:     A: [1.2.3.5]
    yml_test.go:169:     AAAA: [2001:db8:1234::dead:beef]
    yml_test.go:169:     SPF: [v=spf1 a/24/64 -all]
    yml_test.go:167:   domain mail.example.com
    yml_test.go:169:     A: [1.2.3.4]
    yml_test.go:167:   domain e9.example.com
    yml_test.go:169:     SPF: [v=spf1 a:example.com:8080]
    yml_test.go:167:   domain e4.example.com
    yml_test.go:169:     SPF: [v=spf1 a:111.222.33.44]
    yml_test.go:167:   domain e5b.example.com
    yml_test.go:169:     SPF: [v=spf1 a:museum.]
    yml_test.go:167:   domain foo.example.com
    yml_test.go:169:     A: [1.1.1.1]
    yml_test.go:169:     A: [1.2.3.5]
    yml_test.go:167:   domain e14.example.com
    yml_test.go:169:     SPF: [v=spf1 a:foo.example.xn--zckzah -all]
    yml_test.go:167:   domain foo.example.xn--zckzah
    yml_test.go:169:     A: [1.2.3.4]
    yml_test.go:167:   domain e2b.example.com
    yml_test.go:169:     A: [1.1.1.1]
    yml_test.go:169:     SPF: [v=spf1 a//0 -all]
    yml_test.go:167:   domain ipv6.example.com
    yml_test.go:169:     AAAA: [1234::1]
    yml_test.go:169:     A: [1.1.1.1]
    yml_test.go:169:     SPF: [v=spf1 a -all]
    yml_test.go:167:   domain e6.example.com
    yml_test.go:169:     SPF: [v=spf1 a//33 -all]
    yml_test.go:167:   domain e8.example.com
    yml_test.go:169:     A: [1.2.3.5]
    yml_test.go:169:     AAAA: [2001:db8:1234::dead:beef]
    yml_test.go:169:     SPF: [v=spf1 a/24//64 -all]
    yml_test.go:167:   domain e8b.example.com
    yml_test.go:169:     A: [1.2.3.5]
    yml_test.go:169:     AAAA: [2001:db8:1234::dead:beef]
    yml_test.go:169:     SPF: [v=spf1 a//64 -all]
    yml_test.go:167:   domain e12.example.com
    yml_test.go:169:     SPF: [v=spf1 a:example.-com]
    yml_test.go:167:   domain e2a.example.com
    yml_test.go:169:     AAAA: [1234::1]
    yml_test.go:169:     SPF: [v=spf1 a//0 -all]
    yml_test.go:167:   domain e5.example.com
    yml_test.go:169:     SPF: [v=spf1 a:abc.123]
    yml_test.go:167:   domain e10.example.com
    yml_test.go:169:     SPF: [v=spf1 a:foo.example.com/24]
    yml_test.go:167:   domain e11.example.com
    yml_test.go:169:     SPF: [v=spf1 a:foo:bar/baz.example.com]
    yml_test.go:167:   domain foo:bar/baz.example.com
    yml_test.go:169:     A: [1.2.3.4]
    yml_test.go:167:   domain e3.example.com
    yml_test.go:169:     SPF: [v=spf1 a:foo.example.com�]
    yml_test.go:167:   domain e2.example.com
    yml_test.go:169:     A: [1.1.1.1]
    yml_test.go:169:     AAAA: [1234::2]
    yml_test.go:169:     SPF: [v=spf1 a/0 -all]
    yml_test.go:167:   domain e8a.example.com
    yml_test.go:169:     A: [1.2.3.5]
    yml_test.go:169:     AAAA: [2001:db8:1234::dead:beef]
    yml_test.go:169:     SPF: [v=spf1 a/24 -all]
    yml_test.go:167:   domain e6a.example.com
    yml_test.go:169:     SPF: [v=spf1 a/33 -all]
    yml_test.go:167:   domain e7.example.com
    yml_test.go:169:     SPF: [v=spf1 a//129 -all]
    yml_test.go:167:   domain e1.example.com
    yml_test.go:169:     SPF: [v=spf1 a/0 -all]
    yml_test.go:167:   domain e13.example.com
    yml_test.go:169:     SPF: [v=spf1 a:]
    yml_test.go:251:   test a-dual-cidr-ip6-default
    yml_test.go:253:     checkhost 2001:db8:1234::cafe:babe foo@e8a.example.com
    spf.go:308: check "e8a.example.com" 0 0
    spf.go:330: dns record "v=spf1 a/24 -all"
    spf.go:747: masks on "a/24", "e8a.example.com": "e8a.example.com" [/24, <nil>]
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [a-dual-cidr-ip6-default]
    yml_test.go:251:   test a-cidr6-0-ip4
    yml_test.go:253:     checkhost 1.2.3.4 foo@e2a.example.com
    spf.go:308: check "e2a.example.com" 0 0
    spf.go:330: dns record "v=spf1 a//0 -all"
    spf.go:747: masks on "a//0", "e2a.example.com": "e2a.example.com" [<nil>, /0]
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [a-cidr6-0-ip4]
    yml_test.go:251:   test a-cidr6-0-ip4mapped
    yml_test.go:253:     checkhost 1.2.3.4 foo@e2a.example.com
    spf.go:308: check "e2a.example.com" 0 0
    spf.go:330: dns record "v=spf1 a//0 -all"
    spf.go:747: masks on "a//0", "e2a.example.com": "e2a.example.com" [<nil>, /0]
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [a-cidr6-0-ip4mapped]
    yml_test.go:251:   test a-ip6-dualstack
    yml_test.go:253:     checkhost 1234::1 foo@ipv6.example.com
    spf.go:308: check "ipv6.example.com" 0 0
    spf.go:330: dns record "v=spf1 a -all"
    spf.go:747: masks on "a", "ipv6.example.com": "ipv6.example.com" [<nil>, <nil>]
    spf.go:768: a match: 1234::1, 1234::1, [<nil>, <nil>]
    spf.go:406: "a" pass, matched a
    yml_test.go:260:       success: pass, matched a  [a-ip6-dualstack]
    yml_test.go:251:   test a-cidr6-0-nxdomain
    yml_test.go:253:     checkhost 1234::1 foo@e2b.example.com
    spf.go:308: check "e2b.example.com" 0 0
    spf.go:330: dns record "v=spf1 a//0 -all"
    spf.go:747: masks on "a//0", "e2b.example.com": "e2b.example.com" [<nil>, /0]
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [a-cidr6-0-nxdomain]
    yml_test.go:251:   test a-bad-cidr6
    yml_test.go:253:     checkhost 1.2.3.4 foo@e7.example.com
    spf.go:308: check "e7.example.com" 0 0
    spf.go:330: dns record "v=spf1 a//129 -all"
    spf.go:747: masks on "a//129", "e7.example.com": "" [<nil>, <nil>]
    spf.go:406: "a//129" permerror, invalid mask
    yml_test.go:260:       success: permerror, invalid mask  [a-bad-cidr6]
    yml_test.go:251:   test a-cidr6
    yml_test.go:253:     checkhost 1.2.3.4 foo@e6.example.com
    spf.go:308: check "e6.example.com" 0 0
    spf.go:330: dns record "v=spf1 a//33 -all"
    spf.go:747: masks on "a//33", "e6.example.com": "e6.example.com" [<nil>, /33]
    spf.go:514: void lookup: nxdomain
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [a-cidr6]
    yml_test.go:251:   test a-cidr6-0-ip6
    yml_test.go:253:     checkhost 1234::1 foo@e2a.example.com
    spf.go:308: check "e2a.example.com" 0 0
    spf.go:330: dns record "v=spf1 a//0 -all"
    spf.go:747: masks on "a//0", "e2a.example.com": "e2a.example.com" [<nil>, /0]
    spf.go:768: a match: 1234::1, 1234::1, [<nil>, /0]
    spf.go:406: "a//0" pass, matched a
    yml_test.go:260:       success: pass, matched a  [a-cidr6-0-ip6]
    yml_test.go:251:   test a-multi-ip1
    yml_test.go:253:     checkhost 1.2.3.4 foo@e10.example.com
    spf.go:308: check "e10.example.com" 0 0
    spf.go:330: dns record "v=spf1 a:foo.example.com/24"
    spf.go:747: masks on "a:foo.example.com/24", "e10.example.com": "foo.example.com" [/24, <nil>]
    spf.go:768: a match: 1.2.3.4, 1.2.3.5, [/24, <nil>]
    spf.go:406: "a:foo.example.com/24" pass, matched a
    yml_test.go:260:       success: pass, matched a  [a-multi-ip1]
    yml_test.go:251:   test a-cidr4-0
    yml_test.go:253:     checkhost 1.2.3.4 foo@e2.example.com
    spf.go:308: check "e2.example.com" 0 0
    spf.go:330: dns record "v=spf1 a/0 -all"
    spf.go:747: masks on "a/0", "e2.example.com": "e2.example.com" [/0, <nil>]
    spf.go:768: a match: 1.2.3.4, 1.1.1.1, [/0, <nil>]
    spf.go:406: "a/0" pass, matched a
    yml_test.go:260:       success: pass, matched a  [a-cidr4-0]
    yml_test.go:251:   test a-dual-cidr-ip6-match
    yml_test.go:253:     checkhost 2001:db8:1234::cafe:babe foo@e8.example.com
    spf.go:308: check "e8.example.com" 0 0
    spf.go:330: dns record "v=spf1 a/24//64 -all"
    spf.go:747: masks on "a/24//64", "e8.example.com": "e8.example.com" [/24, /64]
    spf.go:768: a match: 2001:db8:1234::cafe:babe, 2001:db8:1234::dead:beef, [/24, /64]
    spf.go:406: "a/24//64" pass, matched a
    yml_test.go:260:       success: pass, matched a  [a-dual-cidr-ip6-match]
    yml_test.go:251:   test a-nxdomain
    yml_test.go:253:     checkhost 1.2.3.4 foo@e1.example.com
    spf.go:308: check "e1.example.com" 0 0
    spf.go:330: dns record "v=spf1 a/0 -all"
    spf.go:747: masks on "a/0", "e1.example.com": "e1.example.com" [/0, <nil>]
    spf.go:514: void lookup: nxdomain
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [a-nxdomain]
    yml_test.go:251:   test a-dual-cidr-ip4-match
    yml_test.go:253:     checkhost 1.2.3.4 foo@e8.example.com
    spf.go:308: check "e8.example.com" 0 0
    spf.go:330: dns record "v=spf1 a/24//64 -all"
    spf.go:747: masks on "a/24//64", "e8.example.com": "e8.example.com" [/24, /64]
    spf.go:768: a match: 1.2.3.4, 1.2.3.5, [/24, /64]
    spf.go:406: "a/24//64" pass, matched a
    yml_test.go:260:       success: pass, matched a  [a-dual-cidr-ip4-match]
    yml_test.go:251:   test a-dual-cidr-ip4-err
    yml_test.go:253:     checkhost 1.2.3.4 foo@e8e.example.com
    spf.go:308: check "e8e.example.com" 0 0
    spf.go:330: dns record "v=spf1 a/24/64 -all"
    spf.go:747: masks on "a/24/64", "e8e.example.com": "" [<nil>, <nil>]
    spf.go:406: "a/24/64" permerror, invalid mask
    yml_test.go:260:       success: permerror, invalid mask  [a-dual-cidr-ip4-err]
    yml_test.go:251:   test a-multi-ip2
    yml_test.go:253:     checkhost 1.2.3.4 foo@e10.example.com
    spf.go:308: check "e10.example.com" 0 0
    spf.go:330: dns record "v=spf1 a:foo.example.com/24"
    spf.go:747: masks on "a:foo.example.com/24", "e10.example.com": "foo.example.com" [/24, <nil>]
    spf.go:768: a match: 1.2.3.4, 1.2.3.5, [/24, <nil>]
    spf.go:406: "a:foo.example.com/24" pass, matched a
    yml_test.go:260:       success: pass, matched a  [a-multi-ip2]
    yml_test.go:251:   test a-dash-in-toplabel
    yml_test.go:253:     checkhost 1.2.3.4 foo@e14.example.com
    spf.go:308: check "e14.example.com" 0 0
    spf.go:330: dns record "v=spf1 a:foo.example.xn--zckzah -all"
    spf.go:747: masks on "a:foo.example.xn--zckzah", "e14.example.com": "foo.example.xn--zckzah" [<nil>, <nil>]
    spf.go:768: a match: 1.2.3.4, 1.2.3.4, [<nil>, <nil>]
    spf.go:406: "a:foo.example.xn--zckzah" pass, matched a
    yml_test.go:260:       success: pass, matched a  [a-dash-in-toplabel]
    yml_test.go:251:   test a-dual-cidr-ip4-default
    yml_test.go:253:     checkhost 1.2.3.4 foo@e8b.example.com
    spf.go:308: check "e8b.example.com" 0 0
    spf.go:330: dns record "v=spf1 a//64 -all"
    spf.go:747: masks on "a//64", "e8b.example.com": "e8b.example.com" [<nil>, /64]
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [a-dual-cidr-ip4-default]
    yml_test.go:251:   test a-cidr4-0-ip6
    yml_test.go:253:     checkhost 1234::1 foo@e2.example.com
    spf.go:308: check "e2.example.com" 0 0
    spf.go:330: dns record "v=spf1 a/0 -all"
    spf.go:747: masks on "a/0", "e2.example.com": "e2.example.com" [/0, <nil>]
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [a-cidr4-0-ip6]
    yml_test.go:251:   test a-bad-cidr4
    yml_test.go:253:     checkhost 1.2.3.4 foo@e6a.example.com
    spf.go:308: check "e6a.example.com" 0 0
    spf.go:330: dns record "v=spf1 a/33 -all"
    spf.go:747: masks on "a/33", "e6a.example.com": "" [<nil>, <nil>]
    spf.go:406: "a/33" permerror, invalid mask
    yml_test.go:260:       success: permerror, invalid mask  [a-bad-cidr4]
    yml_test.go:162: suite: Include mechanism semantics and syntax
    yml_test.go:167:   domain e3.example.com
    yml_test.go:169:     SPF: [v=spf1 include:ip7.example.com -all]
    yml_test.go:167:   domain e6.example.com
    yml_test.go:169:     SPF: [v=spf1 include +all]
    yml_test.go:167:   domain e8.example.com
    yml_test.go:169:     SPF: [v=spf1 include: -all]
    yml_test.go:167:   domain ip5.example.com
    yml_test.go:169:     SPF: [v=spf1 ip4:1.2.3.5 -all]
    yml_test.go:167:   domain ip6.example.com
    yml_test.go:169:     SPF: [v=spf1 ip4:1.2.3.6 ~all]
    yml_test.go:167:   domain erehwon.example.com
    yml_test.go:169:     TXT: [v=spfl am not an SPF record]
    yml_test.go:167:   domain e7.example.com
    yml_test.go:169:     SPF: [v=spf1 include:erehwon.example.com -all]
    yml_test.go:167:   domain ip8.example.com
    yml_test.go:169:     TIMEOUT
    yml_test.go:167:   domain e1.example.com
    yml_test.go:169:     SPF: [v=spf1 include:ip5.example.com ~all]
    yml_test.go:167:   domain e9.example.com
    yml_test.go:169:     SPF: [v=spf1 include:ip5.example.com/24 -all]
    yml_test.go:167:   domain mail.example.com
    yml_test.go:169:     A: [1.2.3.4]
    yml_test.go:167:   domain ip7.example.com
    yml_test.go:169:     SPF: [v=spf1 ip4:1.2.3.7 ?all]
    yml_test.go:167:   domain e2.example.com
    yml_test.go:169:     SPF: [v=spf1 include:ip6.example.com all]
    yml_test.go:167:   domain e4.example.com
    yml_test.go:169:     SPF: [v=spf1 include:ip8.example.com -all]
    yml_test.go:167:   domain e5.example.com
    yml_test.go:169:     SPF: [v=spf1 include:e6.example.com -all]
    yml_test.go:251:   test include-fail
    yml_test.go:253:     checkhost 1.2.3.4 foo@e1.example.com
    spf.go:308: check "e1.example.com" 0 0
    spf.go:330: dns record "v=spf1 include:ip5.example.com ~all"
    spf.go:308: check "ip5.example.com" 1 0
    spf.go:330: dns record "v=spf1 ip4:1.2.3.5 -all"
    spf.go:397: all: fail
    spf.go:397: all: softfail
    yml_test.go:260:       success: softfail, matched all  [include-fail]
    yml_test.go:251:   test include-temperror
    yml_test.go:253:     checkhost 1.2.3.4 foo@e4.example.com
    spf.go:308: check "e4.example.com" 0 0
    spf.go:330: dns record "v=spf1 include:ip8.example.com -all"
    spf.go:308: check "ip8.example.com" 1 0
    spf.go:318: dns temp error: lookup : test timeout error
    spf.go:401: "include:ip8.example.com" temperror, lookup : test timeout error
    yml_test.go:260:       success: temperror, lookup : test timeout error  [include-temperror]
    yml_test.go:251:   test include-cidr
    yml_test.go:253:     checkhost 1.2.3.4 foo@e9.example.com
    spf.go:308: check "e9.example.com" 0 0
    spf.go:330: dns record "v=spf1 include:ip5.example.com/24 -all"
    spf.go:874: macro contains /
    spf.go:401: "include:ip5.example.com/24" permerror, invalid macro
    yml_test.go:260:       success: permerror, invalid macro  [include-cidr]
    yml_test.go:251:   test include-none
    yml_test.go:253:     checkhost 1.2.3.4 foo@e7.example.com
    spf.go:308: check "e7.example.com" 0 0
    spf.go:330: dns record "v=spf1 include:erehwon.example.com -all"
    spf.go:308: check "erehwon.example.com" 1 0
    spf.go:330: dns record ""
    spf.go:401: "include:erehwon.example.com" permerror, no DNS record found
    yml_test.go:260:       success: permerror, no DNS record found  [include-none]
    yml_test.go:251:   test include-empty-domain
    yml_test.go:253:     checkhost 1.2.3.4 foo@e8.example.com
    spf.go:308: check "e8.example.com" 0 0
    spf.go:330: dns record "v=spf1 include: -all"
    spf.go:308: check "" 1 0
    spf.go:314: dns domain not found: lookup : domain not found (for testing)
    spf.go:401: "include:" permerror, no DNS record found
    yml_test.go:260:       success: permerror, no DNS record found  [include-empty-domain]
    yml_test.go:251:   test include-softfail
    yml_test.go:253:     checkhost 1.2.3.4 foo@e2.example.com
    spf.go:308: check "e2.example.com" 0 0
    spf.go:330: dns record "v=spf1 include:ip6.example.com all"
    spf.go:308: check "ip6.example.com" 1 0
    spf.go:330: dns record "v=spf1 ip4:1.2.3.6 ~all"
    spf.go:397: all: softfail
    spf.go:397: all: pass
    yml_test.go:260:       success: pass, matched all  [include-softfail]
    yml_test.go:251:   test include-neutral
    yml_test.go:253:     checkhost 1.2.3.4 foo@e3.example.com
    spf.go:308: check "e3.example.com" 0 0
    spf.go:330: dns record "v=spf1 include:ip7.example.com -all"
    spf.go:308: check "ip7.example.com" 1 0
    spf.go:330: dns record "v=spf1 ip4:1.2.3.7 ?all"
    spf.go:397: all: neutral
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [include-neutral]
    yml_test.go:251:   test include-permerror
    yml_test.go:253:     checkhost 1.2.3.4 foo@e5.example.com
    spf.go:308: check "e5.example.com" 0 0
    spf.go:330: dns record "v=spf1 include:e6.example.com -all"
    spf.go:308: check "e6.example.com" 1 0
    spf.go:330: dns record "v=spf1 include +all"
    spf.go:437: unknown field, permerror
    spf.go:401: "include:e6.example.com" permerror, unknown field
    yml_test.go:260:       success: permerror, unknown field  [include-permerror]
    yml_test.go:251:   test include-syntax-error
    yml_test.go:253:     checkhost 1.2.3.4 foo@e6.example.com
    spf.go:308: check "e6.example.com" 0 0
    spf.go:330: dns record "v=spf1 include +all"
    spf.go:437: unknown field, permerror
    yml_test.go:260:       success: permerror, unknown field  [include-syntax-error]
    yml_test.go:162: suite: MX mechanism syntax
    yml_test.go:167:   domain e3.example.com
    yml_test.go:169:     SPF: [v=spf1 mx:foo.example.com�]
    yml_test.go:167:   domain foo1.example.com
    yml_test.go:169:     A: [1.1.1.1]
    yml_test.go:169:     A: [1.2.3.5]
    yml_test.go:167:   domain e13.example.com
    yml_test.go:169:     SPF: [v=spf1 mx: -all]
    yml_test.go:167:   domain e1.example.com
    yml_test.go:169:     SPF: [v=spf1 mx/0 -all]
    yml_test.go:169:     MX: {0 e1.example.com}
    yml_test.go:167:   domain e2.example.com
    yml_test.go:169:     A: [1.1.1.1]
    yml_test.go:169:     AAAA: [1234::2]
    yml_test.go:169:     MX: {0 e2.example.com}
    yml_test.go:169:     SPF: [v=spf1 mx/0 -all]
    yml_test.go:167:   domain e4.example.com
    yml_test.go:169:     SPF: [v=spf1 mx]
    yml_test.go:169:     A: [1.2.3.4]
    yml_test.go:167:   domain e6a.example.com
    yml_test.go:169:     SPF: [v=spf1 mx/33 -all]
    yml_test.go:167:   domain e9.example.com
    yml_test.go:169:     SPF: [v=spf1 mx:example.com:8080]
    yml_test.go:167:   domain e7.example.com
    yml_test.go:169:     SPF: [v=spf1 mx//129 -all]
    yml_test.go:167:   domain foo:bar/baz.example.com
    yml_test.go:169:     MX: {0 foo:bar/baz.example.com}
    yml_test.go:169:     A: [1.2.3.4]
    yml_test.go:167:   domain e12.example.com
    yml_test.go:169:     SPF: [v=spf1 mx:example.-com]
    yml_test.go:167:   domain mail.example.com
    yml_test.go:169:     A: [1.2.3.4]
    yml_test.go:169:     MX: {0 }
    yml_test.go:169:     SPF: [v=spf1 mx]
    yml_test.go:167:   domain e2a.example.com
    yml_test.go:169:     AAAA: [1234::1]
    yml_test.go:169:     MX: {0 e2a.example.com}
    yml_test.go:169:     SPF: [v=spf1 mx//0 -all]
    yml_test.go:167:   domain e2b.example.com
    yml_test.go:169:     A: [1.1.1.1]
    yml_test.go:169:     MX: {0 e2b.example.com}
    yml_test.go:169:     SPF: [v=spf1 mx//0 -all]
    yml_test.go:167:   domain e5.example.com
    yml_test.go:169:     SPF: [v=spf1 mx:abc.123]
    yml_test.go:167:   domain e6.example.com
    yml_test.go:169:     SPF: [v=spf1 mx//33 -all]
    yml_test.go:167:   domain e10.example.com
    yml_test.go:169:     SPF: [v=spf1 mx:foo.example.com/24]
    yml_test.go:167:   domain foo.example.com
    yml_test.go:169:     MX: {0 foo1.example.com}
    yml_test.go:167:   domain e11.example.com
    yml_test.go:169:     SPF: [v=spf1 mx:foo:bar/baz.example.com]
    yml_test.go:251:   test mx-implicit
    yml_test.go:253:     checkhost 1.2.3.4 foo@e4.example.com
    spf.go:308: check "e4.example.com" 0 0
    spf.go:330: dns record "v=spf1 mx"
    spf.go:780: masks on "mx", "e4.example.com": "e4.example.com" [<nil>, <nil>]
    spf.go:514: void lookup: nxdomain
    spf.go:444: fallback to neutral
    yml_test.go:260:       success: neutral, <nil>  [mx-implicit]
    yml_test.go:251:   test mx-multi-ip1
    yml_test.go:253:     checkhost 1.2.3.4 foo@e10.example.com
    spf.go:308: check "e10.example.com" 0 0
    spf.go:330: dns record "v=spf1 mx:foo.example.com/24"
    spf.go:780: masks on "mx:foo.example.com/24", "e10.example.com": "foo.example.com" [/24, <nil>]
    spf.go:828: mx ips: [1.1.1.1 1.2.3.5]
    spf.go:831: mx match: 1.2.3.4, 1.2.3.5, [/24, <nil>]
    spf.go:411: "mx:foo.example.com/24" pass, matched mx
    yml_test.go:260:       success: pass, matched mx  [mx-multi-ip1]
    yml_test.go:251:   test mx-multi-ip2
    yml_test.go:253:     checkhost 1.2.3.4 foo@e10.example.com
    spf.go:308: check "e10.example.com" 0 0
    spf.go:330: dns record "v=spf1 mx:foo.example.com/24"
    spf.go:780: masks on "mx:foo.example.com/24", "e10.example.com": "foo.example.com" [/24, <nil>]
    spf.go:828: mx ips: [1.1.1.1 1.2.3.5]
    spf.go:831: mx match: 1.2.3.4, 1.2.3.5, [/24, <nil>]
    spf.go:411: "mx:foo.example.com/24" pass, matched mx
    yml_test.go:260:       success: pass, matched mx  [mx-multi-ip2]
    yml_test.go:251:   test mx-cidr6-0-ip6
    yml_test.go:253:     checkhost 1234::1 foo@e2a.example.com
    spf.go:308: check "e2a.example.com" 0 0
    spf.go:330: dns record "v=spf1 mx//0 -all"
    spf.go:780: masks on "mx//0", "e2a.example.com": "e2a.example.com" [<nil>, /0]
    spf.go:828: mx ips: [1234::1]
    spf.go:831: mx match: 1234::1, 1234::1, [<nil>, /0]
    spf.go:411: "mx//0" pass, matched mx
    yml_test.go:260:       success: pass, matched mx  [mx-cidr6-0-ip6]
    yml_test.go:251:   test mx-cidr4-0
    yml_test.go:253:     checkhost 1.2.3.4 foo@e2.example.com
    spf.go:308: check "e2.example.com" 0 0
    spf.go:330: dns record "v=spf1 mx/0 -all"
    spf.go:780: masks on "mx/0", "e2.example.com": "e2.example.com" [/0, <nil>]
    spf.go:828: mx ips: [1.1.1.1 1234::2]
    spf.go:831: mx match: 1.2.3.4, 1.1.1.1, [/0, <nil>]
    spf.go:411: "mx/0" pass, matched mx
    yml_test.go:260:       success: pass, matched mx  [mx-cidr4-0]
    yml_test.go:251:   test mx-cidr6-0-ip4
    yml_test.go:253:     checkhost 1.2.3.4 foo@e2a.example.com
    spf.go:308: check "e2a.example.com" 0 0
    spf.go:330: dns record "v=spf1 mx//0 -all"
    spf.go:780: masks on "mx//0", "e2a.example.com": "e2a.example.com" [<nil>, /0]
    spf.go:828: mx ips: [1234::1]
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [mx-cidr6-0-ip4]
    yml_test.go:251:   test mx-cidr6
    yml_test.go:253:     checkhost 1.2.3.4 foo@e6.example.com
    spf.go:308: check "e6.example.com" 0 0
    spf.go:330: dns record "v=spf1 mx//33 -all"
    spf.go:780: masks on "mx//33", "e6.example.com": "e6.example.com" [<nil>, /33]
    spf.go:514: void lookup: nxdomain
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [mx-cidr6]
    yml_test.go:251:   test mx-bad-cidr6
    yml_test.go:253:     checkhost 1.2.3.4 foo@e7.example.com
    spf.go:308: check "e7.example.com" 0 0
    spf.go:330: dns record "v=spf1 mx//129 -all"
    spf.go:780: masks on "mx//129", "e7.example.com": "" [<nil>, <nil>]
    spf.go:411: "mx//129" permerror, invalid mask
    yml_test.go:260:       success: permerror, invalid mask  [mx-bad-cidr6]
    yml_test.go:251:   test mx-nxdomain
    yml_test.go:253:     checkhost 1.2.3.4 foo@e1.example.com
    spf.go:308: check "e1.example.com" 0 0
    spf.go:330: dns record "v=spf1 mx/0 -all"
    spf.go:780: masks on "mx/0", "e1.example.com": "e1.example.com" [/0, <nil>]
    spf.go:828: mx ips: []
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [mx-nxdomain]
    yml_test.go:251:   test mx-cidr4-0-ip6
    yml_test.go:253:     checkhost 1234::1 foo@e2.example.com
    spf.go:308: check "e2.example.com" 0 0
    spf.go:330: dns record "v=spf1 mx/0 -all"
    spf.go:780: masks on "mx/0", "e2.example.com": "e2.example.com" [/0, <nil>]
    spf.go:828: mx ips: [1.1.1.1 1234::2]
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [mx-cidr4-0-ip6]
    yml_test.go:251:   test mx-cidr6-0-ip4mapped
    yml_test.go:253:     checkhost 1.2.3.4 foo@e2a.example.com
    spf.go:308: check "e2a.example.com" 0 0
    spf.go:330: dns record "v=spf1 mx//0 -all"
    spf.go:780: masks on "mx//0", "e2a.example.com": "e2a.example.com" [<nil>, /0]
    spf.go:828: mx ips: [1234::1]
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [mx-cidr6-0-ip4mapped]
    yml_test.go:251:   test mx-empty
    yml_test.go:253:     checkhost 1.2.3.4 
    spf.go:308: check "mail.example.com" 0 0
    spf.go:330: dns record "v=spf1 mx"
    spf.go:780: masks on "mx", "mail.example.com": "mail.example.com" [<nil>, <nil>]
    spf.go:828: mx ips: []
    spf.go:444: fallback to neutral
    yml_test.go:260:       success: neutral, <nil>  [mx-empty]
    yml_test.go:251:   test mx-bad-cidr4
    yml_test.go:253:     checkhost 1.2.3.4 foo@e6a.example.com
    spf.go:308: check "e6a.example.com" 0 0
    spf.go:330: dns record "v=spf1 mx/33 -all"
    spf.go:780: masks on "mx/33", "e6a.example.com": "" [<nil>, <nil>]
    spf.go:411: "mx/33" permerror, invalid mask
    yml_test.go:260:       success: permerror, invalid mask  [mx-bad-cidr4]
    yml_test.go:251:   test mx-cidr6-0-nxdomain
    yml_test.go:253:     checkhost 1234::1 foo@e2b.example.com
    spf.go:308: check "e2b.example.com" 0 0
    spf.go:330: dns record "v=spf1 mx//0 -all"
    spf.go:780: masks on "mx//0", "e2b.example.com": "e2b.example.com" [<nil>, /0]
    spf.go:828: mx ips: [1.1.1.1]
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [mx-cidr6-0-nxdomain]
    yml_test.go:162: suite: EXISTS mechanism syntax
    yml_test.go:167:   domain err.example.com
    yml_test.go:169:     TIMEOUT
    yml_test.go:167:   domain e2.example.com
    yml_test.go:169:     SPF: [v=spf1 exists]
    yml_test.go:167:   domain e5.example.com
    yml_test.go:169:     SPF: [v=spf1 exists:mail6.example.com -all]
    yml_test.go:167:   domain e6.example.com
    yml_test.go:169:     SPF: [v=spf1 exists:err.example.com -all]
    yml_test.go:167:   domain mail.example.com
    yml_test.go:169:     A: [1.2.3.4]
    yml_test.go:167:   domain mail6.example.com
    yml_test.go:169:     AAAA: [CAFE:BABE::4]
    yml_test.go:167:   domain e4.example.com
    yml_test.go:169:     SPF: [v=spf1 exists:mail.example.com]
    yml_test.go:167:   domain e1.example.com
    yml_test.go:169:     SPF: [v=spf1 exists:]
    yml_test.go:167:   domain e3.example.com
    yml_test.go:169:     SPF: [v=spf1 exists:mail.example.com/24]
    yml_test.go:251:   test exists-dnserr
    yml_test.go:253:     checkhost cafe:babe::3 foo@e6.example.com
    spf.go:308: check "e6.example.com" 0 0
    spf.go:330: dns record "v=spf1 exists:err.example.com -all"
    spf.go:426: "exists:err.example.com" temperror, lookup : test timeout error
    yml_test.go:260:       success: temperror, lookup : test timeout error  [exists-dnserr]
    yml_test.go:251:   test exists-empty-domain
    yml_test.go:253:     checkhost 1.2.3.4 foo@e1.example.com
    spf.go:308: check "e1.example.com" 0 0
    spf.go:330: dns record "v=spf1 exists:"
    spf.go:426: "exists:" permerror, invalid domain
    yml_test.go:260:       success: permerror, invalid domain  [exists-empty-domain]
    yml_test.go:251:   test exists-implicit
    yml_test.go:253:     checkhost 1.2.3.4 foo@e2.example.com
    spf.go:308: check "e2.example.com" 0 0
    spf.go:330: dns record "v=spf1 exists"
    spf.go:437: unknown field, permerror
    yml_test.go:260:       success: permerror, unknown field  [exists-implicit]
    yml_test.go:251:   test exists-cidr
    yml_test.go:253:     checkhost 1.2.3.4 foo@e3.example.com
    spf.go:308: check "e3.example.com" 0 0
    spf.go:330: dns record "v=spf1 exists:mail.example.com/24"
    spf.go:874: macro contains /
    spf.go:426: "exists:mail.example.com/24" permerror, invalid macro
    yml_test.go:260:       success: permerror, invalid macro  [exists-cidr]
    yml_test.go:251:   test exists-ip4
    yml_test.go:253:     checkhost 1.2.3.4 foo@e4.example.com
    spf.go:308: check "e4.example.com" 0 0
    spf.go:330: dns record "v=spf1 exists:mail.example.com"
    spf.go:640: exists match: 1.2.3.4
    spf.go:426: "exists:mail.example.com" pass, matched exists
    yml_test.go:260:       success: pass, matched exists  [exists-ip4]
    yml_test.go:251:   test exists-ip6
    yml_test.go:253:     checkhost cafe:babe::3 foo@e4.example.com
    spf.go:308: check "e4.example.com" 0 0
    spf.go:330: dns record "v=spf1 exists:mail.example.com"
    spf.go:640: exists match: 1.2.3.4
    spf.go:426: "exists:mail.example.com" pass, matched exists
    yml_test.go:260:       success: pass, matched exists  [exists-ip6]
    yml_test.go:251:   test exists-ip6only
    yml_test.go:253:     checkhost cafe:babe::3 foo@e5.example.com
    spf.go:308: check "e5.example.com" 0 0
    spf.go:330: dns record "v=spf1 exists:mail6.example.com -all"
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [exists-ip6only]
    yml_test.go:162: suite: IP4 mechanism syntax
    yml_test.go:167:   domain e2.example.com
    yml_test.go:169:     SPF: [v=spf1 ip4:1.2.3.4/32 -all]
    yml_test.go:167:   domain e5.example.com
    yml_test.go:169:     SPF: [v=spf1 ip4]
    yml_test.go:167:   domain e7.example.com
    yml_test.go:169:     SPF: [v=spf1 -ip4:1.2.3.4 ip6:::FFFF:1.2.3.4]
    yml_test.go:167:   domain e8.example.com
    yml_test.go:169:     SPF: [v=spf1 ip4:1.2.3.4:8080]
    yml_test.go:167:   domain e6.example.com
    yml_test.go:169:     SPF: [v=spf1 ip4:1.2.3.4//32]
    yml_test.go:167:   domain e9.example.com
    yml_test.go:169:     SPF: [v=spf1 ip4:1.2.3]
    yml_test.go:167:   domain mail.example.com
    yml_test.go:169:     A: [1.2.3.4]
    yml_test.go:167:   domain e1.example.com
    yml_test.go:169:     SPF: [v=spf1 ip4:1.1.1.1/0 -all]
    yml_test.go:167:   domain e3.example.com
    yml_test.go:169:     SPF: [v=spf1 ip4:1.2.3.4/33 -all]
    yml_test.go:167:   domain e4.example.com
    yml_test.go:169:     SPF: [v=spf1 ip4:1.2.3.4/032 -all]
    yml_test.go:251:   test ip4-dual-cidr
    yml_test.go:253:     checkhost 1.2.3.4 foo@e6.example.com
    spf.go:308: check "e6.example.com" 0 0
    spf.go:330: dns record "v=spf1 ip4:1.2.3.4//32"
    spf.go:416: "ip4:1.2.3.4//32" permerror, invalid mask
    yml_test.go:260:       success: permerror, invalid mask  [ip4-dual-cidr]
    yml_test.go:251:   test ip4-mapped-ip6
    yml_test.go:253:     checkhost 1.2.3.4 foo@e7.example.com
    spf.go:308: check "e7.example.com" 0 0
    spf.go:330: dns record "v=spf1 -ip4:1.2.3.4 ip6:::FFFF:1.2.3.4"
    spf.go:536: ip match: 1.2.3.4
    spf.go:416: "ip4:1.2.3.4" fail, matched ip
    yml_test.go:260:       success: fail, matched ip  [ip4-mapped-ip6]
    yml_test.go:251:   test cidr4-32
    yml_test.go:253:     checkhost 1.2.3.4 foo@e2.example.com
    spf.go:308: check "e2.example.com" 0 0
    spf.go:330: dns record "v=spf1 ip4:1.2.3.4/32 -all"
    spf.go:527: ip match: 1.2.3.4/32 contains 1.2.3.4
    spf.go:416: "ip4:1.2.3.4/32" pass, matched ip
    yml_test.go:260:       success: pass, matched ip  [cidr4-32]
    yml_test.go:251:   test bad-ip4-short
    yml_test.go:253:     checkhost 1.2.3.4 foo@e9.example.com
    spf.go:308: check "e9.example.com" 0 0
    spf.go:330: dns record "v=spf1 ip4:1.2.3"
    spf.go:416: "ip4:1.2.3" permerror, invalid ipX value
    yml_test.go:260:       success: permerror, invalid ipX value  [bad-ip4-short]
    yml_test.go:251:   test bare-ip4
    yml_test.go:253:     checkhost 1.2.3.4 foo@e5.example.com
    spf.go:308: check "e5.example.com" 0 0
    spf.go:330: dns record "v=spf1 ip4"
    spf.go:437: unknown field, permerror
    yml_test.go:260:       success: permerror, unknown field  [bare-ip4]
    yml_test.go:251:   test bad-ip4-port
    yml_test.go:253:     checkhost 1.2.3.4 foo@e8.example.com
    spf.go:308: check "e8.example.com" 0 0
    spf.go:330: dns record "v=spf1 ip4:1.2.3.4:8080"
    spf.go:416: "ip4:1.2.3.4:8080" permerror, invalid ipX value
    yml_test.go:260:       success: permerror, invalid ipX value  [bad-ip4-port]
    yml_test.go:251:   test cidr4-0
    yml_test.go:253:     checkhost 1.2.3.4 foo@e1.example.com
    spf.go:308: check "e1.example.com" 0 0
    spf.go:330: dns record "v=spf1 ip4:1.1.1.1/0 -all"
    spf.go:527: ip match: 0.0.0.0/0 contains 1.2.3.4
    spf.go:416: "ip4:1.1.1.1/0" pass, matched ip
    yml_test.go:260:       success: pass, matched ip  [cidr4-0]
    yml_test.go:251:   test cidr4-33
    yml_test.go:253:     checkhost 1.2.3.4 foo@e3.example.com
    spf.go:308: check "e3.example.com" 0 0
    spf.go:330: dns record "v=spf1 ip4:1.2.3.4/33 -all"
    spf.go:416: "ip4:1.2.3.4/33" permerror, invalid mask
    yml_test.go:260:       success: permerror, invalid mask  [cidr4-33]
    yml_test.go:162: suite: IP6 mechanism syntax
    yml_test.go:167:   domain e1.example.com
    yml_test.go:169:     SPF: [v=spf1 -all ip6]
    yml_test.go:167:   domain e2.example.com
    yml_test.go:169:     SPF: [v=spf1 ip6:::1.1.1.1/0]
    yml_test.go:167:   domain e3.example.com
    yml_test.go:169:     SPF: [v=spf1 ip6:::1.1.1.1/129]
    yml_test.go:167:   domain e4.example.com
    yml_test.go:169:     SPF: [v=spf1 ip6:::1.1.1.1//33]
    yml_test.go:167:   domain e5.example.com
    yml_test.go:169:     SPF: [v=spf1 ip6:CAFE:BABE:8000::/33]
    yml_test.go:167:   domain e6.example.com
    yml_test.go:169:     SPF: [v=spf1 ip6::CAFE::BABE]
    yml_test.go:167:   domain mail.example.com
    yml_test.go:169:     A: [1.2.3.4]
    yml_test.go:251:   test cidr6-33-ip4
    yml_test.go:253:     checkhost 1.2.3.4 foo@e5.example.com
    spf.go:308: check "e5.example.com" 0 0
    spf.go:330: dns record "v=spf1 ip6:CAFE:BABE:8000::/33"
    spf.go:444: fallback to neutral
    yml_test.go:260:       success: neutral, <nil>  [cidr6-33-ip4]
    yml_test.go:251:   test cidr6-ip4
    yml_test.go:253:     checkhost 1.2.3.4 foo@e2.example.com
    spf.go:308: check "e2.example.com" 0 0
    spf.go:330: dns record "v=spf1 ip6:::1.1.1.1/0"
    spf.go:444: fallback to neutral
    yml_test.go:260:       success: neutral, <nil>  [cidr6-ip4]
    yml_test.go:251:   test cidr6-0
    yml_test.go:253:     checkhost deaf:babe::cab:fee foo@e2.example.com
    spf.go:308: check "e2.example.com" 0 0
    spf.go:330: dns record "v=spf1 ip6:::1.1.1.1/0"
    spf.go:527: ip match: ::/0 contains deaf:babe::cab:fee
    spf.go:416: "ip6:::1.1.1.1/0" pass, matched ip
    yml_test.go:260:       success: pass, matched ip  [cidr6-0]
    yml_test.go:251:   test cidr6-33
    yml_test.go:253:     checkhost cafe:babe:8000:: foo@e5.example.com
    spf.go:308: check "e5.example.com" 0 0
    spf.go:330: dns record "v=spf1 ip6:CAFE:BABE:8000::/33"
    spf.go:527: ip match: cafe:babe:8000::/33 contains cafe:babe:8000::
    spf.go:416: "ip6:CAFE:BABE:8000::/33" pass, matched ip
    yml_test.go:260:       success: pass, matched ip  [cidr6-33]
    yml_test.go:251:   test cidr6-0-ip4
    yml_test.go:253:     checkhost 1.2.3.4 foo@e2.example.com
    spf.go:308: check "e2.example.com" 0 0
    spf.go:330: dns record "v=spf1 ip6:::1.1.1.1/0"
    spf.go:444: fallback to neutral
    yml_test.go:260:       success: neutral, <nil>  [cidr6-0-ip4]
    yml_test.go:251:   test cidr6-129
    yml_test.go:253:     checkhost 1.2.3.4 foo@e3.example.com
    spf.go:308: check "e3.example.com" 0 0
    spf.go:330: dns record "v=spf1 ip6:::1.1.1.1/129"
    spf.go:416: "ip6:::1.1.1.1/129" permerror, invalid mask
    yml_test.go:260:       success: permerror, invalid mask  [cidr6-129]
    yml_test.go:251:   test cidr6-bad
    yml_test.go:253:     checkhost 1.2.3.4 foo@e4.example.com
    spf.go:308: check "e4.example.com" 0 0
    spf.go:330: dns record "v=spf1 ip6:::1.1.1.1//33"
    spf.go:416: "ip6:::1.1.1.1//33" permerror, invalid mask
    yml_test.go:260:       success: permerror, invalid mask  [cidr6-bad]
    yml_test.go:251:   test ip6-bad1
    yml_test.go:253:     checkhost 1.2.3.4 foo@e6.example.com
    spf.go:308: check "e6.example.com" 0 0
    spf.go:330: dns record "v=spf1 ip6::CAFE::BABE"
    spf.go:416: "ip6::CAFE::BABE" permerror, invalid ipX value
    yml_test.go:260:       success: permerror, invalid ipX value  [ip6-bad1]
    yml_test.go:162: suite: Semantics of exp and other modifiers
    yml_test.go:167:   domain e16.example.com
    yml_test.go:169:     SPF: [v=spf1 exp=-all]
    yml_test.go:167:   domain e2.example.com
    yml_test.go:169:     SPF: [v=spf1 -all]
    yml_test.go:167:   domain e5.example.com
    yml_test.go:169:     SPF: [v=spf1 1up=foo]
    yml_test.go:167:   domain e8.example.com
    yml_test.go:169:     SPF: [v=spf1 -all exp=exp4.example.com]
    yml_test.go:167:   domain e22.example.com
    yml_test.go:169:     SPF: [v=spf1 exp=mail.example.com -all]
    yml_test.go:167:   domain e3.example.com
    yml_test.go:169:     SPF: [v=spf1 exp=exp1.example.com redirect=e4.example.com]
    yml_test.go:167:   domain e7.example.com
    yml_test.go:169:     SPF: [v=spf1 include:e3.example.com -all exp=exp3.example.com]
    yml_test.go:167:   domain e9.example.com
    yml_test.go:169:     SPF: [v=spf1 -all foo=%abc]
    yml_test.go:167:   domain e6.example.com
    yml_test.go:169:     SPF: [v=spf1 =all]
    yml_test.go:167:   domain e13.example.com
    yml_test.go:169:     SPF: [v=spf1 exp=e13msg.example.com -all]
    yml_test.go:167:   domain tworecs.example.com
    yml_test.go:169:     SPF: [v=spf1 exp=twoexp.example.com -all]
    yml_test.go:167:   domain nonascii.example.com
    yml_test.go:169:     SPF: [v=spf1 exp=badexp.example.com -all]
    yml_test.go:167:   domain exp1.example.com
    yml_test.go:169:     TXT: [No-see-um]
    yml_test.go:167:   domain e19.example.com
    yml_test.go:169:     SPF: [v=spf1 default=pass]
    yml_test.go:167:   domain e21.example.com
    yml_test.go:169:     SPF: [v=spf1 exp=e21msg.example.com -all]
    yml_test.go:167:   domain e1.example.com
    yml_test.go:169:     SPF: [v=spf1 exp=exp1.example.com redirect=e2.example.com]
    yml_test.go:167:   domain exp2.example.com
    yml_test.go:169:     TXT: [See me.]
    yml_test.go:167:   domain e11.example.com
    yml_test.go:169:     SPF: [v=spf1 -all exp=e11msg.example.com]
    yml_test.go:167:   domain e20.example.com
    yml_test.go:169:     SPF: [v=spf1 default=+]
    yml_test.go:167:   domain e21msg.example.com
    yml_test.go:169:     TIMEOUT
    yml_test.go:167:   domain twoexp.example.com
    yml_test.go:169:     TXT: [one]
    yml_test.go:169:     TXT: [two]
    yml_test.go:167:   domain e10.example.com
    yml_test.go:169:     SPF: [v=spf1 redirect=erehwon.example.com]
    yml_test.go:167:   domain e11msg.example.com
    yml_test.go:169:     TXT: [Answer a fool according to his folly.]
    yml_test.go:169:     TXT: [Do not answer a fool according to his folly.]
    yml_test.go:167:   domain e12.example.com
    yml_test.go:169:     SPF: [v=spf1 exp= -all]
    yml_test.go:167:   domain e13msg.example.com
    yml_test.go:169:     TXT: [The %{x}-files.]
    yml_test.go:167:   domain e17.example.com
    yml_test.go:169:     SPF: [v=spf1 redirect=-all ?all]
    yml_test.go:167:   domain e4.example.com
    yml_test.go:169:     SPF: [v=spf1 -all exp=exp2.example.com]
    yml_test.go:167:   domain exp3.example.com
    yml_test.go:169:     TXT: [Correct!]
    yml_test.go:167:   domain exp4.example.com
    yml_test.go:169:     TXT: [%{l} in implementation]
    yml_test.go:167:   domain badexp.example.com
    yml_test.go:169:     TXT: [Explanation]
    yml_test.go:167:   domain e18.example.com
    yml_test.go:169:     SPF: [v=spf1 ?all redirect=]
    yml_test.go:167:   domain mail.example.com
    yml_test.go:169:     A: [1.2.3.4]
    yml_test.go:167:   domain e14.example.com
    yml_test.go:169:     SPF: [v=spf1 exp=e13msg.example.com -all exp=e11msg.example.com]
    yml_test.go:167:   domain e15.example.com
    yml_test.go:169:     SPF: [v=spf1 redirect=e12.example.com -all redirect=e12.example.com]
    yml_test.go:251:   test exp-no-txt
    yml_test.go:253:     checkhost 1.2.3.4 foo@e22.example.com
    spf.go:308: check "e22.example.com" 0 0
    spf.go:330: dns record "v=spf1 exp=mail.example.com -all"
    spf.go:430: exp= ignored
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [exp-no-txt]
    yml_test.go:251:   test exp-multiple-txt
    yml_test.go:253:     checkhost 1.2.3.4 foo@e11.example.com
    spf.go:308: check "e11.example.com" 0 0
    spf.go:330: dns record "v=spf1 -all exp=e11msg.example.com"
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [exp-multiple-txt]
    yml_test.go:251:   test empty-modifier-name
    yml_test.go:253:     checkhost 1.2.3.4 foo@e6.example.com
    spf.go:308: check "e6.example.com" 0 0
    spf.go:330: dns record "v=spf1 =all"
    spf.go:437: unknown field, permerror
    yml_test.go:260:       success: permerror, unknown field  [empty-modifier-name]
    yml_test.go:251:   test dorky-sentinel
    yml_test.go:253:     checkhost 1.2.3.4 Macro Error@e8.example.com
    spf.go:308: check "e8.example.com" 0 0
    spf.go:330: dns record "v=spf1 -all exp=exp4.example.com"
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [dorky-sentinel]
    yml_test.go:251:   test exp-dns-error
    yml_test.go:253:     checkhost 1.2.3.4 foo@e21.example.com
    spf.go:308: check "e21.example.com" 0 0
    spf.go:330: dns record "v=spf1 exp=e21msg.example.com -all"
    spf.go:430: exp= ignored
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [exp-dns-error]
    yml_test.go:251:   test non-ascii-exp
    yml_test.go:253:     checkhost 1.2.3.4 foobar@nonascii.example.com
    spf.go:308: check "nonascii.example.com" 0 0
    spf.go:330: dns record "v=spf1 exp=badexp.example.com -all"
    spf.go:430: exp= ignored
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [non-ascii-exp]
    yml_test.go:251:   test two-exp-records
    yml_test.go:253:     checkhost 1.2.3.4 foobar@tworecs.example.com
    spf.go:308: check "tworecs.example.com" 0 0
    spf.go:330: dns record "v=spf1 exp=twoexp.example.com -all"
    spf.go:430: exp= ignored
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [two-exp-records]
    yml_test.go:251:   test redirect-cancels-prior-exp
    yml_test.go:253:     checkhost 1.2.3.4 foo@e3.example.com
    spf.go:308: check "e3.example.com" 0 0
    spf.go:330: dns record "v=spf1 exp=exp1.example.com redirect=e4.example.com"
    spf.go:430: exp= ignored
    spf.go:308: check "e4.example.com" 1 0
    spf.go:330: dns record "v=spf1 -all exp=exp2.example.com"
    spf.go:397: all: fail
    spf.go:434: "redirect=e4.example.com": fail, matched all
    yml_test.go:260:       success: fail, matched all  [redirect-cancels-prior-exp]
    yml_test.go:251:   test redirect-cancels-exp
    yml_test.go:253:     checkhost 1.2.3.4 foo@e1.example.com
    spf.go:308: check "e1.example.com" 0 0
    spf.go:330: dns record "v=spf1 exp=exp1.example.com redirect=e2.example.com"
    spf.go:430: exp= ignored
    spf.go:308: check "e2.example.com" 1 0
    spf.go:330: dns record "v=spf1 -all"
    spf.go:397: all: fail
    spf.go:434: "redirect=e2.example.com": fail, matched all
    yml_test.go:260:       success: fail, matched all  [redirect-cancels-exp]
    yml_test.go:251:   test include-ignores-exp
    yml_test.go:253:     checkhost 1.2.3.4 foo@e7.example.com
    spf.go:308: check "e7.example.com" 0 0
    spf.go:330: dns record "v=spf1 include:e3.example.com -all exp=exp3.example.com"
    spf.go:308: check "e3.example.com" 1 0
    spf.go:330: dns record "v=spf1 exp=exp1.example.com redirect=e4.example.com"
    spf.go:430: exp= ignored
    spf.go:308: check "e4.example.com" 2 0
    spf.go:330: dns record "v=spf1 -all exp=exp2.example.com"
    spf.go:397: all: fail
    spf.go:434: "redirect=e4.example.com": fail, matched all
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [include-ignores-exp]
    yml_test.go:251:   test invalid-modifier
    yml_test.go:253:     checkhost 1.2.3.4 foo@e5.example.com
    spf.go:308: check "e5.example.com" 0 0
    spf.go:330: dns record "v=spf1 1up=foo"
    spf.go:437: unknown field, permerror
    yml_test.go:260:       success: permerror, unknown field  [invalid-modifier]
    yml_test.go:251:   test redirect-twice
    yml_test.go:253:     checkhost 1.2.3.4 foo@e15.example.com
    spf.go:308: check "e15.example.com" 0 0
    spf.go:330: dns record "v=spf1 redirect=e12.example.com -all redirect=e12.example.com"
    spf.go:353: too many redirects
    yml_test.go:260:       success: permerror, invalid domain  [redirect-twice]
    yml_test.go:251:   test redirect-none
    yml_test.go:253:     checkhost 1.2.3.4 foo@e10.example.com
    spf.go:308: check "e10.example.com" 0 0
    spf.go:330: dns record "v=spf1 redirect=erehwon.example.com"
    spf.go:308: check "erehwon.example.com" 1 0
    spf.go:314: dns domain not found: lookup : domain not found (for testing)
    spf.go:434: "redirect=erehwon.example.com": permerror, no DNS record found
    yml_test.go:260:       success: permerror, no DNS record found  [redirect-none]
    yml_test.go:251:   test explanation-syntax-error
    yml_test.go:253:     checkhost 1.2.3.4 foo@e13.example.com
    spf.go:308: check "e13.example.com" 0 0
    spf.go:330: dns record "v=spf1 exp=e13msg.example.com -all"
    spf.go:430: exp= ignored
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [explanation-syntax-error]
    yml_test.go:162: suite: Macro expansion rules
    yml_test.go:167:   domain e2.example.com
    yml_test.go:169:     SPF: [v=spf1 -all exp=%{r}.example.com]
    yml_test.go:167:   domain e3.example.com
    yml_test.go:169:     SPF: [v=spf1 -all exp=%{ir}.example.com]
    yml_test.go:167:   domain somewhat.long.exp.example.com
    yml_test.go:169:     SPF: [v=spf1 -all exp=foobar.%{o}.%{o}.%{o}.%{o}.%{o}.%{o}.%{o}.%{o}.example.com]
    yml_test.go:167:   domain 41.218.168.192.in-addr.arpa
    yml_test.go:169:     PTR: [mx.example.com]
    yml_test.go:167:   domain 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.E.B.A.B.E.F.A.C.ip6.arpa
    yml_test.go:169:     PTR: [mx.example.com]
    yml_test.go:167:   domain e7.example.com
    yml_test.go:169:     SPF: [v=spf1 exists:%{p}.should.example.com ~exists:%{p}.ok.example.com]
    yml_test.go:167:   domain e12.example.com
    yml_test.go:169:     SPF: [v=spf1 exists:%{l2r+-}.user.%{d2}]
    yml_test.go:167:   domain msgbas2x.cos.example.com
    yml_test.go:169:     A: [192.168.218.40]
    yml_test.go:167:   domain e1t.example.com
    yml_test.go:169:     SPF: [v=spf1 exists:foo%.sbl.example.com ?all]
    yml_test.go:167:   domain e5.example.com
    yml_test.go:169:     SPF: [v=spf1 a:%{a}.example.com -all]
    yml_test.go:167:   domain e6msg.example.com
    yml_test.go:169:     TXT: [connect from %{p}]
    yml_test.go:167:   domain 3.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.E.B.A.B.E.F.A.C.ip6.arpa
    yml_test.go:169:     PTR: [mx.example.com]
    yml_test.go:167:   domain 1.2.3.4.gladstone.philip.user.example.com
    yml_test.go:169:     A: [127.0.0.2]
    yml_test.go:167:   domain e1e.example.com
    yml_test.go:169:     SPF: [v=spf1 exists:foo%(ir).sbl.example.com ?all]
    yml_test.go:167:   domain e1a.example.com
    yml_test.go:169:     SPF: [v=spf1 a:macro%%percent%_%_space%-url-space.example.com -all]
    yml_test.go:167:   domain mx.example.com
    yml_test.go:169:     A: [192.168.218.41]
    yml_test.go:169:     A: [192.168.218.42]
    yml_test.go:169:     AAAA: [CAFE:BABE::2]
    yml_test.go:169:     AAAA: [CAFE:BABE::3]
    yml_test.go:167:   domain e8.example.com
    yml_test.go:169:     SPF: [v=spf1 -all exp=msg8.%{D2}]
    yml_test.go:167:   domain example.com.d.spf.example.com
    yml_test.go:169:     SPF: [v=spf1 redirect=a.spf.example.com]
    yml_test.go:167:   domain o.spf.example.com
    yml_test.go:169:     SPF: [v=spf1 ip4:192.168.218.40]
    yml_test.go:167:   domain example.com
    yml_test.go:169:     A: [192.168.90.76]
    yml_test.go:169:     SPF: [v=spf1 redirect=%{d}.d.spf.example.com.]
    yml_test.go:167:   domain msg.example.com
    yml_test.go:169:     TXT: [This is a test.]
    yml_test.go:167:   domain e10.example.com
    yml_test.go:169:     SPF: [v=spf1 -include:_spfh.%{d2} ip4:1.2.3.0/24 -all]
    yml_test.go:167:   domain e4.example.com
    yml_test.go:169:     SPF: [v=spf1 -all exp=e4msg.example.com]
    yml_test.go:167:   domain e4msg.example.com
    yml_test.go:169:     TXT: [%{c} is queried as %{ir}.%{v}.arpa]
    yml_test.go:167:   domain exp.example.com
    yml_test.go:169:     SPF: [v=spf1 exp=msg.example.com. -all]
    yml_test.go:167:   domain macro%percent  space%20url-space.example.com
    yml_test.go:169:     A: [1.2.3.4]
    yml_test.go:167:   domain 40.218.168.192.example.com
    yml_test.go:169:     TXT: [Connections from %{c} not authorized.]
    yml_test.go:167:   domain 40.218.168.192.in-addr.arpa
    yml_test.go:169:     PTR: [mx.example.com]
    yml_test.go:167:   domain mx.e7.example.com.should.example.com
    yml_test.go:169:     A: [127.0.0.2]
    yml_test.go:167:   domain e9.example.com
    yml_test.go:169:     SPF: [v=spf1 a:%{H} -all]
    yml_test.go:167:   domain a.spf.example.com
    yml_test.go:169:     SPF: [v=spf1 include:o.spf.example.com. ~all]
    yml_test.go:167:   domain e1.example.com
    yml_test.go:169:     SPF: [v=spf1 -exists:%(ir).sbl.example.com ?all]
    yml_test.go:167:   domain somewhat.long.exp.example.com.somewhat.long.exp.example.com.somewhat.long.exp.example.com.somewhat.long.exp.example.com.somewhat.long.exp.example.com.somewhat.long.exp.example.com.somewhat.long.exp.example.com.somewhat.long.exp.example.com.example.com
    yml_test.go:169:     TXT: [Congratulations!  That was tricky.]
    yml_test.go:167:   domain _spfh.example.com
    yml_test.go:169:     SPF: [v=spf1 -a:%{h} +all]
    yml_test.go:167:   domain e11.example.com
    yml_test.go:169:     SPF: [v=spf1 exists:%{i}.%{l2r-}.user.%{d2}]
    yml_test.go:167:   domain e6.example.com
    yml_test.go:169:     SPF: [v=spf1 -all exp=e6msg.example.com]
    yml_test.go:167:   domain 42.218.168.192.in-addr.arpa
    yml_test.go:169:     PTR: [mx.example.com]
    yml_test.go:169:     PTR: [mx.e7.example.com]
    yml_test.go:167:   domain mx.e7.example.com
    yml_test.go:169:     A: [192.168.218.42]
    yml_test.go:167:   domain mx.example.com.ok.example.com
    yml_test.go:169:     A: [127.0.0.2]
    yml_test.go:167:   domain msg8.example.com
    yml_test.go:169:     TXT: [http://example.com/why.html?l=%{L}]
    yml_test.go:167:   domain bar.foo.user.example.com
    yml_test.go:169:     A: [127.0.0.2]
    yml_test.go:251:   test undef-macro
    yml_test.go:253:     checkhost cafe:babe::c0a8:da28 test@e5.example.com
    spf.go:308: check "e5.example.com" 0 0
    spf.go:330: dns record "v=spf1 a:%{a}.example.com -all"
    spf.go:747: masks on "a:%{a}.example.com", "e5.example.com": "%{a}.example.com" [<nil>, <nil>]
    spf.go:923: macro "a": []
    spf.go:406: "a:%{a}.example.com" permerror, invalid macro
    yml_test.go:260:       success: permerror, invalid macro  [undef-macro]
    yml_test.go:251:   test p-macro-ip4-novalid
    yml_test.go:253:     checkhost 192.168.218.40 test@e6.example.com
    spf.go:308: check "e6.example.com" 0 0
    spf.go:330: dns record "v=spf1 -all exp=e6msg.example.com"
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [p-macro-ip4-novalid]
    yml_test.go:251:   test p-macro-ip6-valid
    yml_test.go:253:     checkhost cafe:babe::3 test@e6.example.com
    spf.go:308: check "e6.example.com" 0 0
    spf.go:330: dns record "v=spf1 -all exp=e6msg.example.com"
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [p-macro-ip6-valid]
    yml_test.go:251:   test trailing-dot-exp
    yml_test.go:253:     checkhost 192.168.218.40 test@exp.example.com
    spf.go:308: check "exp.example.com" 0 0
    spf.go:330: dns record "v=spf1 exp=msg.example.com. -all"
    spf.go:430: exp= ignored
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [trailing-dot-exp]
    yml_test.go:251:   test invalid-macro-char
    yml_test.go:253:     checkhost 192.168.218.40 test@e1.example.com
    spf.go:308: check "e1.example.com" 0 0
    spf.go:330: dns record "v=spf1 -exists:%(ir).sbl.example.com ?all"
    spf.go:426: "exists:%(ir).sbl.example.com" permerror, invalid macro
    yml_test.go:260:       success: permerror, invalid macro  [invalid-macro-char]
    yml_test.go:251:   test domain-name-truncation
    yml_test.go:253:     checkhost 192.168.218.40 test@somewhat.long.exp.example.com
    spf.go:308: check "somewhat.long.exp.example.com" 0 0
    spf.go:330: dns record "v=spf1 -all exp=foobar.%{o}.%{o}.%{o}.%{o}.%{o}.%{o}.%{o}.%{o}.example.com"
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [domain-name-truncation]
    yml_test.go:251:   test v-macro-ip6
    yml_test.go:253:     checkhost cafe:babe::1 test@e4.example.com
    spf.go:308: check "e4.example.com" 0 0
    spf.go:330: dns record "v=spf1 -all exp=e4msg.example.com"
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [v-macro-ip6]
    yml_test.go:251:   test upper-macro
    yml_test.go:253:     checkhost 192.168.218.42 jack&jill=up@e8.example.com
    spf.go:308: check "e8.example.com" 0 0
    spf.go:330: dns record "v=spf1 -all exp=msg8.%{D2}"
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [upper-macro]
    yml_test.go:251:   test invalid-hello-macro
    yml_test.go:253:     checkhost 192.168.218.40 test@e9.example.com
    spf.go:308: check "e9.example.com" 0 0
    spf.go:330: dns record "v=spf1 a:%{H} -all"
    spf.go:747: masks on "a:%{H}", "e9.example.com": "%{H}" [<nil>, <nil>]
    spf.go:923: macro "H": ["H" "H" "" "" ""]
    spf.go:1020: macro expanded "%{H}" to "JUMPIN%27+JUPITER"
    spf.go:514: void lookup: nxdomain
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [invalid-hello-macro]
    yml_test.go:251:   test macro-reverse-split-on-dash
    yml_test.go:253:     checkhost 1.2.3.4 philip-gladstone-test@e11.example.com
    spf.go:308: check "e11.example.com" 0 0
    spf.go:330: dns record "v=spf1 exists:%{i}.%{l2r-}.user.%{d2}"
    spf.go:923: macro "i": ["i" "i" "" "" ""]
    spf.go:923: macro "l2r-": ["l2r-" "l" "2" "r" "-"]
    spf.go:923: macro "d2": ["d2" "d" "2" "" ""]
    spf.go:1020: macro expanded "%{i}.%{l2r-}.user.%{d2}" to "1.2.3.4.gladstone.philip.user.example.com"
    spf.go:640: exists match: 127.0.0.2
    spf.go:426: "exists:%{i}.%{l2r-}.user.%{d2}" pass, matched exists
    yml_test.go:260:       success: pass, matched exists  [macro-reverse-split-on-dash]
    yml_test.go:251:   test macro-multiple-delimiters
    yml_test.go:253:     checkhost 1.2.3.4 foo-bar+zip+quux@e12.example.com
    spf.go:308: check "e12.example.com" 0 0
    spf.go:330: dns record "v=spf1 exists:%{l2r+-}.user.%{d2}"
    spf.go:923: macro "l2r+-": ["l2r+-" "l" "2" "r" "+-"]
    spf.go:923: macro "d2": ["d2" "d" "2" "" ""]
    spf.go:1020: macro expanded "%{l2r+-}.user.%{d2}" to "bar.foo.user.example.com"
    spf.go:640: exists match: 127.0.0.2
    spf.go:426: "exists:%{l2r+-}.user.%{d2}" pass, matched exists
    yml_test.go:260:       success: pass, matched exists  [macro-multiple-delimiters]
    yml_test.go:251:   test exp-txt-macro-char
    yml_test.go:253:     checkhost 192.168.218.40 test@e3.example.com
    spf.go:308: check "e3.example.com" 0 0
    spf.go:330: dns record "v=spf1 -all exp=%{ir}.example.com"
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [exp-txt-macro-char]
    yml_test.go:251:   test p-macro-ip6-novalid
    yml_test.go:253:     checkhost cafe:babe::1 test@e6.example.com
    spf.go:308: check "e6.example.com" 0 0
    spf.go:330: dns record "v=spf1 -all exp=e6msg.example.com"
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [p-macro-ip6-novalid]
    yml_test.go:251:   test require-valid-helo
    yml_test.go:253:     checkhost 1.2.3.4 test@e10.example.com
    spf.go:308: check "e10.example.com" 0 0
    spf.go:330: dns record "v=spf1 -include:_spfh.%{d2} ip4:1.2.3.0/24 -all"
    spf.go:923: macro "d2": ["d2" "d" "2" "" ""]
    spf.go:1020: macro expanded "_spfh.%{d2}" to "_spfh.example.com"
    spf.go:308: check "_spfh.example.com" 1 0
    spf.go:330: dns record "v=spf1 -a:%{h} +all"
    spf.go:747: masks on "a:%{h}", "_spfh.example.com": "%{h}" [<nil>, <nil>]
    spf.go:923: macro "h": ["h" "h" "" "" ""]
    spf.go:1020: macro expanded "%{h}" to "OEMCOMPUTER"
    spf.go:514: void lookup: nxdomain
    spf.go:397: all: pass
    spf.go:401: "include:_spfh.%{d2}" fail, matched all
    yml_test.go:260:       success: fail, matched all  [require-valid-helo]
    yml_test.go:251:   test invalid-trailing-macro-char
    yml_test.go:253:     checkhost 192.168.218.40 test@e1t.example.com
    spf.go:308: check "e1t.example.com" 0 0
    spf.go:330: dns record "v=spf1 exists:foo%.sbl.example.com ?all"
    spf.go:426: "exists:foo%.sbl.example.com" permerror, invalid macro
    yml_test.go:260:       success: permerror, invalid macro  [invalid-trailing-macro-char]
    yml_test.go:251:   test macro-mania-in-domain
    yml_test.go:253:     checkhost 1.2.3.4 test@e1a.example.com
    spf.go:308: check "e1a.example.com" 0 0
    spf.go:330: dns record "v=spf1 a:macro%%percent%_%_space%-url-space.example.com -all"
    spf.go:747: masks on "a:macro%%percent%_%_space%-url-space.example.com", "e1a.example.com": "macro%%percent%_%_space%-url-space.example.com" [<nil>, <nil>]
    spf.go:1020: macro expanded "macro%%percent%_%_space%-url-space.example.com" to "macro%percent  space%20url-space.example.com"
    spf.go:768: a match: 1.2.3.4, 1.2.3.4, [<nil>, <nil>]
    spf.go:406: "a:macro%%percent%_%_space%-url-space.example.com" pass, matched a
    yml_test.go:260:       success: pass, matched a  [macro-mania-in-domain]
    yml_test.go:251:   test v-macro-ip4
    yml_test.go:253:     checkhost 192.168.218.40 test@e4.example.com
    spf.go:308: check "e4.example.com" 0 0
    spf.go:330: dns record "v=spf1 -all exp=e4msg.example.com"
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [v-macro-ip4]
    yml_test.go:251:   test hello-domain-literal
    yml_test.go:253:     checkhost 192.168.218.40 test@e9.example.com
    spf.go:308: check "e9.example.com" 0 0
    spf.go:330: dns record "v=spf1 a:%{H} -all"
    spf.go:747: masks on "a:%{H}", "e9.example.com": "%{H}" [<nil>, <nil>]
    spf.go:923: macro "H": ["H" "H" "" "" ""]
    spf.go:1020: macro expanded "%{H}" to "%5B192.168.218.40%5D"
    spf.go:514: void lookup: nxdomain
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [hello-domain-literal]
    yml_test.go:251:   test trailing-dot-domain
    yml_test.go:253:     checkhost 192.168.218.40 test@example.com
    spf.go:308: check "example.com" 0 0
    spf.go:330: dns record "v=spf1 redirect=%{d}.d.spf.example.com."
    spf.go:923: macro "d": ["d" "d" "" "" ""]
    spf.go:1020: macro expanded "%{d}.d.spf.example.com." to "example.com.d.spf.example.com."
    spf.go:308: check "example.com.d.spf.example.com." 1 0
    spf.go:330: dns record "v=spf1 redirect=a.spf.example.com"
    spf.go:308: check "a.spf.example.com" 2 0
    spf.go:330: dns record "v=spf1 include:o.spf.example.com. ~all"
    spf.go:308: check "o.spf.example.com." 3 0
    spf.go:330: dns record "v=spf1 ip4:192.168.218.40"
    spf.go:536: ip match: 192.168.218.40
    spf.go:416: "ip4:192.168.218.40" pass, matched ip
    spf.go:401: "include:o.spf.example.com." pass, matched ip
    spf.go:434: "redirect=a.spf.example.com": pass, matched ip
    spf.go:434: "redirect=%{d}.d.spf.example.com.": pass, matched ip
    yml_test.go:260:       success: pass, matched ip  [trailing-dot-domain]
    yml_test.go:251:   test invalid-embedded-macro-char
    yml_test.go:253:     checkhost 192.168.218.40 test@e1e.example.com
    spf.go:308: check "e1e.example.com" 0 0
    spf.go:330: dns record "v=spf1 exists:foo%(ir).sbl.example.com ?all"
    spf.go:426: "exists:foo%(ir).sbl.example.com" permerror, invalid macro
    yml_test.go:260:       success: permerror, invalid macro  [invalid-embedded-macro-char]
    yml_test.go:251:   test p-macro-ip4-valid
    yml_test.go:253:     checkhost 192.168.218.41 test@e6.example.com
    spf.go:308: check "e6.example.com" 0 0
    spf.go:330: dns record "v=spf1 -all exp=e6msg.example.com"
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [p-macro-ip4-valid]
    yml_test.go:162: suite: Processing limits
    yml_test.go:167:   domain e1.example.com
    yml_test.go:169:     SPF: [v=spf1 ip4:1.1.1.1 redirect=e1.example.com]
    yml_test.go:169:     A: [1.2.3.6]
    yml_test.go:167:   domain e5.example.com
    yml_test.go:169:     SPF: [v=spf1 ptr]
    yml_test.go:169:     A: [1.2.3.5]
    yml_test.go:167:   domain e8.example.com
    yml_test.go:169:     SPF: [v=spf1 a include:inc.example.com ip4:1.2.3.4 mx -all]
    yml_test.go:169:     A: [1.2.3.4]
    yml_test.go:167:   domain inc.example.com
    yml_test.go:169:     SPF: [v=spf1 a a a a a a a a]
    yml_test.go:169:     A: [1.2.3.10]
    yml_test.go:167:   domain e10.example.com
    yml_test.go:169:     SPF: [v=spf1 a -all]
    yml_test.go:169:     A: [1.2.3.1]
    yml_test.go:169:     A: [1.2.3.2]
    yml_test.go:169:     A: [1.2.3.3]
    yml_test.go:169:     A: [1.2.3.4]
    yml_test.go:169:     A: [1.2.3.5]
    yml_test.go:169:     A: [1.2.3.6]
    yml_test.go:169:     A: [1.2.3.7]
    yml_test.go:169:     A: [1.2.3.8]
    yml_test.go:169:     A: [1.2.3.9]
    yml_test.go:169:     A: [1.2.3.10]
    yml_test.go:169:     A: [1.2.3.11]
    yml_test.go:169:     A: [1.2.3.12]
    yml_test.go:167:   domain e6.example.com
    yml_test.go:169:     SPF: [v=spf1 a mx a mx a mx a mx a ptr ip4:1.2.3.4 -all]
    yml_test.go:169:     A: [1.2.3.8]
    yml_test.go:169:     MX: {10 e6.example.com}
    yml_test.go:167:   domain e7.example.com
    yml_test.go:169:     SPF: [v=spf1 a mx a mx a mx a mx a ptr a ip4:1.2.3.4 -all]
    yml_test.go:169:     A: [1.2.3.20]
    yml_test.go:167:   domain e9.example.com
    yml_test.go:169:     SPF: [v=spf1 a include:inc.example.com a ip4:1.2.3.4 -all]
    yml_test.go:169:     A: [1.2.3.21]
    yml_test.go:167:   domain mail.example.com
    yml_test.go:169:     A: [1.2.3.4]
    yml_test.go:167:   domain e2.example.com
    yml_test.go:169:     SPF: [v=spf1 include:e3.example.com]
    yml_test.go:169:     A: [1.2.3.7]
    yml_test.go:167:   domain e3.example.com
    yml_test.go:169:     SPF: [v=spf1 include:e2.example.com]
    yml_test.go:169:     A: [1.2.3.8]
    yml_test.go:167:   domain e4.example.com
    yml_test.go:169:     SPF: [v=spf1 mx]
    yml_test.go:169:     MX: {0 mail.example.com}
    yml_test.go:169:     MX: {1 mail.example.com}
    yml_test.go:169:     MX: {2 mail.example.com}
    yml_test.go:169:     MX: {3 mail.example.com}
    yml_test.go:169:     MX: {4 mail.example.com}
    yml_test.go:169:     MX: {5 mail.example.com}
    yml_test.go:169:     MX: {6 mail.example.com}
    yml_test.go:169:     MX: {7 mail.example.com}
    yml_test.go:169:     MX: {8 mail.example.com}
    yml_test.go:169:     MX: {9 mail.example.com}
    yml_test.go:169:     MX: {10 e4.example.com}
    yml_test.go:169:     A: [1.2.3.5]
    yml_test.go:167:   domain 5.3.2.1.in-addr.arpa
    yml_test.go:169:     PTR: [e1.example.com.]
    yml_test.go:169:     PTR: [e2.example.com.]
    yml_test.go:169:     PTR: [e3.example.com.]
    yml_test.go:169:     PTR: [e4.example.com.]
    yml_test.go:169:     PTR: [example.com.]
    yml_test.go:169:     PTR: [e6.example.com.]
    yml_test.go:169:     PTR: [e7.example.com.]
    yml_test.go:169:     PTR: [e8.example.com.]
    yml_test.go:169:     PTR: [e9.example.com.]
    yml_test.go:169:     PTR: [e10.example.com.]
    yml_test.go:169:     PTR: [e5.example.com.]
    yml_test.go:251:   test ptr-limit
    yml_test.go:253:     checkhost 1.2.3.5 foo@e5.example.com
    spf.go:308: check "e5.example.com" 0 0
    spf.go:330: dns record "v=spf1 ptr"
    spf.go:579: ptr names trimmed 11 down to 10
    spf.go:591: ptr forward resolution "e1.example.com." -> [{"1.2.3.6" ""}]
    spf.go:591: ptr forward resolution "e2.example.com." -> [{"1.2.3.7" ""}]
    spf.go:591: ptr forward resolution "e3.example.com." -> [{"1.2.3.8" ""}]
    spf.go:591: ptr forward resolution "e4.example.com." -> [{"1.2.3.5" ""}]
    spf.go:591: ptr forward resolution "e6.example.com." -> [{"1.2.3.8" ""}]
    spf.go:591: ptr forward resolution "e7.example.com." -> [{"1.2.3.20" ""}]
    spf.go:591: ptr forward resolution "e8.example.com." -> [{"1.2.3.4" ""}]
    spf.go:591: ptr forward resolution "e9.example.com." -> [{"1.2.3.21" ""}]
    spf.go:591: ptr forward resolution "e10.example.com." -> [{"1.2.3.1" ""} {"1.2.3.2" ""} {"1.2.3.3" ""} {"1.2.3.4" ""} {"1.2.3.5" ""} {"1.2.3.6" ""} {"1.2.3.7" ""} {"1.2.3.8" ""} {"1.2.3.9" ""} {"1.2.3.10" ""} {"1.2.3.11" ""} {"1.2.3.12" ""}]
    spf.go:600: ptr evaluating "e5.example.com" in ["e1.example.com." "e2.example.com." "e3.example.com." "e4.example.com." "e6.example.com." "e7.example.com." "e8.example.com." "e9.example.com." "e10.example.com."]
    spf.go:444: fallback to neutral
    yml_test.go:260:       success: neutral, <nil>  [ptr-limit]
    yml_test.go:251:   test false-a-limit
    yml_test.go:253:     checkhost 1.2.3.12 foo@e10.example.com
    spf.go:308: check "e10.example.com" 0 0
    spf.go:330: dns record "v=spf1 a -all"
    spf.go:747: masks on "a", "e10.example.com": "e10.example.com" [<nil>, <nil>]
    spf.go:768: a match: 1.2.3.12, 1.2.3.12, [<nil>, <nil>]
    spf.go:406: "a" pass, matched a
    yml_test.go:260:       success: pass, matched a  [false-a-limit]
    yml_test.go:251:   test mech-over-limit
    yml_test.go:253:     checkhost 1.2.3.4 foo@e7.example.com
    spf.go:308: check "e7.example.com" 0 0
    spf.go:330: dns record "v=spf1 a mx a mx a mx a mx a ptr a ip4:1.2.3.4 -all"
    spf.go:747: masks on "a", "e7.example.com": "e7.example.com" [<nil>, <nil>]
    spf.go:780: masks on "mx", "e7.example.com": "e7.example.com" [<nil>, <nil>]
    spf.go:514: void lookup: nxdomain
    spf.go:747: masks on "a", "e7.example.com": "e7.example.com" [<nil>, <nil>]
    spf.go:780: masks on "mx", "e7.example.com": "e7.example.com" [<nil>, <nil>]
    spf.go:514: void lookup: nxdomain
    spf.go:747: masks on "a", "e7.example.com": "e7.example.com" [<nil>, <nil>]
    spf.go:780: masks on "mx", "e7.example.com": "e7.example.com" [<nil>, <nil>]
    spf.go:514: void lookup: nxdomain
    spf.go:378: void lookup limit reached
    yml_test.go:260:       success: permerror, void lookup limit reached  [mech-over-limit]
    yml_test.go:251:   test include-over-limit
    yml_test.go:253:     checkhost 1.2.3.4 foo@e9.example.com
    spf.go:308: check "e9.example.com" 0 0
    spf.go:330: dns record "v=spf1 a include:inc.example.com a ip4:1.2.3.4 -all"
    spf.go:747: masks on "a", "e9.example.com": "e9.example.com" [<nil>, <nil>]
    spf.go:308: check "inc.example.com" 2 0
    spf.go:330: dns record "v=spf1 a a a a a a a a"
    spf.go:747: masks on "a", "inc.example.com": "inc.example.com" [<nil>, <nil>]
    spf.go:747: masks on "a", "inc.example.com": "inc.example.com" [<nil>, <nil>]
    spf.go:747: masks on "a", "inc.example.com": "inc.example.com" [<nil>, <nil>]
    spf.go:747: masks on "a", "inc.example.com": "inc.example.com" [<nil>, <nil>]
    spf.go:747: masks on "a", "inc.example.com": "inc.example.com" [<nil>, <nil>]
    spf.go:747: masks on "a", "inc.example.com": "inc.example.com" [<nil>, <nil>]
    spf.go:747: masks on "a", "inc.example.com": "inc.example.com" [<nil>, <nil>]
    spf.go:747: masks on "a", "inc.example.com": "inc.example.com" [<nil>, <nil>]
    spf.go:444: fallback to neutral
    spf.go:747: masks on "a", "e9.example.com": "e9.example.com" [<nil>, <nil>]
    spf.go:373: lookup limit reached
    yml_test.go:260:       success: permerror, lookup limit reached  [include-over-limit]
    yml_test.go:251:   test redirect-loop
    yml_test.go:253:     checkhost 1.2.3.4 foo@e1.example.com
    spf.go:308: check "e1.example.com" 0 0
    spf.go:330: dns record "v=spf1 ip4:1.1.1.1 redirect=e1.example.com"
    spf.go:308: check "e1.example.com" 1 0
    spf.go:330: dns record "v=spf1 ip4:1.1.1.1 redirect=e1.example.com"
    spf.go:308: check "e1.example.com" 2 0
    spf.go:330: dns record "v=spf1 ip4:1.1.1.1 redirect=e1.example.com"
    spf.go:308: check "e1.example.com" 3 0
    spf.go:330: dns record "v=spf1 ip4:1.1.1.1 redirect=e1.example.com"
    spf.go:308: check "e1.example.com" 4 0
    spf.go:330: dns record "v=spf1 ip4:1.1.1.1 redirect=e1.example.com"
    spf.go:308: check "e1.example.com" 5 0
    spf.go:330: dns record "v=spf1 ip4:1.1.1.1 redirect=e1.example.com"
    spf.go:308: check "e1.example.com" 6 0
    spf.go:330: dns record "v=spf1 ip4:1.1.1.1 redirect=e1.example.com"
    spf.go:308: check "e1.example.com" 7 0
    spf.go:330: dns record "v=spf1 ip4:1.1.1.1 redirect=e1.example.com"
    spf.go:308: check "e1.example.com" 8 0
    spf.go:330: dns record "v=spf1 ip4:1.1.1.1 redirect=e1.example.com"
    spf.go:308: check "e1.example.com" 9 0
    spf.go:330: dns record "v=spf1 ip4:1.1.1.1 redirect=e1.example.com"
    spf.go:308: check "e1.example.com" 10 0
    spf.go:330: dns record "v=spf1 ip4:1.1.1.1 redirect=e1.example.com"
    spf.go:308: check "e1.example.com" 11 0
    spf.go:330: dns record "v=spf1 ip4:1.1.1.1 redirect=e1.example.com"
    spf.go:373: lookup limit reached
    spf.go:434: "redirect=e1.example.com": permerror, lookup limit reached
    spf.go:434: "redirect=e1.example.com": permerror, lookup limit reached
    spf.go:434: "redirect=e1.example.com": permerror, lookup limit reached
    spf.go:434: "redirect=e1.example.com": permerror, lookup limit reached
    spf.go:434: "redirect=e1.example.com": permerror, lookup limit reached
    spf.go:434: "redirect=e1.example.com": permerror, lookup limit reached
    spf.go:434: "redirect=e1.example.com": permerror, lookup limit reached
    spf.go:434: "redirect=e1.example.com": permerror, lookup limit reached
    spf.go:434: "redirect=e1.example.com": permerror, lookup limit reached
    spf.go:434: "redirect=e1.example.com": permerror, lookup limit reached
    spf.go:434: "redirect=e1.example.com": permerror, lookup limit reached
    yml_test.go:260:       success: permerror, lookup limit reached  [redirect-loop]
    yml_test.go:251:   test include-loop
    yml_test.go:253:     checkhost 1.2.3.4 foo@e2.example.com
    spf.go:308: check "e2.example.com" 0 0
    spf.go:330: dns record "v=spf1 include:e3.example.com"
    spf.go:308: check "e3.example.com" 1 0
    spf.go:330: dns record "v=spf1 include:e2.example.com"
    spf.go:308: check "e2.example.com" 2 0
    spf.go:330: dns record "v=spf1 include:e3.example.com"
    spf.go:308: check "e3.example.com" 3 0
    spf.go:330: dns record "v=spf1 include:e2.example.com"
    spf.go:308: check "e2.example.com" 4 0
    spf.go:330: dns record "v=spf1 include:e3.example.com"
    spf.go:308: check "e3.example.com" 5 0
    spf.go:330: dns record "v=spf1 include:e2.example.com"
    spf.go:308: check "e2.example.com" 6 0
    spf.go:330: dns record "v=spf1 include:e3.example.com"
    spf.go:308: check "e3.example.com" 7 0
    spf.go:330: dns record "v=spf1 include:e2.example.com"
    spf.go:308: check "e2.example.com" 8 0
    spf.go:330: dns record "v=spf1 include:e3.example.com"
    spf.go:308: check "e3.example.com" 9 0
    spf.go:330: dns record "v=spf1 include:e2.example.com"
    spf.go:308: check "e2.example.com" 10 0
    spf.go:330: dns record "v=spf1 include:e3.example.com"
    spf.go:308: check "e3.example.com" 11 0
    spf.go:330: dns record "v=spf1 include:e2.example.com"
    spf.go:373: lookup limit reached
    spf.go:401: "include:e3.example.com" permerror, lookup limit reached
    spf.go:401: "include:e2.example.com" permerror, lookup limit reached
    spf.go:401: "include:e3.example.com" permerror, lookup limit reached
    spf.go:401: "include:e2.example.com" permerror, lookup limit reached
    spf.go:401: "include:e3.example.com" permerror, lookup limit reached
    spf.go:401: "include:e2.example.com" permerror, lookup limit reached
    spf.go:401: "include:e3.example.com" permerror, lookup limit reached
    spf.go:401: "include:e2.example.com" permerror, lookup limit reached
    spf.go:401: "include:e3.example.com" permerror, lookup limit reached
    spf.go:401: "include:e2.example.com" permerror, lookup limit reached
    spf.go:401: "include:e3.example.com" permerror, lookup limit reached
    yml_test.go:260:       success: permerror, lookup limit reached  [include-loop]
    yml_test.go:251:   test mx-limit
    yml_test.go:253:     checkhost 1.2.3.5 foo@e4.example.com
    spf.go:308: check "e4.example.com" 0 0
    spf.go:330: dns record "v=spf1 mx"
    spf.go:780: masks on "mx", "e4.example.com": "e4.example.com" [<nil>, <nil>]
    spf.go:411: "mx" permerror, too many MX records
    yml_test.go:260:       success: permerror, too many MX records  [mx-limit]
    yml_test.go:251:   test mech-at-limit
    yml_test.go:253:     checkhost 1.2.3.4 foo@e6.example.com
    spf.go:308: check "e6.example.com" 0 0
    spf.go:330: dns record "v=spf1 a mx a mx a mx a mx a ptr ip4:1.2.3.4 -all"
    spf.go:747: masks on "a", "e6.example.com": "e6.example.com" [<nil>, <nil>]
    spf.go:780: masks on "mx", "e6.example.com": "e6.example.com" [<nil>, <nil>]
    spf.go:828: mx ips: [1.2.3.8]
    spf.go:747: masks on "a", "e6.example.com": "e6.example.com" [<nil>, <nil>]
    spf.go:780: masks on "mx", "e6.example.com": "e6.example.com" [<nil>, <nil>]
    spf.go:828: mx ips: [1.2.3.8]
    spf.go:747: masks on "a", "e6.example.com": "e6.example.com" [<nil>, <nil>]
    spf.go:780: masks on "mx", "e6.example.com": "e6.example.com" [<nil>, <nil>]
    spf.go:828: mx ips: [1.2.3.8]
    spf.go:747: masks on "a", "e6.example.com": "e6.example.com" [<nil>, <nil>]
    spf.go:780: masks on "mx", "e6.example.com": "e6.example.com" [<nil>, <nil>]
    spf.go:828: mx ips: [1.2.3.8]
    spf.go:747: masks on "a", "e6.example.com": "e6.example.com" [<nil>, <nil>]
    spf.go:514: void lookup: nxdomain
    spf.go:536: ip match: 1.2.3.4
    spf.go:416: "ip4:1.2.3.4" pass, matched ip
    yml_test.go:260:       success: pass, matched ip  [mech-at-limit]
    yml_test.go:251:   test include-at-limit
    yml_test.go:253:     checkhost 1.2.3.4 foo@e8.example.com
    spf.go:308: check "e8.example.com" 0 0
    spf.go:330: dns record "v=spf1 a include:inc.example.com ip4:1.2.3.4 mx -all"
    spf.go:747: masks on "a", "e8.example.com": "e8.example.com" [<nil>, <nil>]
    spf.go:768: a match: 1.2.3.4, 1.2.3.4, [<nil>, <nil>]
    spf.go:406: "a" pass, matched a
    yml_test.go:260:       success: pass, matched a  [include-at-limit]
--- PASS: TestRFC4408 (0.03s)
=== RUN   TestRFC7208
    yml_test.go:162: suite: Initial processing
    yml_test.go:167:   domain exp.example.net
    yml_test.go:169:     TXT: [%{l}]
    yml_test.go:167:   domain example.net
    yml_test.go:169:     SPF: [v=spf1 -all exp=exp.example.net]
    yml_test.go:167:   domain null.example.com
    yml_test.go:169:     SPF: [v=spf1 ip4: 192.0.2.5 -all]
    yml_test.go:169:     <empty>
    yml_test.go:167:   domain ctrl.example.com
    yml_test.go:169:     SPF: [v=spf1 a:ctrl.example.com
ptr -all]
    yml_test.go:169:     A: [192.0.2.3]
    yml_test.go:167:   domain hosed3.example.com
    yml_test.go:169:     SPF: [v=spf1 a:example.net –all]
    yml_test.go:167:   domain nothosed.example.com
    yml_test.go:169:     SPF: [v=spf1 a:example.net -all]
    yml_test.go:169:     SPF: [–]
    yml_test.go:167:   domain fine.example.com
    yml_test.go:169:     SPF: [v=spf1 a  -all]
    yml_test.go:167:   domain a.example.net
    yml_test.go:169:     SPF: [v=spf1 -all exp=exp.example.net]
    yml_test.go:167:   domain a12345678901234567890123456789012345678901234567890123456789012.example.com
    yml_test.go:169:     SPF: [v=spf1 -all]
    yml_test.go:167:   domain hosed.example.com
    yml_test.go:169:     SPF: [v=spf1 a:garbage.example.net -all]
    yml_test.go:167:   domain hosed2.example.com
    yml_test.go:169:     SPF: [v=spf1 €a:example.net -all]
    yml_test.go:167:   domain trail.example.com
    yml_test.go:169:     SPF: [v=spf1 a -all ]
    yml_test.go:167:   domain badip.example.com
    yml_test.go:169:     SPF: [v=spf1 ip4:192.0.2.5
         include:spf.protection.outlook.com ~all]
    yml_test.go:167:   domain example.com
    yml_test.go:169:     TIMEOUT
    yml_test.go:251:   test non-ascii-non-spf
    yml_test.go:253:     checkhost 1.2.3.4 foobar@nothosed.example.com
    spf.go:308: check "nothosed.example.com" 0 0
    spf.go:330: dns record "v=spf1 a:example.net -all"
    spf.go:747: masks on "a:example.net", "nothosed.example.com": "example.net" [<nil>, <nil>]
    spf.go:514: void lookup: nxdomain
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [non-ascii-non-spf]
    yml_test.go:251:   test two-spaces
    yml_test.go:253:     checkhost 1.2.3.4 actually@fine.example.com
    spf.go:308: check "fine.example.com" 0 0
    spf.go:330: dns record "v=spf1 a  -all"
    spf.go:747: masks on "a", "fine.example.com": "fine.example.com" [<nil>, <nil>]
    spf.go:514: void lookup: nxdomain
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [two-spaces]
    yml_test.go:251:   test toolonglabel
    yml_test.go:253:     checkhost 1.2.3.5 lyme.eater@A123456789012345678901234567890123456789012345678901234567890123.example.com
    spf.go:308: check "A123456789012345678901234567890123456789012345678901234567890123.example.com" 0 0
    spf.go:314: dns domain not found: lookup : domain not found (for testing)
    yml_test.go:260:       success: none, no DNS record found  [toolonglabel]
    yml_test.go:251:   test emptylabel
    yml_test.go:253:     checkhost 1.2.3.5 lyme.eater@A...example.com
    spf.go:308: check "A...example.com" 0 0
    spf.go:314: dns domain not found: lookup : domain not found (for testing)
    yml_test.go:260:       success: none, no DNS record found  [emptylabel]
    yml_test.go:251:   test helo-not-fqdn
    yml_test.go:253:     checkhost 1.2.3.5 
    spf.go:308: check "A2345678" 0 0
    spf.go:314: dns domain not found: lookup : domain not found (for testing)
    yml_test.go:260:       success: none, no DNS record found  [helo-not-fqdn]
    yml_test.go:251:   test non-ascii-result
    yml_test.go:253:     checkhost 1.2.3.4 foobar@hosed3.example.com
    spf.go:308: check "hosed3.example.com" 0 0
    spf.go:330: dns record "v=spf1 a:example.net \u0096all"
    spf.go:747: masks on "a:example.net", "hosed3.example.com": "example.net" [<nil>, <nil>]
    spf.go:514: void lookup: nxdomain
    spf.go:437: unknown field, permerror
    yml_test.go:260:       success: permerror, unknown field  [non-ascii-result]
    yml_test.go:251:   test null-text
    yml_test.go:253:     checkhost 192.0.2.5 silly@null.example.com
    spf.go:308: check "null.example.com" 0 0
    spf.go:330: dns record "v=spf1 ip4:192.0.2.5 -all"
    spf.go:536: ip match: 192.0.2.5
    spf.go:416: "ip4:192.0.2.5" pass, matched ip
    yml_test.go:260:       success: pass, matched ip  [null-text]
    yml_test.go:251:   test badip4
    yml_test.go:253:     checkhost 192.0.2.5 oops@badip.example.com
    spf.go:308: check "badip.example.com" 0 0
    spf.go:330: dns record "v=spf1 ip4:192.0.2.5\n include:spf.protection.outlook.com ~all"
    spf.go:416: "ip4:192.0.2.5\n" permerror, invalid ipX value
    yml_test.go:260:       success: permerror, invalid ipX value  [badip4]
    yml_test.go:251:   test longlabel
    yml_test.go:253:     checkhost 1.2.3.5 lyme.eater@A12345678901234567890123456789012345678901234567890123456789012.example.com
    spf.go:308: check "A12345678901234567890123456789012345678901234567890123456789012.example.com" 0 0
    spf.go:330: dns record "v=spf1 -all"
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [longlabel]
    yml_test.go:251:   test helo-domain-literal
    yml_test.go:253:     checkhost 1.2.3.5 
    spf.go:308: check "[1.2.3.5]" 0 0
    spf.go:314: dns domain not found: lookup : domain not found (for testing)
    yml_test.go:260:       success: none, no DNS record found  [helo-domain-literal]
    yml_test.go:251:   test nolocalpart
    yml_test.go:253:     checkhost 1.2.3.4 @example.net
    spf.go:308: check "example.net" 0 0
    spf.go:330: dns record "v=spf1 -all exp=exp.example.net"
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [nolocalpart]
    yml_test.go:251:   test trailing-space
    yml_test.go:253:     checkhost 192.0.2.5 silly@trail.example.com
    spf.go:308: check "trail.example.com" 0 0
    spf.go:330: dns record "v=spf1 a -all "
    spf.go:747: masks on "a", "trail.example.com": "trail.example.com" [<nil>, <nil>]
    spf.go:514: void lookup: nxdomain
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [trailing-space]
    yml_test.go:251:   test domain-literal
    yml_test.go:253:     checkhost 1.2.3.5 foo@[1.2.3.5]
    spf.go:308: check "[1.2.3.5]" 0 0
    spf.go:314: dns domain not found: lookup : domain not found (for testing)
    yml_test.go:260:       success: none, no DNS record found  [domain-literal]
    yml_test.go:162: suite: Record lookup
    yml_test.go:167:   domain both.example.net
    yml_test.go:169:     TXT: [v=spf1 -all]
    yml_test.go:169:     SPF: [v=spf1 -all]
    yml_test.go:167:   domain txtonly.example.net
    yml_test.go:169:     TXT: [v=spf1 -all]
    yml_test.go:167:   domain spfonly.example.net
    yml_test.go:169:     SPF: [v=spf1 -all]
    yml_test.go:169:     TXT: [NONE]
    yml_test.go:167:   domain spftimeout.example.net
    yml_test.go:169:     TXT: [v=spf1 -all]
    yml_test.go:169:     TIMEOUT
    yml_test.go:167:   domain txttimeout.example.net
    yml_test.go:169:     SPF: [v=spf1 -all]
    yml_test.go:169:     TXT: [NONE]
    yml_test.go:169:     TIMEOUT
    yml_test.go:167:   domain nospftxttimeout.example.net
    yml_test.go:169:     SPF: [v=spf3 !a:yahoo.com -all]
    yml_test.go:169:     TXT: [NONE]
    yml_test.go:169:     TIMEOUT
    yml_test.go:167:   domain alltimeout.example.net
    yml_test.go:169:     TIMEOUT
    yml_test.go:251:   test both
    yml_test.go:253:     checkhost 1.2.3.4 foo@both.example.net
    spf.go:308: check "both.example.net" 0 0
    spf.go:330: dns record "v=spf1 -all"
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [both]
    yml_test.go:251:   test txtonly
    yml_test.go:253:     checkhost 1.2.3.4 foo@txtonly.example.net
    spf.go:308: check "txtonly.example.net" 0 0
    spf.go:330: dns record "v=spf1 -all"
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [txtonly]
    yml_test.go:251:   test spfonly
    yml_test.go:253:     checkhost 1.2.3.4 foo@spfonly.example.net
    spf.go:308: check "spfonly.example.net" 0 0
    spf.go:330: dns record ""
    yml_test.go:260:       success: none, no DNS record found  [spfonly]
    yml_test.go:251:   test txttimeout
    yml_test.go:253:     checkhost 1.2.3.4 foo@txttimeout.example.net
    spf.go:308: check "txttimeout.example.net" 0 0
    spf.go:318: dns temp error: lookup : test timeout error
    yml_test.go:260:       success: temperror, lookup : test timeout error  [txttimeout]
    yml_test.go:251:   test nospftxttimeout
    yml_test.go:253:     checkhost 1.2.3.4 foo@nospftxttimeout.example.net
    spf.go:308: check "nospftxttimeout.example.net" 0 0
    spf.go:318: dns temp error: lookup : test timeout error
    yml_test.go:260:       success: temperror, lookup : test timeout error  [nospftxttimeout]
    yml_test.go:251:   test alltimeout
    yml_test.go:253:     checkhost 1.2.3.4 foo@alltimeout.example.net
    spf.go:308: check "alltimeout.example.net" 0 0
    spf.go:318: dns temp error: lookup : test timeout error
    yml_test.go:260:       success: temperror, lookup : test timeout error  [alltimeout]
    yml_test.go:162: suite: Selecting records
    yml_test.go:167:   domain example2.com
    yml_test.go:169:     SPF: [v=spf1 mx]
    yml_test.go:167:   domain example5.com
    yml_test.go:169:     SPF: [v=spf1 +all]
    yml_test.go:169:     TXT: [v=spf1 -all]
    yml_test.go:169:     TXT: [v=spf1 +all]
    yml_test.go:167:   domain example7.com
    yml_test.go:169:     SPF: [v=spf1 -all]
    yml_test.go:169:     SPF: [v=spf1 -all]
    yml_test.go:167:   domain example8.com
    yml_test.go:169:     SPF: [V=spf1 -all]
    yml_test.go:169:     SPF: [v=spf1 -all]
    yml_test.go:169:     TXT: [v=spf1 +all]
    yml_test.go:167:   domain example9.com
    yml_test.go:169:     SPF: [v=SpF1 ~all]
    yml_test.go:167:   domain example3.com
    yml_test.go:169:     SPF: [v=spf10]
    yml_test.go:169:     SPF: [v=spf1 mx]
    yml_test.go:169:     MX: {0 mail.example1.com}
    yml_test.go:167:   domain example1.com
    yml_test.go:169:     SPF: [v=spf1]
    yml_test.go:167:   domain mail.example1.com
    yml_test.go:169:     A: [1.2.3.4]
    yml_test.go:167:   domain example4.com
    yml_test.go:169:     SPF: [v=spf1 +all]
    yml_test.go:169:     TXT: [v=spf1 -all]
    yml_test.go:167:   domain example6.com
    yml_test.go:169:     SPF: [v=spf1 -all]
    yml_test.go:169:     SPF: [V=sPf1 +all]
    yml_test.go:251:   test multitxt2
    yml_test.go:253:     checkhost 1.2.3.4 foo@example6.com
    spf.go:308: check "example6.com" 0 0
    spf.go:322: multiple dns records
    yml_test.go:260:       success: permerror, multiple matching DNS records  [multitxt2]
    yml_test.go:251:   test multispf2
    yml_test.go:253:     checkhost 1.2.3.4 foo@example8.com
    spf.go:308: check "example8.com" 0 0
    spf.go:330: dns record "v=spf1 +all"
    spf.go:397: all: pass
    yml_test.go:260:       success: pass, matched all  [multispf2]
    yml_test.go:251:   test case-insensitive
    yml_test.go:253:     checkhost 1.2.3.4 foo@example9.com
    spf.go:308: check "example9.com" 0 0
    spf.go:330: dns record "v=SpF1 ~all"
    spf.go:397: all: softfail
    yml_test.go:260:       success: softfail, matched all  [case-insensitive]
    yml_test.go:251:   test nospace1
    yml_test.go:253:     checkhost 1.2.3.4 foo@example2.com
    spf.go:308: check "example2.com" 0 0
    spf.go:330: dns record ""
    yml_test.go:260:       success: none, no DNS record found  [nospace1]
    yml_test.go:251:   test empty
    yml_test.go:253:     checkhost 1.2.3.4 foo@example1.com
    spf.go:308: check "example1.com" 0 0
    spf.go:330: dns record "v=spf1"
    spf.go:444: fallback to neutral
    yml_test.go:260:       success: neutral, <nil>  [empty]
    yml_test.go:251:   test nospace2
    yml_test.go:253:     checkhost 1.2.3.4 foo@example3.com
    spf.go:308: check "example3.com" 0 0
    spf.go:330: dns record "v=spf1 mx"
    spf.go:780: masks on "mx", "example3.com": "example3.com" [<nil>, <nil>]
    spf.go:828: mx ips: [1.2.3.4]
    spf.go:831: mx match: 1.2.3.4, 1.2.3.4, [<nil>, <nil>]
    spf.go:411: "mx" pass, matched mx
    yml_test.go:260:       success: pass, matched mx  [nospace2]
    yml_test.go:251:   test spfoverride
    yml_test.go:253:     checkhost 1.2.3.4 foo@example4.com
    spf.go:308: check "example4.com" 0 0
    spf.go:330: dns record "v=spf1 -all"
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [spfoverride]
    yml_test.go:251:   test multitxt1
    yml_test.go:253:     checkhost 1.2.3.4 foo@example5.com
    spf.go:308: check "example5.com" 0 0
    spf.go:322: multiple dns records
    yml_test.go:260:       success: permerror, multiple matching DNS records  [multitxt1]
    yml_test.go:251:   test multispf1
    yml_test.go:253:     checkhost 1.2.3.4 foo@example7.com
    spf.go:308: check "example7.com" 0 0
    spf.go:322: multiple dns records
    yml_test.go:260:       success: permerror, multiple matching DNS records  [multispf1]
    yml_test.go:251:   test nospf
    yml_test.go:253:     checkhost 1.2.3.4 foo@mail.example1.com
    spf.go:308: check "mail.example1.com" 0 0
    spf.go:314: dns domain not found: lookup : domain not found (for testing)
    yml_test.go:260:       success: none, no DNS record found  [nospf]
    yml_test.go:162: suite: Record evaluation
    yml_test.go:167:   domain t1.example.com
    yml_test.go:169:     SPF: [v=spf1 ip4:1.2.3.4 -all moo]
    yml_test.go:167:   domain t3.example.com
    yml_test.go:169:     SPF: [v=spf1 moo.cow/far_out=man:dog/cat ip4:1.2.3.4 -all]
    yml_test.go:167:   domain t5.example.com
    yml_test.go:169:     SPF: [v=spf1 redirect=t5.example.com ~all]
    yml_test.go:167:   domain t6.example.com
    yml_test.go:169:     SPF: [v=spf1 ip4:1.2.3.4 redirect=t2.example.com]
    yml_test.go:167:   domain t8.example.com
    yml_test.go:169:     SPF: [v=spf1 ip4:1.2.3.4 redirect:t2.example.com]
    yml_test.go:167:   domain t10.example.com
    yml_test.go:169:     SPF: [v=spf1 a:mail.example...com -all]
    yml_test.go:167:   domain t11.example.com
    yml_test.go:169:     SPF: [v=spf1 a:a123456789012345678901234567890123456789012345678901234567890123.example.com -all]
    yml_test.go:167:   domain mail.example.com
    yml_test.go:169:     A: [1.2.3.4]
    yml_test.go:167:   domain t12.example.com
    yml_test.go:169:     SPF: [v=spf1 a:%{H}.bar -all]
    yml_test.go:167:   domain t4.example.com
    yml_test.go:169:     SPF: [v=spf1 moo.cow:far_out=man:dog/cat ip4:1.2.3.4 -all]
    yml_test.go:167:   domain t7.example.com
    yml_test.go:169:     SPF: [v=spf1 ip4:1.2.3.4]
    yml_test.go:167:   domain t9.example.com
    yml_test.go:169:     SPF: [v=spf1 a:foo-bar -all]
    yml_test.go:167:   domain t2.example.com
    yml_test.go:169:     SPF: [v=spf1 moo.cow-far_out=man:dog/cat ip4:1.2.3.4 -all]
    yml_test.go:251:   test invalid-domain-long-via-macro
    yml_test.go:253:     checkhost 1.2.3.4 foo@t12.example.com
    spf.go:308: check "t12.example.com" 0 0
    spf.go:330: dns record "v=spf1 a:%{H}.bar -all"
    spf.go:747: masks on "a:%{H}.bar", "t12.example.com": "%{H}.bar" [<nil>, <nil>]
    spf.go:923: macro "H": ["H" "H" "" "" ""]
    spf.go:1020: macro expanded "%{H}.bar" to "%25%25%25%25%25%25%25%25%25%25%25%25%25%25%25%25%25%25%25%25%25%25.bar"
    spf.go:514: void lookup: nxdomain
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [invalid-domain-long-via-macro]
    yml_test.go:251:   test redirect-after-mechanisms1
    yml_test.go:253:     checkhost 1.2.3.4 foo@t5.example.com
    spf.go:308: check "t5.example.com" 0 0
    spf.go:330: dns record "v=spf1 redirect=t5.example.com ~all"
    spf.go:397: all: softfail
    yml_test.go:260:       success: softfail, matched all  [redirect-after-mechanisms1]
    yml_test.go:251:   test invalid-domain-long
    yml_test.go:253:     checkhost 1.2.3.4 foo@t11.example.com
    spf.go:308: check "t11.example.com" 0 0
    spf.go:330: dns record "v=spf1 a:a123456789012345678901234567890123456789012345678901234567890123.example.com -all"
    spf.go:747: masks on "a:a123456789012345678901234567890123456789012345678901234567890123.example.com", "t11.example.com": "a123456789012345678901234567890123456789012345678901234567890123.example.com" [<nil>, <nil>]
    spf.go:514: void lookup: nxdomain
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [invalid-domain-long]
    yml_test.go:251:   test modifier-charset-bad1
    yml_test.go:253:     checkhost 1.2.3.4 foo@t3.example.com
    spf.go:308: check "t3.example.com" 0 0
    spf.go:330: dns record "v=spf1 moo.cow/far_out=man:dog/cat ip4:1.2.3.4 -all"
    spf.go:437: unknown field, permerror
    yml_test.go:260:       success: permerror, unknown field  [modifier-charset-bad1]
    yml_test.go:251:   test modifier-charset-bad2
    yml_test.go:253:     checkhost 1.2.3.4 foo@t4.example.com
    spf.go:308: check "t4.example.com" 0 0
    spf.go:330: dns record "v=spf1 moo.cow:far_out=man:dog/cat ip4:1.2.3.4 -all"
    spf.go:437: unknown field, permerror
    yml_test.go:260:       success: permerror, unknown field  [modifier-charset-bad2]
    yml_test.go:251:   test default-result
    yml_test.go:253:     checkhost 1.2.3.5 foo@t7.example.com
    spf.go:308: check "t7.example.com" 0 0
    spf.go:330: dns record "v=spf1 ip4:1.2.3.4"
    spf.go:444: fallback to neutral
    yml_test.go:260:       success: neutral, <nil>  [default-result]
    yml_test.go:251:   test invalid-domain-empty-label
    yml_test.go:253:     checkhost 1.2.3.4 foo@t10.example.com
    spf.go:308: check "t10.example.com" 0 0
    spf.go:330: dns record "v=spf1 a:mail.example...com -all"
    spf.go:747: masks on "a:mail.example...com", "t10.example.com": "mail.example...com" [<nil>, <nil>]
    spf.go:514: void lookup: nxdomain
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [invalid-domain-empty-label]
    yml_test.go:162: suite: ALL mechanism syntax
    yml_test.go:167:   domain e3.example.com
    yml_test.go:169:     SPF: [v=spf1 -all/8]
    yml_test.go:167:   domain e4.example.com
    yml_test.go:169:     SPF: [v=spf1 ?all]
    yml_test.go:167:   domain e5.example.com
    yml_test.go:169:     SPF: [v=spf1 all -all]
    yml_test.go:167:   domain mail.example.com
    yml_test.go:169:     A: [1.2.3.4]
    yml_test.go:167:   domain e1.example.com
    yml_test.go:169:     SPF: [v=spf1 -all.]
    yml_test.go:167:   domain e2.example.com
    yml_test.go:169:     SPF: [v=spf1 -all:foobar]
    yml_test.go:251:   test all-arg
    yml_test.go:253:     checkhost 1.2.3.4 foo@e2.example.com
    spf.go:308: check "e2.example.com" 0 0
    spf.go:330: dns record "v=spf1 -all:foobar"
    spf.go:437: unknown field, permerror
    yml_test.go:260:       success: permerror, unknown field  [all-arg]
    yml_test.go:251:   test all-cidr
    yml_test.go:253:     checkhost 1.2.3.4 foo@e3.example.com
    spf.go:308: check "e3.example.com" 0 0
    spf.go:330: dns record "v=spf1 -all/8"
    spf.go:437: unknown field, permerror
    yml_test.go:260:       success: permerror, unknown field  [all-cidr]
    yml_test.go:251:   test all-neutral
    yml_test.go:253:     checkhost 1.2.3.4 foo@e4.example.com
    spf.go:308: check "e4.example.com" 0 0
    spf.go:330: dns record "v=spf1 ?all"
    spf.go:397: all: neutral
    yml_test.go:260:       success: neutral, matched all  [all-neutral]
    yml_test.go:251:   test all-double
    yml_test.go:253:     checkhost 1.2.3.4 foo@e5.example.com
    spf.go:308: check "e5.example.com" 0 0
    spf.go:330: dns record "v=spf1 all -all"
    spf.go:397: all: pass
    yml_test.go:260:       success: pass, matched all  [all-double]
    yml_test.go:251:   test all-dot
    yml_test.go:253:     checkhost 1.2.3.4 foo@e1.example.com
    spf.go:308: check "e1.example.com" 0 0
    spf.go:330: dns record "v=spf1 -all."
    spf.go:437: unknown field, permerror
    yml_test.go:260:       success: permerror, unknown field  [all-dot]
    yml_test.go:162: suite: PTR mechanism syntax
    yml_test.go:167:   domain e3.example.com
    yml_test.go:169:     SPF: [v=spf1 ptr -all]
    yml_test.go:169:     A: [1.2.3.4]
    yml_test.go:169:     AAAA: [CAFE:BABE::1]
    yml_test.go:167:   domain 4.2.0.192.in-addr.arpa
    yml_test.go:169:     PTR: [loop4.example.com.]
    yml_test.go:167:   domain loop4.example.com
    yml_test.go:169:     CNAME: CNAME.example.com.
    yml_test.go:167:   domain e2.example.com
    yml_test.go:169:     SPF: [v=spf1 ptr:example.com -all]
    yml_test.go:167:   domain 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.b.D.0.1.0.0.2.ip6.arpa
    yml_test.go:169:     PTR: [mail.Example.com]
    yml_test.go:167:   domain e4.example.com
    yml_test.go:169:     SPF: [v=spf1 ptr -all]
    yml_test.go:167:   domain mail.example.com
    yml_test.go:169:     A: [1.2.3.4]
    yml_test.go:169:     AAAA: [2001:db8::1]
    yml_test.go:167:   domain 4.3.2.1.in-addr.arpa
    yml_test.go:169:     PTR: [e3.example.com]
    yml_test.go:169:     PTR: [e4.example.com]
    yml_test.go:169:     PTR: [mail.example.com]
    yml_test.go:167:   domain cname.example.com
    yml_test.go:169:     CNAMELOOP
    yml_test.go:167:   domain e1.example.com
    yml_test.go:169:     SPF: [v=spf1 ptr/0 -all]
    yml_test.go:167:   domain 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.E.B.A.B.E.F.A.C.ip6.arpa
    yml_test.go:169:     PTR: [e3.example.com]
    yml_test.go:167:   domain loop.example.com
    yml_test.go:169:     SPF: [v=spf1 ptr]
    yml_test.go:167:   domain e5.example.com
    yml_test.go:169:     SPF: [v=spf1 ptr:]
    yml_test.go:167:   domain e6.example.com
    yml_test.go:169:     SPF: [v=spf1 ptr:example.Com -all]
    yml_test.go:251:   test ptr-cname-loop
    yml_test.go:253:     checkhost 192.0.2.4 postmaster@loop.example.com
    spf.go:308: check "loop.example.com" 0 0
    spf.go:330: dns record "v=spf1 ptr"
    spf.go:600: ptr evaluating "loop.example.com" in []
    spf.go:444: fallback to neutral
    yml_test.go:260:       success: neutral, <nil>  [ptr-cname-loop]
    yml_test.go:251:   test ptr-cidr
    yml_test.go:253:     checkhost 1.2.3.4 foo@e1.example.com
    spf.go:308: check "e1.example.com" 0 0
    spf.go:330: dns record "v=spf1 ptr/0 -all"
    spf.go:437: unknown field, permerror
    yml_test.go:260:       success: permerror, unknown field  [ptr-cidr]
    yml_test.go:251:   test ptr-match-target
    yml_test.go:253:     checkhost 1.2.3.4 foo@e2.example.com
    spf.go:308: check "e2.example.com" 0 0
    spf.go:330: dns record "v=spf1 ptr:example.com -all"
    spf.go:591: ptr forward resolution "e3.example.com." -> [{"1.2.3.4" ""} {"cafe:babe::1" ""}]
    spf.go:591: ptr forward resolution "mail.example.com." -> [{"1.2.3.4" ""} {"2001:db8::1" ""}]
    spf.go:600: ptr evaluating "example.com" in ["e3.example.com." "mail.example.com."]
    spf.go:604: ptr match: "e3.example.com."
    spf.go:421: "ptr:example.com" pass, matched ptr
    yml_test.go:260:       success: pass, matched ptr  [ptr-match-target]
    yml_test.go:251:   test ptr-match-implicit
    yml_test.go:253:     checkhost 1.2.3.4 foo@e3.example.com
    spf.go:308: check "e3.example.com" 0 0
    spf.go:330: dns record "v=spf1 ptr -all"
    spf.go:591: ptr forward resolution "e3.example.com." -> [{"1.2.3.4" ""} {"cafe:babe::1" ""}]
    spf.go:591: ptr forward resolution "mail.example.com." -> [{"1.2.3.4" ""} {"2001:db8::1" ""}]
    spf.go:600: ptr evaluating "e3.example.com" in ["e3.example.com." "mail.example.com."]
    spf.go:604: ptr match: "e3.example.com."
    spf.go:421: "ptr" pass, matched ptr
    yml_test.go:260:       success: pass, matched ptr  [ptr-match-implicit]
    yml_test.go:251:   test ptr-nomatch-invalid
    yml_test.go:253:     checkhost 1.2.3.4 foo@e4.example.com
    spf.go:308: check "e4.example.com" 0 0
    spf.go:330: dns record "v=spf1 ptr -all"
    spf.go:591: ptr forward resolution "e3.example.com." -> [{"1.2.3.4" ""} {"cafe:babe::1" ""}]
    spf.go:591: ptr forward resolution "mail.example.com." -> [{"1.2.3.4" ""} {"2001:db8::1" ""}]
    spf.go:600: ptr evaluating "e4.example.com" in ["e3.example.com." "mail.example.com."]
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [ptr-nomatch-invalid]
    yml_test.go:251:   test ptr-match-ip6
    yml_test.go:253:     checkhost cafe:babe::1 foo@e3.example.com
    spf.go:308: check "e3.example.com" 0 0
    spf.go:330: dns record "v=spf1 ptr -all"
    spf.go:591: ptr forward resolution "e3.example.com." -> [{"1.2.3.4" ""} {"cafe:babe::1" ""}]
    spf.go:600: ptr evaluating "e3.example.com" in ["e3.example.com."]
    spf.go:604: ptr match: "e3.example.com."
    spf.go:421: "ptr" pass, matched ptr
    yml_test.go:260:       success: pass, matched ptr  [ptr-match-ip6]
    yml_test.go:251:   test ptr-empty-domain
    yml_test.go:253:     checkhost 1.2.3.4 foo@e5.example.com
    spf.go:308: check "e5.example.com" 0 0
    spf.go:330: dns record "v=spf1 ptr:"
    spf.go:421: "ptr:" permerror, invalid domain
    yml_test.go:260:       success: permerror, invalid domain  [ptr-empty-domain]
    yml_test.go:251:   test ptr-case-change
    yml_test.go:253:     checkhost 2001:db8::1 bar@e6.example.com
    spf.go:308: check "e6.example.com" 0 0
    spf.go:330: dns record "v=spf1 ptr:example.Com -all"
    spf.go:591: ptr forward resolution "mail.Example.com." -> [{"1.2.3.4" ""} {"2001:db8::1" ""}]
    spf.go:600: ptr evaluating "example.Com" in ["mail.example.com."]
    spf.go:604: ptr match: "mail.example.com."
    spf.go:421: "ptr:example.Com" pass, matched ptr
    yml_test.go:260:       success: pass, matched ptr  [ptr-case-change]
    yml_test.go:162: suite: A mechanism syntax
    yml_test.go:167:   domain e2b.example.com
    yml_test.go:169:     A: [1.1.1.1]
    yml_test.go:169:     SPF: [v=spf1 a//0 -all]
    yml_test.go:167:   domain ipv6.example.com
    yml_test.go:169:     AAAA: [1234::1]
    yml_test.go:169:     A: [1.1.1.1]
    yml_test.go:169:     SPF: [v=spf1 a -all]
    yml_test.go:167:   domain e1.example.com
    yml_test.go:169:     SPF: [v=spf1 a/0 -all]
    yml_test.go:167:   domain e8e.example.com
    yml_test.go:169:     A: [1.2.3.5]
    yml_test.go:169:     AAAA: [2001:db8:1234::dead:beef]
    yml_test.go:169:     SPF: [v=spf1 a/24/64 -all]
    yml_test.go:167:   domain foo:bar/baz.example.com
    yml_test.go:169:     A: [1.2.3.4]
    yml_test.go:167:   domain e12.example.com
    yml_test.go:169:     SPF: [v=spf1 a:example.-com]
    yml_test.go:167:   domain e9.example.com
    yml_test.go:169:     SPF: [v=spf1 a:example.com:8080]
    yml_test.go:167:   domain e10.example.com
    yml_test.go:169:     SPF: [v=spf1 a:foo.example.com/24]
    yml_test.go:167:   domain e5.example.com
    yml_test.go:169:     SPF: [v=spf1 a:abc.123]
    yml_test.go:167:   domain e7.example.com
    yml_test.go:169:     SPF: [v=spf1 a//129 -all]
    yml_test.go:167:   domain e2.example.com
    yml_test.go:169:     A: [1.1.1.1]
    yml_test.go:169:     AAAA: [1234::2]
    yml_test.go:169:     SPF: [v=spf1 a/0 -all]
    yml_test.go:167:   domain e6a.example.com
    yml_test.go:169:     SPF: [v=spf1 a/33 -all]
    yml_test.go:167:   domain e8a.example.com
    yml_test.go:169:     A: [1.2.3.5]
    yml_test.go:169:     AAAA: [2001:db8:1234::dead:beef]
    yml_test.go:169:     SPF: [v=spf1 a/24 -all]
    yml_test.go:167:   domain e8b.example.com
    yml_test.go:169:     A: [1.2.3.5]
    yml_test.go:169:     AAAA: [2001:db8:1234::dead:beef]
    yml_test.go:169:     SPF: [v=spf1 a//64 -all]
    yml_test.go:167:   domain foo.example.com
    yml_test.go:169:     A: [1.1.1.1]
    yml_test.go:169:     A: [1.2.3.5]
    yml_test.go:167:   domain e11.example.com
    yml_test.go:169:     SPF: [v=spf1 a:foo:bar/baz.example.com]
    yml_test.go:167:   domain e6.example.com
    yml_test.go:169:     SPF: [v=spf1 a//33 -all]
    yml_test.go:167:   domain e5b.example.com
    yml_test.go:169:     SPF: [v=spf1 a:museum.]
    yml_test.go:167:   domain mail.example.com
    yml_test.go:169:     A: [1.2.3.4]
    yml_test.go:167:   domain e4.example.com
    yml_test.go:169:     SPF: [v=spf1 a:111.222.33.44]
    yml_test.go:167:   domain e3.example.com
    yml_test.go:169:     SPF: [v=spf1 a:foo.example.com�]
    yml_test.go:167:   domain e5a.example.com
    yml_test.go:169:     SPF: [v=spf1 a:museum]
    yml_test.go:167:   domain e8.example.com
    yml_test.go:169:     A: [1.2.3.5]
    yml_test.go:169:     AAAA: [2001:db8:1234::dead:beef]
    yml_test.go:169:     SPF: [v=spf1 a/24//64 -all]
    yml_test.go:167:   domain e13.example.com
    yml_test.go:169:     SPF: [v=spf1 a:]
    yml_test.go:167:   domain e14.example.com
    yml_test.go:169:     SPF: [v=spf1 a:foo.example.xn--zckzah -all]
    yml_test.go:167:   domain foo.example.xn--zckzah
    yml_test.go:169:     A: [1.2.3.4]
    yml_test.go:167:   domain e2a.example.com
    yml_test.go:169:     AAAA: [1234::1]
    yml_test.go:169:     SPF: [v=spf1 a//0 -all]
    yml_test.go:251:   test a-dual-cidr-ip4-default
    yml_test.go:253:     checkhost 1.2.3.4 foo@e8b.example.com
    spf.go:308: check "e8b.example.com" 0 0
    spf.go:330: dns record "v=spf1 a//64 -all"
    spf.go:747: masks on "a//64", "e8b.example.com": "e8b.example.com" [<nil>, /64]
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [a-dual-cidr-ip4-default]
    yml_test.go:251:   test a-dual-cidr-ip6-match
    yml_test.go:253:     checkhost 2001:db8:1234::cafe:babe foo@e8.example.com
    spf.go:308: check "e8.example.com" 0 0
    spf.go:330: dns record "v=spf1 a/24//64 -all"
    spf.go:747: masks on "a/24//64", "e8.example.com": "e8.example.com" [/24, /64]
    spf.go:768: a match: 2001:db8:1234::cafe:babe, 2001:db8:1234::dead:beef, [/24, /64]
    spf.go:406: "a/24//64" pass, matched a
    yml_test.go:260:       success: pass, matched a  [a-dual-cidr-ip6-match]
    yml_test.go:251:   test a-cidr4-0-ip6
    yml_test.go:253:     checkhost 1234::1 foo@e2.example.com
    spf.go:308: check "e2.example.com" 0 0
    spf.go:330: dns record "v=spf1 a/0 -all"
    spf.go:747: masks on "a/0", "e2.example.com": "e2.example.com" [/0, <nil>]
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [a-cidr4-0-ip6]
    yml_test.go:251:   test a-cidr6-0-ip4mapped
    yml_test.go:253:     checkhost 1.2.3.4 foo@e2a.example.com
    spf.go:308: check "e2a.example.com" 0 0
    spf.go:330: dns record "v=spf1 a//0 -all"
    spf.go:747: masks on "a//0", "e2a.example.com": "e2a.example.com" [<nil>, /0]
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [a-cidr6-0-ip4mapped]
    yml_test.go:251:   test a-dual-cidr-ip4-match
    yml_test.go:253:     checkhost 1.2.3.4 foo@e8.example.com
    spf.go:308: check "e8.example.com" 0 0
    spf.go:330: dns record "v=spf1 a/24//64 -all"
    spf.go:747: masks on "a/24//64", "e8.example.com": "e8.example.com" [/24, /64]
    spf.go:768: a match: 1.2.3.4, 1.2.3.5, [/24, /64]
    spf.go:406: "a/24//64" pass, matched a
    yml_test.go:260:       success: pass, matched a  [a-dual-cidr-ip4-match]
    yml_test.go:251:   test a-bad-cidr6
    yml_test.go:253:     checkhost 1.2.3.4 foo@e7.example.com
    spf.go:308: check "e7.example.com" 0 0
    spf.go:330: dns record "v=spf1 a//129 -all"
    spf.go:747: masks on "a//129", "e7.example.com": "" [<nil>, <nil>]
    spf.go:406: "a//129" permerror, invalid mask
    yml_test.go:260:       success: permerror, invalid mask  [a-bad-cidr6]
    yml_test.go:251:   test a-ip6-dualstack
    yml_test.go:253:     checkhost 1234::1 foo@ipv6.example.com
    spf.go:308: check "ipv6.example.com" 0 0
    spf.go:330: dns record "v=spf1 a -all"
    spf.go:747: masks on "a", "ipv6.example.com": "ipv6.example.com" [<nil>, <nil>]
    spf.go:768: a match: 1234::1, 1234::1, [<nil>, <nil>]
    spf.go:406: "a" pass, matched a
    yml_test.go:260:       success: pass, matched a  [a-ip6-dualstack]
    yml_test.go:251:   test a-cidr6
    yml_test.go:253:     checkhost 1.2.3.4 foo@e6.example.com
    spf.go:308: check "e6.example.com" 0 0
    spf.go:330: dns record "v=spf1 a//33 -all"
    spf.go:747: masks on "a//33", "e6.example.com": "e6.example.com" [<nil>, /33]
    spf.go:514: void lookup: nxdomain
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [a-cidr6]
    yml_test.go:251:   test a-bad-cidr4
    yml_test.go:253:     checkhost 1.2.3.4 foo@e6a.example.com
    spf.go:308: check "e6a.example.com" 0 0
    spf.go:330: dns record "v=spf1 a/33 -all"
    spf.go:747: masks on "a/33", "e6a.example.com": "" [<nil>, <nil>]
    spf.go:406: "a/33" permerror, invalid mask
    yml_test.go:260:       success: permerror, invalid mask  [a-bad-cidr4]
    yml_test.go:251:   test a-multi-ip1
    yml_test.go:253:     checkhost 1.2.3.4 foo@e10.example.com
    spf.go:308: check "e10.example.com" 0 0
    spf.go:330: dns record "v=spf1 a:foo.example.com/24"
    spf.go:747: masks on "a:foo.example.com/24", "e10.example.com": "foo.example.com" [/24, <nil>]
    spf.go:768: a match: 1.2.3.4, 1.2.3.5, [/24, <nil>]
    spf.go:406: "a:foo.example.com/24" pass, matched a
    yml_test.go:260:       success: pass, matched a  [a-multi-ip1]
    yml_test.go:251:   test a-nxdomain
    yml_test.go:253:     checkhost 1.2.3.4 foo@e1.example.com
    spf.go:308: check "e1.example.com" 0 0
    spf.go:330: dns record "v=spf1 a/0 -all"
    spf.go:747: masks on "a/0", "e1.example.com": "e1.example.com" [/0, <nil>]
    spf.go:514: void lookup: nxdomain
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [a-nxdomain]
    yml_test.go:251:   test a-cidr4-0
    yml_test.go:253:     checkhost 1.2.3.4 foo@e2.example.com
    spf.go:308: check "e2.example.com" 0 0
    spf.go:330: dns record "v=spf1 a/0 -all"
    spf.go:747: masks on "a/0", "e2.example.com": "e2.example.com" [/0, <nil>]
    spf.go:768: a match: 1.2.3.4, 1.1.1.1, [/0, <nil>]
    spf.go:406: "a/0" pass, matched a
    yml_test.go:260:       success: pass, matched a  [a-cidr4-0]
    yml_test.go:251:   test a-cidr6-0-ip4
    yml_test.go:253:     checkhost 1.2.3.4 foo@e2a.example.com
    spf.go:308: check "e2a.example.com" 0 0
    spf.go:330: dns record "v=spf1 a//0 -all"
    spf.go:747: masks on "a//0", "e2a.example.com": "e2a.example.com" [<nil>, /0]
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [a-cidr6-0-ip4]
    yml_test.go:251:   test a-dual-cidr-ip4-err
    yml_test.go:253:     checkhost 1.2.3.4 foo@e8e.example.com
    spf.go:308: check "e8e.example.com" 0 0
    spf.go:330: dns record "v=spf1 a/24/64 -all"
    spf.go:747: masks on "a/24/64", "e8e.example.com": "" [<nil>, <nil>]
    spf.go:406: "a/24/64" permerror, invalid mask
    yml_test.go:260:       success: permerror, invalid mask  [a-dual-cidr-ip4-err]
    yml_test.go:251:   test a-multi-ip2
    yml_test.go:253:     checkhost 1.2.3.4 foo@e10.example.com
    spf.go:308: check "e10.example.com" 0 0
    spf.go:330: dns record "v=spf1 a:foo.example.com/24"
    spf.go:747: masks on "a:foo.example.com/24", "e10.example.com": "foo.example.com" [/24, <nil>]
    spf.go:768: a match: 1.2.3.4, 1.2.3.5, [/24, <nil>]
    spf.go:406: "a:foo.example.com/24" pass, matched a
    yml_test.go:260:       success: pass, matched a  [a-multi-ip2]
    yml_test.go:251:   test a-dual-cidr-ip6-default
    yml_test.go:253:     checkhost 2001:db8:1234::cafe:babe foo@e8a.example.com
    spf.go:308: check "e8a.example.com" 0 0
    spf.go:330: dns record "v=spf1 a/24 -all"
    spf.go:747: masks on "a/24", "e8a.example.com": "e8a.example.com" [/24, <nil>]
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [a-dual-cidr-ip6-default]
    yml_test.go:251:   test a-cidr6-0-nxdomain
    yml_test.go:253:     checkhost 1234::1 foo@e2b.example.com
    spf.go:308: check "e2b.example.com" 0 0
    spf.go:330: dns record "v=spf1 a//0 -all"
    spf.go:747: masks on "a//0", "e2b.example.com": "e2b.example.com" [<nil>, /0]
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [a-cidr6-0-nxdomain]
    yml_test.go:251:   test a-dash-in-toplabel
    yml_test.go:253:     checkhost 1.2.3.4 foo@e14.example.com
    spf.go:308: check "e14.example.com" 0 0
    spf.go:330: dns record "v=spf1 a:foo.example.xn--zckzah -all"
    spf.go:747: masks on "a:foo.example.xn--zckzah", "e14.example.com": "foo.example.xn--zckzah" [<nil>, <nil>]
    spf.go:768: a match: 1.2.3.4, 1.2.3.4, [<nil>, <nil>]
    spf.go:406: "a:foo.example.xn--zckzah" pass, matched a
    yml_test.go:260:       success: pass, matched a  [a-dash-in-toplabel]
    yml_test.go:251:   test a-cidr6-0-ip6
    yml_test.go:253:     checkhost 1234::1 foo@e2a.example.com
    spf.go:308: check "e2a.example.com" 0 0
    spf.go:330: dns record "v=spf1 a//0 -all"
    spf.go:747: masks on "a//0", "e2a.example.com": "e2a.example.com" [<nil>, /0]
    spf.go:768: a match: 1234::1, 1234::1, [<nil>, /0]
    spf.go:406: "a//0" pass, matched a
    yml_test.go:260:       success: pass, matched a  [a-cidr6-0-ip6]
    yml_test.go:162: suite: Include mechanism semantics and syntax
    yml_test.go:167:   domain ip8.example.com
    yml_test.go:169:     TIMEOUT
    yml_test.go:167:   domain e1.example.com
    yml_test.go:169:     SPF: [v=spf1 include:ip5.example.com ~all]
    yml_test.go:167:   domain e2.example.com
    yml_test.go:169:     SPF: [v=spf1 include:ip6.example.com all]
    yml_test.go:167:   domain erehwon.example.com
    yml_test.go:169:     TXT: [v=spfl am not an SPF record]
    yml_test.go:167:   domain e3.example.com
    yml_test.go:169:     SPF: [v=spf1 include:ip7.example.com -all]
    yml_test.go:167:   domain mail.example.com
    yml_test.go:169:     A: [1.2.3.4]
    yml_test.go:167:   domain ip5.example.com
    yml_test.go:169:     SPF: [v=spf1 ip4:1.2.3.5 -all]
    yml_test.go:167:   domain ip7.example.com
    yml_test.go:169:     SPF: [v=spf1 ip4:1.2.3.7 ?all]
    yml_test.go:167:   domain e8.example.com
    yml_test.go:169:     SPF: [v=spf1 include: -all]
    yml_test.go:167:   domain e9.example.com
    yml_test.go:169:     SPF: [v=spf1 include:ip5.example.com/24 -all]
    yml_test.go:167:   domain ip6.example.com
    yml_test.go:169:     SPF: [v=spf1 ip4:1.2.3.6 ~all]
    yml_test.go:167:   domain e4.example.com
    yml_test.go:169:     SPF: [v=spf1 include:ip8.example.com -all]
    yml_test.go:167:   domain e5.example.com
    yml_test.go:169:     SPF: [v=spf1 include:e6.example.com -all]
    yml_test.go:167:   domain e6.example.com
    yml_test.go:169:     SPF: [v=spf1 include +all]
    yml_test.go:167:   domain e7.example.com
    yml_test.go:169:     SPF: [v=spf1 include:erehwon.example.com -all]
    yml_test.go:251:   test include-cidr
    yml_test.go:253:     checkhost 1.2.3.4 foo@e9.example.com
    spf.go:308: check "e9.example.com" 0 0
    spf.go:330: dns record "v=spf1 include:ip5.example.com/24 -all"
    spf.go:874: macro contains /
    spf.go:401: "include:ip5.example.com/24" permerror, invalid macro
    yml_test.go:260:       success: permerror, invalid macro  [include-cidr]
    yml_test.go:251:   test include-none
    yml_test.go:253:     checkhost 1.2.3.4 foo@e7.example.com
    spf.go:308: check "e7.example.com" 0 0
    spf.go:330: dns record "v=spf1 include:erehwon.example.com -all"
    spf.go:308: check "erehwon.example.com" 1 0
    spf.go:330: dns record ""
    spf.go:401: "include:erehwon.example.com" permerror, no DNS record found
    yml_test.go:260:       success: permerror, no DNS record found  [include-none]
    yml_test.go:251:   test include-empty-domain
    yml_test.go:253:     checkhost 1.2.3.4 foo@e8.example.com
    spf.go:308: check "e8.example.com" 0 0
    spf.go:330: dns record "v=spf1 include: -all"
    spf.go:308: check "" 1 0
    spf.go:314: dns domain not found: lookup : domain not found (for testing)
    spf.go:401: "include:" permerror, no DNS record found
    yml_test.go:260:       success: permerror, no DNS record found  [include-empty-domain]
    yml_test.go:251:   test include-fail
    yml_test.go:253:     checkhost 1.2.3.4 foo@e1.example.com
    spf.go:308: check "e1.example.com" 0 0
    spf.go:330: dns record "v=spf1 include:ip5.example.com ~all"
    spf.go:308: check "ip5.example.com" 1 0
    spf.go:330: dns record "v=spf1 ip4:1.2.3.5 -all"
    spf.go:397: all: fail
    spf.go:397: all: softfail
    yml_test.go:260:       success: softfail, matched all  [include-fail]
    yml_test.go:251:   test include-temperror
    yml_test.go:253:     checkhost 1.2.3.4 foo@e4.example.com
    spf.go:308: check "e4.example.com" 0 0
    spf.go:330: dns record "v=spf1 include:ip8.example.com -all"
    spf.go:308: check "ip8.example.com" 1 0
    spf.go:318: dns temp error: lookup : test timeout error
    spf.go:401: "include:ip8.example.com" temperror, lookup : test timeout error
    yml_test.go:260:       success: temperror, lookup : test timeout error  [include-temperror]
    yml_test.go:251:   test include-permerror
    yml_test.go:253:     checkhost 1.2.3.4 foo@e5.example.com
    spf.go:308: check "e5.example.com" 0 0
    spf.go:330: dns record "v=spf1 include:e6.example.com -all"
    spf.go:308: check "e6.example.com" 1 0
    spf.go:330: dns record "v=spf1 include +all"
    spf.go:437: unknown field, permerror
    spf.go:401: "include:e6.example.com" permerror, unknown field
    yml_test.go:260:       success: permerror, unknown field  [include-permerror]
    yml_test.go:251:   test include-softfail
    yml_test.go:253:     checkhost 1.2.3.4 foo@e2.example.com
    spf.go:308: check "e2.example.com" 0 0
    spf.go:330: dns record "v=spf1 include:ip6.example.com all"
    spf.go:308: check "ip6.example.com" 1 0
    spf.go:330: dns record "v=spf1 ip4:1.2.3.6 ~all"
    spf.go:397: all: softfail
    spf.go:397: all: pass
    yml_test.go:260:       success: pass, matched all  [include-softfail]
    yml_test.go:251:   test include-neutral
    yml_test.go:253:     checkhost 1.2.3.4 foo@e3.example.com
    spf.go:308: check "e3.example.com" 0 0
    spf.go:330: dns record "v=spf1 include:ip7.example.com -all"
    spf.go:308: check "ip7.example.com" 1 0
    spf.go:330: dns record "v=spf1 ip4:1.2.3.7 ?all"
    spf.go:397: all: neutral
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [include-neutral]
    yml_test.go:251:   test include-syntax-error
    yml_test.go:253:     checkhost 1.2.3.4 foo@e6.example.com
    spf.go:308: check "e6.example.com" 0 0
    spf.go:330: dns record "v=spf1 include +all"
    spf.go:437: unknown field, permerror
    yml_test.go:260:       success: permerror, unknown field  [include-syntax-error]
    yml_test.go:162: suite: MX mechanism syntax
    yml_test.go:167:   domain e2b.example.com
    yml_test.go:169:     A: [1.1.1.1]
    yml_test.go:169:     MX: {0 e2b.example.com}
    yml_test.go:169:     SPF: [v=spf1 mx//0 -all]
    yml_test.go:167:   domain e3.example.com
    yml_test.go:169:     SPF: [v=spf1 mx:foo.example.com�]
    yml_test.go:167:   domain e1.example.com
    yml_test.go:169:     SPF: [v=spf1 mx/0 -all]
    yml_test.go:169:     MX: {0 e1.example.com}
    yml_test.go:167:   domain e9.example.com
    yml_test.go:169:     SPF: [v=spf1 mx:example.com:8080]
    yml_test.go:167:   domain foo1.example.com
    yml_test.go:169:     A: [1.1.1.1]
    yml_test.go:169:     A: [1.2.3.5]
    yml_test.go:167:   domain e13.example.com
    yml_test.go:169:     SPF: [v=spf1 mx: -all]
    yml_test.go:167:   domain mail.example.com
    yml_test.go:169:     A: [1.2.3.4]
    yml_test.go:169:     MX: {0 }
    yml_test.go:169:     SPF: [v=spf1 mx]
    yml_test.go:167:   domain e2.example.com
    yml_test.go:169:     A: [1.1.1.1]
    yml_test.go:169:     AAAA: [1234::2]
    yml_test.go:169:     MX: {0 e2.example.com}
    yml_test.go:169:     SPF: [v=spf1 mx/0 -all]
    yml_test.go:167:   domain e2a.example.com
    yml_test.go:169:     AAAA: [1234::1]
    yml_test.go:169:     MX: {0 e2a.example.com}
    yml_test.go:169:     SPF: [v=spf1 mx//0 -all]
    yml_test.go:167:   domain e4.example.com
    yml_test.go:169:     SPF: [v=spf1 mx]
    yml_test.go:169:     A: [1.2.3.4]
    yml_test.go:167:   domain e5.example.com
    yml_test.go:169:     SPF: [v=spf1 mx:abc.123]
    yml_test.go:167:   domain e7.example.com
    yml_test.go:169:     SPF: [v=spf1 mx//129 -all]
    yml_test.go:167:   domain e12.example.com
    yml_test.go:169:     SPF: [v=spf1 mx:example.-com]
    yml_test.go:167:   domain e6.example.com
    yml_test.go:169:     SPF: [v=spf1 mx//33 -all]
    yml_test.go:167:   domain e6a.example.com
    yml_test.go:169:     SPF: [v=spf1 mx/33 -all]
    yml_test.go:167:   domain e10.example.com
    yml_test.go:169:     SPF: [v=spf1 mx:foo.example.com/24]
    yml_test.go:167:   domain foo.example.com
    yml_test.go:169:     MX: {0 foo1.example.com}
    yml_test.go:167:   domain e11.example.com
    yml_test.go:169:     SPF: [v=spf1 mx:foo:bar/baz.example.com]
    yml_test.go:167:   domain foo:bar/baz.example.com
    yml_test.go:169:     MX: {0 foo:bar/baz.example.com}
    yml_test.go:169:     A: [1.2.3.4]
    yml_test.go:251:   test mx-cidr4-0-ip6
    yml_test.go:253:     checkhost 1234::1 foo@e2.example.com
    spf.go:308: check "e2.example.com" 0 0
    spf.go:330: dns record "v=spf1 mx/0 -all"
    spf.go:780: masks on "mx/0", "e2.example.com": "e2.example.com" [/0, <nil>]
    spf.go:828: mx ips: [1.1.1.1 1234::2]
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [mx-cidr4-0-ip6]
    yml_test.go:251:   test mx-empty
    yml_test.go:253:     checkhost 1.2.3.4 
    spf.go:308: check "mail.example.com" 0 0
    spf.go:330: dns record "v=spf1 mx"
    spf.go:780: masks on "mx", "mail.example.com": "mail.example.com" [<nil>, <nil>]
    spf.go:828: mx ips: []
    spf.go:444: fallback to neutral
    yml_test.go:260:       success: neutral, <nil>  [mx-empty]
    yml_test.go:251:   test mx-implicit
    yml_test.go:253:     checkhost 1.2.3.4 foo@e4.example.com
    spf.go:308: check "e4.example.com" 0 0
    spf.go:330: dns record "v=spf1 mx"
    spf.go:780: masks on "mx", "e4.example.com": "e4.example.com" [<nil>, <nil>]
    spf.go:514: void lookup: nxdomain
    spf.go:444: fallback to neutral
    yml_test.go:260:       success: neutral, <nil>  [mx-implicit]
    yml_test.go:251:   test mx-bad-cidr4
    yml_test.go:253:     checkhost 1.2.3.4 foo@e6a.example.com
    spf.go:308: check "e6a.example.com" 0 0
    spf.go:330: dns record "v=spf1 mx/33 -all"
    spf.go:780: masks on "mx/33", "e6a.example.com": "" [<nil>, <nil>]
    spf.go:411: "mx/33" permerror, invalid mask
    yml_test.go:260:       success: permerror, invalid mask  [mx-bad-cidr4]
    yml_test.go:251:   test mx-cidr6-0-ip4
    yml_test.go:253:     checkhost 1.2.3.4 foo@e2a.example.com
    spf.go:308: check "e2a.example.com" 0 0
    spf.go:330: dns record "v=spf1 mx//0 -all"
    spf.go:780: masks on "mx//0", "e2a.example.com": "e2a.example.com" [<nil>, /0]
    spf.go:828: mx ips: [1234::1]
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [mx-cidr6-0-ip4]
    yml_test.go:251:   test mx-cidr6-0-nxdomain
    yml_test.go:253:     checkhost 1234::1 foo@e2b.example.com
    spf.go:308: check "e2b.example.com" 0 0
    spf.go:330: dns record "v=spf1 mx//0 -all"
    spf.go:780: masks on "mx//0", "e2b.example.com": "e2b.example.com" [<nil>, /0]
    spf.go:828: mx ips: [1.1.1.1]
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [mx-cidr6-0-nxdomain]
    yml_test.go:251:   test mx-cidr6
    yml_test.go:253:     checkhost 1.2.3.4 foo@e6.example.com
    spf.go:308: check "e6.example.com" 0 0
    spf.go:330: dns record "v=spf1 mx//33 -all"
    spf.go:780: masks on "mx//33", "e6.example.com": "e6.example.com" [<nil>, /33]
    spf.go:514: void lookup: nxdomain
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [mx-cidr6]
    yml_test.go:251:   test mx-nxdomain
    yml_test.go:253:     checkhost 1.2.3.4 foo@e1.example.com
    spf.go:308: check "e1.example.com" 0 0
    spf.go:330: dns record "v=spf1 mx/0 -all"
    spf.go:780: masks on "mx/0", "e1.example.com": "e1.example.com" [/0, <nil>]
    spf.go:828: mx ips: []
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [mx-nxdomain]
    yml_test.go:251:   test mx-cidr6-0-ip6
    yml_test.go:253:     checkhost 1234::1 foo@e2a.example.com
    spf.go:308: check "e2a.example.com" 0 0
    spf.go:330: dns record "v=spf1 mx//0 -all"
    spf.go:780: masks on "mx//0", "e2a.example.com": "e2a.example.com" [<nil>, /0]
    spf.go:828: mx ips: [1234::1]
    spf.go:831: mx match: 1234::1, 1234::1, [<nil>, /0]
    spf.go:411: "mx//0" pass, matched mx
    yml_test.go:260:       success: pass, matched mx  [mx-cidr6-0-ip6]
    yml_test.go:251:   test mx-cidr4-0
    yml_test.go:253:     checkhost 1.2.3.4 foo@e2.example.com
    spf.go:308: check "e2.example.com" 0 0
    spf.go:330: dns record "v=spf1 mx/0 -all"
    spf.go:780: masks on "mx/0", "e2.example.com": "e2.example.com" [/0, <nil>]
    spf.go:828: mx ips: [1.1.1.1 1234::2]
    spf.go:831: mx match: 1.2.3.4, 1.1.1.1, [/0, <nil>]
    spf.go:411: "mx/0" pass, matched mx
    yml_test.go:260:       success: pass, matched mx  [mx-cidr4-0]
    yml_test.go:251:   test mx-cidr6-0-ip4mapped
    yml_test.go:253:     checkhost 1.2.3.4 foo@e2a.example.com
    spf.go:308: check "e2a.example.com" 0 0
    spf.go:330: dns record "v=spf1 mx//0 -all"
    spf.go:780: masks on "mx//0", "e2a.example.com": "e2a.example.com" [<nil>, /0]
    spf.go:828: mx ips: [1234::1]
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [mx-cidr6-0-ip4mapped]
    yml_test.go:251:   test mx-bad-cidr6
    yml_test.go:253:     checkhost 1.2.3.4 foo@e7.example.com
    spf.go:308: check "e7.example.com" 0 0
    spf.go:330: dns record "v=spf1 mx//129 -all"
    spf.go:780: masks on "mx//129", "e7.example.com": "" [<nil>, <nil>]
    spf.go:411: "mx//129" permerror, invalid mask
    yml_test.go:260:       success: permerror, invalid mask  [mx-bad-cidr6]
    yml_test.go:251:   test mx-multi-ip1
    yml_test.go:253:     checkhost 1.2.3.4 foo@e10.example.com
    spf.go:308: check "e10.example.com" 0 0
    spf.go:330: dns record "v=spf1 mx:foo.example.com/24"
    spf.go:780: masks on "mx:foo.example.com/24", "e10.example.com": "foo.example.com" [/24, <nil>]
    spf.go:828: mx ips: [1.1.1.1 1.2.3.5]
    spf.go:831: mx match: 1.2.3.4, 1.2.3.5, [/24, <nil>]
    spf.go:411: "mx:foo.example.com/24" pass, matched mx
    yml_test.go:260:       success: pass, matched mx  [mx-multi-ip1]
    yml_test.go:251:   test mx-multi-ip2
    yml_test.go:253:     checkhost 1.2.3.4 foo@e10.example.com
    spf.go:308: check "e10.example.com" 0 0
    spf.go:330: dns record "v=spf1 mx:foo.example.com/24"
    spf.go:780: masks on "mx:foo.example.com/24", "e10.example.com": "foo.example.com" [/24, <nil>]
    spf.go:828: mx ips: [1.1.1.1 1.2.3.5]
    spf.go:831: mx match: 1.2.3.4, 1.2.3.5, [/24, <nil>]
    spf.go:411: "mx:foo.example.com/24" pass, matched mx
    yml_test.go:260:       success: pass, matched mx  [mx-multi-ip2]
    yml_test.go:162: suite: EXISTS mechanism syntax
    yml_test.go:167:   domain err.example.com
    yml_test.go:169:     TIMEOUT
    yml_test.go:167:   domain e2.example.com
    yml_test.go:169:     SPF: [v=spf1 exists]
    yml_test.go:167:   domain e4.example.com
    yml_test.go:169:     SPF: [v=spf1 exists:mail.example.com]
    yml_test.go:167:   domain e6.example.com
    yml_test.go:169:     SPF: [v=spf1 exists:err.example.com -all]
    yml_test.go:167:   domain mail.example.com
    yml_test.go:169:     A: [1.2.3.4]
    yml_test.go:167:   domain mail6.example.com
    yml_test.go:169:     AAAA: [CAFE:BABE::4]
    yml_test.go:167:   domain e1.example.com
    yml_test.go:169:     SPF: [v=spf1 exists:]
    yml_test.go:167:   domain e3.example.com
    yml_test.go:169:     SPF: [v=spf1 exists:mail.example.com/24]
    yml_test.go:167:   domain e5.example.com
    yml_test.go:169:     SPF: [v=spf1 exists:mail6.example.com -all]
    yml_test.go:251:   test exists-cidr
    yml_test.go:253:     checkhost 1.2.3.4 foo@e3.example.com
    spf.go:308: check "e3.example.com" 0 0
    spf.go:330: dns record "v=spf1 exists:mail.example.com/24"
    spf.go:874: macro contains /
    spf.go:426: "exists:mail.example.com/24" permerror, invalid macro
    yml_test.go:260:       success: permerror, invalid macro  [exists-cidr]
    yml_test.go:251:   test exists-ip4
    yml_test.go:253:     checkhost 1.2.3.4 foo@e4.example.com
    spf.go:308: check "e4.example.com" 0 0
    spf.go:330: dns record "v=spf1 exists:mail.example.com"
    spf.go:640: exists match: 1.2.3.4
    spf.go:426: "exists:mail.example.com" pass, matched exists
    yml_test.go:260:       success: pass, matched exists  [exists-ip4]
    yml_test.go:251:   test exists-ip6
    yml_test.go:253:     checkhost cafe:babe::3 foo@e4.example.com
    spf.go:308: check "e4.example.com" 0 0
    spf.go:330: dns record "v=spf1 exists:mail.example.com"
    spf.go:640: exists match: 1.2.3.4
    spf.go:426: "exists:mail.example.com" pass, matched exists
    yml_test.go:260:       success: pass, matched exists  [exists-ip6]
    yml_test.go:251:   test exists-ip6only
    yml_test.go:253:     checkhost cafe:babe::3 foo@e5.example.com
    spf.go:308: check "e5.example.com" 0 0
    spf.go:330: dns record "v=spf1 exists:mail6.example.com -all"
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [exists-ip6only]
    yml_test.go:251:   test exists-dnserr
    yml_test.go:253:     checkhost cafe:babe::3 foo@e6.example.com
    spf.go:308: check "e6.example.com" 0 0
    spf.go:330: dns record "v=spf1 exists:err.example.com -all"
    spf.go:426: "exists:err.example.com" temperror, lookup : test timeout error
    yml_test.go:260:       success: temperror, lookup : test timeout error  [exists-dnserr]
    yml_test.go:251:   test exists-empty-domain
    yml_test.go:253:     checkhost 1.2.3.4 foo@e1.example.com
    spf.go:308: check "e1.example.com" 0 0
    spf.go:330: dns record "v=spf1 exists:"
    spf.go:426: "exists:" permerror, invalid domain
    yml_test.go:260:       success: permerror, invalid domain  [exists-empty-domain]
    yml_test.go:251:   test exists-implicit
    yml_test.go:253:     checkhost 1.2.3.4 foo@e2.example.com
    spf.go:308: check "e2.example.com" 0 0
    spf.go:330: dns record "v=spf1 exists"
    spf.go:437: unknown field, permerror
    yml_test.go:260:       success: permerror, unknown field  [exists-implicit]
    yml_test.go:162: suite: IP4 mechanism syntax
    yml_test.go:167:   domain e1.example.com
    yml_test.go:169:     SPF: [v=spf1 ip4:1.1.1.1/0 -all]
    yml_test.go:167:   domain e6.example.com
    yml_test.go:169:     SPF: [v=spf1 ip4:1.2.3.4//32]
    yml_test.go:167:   domain e9.example.com
    yml_test.go:169:     SPF: [v=spf1 ip4:1.2.3]
    yml_test.go:167:   domain e8.example.com
    yml_test.go:169:     SPF: [v=spf1 ip4:1.2.3.4:8080]
    yml_test.go:167:   domain mail.example.com
    yml_test.go:169:     A: [1.2.3.4]
    yml_test.go:167:   domain e2.example.com
    yml_test.go:169:     SPF: [v=spf1 ip4:1.2.3.4/32 -all]
    yml_test.go:167:   domain e3.example.com
    yml_test.go:169:     SPF: [v=spf1 ip4:1.2.3.4/33 -all]
    yml_test.go:167:   domain e4.example.com
    yml_test.go:169:     SPF: [v=spf1 ip4:1.2.3.4/032 -all]
    yml_test.go:167:   domain e5.example.com
    yml_test.go:169:     SPF: [v=spf1 ip4]
    yml_test.go:167:   domain e7.example.com
    yml_test.go:169:     SPF: [v=spf1 -ip4:1.2.3.4 ip6:::FFFF:1.2.3.4]
    yml_test.go:251:   test ip4-mapped-ip6
    yml_test.go:253:     checkhost 1.2.3.4 foo@e7.example.com
    spf.go:308: check "e7.example.com" 0 0
    spf.go:330: dns record "v=spf1 -ip4:1.2.3.4 ip6:::FFFF:1.2.3.4"
    spf.go:536: ip match: 1.2.3.4
    spf.go:416: "ip4:1.2.3.4" fail, matched ip
    yml_test.go:260:       success: fail, matched ip  [ip4-mapped-ip6]
    yml_test.go:251:   test cidr4-0
    yml_test.go:253:     checkhost 1.2.3.4 foo@e1.example.com
    spf.go:308: check "e1.example.com" 0 0
    spf.go:330: dns record "v=spf1 ip4:1.1.1.1/0 -all"
    spf.go:527: ip match: 0.0.0.0/0 contains 1.2.3.4
    spf.go:416: "ip4:1.1.1.1/0" pass, matched ip
    yml_test.go:260:       success: pass, matched ip  [cidr4-0]
    yml_test.go:251:   test cidr4-33
    yml_test.go:253:     checkhost 1.2.3.4 foo@e3.example.com
    spf.go:308: check "e3.example.com" 0 0
    spf.go:330: dns record "v=spf1 ip4:1.2.3.4/33 -all"
    spf.go:416: "ip4:1.2.3.4/33" permerror, invalid mask
    yml_test.go:260:       success: permerror, invalid mask  [cidr4-33]
    yml_test.go:251:   test bare-ip4
    yml_test.go:253:     checkhost 1.2.3.4 foo@e5.example.com
    spf.go:308: check "e5.example.com" 0 0
    spf.go:330: dns record "v=spf1 ip4"
    spf.go:437: unknown field, permerror
    yml_test.go:260:       success: permerror, unknown field  [bare-ip4]
    yml_test.go:251:   test bad-ip4-port
    yml_test.go:253:     checkhost 1.2.3.4 foo@e8.example.com
    spf.go:308: check "e8.example.com" 0 0
    spf.go:330: dns record "v=spf1 ip4:1.2.3.4:8080"
    spf.go:416: "ip4:1.2.3.4:8080" permerror, invalid ipX value
    yml_test.go:260:       success: permerror, invalid ipX value  [bad-ip4-port]
    yml_test.go:251:   test bad-ip4-short
    yml_test.go:253:     checkhost 1.2.3.4 foo@e9.example.com
    spf.go:308: check "e9.example.com" 0 0
    spf.go:330: dns record "v=spf1 ip4:1.2.3"
    spf.go:416: "ip4:1.2.3" permerror, invalid ipX value
    yml_test.go:260:       success: permerror, invalid ipX value  [bad-ip4-short]
    yml_test.go:251:   test ip4-dual-cidr
    yml_test.go:253:     checkhost 1.2.3.4 foo@e6.example.com
    spf.go:308: check "e6.example.com" 0 0
    spf.go:330: dns record "v=spf1 ip4:1.2.3.4//32"
    spf.go:416: "ip4:1.2.3.4//32" permerror, invalid mask
    yml_test.go:260:       success: permerror, invalid mask  [ip4-dual-cidr]
    yml_test.go:251:   test cidr4-32
    yml_test.go:253:     checkhost 1.2.3.4 foo@e2.example.com
    spf.go:308: check "e2.example.com" 0 0
    spf.go:330: dns record "v=spf1 ip4:1.2.3.4/32 -all"
    spf.go:527: ip match: 1.2.3.4/32 contains 1.2.3.4
    spf.go:416: "ip4:1.2.3.4/32" pass, matched ip
    yml_test.go:260:       success: pass, matched ip  [cidr4-32]
    yml_test.go:162: suite: IP6 mechanism syntax
    yml_test.go:167:   domain e2.example.com
    yml_test.go:169:     SPF: [v=spf1 ip6:::1.1.1.1/0]
    yml_test.go:167:   domain e3.example.com
    yml_test.go:169:     SPF: [v=spf1 ip6:::1.1.1.1/129]
    yml_test.go:167:   domain e4.example.com
    yml_test.go:169:     SPF: [v=spf1 ip6:::1.1.1.1//33]
    yml_test.go:167:   domain e5.example.com
    yml_test.go:169:     SPF: [v=spf1 ip6:Cafe:Babe:8000::/33]
    yml_test.go:167:   domain e6.example.com
    yml_test.go:169:     SPF: [v=spf1 ip6::CAFE::BABE]
    yml_test.go:167:   domain mail.example.com
    yml_test.go:169:     A: [1.2.3.4]
    yml_test.go:167:   domain e1.example.com
    yml_test.go:169:     SPF: [v=spf1 -all ip6]
    yml_test.go:251:   test cidr6-33-ip4
    yml_test.go:253:     checkhost 1.2.3.4 foo@e5.example.com
    spf.go:308: check "e5.example.com" 0 0
    spf.go:330: dns record "v=spf1 ip6:Cafe:Babe:8000::/33"
    spf.go:444: fallback to neutral
    yml_test.go:260:       success: neutral, <nil>  [cidr6-33-ip4]
    yml_test.go:251:   test cidr6-0-ip4
    yml_test.go:253:     checkhost 1.2.3.4 foo@e2.example.com
    spf.go:308: check "e2.example.com" 0 0
    spf.go:330: dns record "v=spf1 ip6:::1.1.1.1/0"
    spf.go:444: fallback to neutral
    yml_test.go:260:       success: neutral, <nil>  [cidr6-0-ip4]
    yml_test.go:251:   test cidr6-ip4
    yml_test.go:253:     checkhost 1.2.3.4 foo@e2.example.com
    spf.go:308: check "e2.example.com" 0 0
    spf.go:330: dns record "v=spf1 ip6:::1.1.1.1/0"
    spf.go:444: fallback to neutral
    yml_test.go:260:       success: neutral, <nil>  [cidr6-ip4]
    yml_test.go:251:   test cidr6-0
    yml_test.go:253:     checkhost deaf:babe::cab:fee foo@e2.example.com
    spf.go:308: check "e2.example.com" 0 0
    spf.go:330: dns record "v=spf1 ip6:::1.1.1.1/0"
    spf.go:527: ip match: ::/0 contains deaf:babe::cab:fee
    spf.go:416: "ip6:::1.1.1.1/0" pass, matched ip
    yml_test.go:260:       success: pass, matched ip  [cidr6-0]
    yml_test.go:251:   test cidr6-129
    yml_test.go:253:     checkhost 1.2.3.4 foo@e3.example.com
    spf.go:308: check "e3.example.com" 0 0
    spf.go:330: dns record "v=spf1 ip6:::1.1.1.1/129"
    spf.go:416: "ip6:::1.1.1.1/129" permerror, invalid mask
    yml_test.go:260:       success: permerror, invalid mask  [cidr6-129]
    yml_test.go:251:   test cidr6-bad
    yml_test.go:253:     checkhost 1.2.3.4 foo@e4.example.com
    spf.go:308: check "e4.example.com" 0 0
    spf.go:330: dns record "v=spf1 ip6:::1.1.1.1//33"
    spf.go:416: "ip6:::1.1.1.1//33" permerror, invalid mask
    yml_test.go:260:       success: permerror, invalid mask  [cidr6-bad]
    yml_test.go:251:   test cidr6-33
    yml_test.go:253:     checkhost cafe:babe:8000:: foo@e5.example.com
    spf.go:308: check "e5.example.com" 0 0
    spf.go:330: dns record "v=spf1 ip6:Cafe:Babe:8000::/33"
    spf.go:527: ip match: cafe:babe:8000::/33 contains cafe:babe:8000::
    spf.go:416: "ip6:Cafe:Babe:8000::/33" pass, matched ip
    yml_test.go:260:       success: pass, matched ip  [cidr6-33]
    yml_test.go:251:   test ip6-bad1
    yml_test.go:253:     checkhost 1.2.3.4 foo@e6.example.com
    spf.go:308: check "e6.example.com" 0 0
    spf.go:330: dns record "v=spf1 ip6::CAFE::BABE"
    spf.go:416: "ip6::CAFE::BABE" permerror, invalid ipX value
    yml_test.go:260:       success: permerror, invalid ipX value  [ip6-bad1]
    yml_test.go:162: suite: Semantics of exp and other modifiers
    yml_test.go:167:   domain e2.example.com
    yml_test.go:169:     SPF: [v=spf1 -all]
    yml_test.go:167:   domain e9.example.com
    yml_test.go:169:     SPF: [v=spf1 -all foo=%abc]
    yml_test.go:167:   domain e13msg.example.com
    yml_test.go:169:     TXT: [The %{x}-files.]
    yml_test.go:167:   domain e23.example.com
    yml_test.go:169:     SPF: [v=spf1 a:erehwon.example.com a:foobar.com exp=nxdomain.com -all]
    yml_test.go:167:   domain e8.example.com
    yml_test.go:169:     SPF: [v=spf1 -all exp=exp4.example.com]
    yml_test.go:167:   domain twoexp.example.com
    yml_test.go:169:     TXT: [one]
    yml_test.go:169:     TXT: [two]
    yml_test.go:167:   domain e11msg.example.com
    yml_test.go:169:     TXT: [Answer a fool according to his folly.]
    yml_test.go:169:     TXT: [Do not answer a fool according to his folly.]
    yml_test.go:167:   domain e19.example.com
    yml_test.go:169:     SPF: [v=spf1 default=pass]
    yml_test.go:167:   domain e20.example.com
    yml_test.go:169:     SPF: [v=spf1 default=+]
    yml_test.go:167:   domain nonascii.example.com
    yml_test.go:169:     SPF: [v=spf1 exp=badexp.example.com -all]
    yml_test.go:167:   domain tworecs.example.com
    yml_test.go:169:     SPF: [v=spf1 exp=twoexp.example.com -all]
    yml_test.go:167:   domain testimplicit.example.com
    yml_test.go:169:     SPF: [v=spf1 a -all]
    yml_test.go:169:     A: [192.0.2.2]
    yml_test.go:167:   domain e1.example.com
    yml_test.go:169:     SPF: [v=spf1 exp=exp1.example.com redirect=e2.example.com]
    yml_test.go:167:   domain exp4.example.com
    yml_test.go:169:     TXT: [%{l} in implementation]
    yml_test.go:167:   domain e11.example.com
    yml_test.go:169:     SPF: [v=spf1 -all exp=e11msg.example.com]
    yml_test.go:167:   domain e15.example.com
    yml_test.go:169:     SPF: [v=spf1 redirect=e12.example.com -all redirect=e12.example.com]
    yml_test.go:167:   domain e18.example.com
    yml_test.go:169:     SPF: [v=spf1 ?all redirect=]
    yml_test.go:167:   domain e22.example.com
    yml_test.go:169:     SPF: [v=spf1 exp=mail.example.com -all]
    yml_test.go:167:   domain e24.example.com
    yml_test.go:169:     SPF: [v=spf1 redirect=testimplicit.example.com]
    yml_test.go:169:     A: [192.0.2.1]
    yml_test.go:167:   domain exp1.example.com
    yml_test.go:169:     TXT: [No-see-um]
    yml_test.go:167:   domain exp3.example.com
    yml_test.go:169:     TXT: [Correct!]
    yml_test.go:167:   domain e12.example.com
    yml_test.go:169:     SPF: [v=spf1 exp= -all]
    yml_test.go:167:   domain e16.example.com
    yml_test.go:169:     SPF: [v=spf1 exp=-all]
    yml_test.go:167:   domain e17.example.com
    yml_test.go:169:     SPF: [v=spf1 redirect=-all ?all]
    yml_test.go:167:   domain e21msg.example.com
    yml_test.go:169:     TIMEOUT
    yml_test.go:167:   domain e4.example.com
    yml_test.go:169:     SPF: [v=spf1 -all exp=exp2.example.com]
    yml_test.go:167:   domain e14.example.com
    yml_test.go:169:     SPF: [v=spf1 exp=e13msg.example.com -all exp=e11msg.example.com]
    yml_test.go:167:   domain badexp.example.com
    yml_test.go:169:     TXT: [Explanation]
    yml_test.go:167:   domain mail.example.com
    yml_test.go:169:     A: [1.2.3.4]
    yml_test.go:167:   domain e3.example.com
    yml_test.go:169:     SPF: [v=spf1 exp=exp1.example.com redirect=e4.example.com]
    yml_test.go:167:   domain exp2.example.com
    yml_test.go:169:     TXT: [See me.]
    yml_test.go:167:   domain e5.example.com
    yml_test.go:169:     SPF: [v=spf1 1up=foo]
    yml_test.go:167:   domain e6.example.com
    yml_test.go:169:     SPF: [v=spf1 =all]
    yml_test.go:167:   domain e7.example.com
    yml_test.go:169:     SPF: [v=spf1 include:e3.example.com -all exp=exp3.example.com]
    yml_test.go:167:   domain e10.example.com
    yml_test.go:169:     SPF: [v=spf1 redirect=erehwon.example.com]
    yml_test.go:167:   domain e13.example.com
    yml_test.go:169:     SPF: [v=spf1 exp=e13msg.example.com -all]
    yml_test.go:167:   domain e21.example.com
    yml_test.go:169:     SPF: [v=spf1 exp=e21msg.example.com -all]
    yml_test.go:251:   test include-ignores-exp
    yml_test.go:253:     checkhost 1.2.3.4 foo@e7.example.com
    spf.go:308: check "e7.example.com" 0 0
    spf.go:330: dns record "v=spf1 include:e3.example.com -all exp=exp3.example.com"
    spf.go:308: check "e3.example.com" 1 0
    spf.go:330: dns record "v=spf1 exp=exp1.example.com redirect=e4.example.com"
    spf.go:430: exp= ignored
    spf.go:308: check "e4.example.com" 2 0
    spf.go:330: dns record "v=spf1 -all exp=exp2.example.com"
    spf.go:397: all: fail
    spf.go:434: "redirect=e4.example.com": fail, matched all
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [include-ignores-exp]
    yml_test.go:251:   test exp-dns-error
    yml_test.go:253:     checkhost 1.2.3.4 foo@e21.example.com
    spf.go:308: check "e21.example.com" 0 0
    spf.go:330: dns record "v=spf1 exp=e21msg.example.com -all"
    spf.go:430: exp= ignored
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [exp-dns-error]
    yml_test.go:251:   test explanation-syntax-error
    yml_test.go:253:     checkhost 1.2.3.4 foo@e13.example.com
    spf.go:308: check "e13.example.com" 0 0
    spf.go:330: dns record "v=spf1 exp=e13msg.example.com -all"
    spf.go:430: exp= ignored
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [explanation-syntax-error]
    yml_test.go:251:   test exp-void
    yml_test.go:253:     checkhost 1.2.3.4 foo@e23.example.com
    spf.go:308: check "e23.example.com" 0 0
    spf.go:330: dns record "v=spf1 a:erehwon.example.com a:foobar.com exp=nxdomain.com -all"
    spf.go:747: masks on "a:erehwon.example.com", "e23.example.com": "erehwon.example.com" [<nil>, <nil>]
    spf.go:514: void lookup: nxdomain
    spf.go:747: masks on "a:foobar.com", "e23.example.com": "foobar.com" [<nil>, <nil>]
    spf.go:514: void lookup: nxdomain
    spf.go:430: exp= ignored
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [exp-void]
    yml_test.go:251:   test empty-modifier-name
    yml_test.go:253:     checkhost 1.2.3.4 foo@e6.example.com
    spf.go:308: check "e6.example.com" 0 0
    spf.go:330: dns record "v=spf1 =all"
    spf.go:437: unknown field, permerror
    yml_test.go:260:       success: permerror, unknown field  [empty-modifier-name]
    yml_test.go:251:   test exp-multiple-txt
    yml_test.go:253:     checkhost 1.2.3.4 foo@e11.example.com
    spf.go:308: check "e11.example.com" 0 0
    spf.go:330: dns record "v=spf1 -all exp=e11msg.example.com"
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [exp-multiple-txt]
    yml_test.go:251:   test exp-no-txt
    yml_test.go:253:     checkhost 1.2.3.4 foo@e22.example.com
    spf.go:308: check "e22.example.com" 0 0
    spf.go:330: dns record "v=spf1 exp=mail.example.com -all"
    spf.go:430: exp= ignored
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [exp-no-txt]
    yml_test.go:251:   test redirect-implicit
    yml_test.go:253:     checkhost 192.0.2.2 bar@e24.example.com
    spf.go:308: check "e24.example.com" 0 0
    spf.go:330: dns record "v=spf1 redirect=testimplicit.example.com"
    spf.go:308: check "testimplicit.example.com" 1 0
    spf.go:330: dns record "v=spf1 a -all"
    spf.go:747: masks on "a", "testimplicit.example.com": "testimplicit.example.com" [<nil>, <nil>]
    spf.go:768: a match: 192.0.2.2, 192.0.2.2, [<nil>, <nil>]
    spf.go:406: "a" pass, matched a
    spf.go:434: "redirect=testimplicit.example.com": pass, matched a
    yml_test.go:260:       success: pass, matched a  [redirect-implicit]
    yml_test.go:251:   test invalid-modifier
    yml_test.go:253:     checkhost 1.2.3.4 foo@e5.example.com
    spf.go:308: check "e5.example.com" 0 0
    spf.go:330: dns record "v=spf1 1up=foo"
    spf.go:437: unknown field, permerror
    yml_test.go:260:       success: permerror, unknown field  [invalid-modifier]
    yml_test.go:251:   test redirect-cancels-prior-exp
    yml_test.go:253:     checkhost 1.2.3.4 foo@e3.example.com
    spf.go:308: check "e3.example.com" 0 0
    spf.go:330: dns record "v=spf1 exp=exp1.example.com redirect=e4.example.com"
    spf.go:430: exp= ignored
    spf.go:308: check "e4.example.com" 1 0
    spf.go:330: dns record "v=spf1 -all exp=exp2.example.com"
    spf.go:397: all: fail
    spf.go:434: "redirect=e4.example.com": fail, matched all
    yml_test.go:260:       success: fail, matched all  [redirect-cancels-prior-exp]
    yml_test.go:251:   test redirect-twice
    yml_test.go:253:     checkhost 1.2.3.4 foo@e15.example.com
    spf.go:308: check "e15.example.com" 0 0
    spf.go:330: dns record "v=spf1 redirect=e12.example.com -all redirect=e12.example.com"
    spf.go:353: too many redirects
    yml_test.go:260:       success: permerror, invalid domain  [redirect-twice]
    yml_test.go:251:   test non-ascii-exp
    yml_test.go:253:     checkhost 1.2.3.4 foobar@nonascii.example.com
    spf.go:308: check "nonascii.example.com" 0 0
    spf.go:330: dns record "v=spf1 exp=badexp.example.com -all"
    spf.go:430: exp= ignored
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [non-ascii-exp]
    yml_test.go:251:   test two-exp-records
    yml_test.go:253:     checkhost 1.2.3.4 foobar@tworecs.example.com
    spf.go:308: check "tworecs.example.com" 0 0
    spf.go:330: dns record "v=spf1 exp=twoexp.example.com -all"
    spf.go:430: exp= ignored
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [two-exp-records]
    yml_test.go:251:   test redirect-none
    yml_test.go:253:     checkhost 1.2.3.4 foo@e10.example.com
    spf.go:308: check "e10.example.com" 0 0
    spf.go:330: dns record "v=spf1 redirect=erehwon.example.com"
    spf.go:308: check "erehwon.example.com" 1 0
    spf.go:314: dns domain not found: lookup : domain not found (for testing)
    spf.go:434: "redirect=erehwon.example.com": permerror, no DNS record found
    yml_test.go:260:       success: permerror, no DNS record found  [redirect-none]
    yml_test.go:251:   test dorky-sentinel
    yml_test.go:253:     checkhost 1.2.3.4 Macro Error@e8.example.com
    spf.go:308: check "e8.example.com" 0 0
    spf.go:330: dns record "v=spf1 -all exp=exp4.example.com"
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [dorky-sentinel]
    yml_test.go:251:   test redirect-cancels-exp
    yml_test.go:253:     checkhost 1.2.3.4 foo@e1.example.com
    spf.go:308: check "e1.example.com" 0 0
    spf.go:330: dns record "v=spf1 exp=exp1.example.com redirect=e2.example.com"
    spf.go:430: exp= ignored
    spf.go:308: check "e2.example.com" 1 0
    spf.go:330: dns record "v=spf1 -all"
    spf.go:397: all: fail
    spf.go:434: "redirect=e2.example.com": fail, matched all
    yml_test.go:260:       success: fail, matched all  [redirect-cancels-exp]
    yml_test.go:162: suite: Macro expansion rules
    yml_test.go:167:   domain e4.example.com
    yml_test.go:169:     SPF: [v=spf1 -all exp=e4msg.example.com]
    yml_test.go:167:   domain mx.example.com
    yml_test.go:169:     A: [192.168.218.41]
    yml_test.go:169:     A: [192.168.218.42]
    yml_test.go:169:     AAAA: [CAFE:BABE::2]
    yml_test.go:169:     AAAA: [CAFE:BABE::3]
    yml_test.go:167:   domain example.com.d.spf.example.com
    yml_test.go:169:     SPF: [v=spf1 redirect=a.spf.example.com]
    yml_test.go:167:   domain a.spf.example.com
    yml_test.go:169:     SPF: [v=spf1 include:o.spf.example.com. ~all]
    yml_test.go:167:   domain exp.example.com
    yml_test.go:169:     SPF: [v=spf1 exp=msg.example.com. -all]
    yml_test.go:167:   domain e1e.example.com
    yml_test.go:169:     SPF: [v=spf1 exists:foo%(ir).sbl.example.com ?all]
    yml_test.go:167:   domain mx.e7.example.com.should.example.com
    yml_test.go:169:     A: [127.0.0.2]
    yml_test.go:167:   domain e9.example.com
    yml_test.go:169:     SPF: [v=spf1 a:%{H} -all]
    yml_test.go:167:   domain e10.example.com
    yml_test.go:169:     SPF: [v=spf1 -include:_spfh.%{d2} ip4:1.2.3.0/24 -all]
    yml_test.go:167:   domain msgbas2x.cos.example.com
    yml_test.go:169:     A: [192.168.218.40]
    yml_test.go:167:   domain e2.example.com
    yml_test.go:169:     SPF: [v=spf1 -all exp=%{r}.example.com]
    yml_test.go:167:   domain 40.218.168.192.example.com
    yml_test.go:169:     TXT: [Connections from %{c} not authorized.]
    yml_test.go:167:   domain 40.218.168.192.in-addr.arpa
    yml_test.go:169:     PTR: [mx.example.com]
    yml_test.go:167:   domain example.com
    yml_test.go:169:     A: [192.168.90.76]
    yml_test.go:169:     SPF: [v=spf1 redirect=%{d}.d.spf.example.com.]
    yml_test.go:167:   domain somewhat.long.exp.example.com
    yml_test.go:169:     SPF: [v=spf1 -all exp=foobar.%{o}.%{o}.%{o}.%{o}.%{o}.%{o}.%{o}.%{o}.example.com]
    yml_test.go:167:   domain e12.example.com
    yml_test.go:169:     SPF: [v=spf1 exists:%{l2r+-}.user.%{d2}]
    yml_test.go:167:   domain bar.foo.user.example.com
    yml_test.go:169:     A: [127.0.0.2]
    yml_test.go:167:   domain o.spf.example.com
    yml_test.go:169:     SPF: [v=spf1 ip4:192.168.218.40]
    yml_test.go:167:   domain e1t.example.com
    yml_test.go:169:     SPF: [v=spf1 exists:foo%.sbl.example.com ?all]
    yml_test.go:167:   domain e5.example.com
    yml_test.go:169:     SPF: [v=spf1 a:%{a}.example.com -all]
    yml_test.go:167:   domain mx.e7.example.com
    yml_test.go:169:     A: [192.168.218.42]
    yml_test.go:167:   domain e4msg.example.com
    yml_test.go:169:     TXT: [%{c} is queried as %{ir}.%{v}.arpa]
    yml_test.go:167:   domain e7.example.com
    yml_test.go:169:     SPF: [v=spf1 exists:%{p}.should.example.com ~exists:%{p}.ok.example.com]
    yml_test.go:167:   domain _spfh.example.com
    yml_test.go:169:     SPF: [v=spf1 -a:%{h} +all]
    yml_test.go:167:   domain e11.example.com
    yml_test.go:169:     SPF: [v=spf1 exists:%{i}.%{l2r-}.user.%{d2}]
    yml_test.go:167:   domain 42.218.168.192.in-addr.arpa
    yml_test.go:169:     PTR: [mx.example.com]
    yml_test.go:169:     PTR: [mx.e7.example.com]
    yml_test.go:167:   domain e8.example.com
    yml_test.go:169:     SPF: [v=spf1 -all exp=msg8.%{D2}]
    yml_test.go:167:   domain 1.2.3.4.gladstone.philip.user.example.com
    yml_test.go:169:     A: [127.0.0.2]
    yml_test.go:167:   domain msg.example.com
    yml_test.go:169:     TXT: [This is a test.]
    yml_test.go:167:   domain e3.example.com
    yml_test.go:169:     SPF: [v=spf1 -all exp=%{ir}.example.com]
    yml_test.go:167:   domain e6.example.com
    yml_test.go:169:     SPF: [v=spf1 -all exp=e6msg.example.com]
    yml_test.go:167:   domain e6msg.example.com
    yml_test.go:169:     TXT: [connect from %{p}]
    yml_test.go:167:   domain msg8.example.com
    yml_test.go:169:     TXT: [http://example.com/why.html?l=%{L}]
    yml_test.go:167:   domain e1.example.com
    yml_test.go:169:     SPF: [v=spf1 -exists:%(ir).sbl.example.com ?all]
    yml_test.go:167:   domain e1a.example.com
    yml_test.go:169:     SPF: [v=spf1 a:macro%%percent%_%_space%-url-space.example.com -all]
    yml_test.go:167:   domain 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.E.B.A.B.E.F.A.C.ip6.arpa
    yml_test.go:169:     PTR: [mx.example.com]
    yml_test.go:167:   domain 3.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.E.B.A.B.E.F.A.C.ip6.arpa
    yml_test.go:169:     PTR: [mx.example.com]
    yml_test.go:167:   domain macro%percent  space%20url-space.example.com
    yml_test.go:169:     A: [1.2.3.4]
    yml_test.go:167:   domain somewhat.long.exp.example.com.somewhat.long.exp.example.com.somewhat.long.exp.example.com.somewhat.long.exp.example.com.somewhat.long.exp.example.com.somewhat.long.exp.example.com.somewhat.long.exp.example.com.somewhat.long.exp.example.com.example.com
    yml_test.go:169:     TXT: [Congratulations!  That was tricky.]
    yml_test.go:167:   domain 41.218.168.192.in-addr.arpa
    yml_test.go:169:     PTR: [mx.example.com]
    yml_test.go:167:   domain mx.example.com.ok.example.com
    yml_test.go:169:     A: [127.0.0.2]
    yml_test.go:251:   test invalid-macro-char
    yml_test.go:253:     checkhost 192.168.218.40 test@e1.example.com
    spf.go:308: check "e1.example.com" 0 0
    spf.go:330: dns record "v=spf1 -exists:%(ir).sbl.example.com ?all"
    spf.go:426: "exists:%(ir).sbl.example.com" permerror, invalid macro
    yml_test.go:260:       success: permerror, invalid macro  [invalid-macro-char]
    yml_test.go:251:   test invalid-embedded-macro-char
    yml_test.go:253:     checkhost 192.168.218.40 test@e1e.example.com
    spf.go:308: check "e1e.example.com" 0 0
    spf.go:330: dns record "v=spf1 exists:foo%(ir).sbl.example.com ?all"
    spf.go:426: "exists:foo%(ir).sbl.example.com" permerror, invalid macro
    yml_test.go:260:       success: permerror, invalid macro  [invalid-embedded-macro-char]
    yml_test.go:251:   test invalid-trailing-macro-char
    yml_test.go:253:     checkhost 192.168.218.40 test@e1t.example.com
    spf.go:308: check "e1t.example.com" 0 0
    spf.go:330: dns record "v=spf1 exists:foo%.sbl.example.com ?all"
    spf.go:426: "exists:foo%.sbl.example.com" permerror, invalid macro
    yml_test.go:260:       success: permerror, invalid macro  [invalid-trailing-macro-char]
    yml_test.go:251:   test p-macro-ip4-novalid
    yml_test.go:253:     checkhost 192.168.218.40 test@e6.example.com
    spf.go:308: check "e6.example.com" 0 0
    spf.go:330: dns record "v=spf1 -all exp=e6msg.example.com"
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [p-macro-ip4-novalid]
    yml_test.go:251:   test p-macro-ip4-valid
    yml_test.go:253:     checkhost 192.168.218.41 test@e6.example.com
    spf.go:308: check "e6.example.com" 0 0
    spf.go:330: dns record "v=spf1 -all exp=e6msg.example.com"
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [p-macro-ip4-valid]
    yml_test.go:251:   test upper-macro
    yml_test.go:253:     checkhost 192.168.218.42 ~jack&jill=up-a_b3.c@e8.example.com
    spf.go:308: check "e8.example.com" 0 0
    spf.go:330: dns record "v=spf1 -all exp=msg8.%{D2}"
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [upper-macro]
    yml_test.go:251:   test macro-reverse-split-on-dash
    yml_test.go:253:     checkhost 1.2.3.4 philip-gladstone-test@e11.example.com
    spf.go:308: check "e11.example.com" 0 0
    spf.go:330: dns record "v=spf1 exists:%{i}.%{l2r-}.user.%{d2}"
    spf.go:923: macro "i": ["i" "i" "" "" ""]
    spf.go:923: macro "l2r-": ["l2r-" "l" "2" "r" "-"]
    spf.go:923: macro "d2": ["d2" "d" "2" "" ""]
    spf.go:1020: macro expanded "%{i}.%{l2r-}.user.%{d2}" to "1.2.3.4.gladstone.philip.user.example.com"
    spf.go:640: exists match: 127.0.0.2
    spf.go:426: "exists:%{i}.%{l2r-}.user.%{d2}" pass, matched exists
    yml_test.go:260:       success: pass, matched exists  [macro-reverse-split-on-dash]
    yml_test.go:251:   test undef-macro
    yml_test.go:253:     checkhost cafe:babe::c0a8:da28 test@e5.example.com
    spf.go:308: check "e5.example.com" 0 0
    spf.go:330: dns record "v=spf1 a:%{a}.example.com -all"
    spf.go:747: masks on "a:%{a}.example.com", "e5.example.com": "%{a}.example.com" [<nil>, <nil>]
    spf.go:923: macro "a": []
    spf.go:406: "a:%{a}.example.com" permerror, invalid macro
    yml_test.go:260:       success: permerror, invalid macro  [undef-macro]
    yml_test.go:251:   test invalid-hello-macro
    yml_test.go:253:     checkhost 192.168.218.40 test@e9.example.com
    spf.go:308: check "e9.example.com" 0 0
    spf.go:330: dns record "v=spf1 a:%{H} -all"
    spf.go:747: masks on "a:%{H}", "e9.example.com": "%{H}" [<nil>, <nil>]
    spf.go:923: macro "H": ["H" "H" "" "" ""]
    spf.go:1020: macro expanded "%{H}" to "JUMPIN%27+JUPITER"
    spf.go:514: void lookup: nxdomain
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [invalid-hello-macro]
    yml_test.go:251:   test v-macro-ip4
    yml_test.go:253:     checkhost 192.168.218.40 test@e4.example.com
    spf.go:308: check "e4.example.com" 0 0
    spf.go:330: dns record "v=spf1 -all exp=e4msg.example.com"
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [v-macro-ip4]
    yml_test.go:251:   test macro-mania-in-domain
    yml_test.go:253:     checkhost 1.2.3.4 test@e1a.example.com
    spf.go:308: check "e1a.example.com" 0 0
    spf.go:330: dns record "v=spf1 a:macro%%percent%_%_space%-url-space.example.com -all"
    spf.go:747: masks on "a:macro%%percent%_%_space%-url-space.example.com", "e1a.example.com": "macro%%percent%_%_space%-url-space.example.com" [<nil>, <nil>]
    spf.go:1020: macro expanded "macro%%percent%_%_space%-url-space.example.com" to "macro%percent  space%20url-space.example.com"
    spf.go:768: a match: 1.2.3.4, 1.2.3.4, [<nil>, <nil>]
    spf.go:406: "a:macro%%percent%_%_space%-url-space.example.com" pass, matched a
    yml_test.go:260:       success: pass, matched a  [macro-mania-in-domain]
    yml_test.go:251:   test domain-name-truncation
    yml_test.go:253:     checkhost 192.168.218.40 test@somewhat.long.exp.example.com
    spf.go:308: check "somewhat.long.exp.example.com" 0 0
    spf.go:330: dns record "v=spf1 -all exp=foobar.%{o}.%{o}.%{o}.%{o}.%{o}.%{o}.%{o}.%{o}.example.com"
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [domain-name-truncation]
    yml_test.go:251:   test v-macro-ip6
    yml_test.go:253:     checkhost cafe:babe::1 test@e4.example.com
    spf.go:308: check "e4.example.com" 0 0
    spf.go:330: dns record "v=spf1 -all exp=e4msg.example.com"
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [v-macro-ip6]
    yml_test.go:251:   test hello-domain-literal
    yml_test.go:253:     checkhost 192.168.218.40 test@e9.example.com
    spf.go:308: check "e9.example.com" 0 0
    spf.go:330: dns record "v=spf1 a:%{H} -all"
    spf.go:747: masks on "a:%{H}", "e9.example.com": "%{H}" [<nil>, <nil>]
    spf.go:923: macro "H": ["H" "H" "" "" ""]
    spf.go:1020: macro expanded "%{H}" to "%5B192.168.218.40%5D"
    spf.go:514: void lookup: nxdomain
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [hello-domain-literal]
    yml_test.go:251:   test macro-multiple-delimiters
    yml_test.go:253:     checkhost 1.2.3.4 foo-bar+zip+quux@e12.example.com
    spf.go:308: check "e12.example.com" 0 0
    spf.go:330: dns record "v=spf1 exists:%{l2r+-}.user.%{d2}"
    spf.go:923: macro "l2r+-": ["l2r+-" "l" "2" "r" "+-"]
    spf.go:923: macro "d2": ["d2" "d" "2" "" ""]
    spf.go:1020: macro expanded "%{l2r+-}.user.%{d2}" to "bar.foo.user.example.com"
    spf.go:640: exists match: 127.0.0.2
    spf.go:426: "exists:%{l2r+-}.user.%{d2}" pass, matched exists
    yml_test.go:260:       success: pass, matched exists  [macro-multiple-delimiters]
    yml_test.go:251:   test trailing-dot-domain
    yml_test.go:253:     checkhost 192.168.218.40 test@example.com
    spf.go:308: check "example.com" 0 0
    spf.go:330: dns record "v=spf1 redirect=%{d}.d.spf.example.com."
    spf.go:923: macro "d": ["d" "d" "" "" ""]
    spf.go:1020: macro expanded "%{d}.d.spf.example.com." to "example.com.d.spf.example.com."
    spf.go:308: check "example.com.d.spf.example.com." 1 0
    spf.go:330: dns record "v=spf1 redirect=a.spf.example.com"
    spf.go:308: check "a.spf.example.com" 2 0
    spf.go:330: dns record "v=spf1 include:o.spf.example.com. ~all"
    spf.go:308: check "o.spf.example.com." 3 0
    spf.go:330: dns record "v=spf1 ip4:192.168.218.40"
    spf.go:536: ip match: 192.168.218.40
    spf.go:416: "ip4:192.168.218.40" pass, matched ip
    spf.go:401: "include:o.spf.example.com." pass, matched ip
    spf.go:434: "redirect=a.spf.example.com": pass, matched ip
    spf.go:434: "redirect=%{d}.d.spf.example.com.": pass, matched ip
    yml_test.go:260:       success: pass, matched ip  [trailing-dot-domain]
    yml_test.go:251:   test exp-txt-macro-char
    yml_test.go:253:     checkhost 192.168.218.40 test@e3.example.com
    spf.go:308: check "e3.example.com" 0 0
    spf.go:330: dns record "v=spf1 -all exp=%{ir}.example.com"
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [exp-txt-macro-char]
    yml_test.go:251:   test p-macro-ip6-novalid
    yml_test.go:253:     checkhost cafe:babe::1 test@e6.example.com
    spf.go:308: check "e6.example.com" 0 0
    spf.go:330: dns record "v=spf1 -all exp=e6msg.example.com"
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [p-macro-ip6-novalid]
    yml_test.go:251:   test p-macro-ip6-valid
    yml_test.go:253:     checkhost cafe:babe::3 test@e6.example.com
    spf.go:308: check "e6.example.com" 0 0
    spf.go:330: dns record "v=spf1 -all exp=e6msg.example.com"
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [p-macro-ip6-valid]
    yml_test.go:251:   test require-valid-helo
    yml_test.go:253:     checkhost 1.2.3.4 test@e10.example.com
    spf.go:308: check "e10.example.com" 0 0
    spf.go:330: dns record "v=spf1 -include:_spfh.%{d2} ip4:1.2.3.0/24 -all"
    spf.go:923: macro "d2": ["d2" "d" "2" "" ""]
    spf.go:1020: macro expanded "_spfh.%{d2}" to "_spfh.example.com"
    spf.go:308: check "_spfh.example.com" 1 0
    spf.go:330: dns record "v=spf1 -a:%{h} +all"
    spf.go:747: masks on "a:%{h}", "_spfh.example.com": "%{h}" [<nil>, <nil>]
    spf.go:923: macro "h": ["h" "h" "" "" ""]
    spf.go:1020: macro expanded "%{h}" to "OEMCOMPUTER"
    spf.go:514: void lookup: nxdomain
    spf.go:397: all: pass
    spf.go:401: "include:_spfh.%{d2}" fail, matched all
    yml_test.go:260:       success: fail, matched all  [require-valid-helo]
    yml_test.go:251:   test trailing-dot-exp
    yml_test.go:253:     checkhost 192.168.218.40 test@exp.example.com
    spf.go:308: check "exp.example.com" 0 0
    spf.go:330: dns record "v=spf1 exp=msg.example.com. -all"
    spf.go:430: exp= ignored
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [trailing-dot-exp]
    yml_test.go:162: suite: Processing limits
    yml_test.go:167:   domain e4.example.com
    yml_test.go:169:     SPF: [v=spf1 mx]
    yml_test.go:169:     MX: {0 mail.example.com}
    yml_test.go:169:     MX: {1 mail.example.com}
    yml_test.go:169:     MX: {2 mail.example.com}
    yml_test.go:169:     MX: {3 mail.example.com}
    yml_test.go:169:     MX: {4 mail.example.com}
    yml_test.go:169:     MX: {5 mail.example.com}
    yml_test.go:169:     MX: {6 mail.example.com}
    yml_test.go:169:     MX: {7 mail.example.com}
    yml_test.go:169:     MX: {8 mail.example.com}
    yml_test.go:169:     MX: {9 mail.example.com}
    yml_test.go:169:     MX: {10 e4.example.com}
    yml_test.go:169:     A: [1.2.3.5]
    yml_test.go:167:   domain inc.example.com
    yml_test.go:169:     SPF: [v=spf1 a a a a a a a a]
    yml_test.go:169:     A: [1.2.3.10]
    yml_test.go:167:   domain e9.example.com
    yml_test.go:169:     SPF: [v=spf1 a include:inc.example.com a ip4:1.2.3.4 -all]
    yml_test.go:169:     A: [1.2.3.21]
    yml_test.go:167:   domain 5.3.2.1.in-addr.arpa
    yml_test.go:169:     PTR: [e1.example.com.]
    yml_test.go:169:     PTR: [e2.example.com.]
    yml_test.go:169:     PTR: [e3.example.com.]
    yml_test.go:169:     PTR: [e4.example.com.]
    yml_test.go:169:     PTR: [example.com.]
    yml_test.go:169:     PTR: [e6.example.com.]
    yml_test.go:169:     PTR: [e7.example.com.]
    yml_test.go:169:     PTR: [e8.example.com.]
    yml_test.go:169:     PTR: [e9.example.com.]
    yml_test.go:169:     PTR: [e10.example.com.]
    yml_test.go:169:     PTR: [e5.example.com.]
    yml_test.go:167:   domain e7.example.com
    yml_test.go:169:     SPF: [v=spf1 a mx a mx a mx a mx a ptr a ip4:1.2.3.4 -all]
    yml_test.go:169:     A: [1.2.3.20]
    yml_test.go:167:   domain e10.example.com
    yml_test.go:169:     SPF: [v=spf1 a -all]
    yml_test.go:169:     A: [1.2.3.1]
    yml_test.go:169:     A: [1.2.3.2]
    yml_test.go:169:     A: [1.2.3.3]
    yml_test.go:169:     A: [1.2.3.4]
    yml_test.go:169:     A: [1.2.3.5]
    yml_test.go:169:     A: [1.2.3.6]
    yml_test.go:169:     A: [1.2.3.7]
    yml_test.go:169:     A: [1.2.3.8]
    yml_test.go:169:     A: [1.2.3.9]
    yml_test.go:169:     A: [1.2.3.10]
    yml_test.go:169:     A: [1.2.3.11]
    yml_test.go:169:     A: [1.2.3.12]
    yml_test.go:167:   domain e6.example.com
    yml_test.go:169:     SPF: [v=spf1 a mx a mx a mx a mx a ptr ip4:1.2.3.4 -all]
    yml_test.go:169:     A: [1.2.3.8]
    yml_test.go:169:     MX: {10 e6.example.com}
    yml_test.go:167:   domain e11.example.com
    yml_test.go:169:     TXT: [v=spf1 a:err.example.com a:err1.example.com a:err2.example.com ?all]
    yml_test.go:167:   domain mail.example.com
    yml_test.go:169:     A: [1.2.3.4]
    yml_test.go:167:   domain e1.example.com
    yml_test.go:169:     SPF: [v=spf1 ip4:1.1.1.1 redirect=e1.example.com]
    yml_test.go:169:     A: [1.2.3.6]
    yml_test.go:167:   domain e2.example.com
    yml_test.go:169:     SPF: [v=spf1 include:e3.example.com]
    yml_test.go:169:     A: [1.2.3.7]
    yml_test.go:167:   domain e12.example.com
    yml_test.go:169:     TXT: [v=spf1 a:err.example.com a:err1.example.com ?all]
    yml_test.go:167:   domain e3.example.com
    yml_test.go:169:     SPF: [v=spf1 include:e2.example.com]
    yml_test.go:169:     A: [1.2.3.8]
    yml_test.go:167:   domain e5.example.com
    yml_test.go:169:     SPF: [v=spf1 ptr]
    yml_test.go:169:     A: [1.2.3.5]
    yml_test.go:167:   domain e8.example.com
    yml_test.go:169:     SPF: [v=spf1 a include:inc.example.com ip4:1.2.3.4 mx -all]
    yml_test.go:169:     A: [1.2.3.4]
    yml_test.go:251:   test redirect-loop
    yml_test.go:253:     checkhost 1.2.3.4 foo@e1.example.com
    spf.go:308: check "e1.example.com" 0 0
    spf.go:330: dns record "v=spf1 ip4:1.1.1.1 redirect=e1.example.com"
    spf.go:308: check "e1.example.com" 1 0
    spf.go:330: dns record "v=spf1 ip4:1.1.1.1 redirect=e1.example.com"
    spf.go:308: check "e1.example.com" 2 0
    spf.go:330: dns record "v=spf1 ip4:1.1.1.1 redirect=e1.example.com"
    spf.go:308: check "e1.example.com" 3 0
    spf.go:330: dns record "v=spf1 ip4:1.1.1.1 redirect=e1.example.com"
    spf.go:308: check "e1.example.com" 4 0
    spf.go:330: dns record "v=spf1 ip4:1.1.1.1 redirect=e1.example.com"
    spf.go:308: check "e1.example.com" 5 0
    spf.go:330: dns record "v=spf1 ip4:1.1.1.1 redirect=e1.example.com"
    spf.go:308: check "e1.example.com" 6 0
    spf.go:330: dns record "v=spf1 ip4:1.1.1.1 redirect=e1.example.com"
    spf.go:308: check "e1.example.com" 7 0
    spf.go:330: dns record "v=spf1 ip4:1.1.1.1 redirect=e1.example.com"
    spf.go:308: check "e1.example.com" 8 0
    spf.go:330: dns record "v=spf1 ip4:1.1.1.1 redirect=e1.example.com"
    spf.go:308: check "e1.example.com" 9 0
    spf.go:330: dns record "v=spf1 ip4:1.1.1.1 redirect=e1.example.com"
    spf.go:308: check "e1.example.com" 10 0
    spf.go:330: dns record "v=spf1 ip4:1.1.1.1 redirect=e1.example.com"
    spf.go:308: check "e1.example.com" 11 0
    spf.go:330: dns record "v=spf1 ip4:1.1.1.1 redirect=e1.example.com"
    spf.go:373: lookup limit reached
    spf.go:434: "redirect=e1.example.com": permerror, lookup limit reached
    spf.go:434: "redirect=e1.example.com": permerror, lookup limit reached
    spf.go:434: "redirect=e1.example.com": permerror, lookup limit reached
    spf.go:434: "redirect=e1.example.com": permerror, lookup limit reached
    spf.go:434: "redirect=e1.example.com": permerror, lookup limit reached
    spf.go:434: "redirect=e1.example.com": permerror, lookup limit reached
    spf.go:434: "redirect=e1.example.com": permerror, lookup limit reached
    spf.go:434: "redirect=e1.example.com": permerror, lookup limit reached
    spf.go:434: "redirect=e1.example.com": permerror, lookup limit reached
    spf.go:434: "redirect=e1.example.com": permerror, lookup limit reached
    spf.go:434: "redirect=e1.example.com": permerror, lookup limit reached
    yml_test.go:260:       success: permerror, lookup limit reached  [redirect-loop]
    yml_test.go:251:   test include-loop
    yml_test.go:253:     checkhost 1.2.3.4 foo@e2.example.com
    spf.go:308: check "e2.example.com" 0 0
    spf.go:330: dns record "v=spf1 include:e3.example.com"
    spf.go:308: check "e3.example.com" 1 0
    spf.go:330: dns record "v=spf1 include:e2.example.com"
    spf.go:308: check "e2.example.com" 2 0
    spf.go:330: dns record "v=spf1 include:e3.example.com"
    spf.go:308: check "e3.example.com" 3 0
    spf.go:330: dns record "v=spf1 include:e2.example.com"
    spf.go:308: check "e2.example.com" 4 0
    spf.go:330: dns record "v=spf1 include:e3.example.com"
    spf.go:308: check "e3.example.com" 5 0
    spf.go:330: dns record "v=spf1 include:e2.example.com"
    spf.go:308: check "e2.example.com" 6 0
    spf.go:330: dns record "v=spf1 include:e3.example.com"
    spf.go:308: check "e3.example.com" 7 0
    spf.go:330: dns record "v=spf1 include:e2.example.com"
    spf.go:308: check "e2.example.com" 8 0
    spf.go:330: dns record "v=spf1 include:e3.example.com"
    spf.go:308: check "e3.example.com" 9 0
    spf.go:330: dns record "v=spf1 include:e2.example.com"
    spf.go:308: check "e2.example.com" 10 0
    spf.go:330: dns record "v=spf1 include:e3.example.com"
    spf.go:308: check "e3.example.com" 11 0
    spf.go:330: dns record "v=spf1 include:e2.example.com"
    spf.go:373: lookup limit reached
    spf.go:401: "include:e3.example.com" permerror, lookup limit reached
    spf.go:401: "include:e2.example.com" permerror, lookup limit reached
    spf.go:401: "include:e3.example.com" permerror, lookup limit reached
    spf.go:401: "include:e2.example.com" permerror, lookup limit reached
    spf.go:401: "include:e3.example.com" permerror, lookup limit reached
    spf.go:401: "include:e2.example.com" permerror, lookup limit reached
    spf.go:401: "include:e3.example.com" permerror, lookup limit reached
    spf.go:401: "include:e2.example.com" permerror, lookup limit reached
    spf.go:401: "include:e3.example.com" permerror, lookup limit reached
    spf.go:401: "include:e2.example.com" permerror, lookup limit reached
    spf.go:401: "include:e3.example.com" permerror, lookup limit reached
    yml_test.go:260:       success: permerror, lookup limit reached  [include-loop]
    yml_test.go:251:   test include-over-limit
    yml_test.go:253:     checkhost 1.2.3.4 foo@e9.example.com
    spf.go:308: check "e9.example.com" 0 0
    spf.go:330: dns record "v=spf1 a include:inc.example.com a ip4:1.2.3.4 -all"
    spf.go:747: masks on "a", "e9.example.com": "e9.example.com" [<nil>, <nil>]
    spf.go:308: check "inc.example.com" 2 0
    spf.go:330: dns record "v=spf1 a a a a a a a a"
    spf.go:747: masks on "a", "inc.example.com": "inc.example.com" [<nil>, <nil>]
    spf.go:747: masks on "a", "inc.example.com": "inc.example.com" [<nil>, <nil>]
    spf.go:747: masks on "a", "inc.example.com": "inc.example.com" [<nil>, <nil>]
    spf.go:747: masks on "a", "inc.example.com": "inc.example.com" [<nil>, <nil>]
    spf.go:747: masks on "a", "inc.example.com": "inc.example.com" [<nil>, <nil>]
    spf.go:747: masks on "a", "inc.example.com": "inc.example.com" [<nil>, <nil>]
    spf.go:747: masks on "a", "inc.example.com": "inc.example.com" [<nil>, <nil>]
    spf.go:747: masks on "a", "inc.example.com": "inc.example.com" [<nil>, <nil>]
    spf.go:444: fallback to neutral
    spf.go:747: masks on "a", "e9.example.com": "e9.example.com" [<nil>, <nil>]
    spf.go:373: lookup limit reached
    yml_test.go:260:       success: permerror, lookup limit reached  [include-over-limit]
    yml_test.go:251:   test void-at-limit
    yml_test.go:253:     checkhost 1.2.3.4 foo@e12.example.com
    spf.go:308: check "e12.example.com" 0 0
    spf.go:330: dns record "v=spf1 a:err.example.com a:err1.example.com ?all"
    spf.go:747: masks on "a:err.example.com", "e12.example.com": "err.example.com" [<nil>, <nil>]
    spf.go:514: void lookup: nxdomain
    spf.go:747: masks on "a:err1.example.com", "e12.example.com": "err1.example.com" [<nil>, <nil>]
    spf.go:514: void lookup: nxdomain
    spf.go:397: all: neutral
    yml_test.go:260:       success: neutral, matched all  [void-at-limit]
    yml_test.go:251:   test mx-limit
    yml_test.go:253:     checkhost 1.2.3.5 foo@e4.example.com
    spf.go:308: check "e4.example.com" 0 0
    spf.go:330: dns record "v=spf1 mx"
    spf.go:780: masks on "mx", "e4.example.com": "e4.example.com" [<nil>, <nil>]
    spf.go:411: "mx" permerror, too many MX records
    yml_test.go:260:       success: permerror, too many MX records  [mx-limit]
    yml_test.go:251:   test ptr-limit
    yml_test.go:253:     checkhost 1.2.3.5 foo@e5.example.com
    spf.go:308: check "e5.example.com" 0 0
    spf.go:330: dns record "v=spf1 ptr"
    spf.go:579: ptr names trimmed 11 down to 10
    spf.go:591: ptr forward resolution "e1.example.com." -> [{"1.2.3.6" ""}]
    spf.go:591: ptr forward resolution "e2.example.com." -> [{"1.2.3.7" ""}]
    spf.go:591: ptr forward resolution "e3.example.com." -> [{"1.2.3.8" ""}]
    spf.go:591: ptr forward resolution "e4.example.com." -> [{"1.2.3.5" ""}]
    spf.go:591: ptr forward resolution "e6.example.com." -> [{"1.2.3.8" ""}]
    spf.go:591: ptr forward resolution "e7.example.com." -> [{"1.2.3.20" ""}]
    spf.go:591: ptr forward resolution "e8.example.com." -> [{"1.2.3.4" ""}]
    spf.go:591: ptr forward resolution "e9.example.com." -> [{"1.2.3.21" ""}]
    spf.go:591: ptr forward resolution "e10.example.com." -> [{"1.2.3.1" ""} {"1.2.3.2" ""} {"1.2.3.3" ""} {"1.2.3.4" ""} {"1.2.3.5" ""} {"1.2.3.6" ""} {"1.2.3.7" ""} {"1.2.3.8" ""} {"1.2.3.9" ""} {"1.2.3.10" ""} {"1.2.3.11" ""} {"1.2.3.12" ""}]
    spf.go:600: ptr evaluating "e5.example.com" in ["e1.example.com." "e2.example.com." "e3.example.com." "e4.example.com." "e6.example.com." "e7.example.com." "e8.example.com." "e9.example.com." "e10.example.com."]
    spf.go:444: fallback to neutral
    yml_test.go:260:       success: neutral, <nil>  [ptr-limit]
    yml_test.go:251:   test false-a-limit
    yml_test.go:253:     checkhost 1.2.3.12 foo@e10.example.com
    spf.go:308: check "e10.example.com" 0 0
    spf.go:330: dns record "v=spf1 a -all"
    spf.go:747: masks on "a", "e10.example.com": "e10.example.com" [<nil>, <nil>]
    spf.go:768: a match: 1.2.3.12, 1.2.3.12, [<nil>, <nil>]
    spf.go:406: "a" pass, matched a
    yml_test.go:260:       success: pass, matched a  [false-a-limit]
    yml_test.go:251:   test mech-at-limit
    yml_test.go:253:     checkhost 1.2.3.4 foo@e6.example.com
    spf.go:308: check "e6.example.com" 0 0
    spf.go:330: dns record "v=spf1 a mx a mx a mx a mx a ptr ip4:1.2.3.4 -all"
    spf.go:747: masks on "a", "e6.example.com": "e6.example.com" [<nil>, <nil>]
    spf.go:780: masks on "mx", "e6.example.com": "e6.example.com" [<nil>, <nil>]
    spf.go:828: mx ips: [1.2.3.8]
    spf.go:747: masks on "a", "e6.example.com": "e6.example.com" [<nil>, <nil>]
    spf.go:780: masks on "mx", "e6.example.com": "e6.example.com" [<nil>, <nil>]
    spf.go:828: mx ips: [1.2.3.8]
    spf.go:747: masks on "a", "e6.example.com": "e6.example.com" [<nil>, <nil>]
    spf.go:780: masks on "mx", "e6.example.com": "e6.example.com" [<nil>, <nil>]
    spf.go:828: mx ips: [1.2.3.8]
    spf.go:747: masks on "a", "e6.example.com": "e6.example.com" [<nil>, <nil>]
    spf.go:780: masks on "mx", "e6.example.com": "e6.example.com" [<nil>, <nil>]
    spf.go:828: mx ips: [1.2.3.8]
    spf.go:747: masks on "a", "e6.example.com": "e6.example.com" [<nil>, <nil>]
    spf.go:514: void lookup: nxdomain
    spf.go:536: ip match: 1.2.3.4
    spf.go:416: "ip4:1.2.3.4" pass, matched ip
    yml_test.go:260:       success: pass, matched ip  [mech-at-limit]
    yml_test.go:251:   test mech-over-limit
    yml_test.go:253:     checkhost 1.2.3.4 foo@e7.example.com
    spf.go:308: check "e7.example.com" 0 0
    spf.go:330: dns record "v=spf1 a mx a mx a mx a mx a ptr a ip4:1.2.3.4 -all"
    spf.go:747: masks on "a", "e7.example.com": "e7.example.com" [<nil>, <nil>]
    spf.go:780: masks on "mx", "e7.example.com": "e7.example.com" [<nil>, <nil>]
    spf.go:514: void lookup: nxdomain
    spf.go:747: masks on "a", "e7.example.com": "e7.example.com" [<nil>, <nil>]
    spf.go:780: masks on "mx", "e7.example.com": "e7.example.com" [<nil>, <nil>]
    spf.go:514: void lookup: nxdomain
    spf.go:747: masks on "a", "e7.example.com": "e7.example.com" [<nil>, <nil>]
    spf.go:780: masks on "mx", "e7.example.com": "e7.example.com" [<nil>, <nil>]
    spf.go:514: void lookup: nxdomain
    spf.go:378: void lookup limit reached
    yml_test.go:260:       success: permerror, void lookup limit reached  [mech-over-limit]
    yml_test.go:251:   test include-at-limit
    yml_test.go:253:     checkhost 1.2.3.4 foo@e8.example.com
    spf.go:308: check "e8.example.com" 0 0
    spf.go:330: dns record "v=spf1 a include:inc.example.com ip4:1.2.3.4 mx -all"
    spf.go:747: masks on "a", "e8.example.com": "e8.example.com" [<nil>, <nil>]
    spf.go:768: a match: 1.2.3.4, 1.2.3.4, [<nil>, <nil>]
    spf.go:406: "a" pass, matched a
    yml_test.go:260:       success: pass, matched a  [include-at-limit]
    yml_test.go:251:   test void-over-limit
    yml_test.go:253:     checkhost 1.2.3.4 foo@e11.example.com
    spf.go:308: check "e11.example.com" 0 0
    spf.go:330: dns record "v=spf1 a:err.example.com a:err1.example.com a:err2.example.com ?all"
    spf.go:747: masks on "a:err.example.com", "e11.example.com": "err.example.com" [<nil>, <nil>]
    spf.go:514: void lookup: nxdomain
    spf.go:747: masks on "a:err1.example.com", "e11.example.com": "err1.example.com" [<nil>, <nil>]
    spf.go:514: void lookup: nxdomain
    spf.go:747: masks on "a:err2.example.com", "e11.example.com": "err2.example.com" [<nil>, <nil>]
    spf.go:514: void lookup: nxdomain
    spf.go:378: void lookup limit reached
    yml_test.go:260:       success: permerror, void lookup limit reached  [void-over-limit]
    yml_test.go:162: suite: Test cases from implementation bugs
    yml_test.go:167:   domain example.org
    yml_test.go:169:     SPF: [v=spf1 mx redirect=_spf.example.com]
    yml_test.go:169:     MX: {10 smtp.example.org}
    yml_test.go:169:     MX: {10 smtp1.example.com}
    yml_test.go:167:   domain 2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.1.0.0.F.F.0.8.B.D.0.1.0.0.2.ip6.arpa
    yml_test.go:169:     PTR: [smtp6-v.fe.example.org]
    yml_test.go:167:   domain _spf.example.com
    yml_test.go:169:     SPF: [v=spf1 ptr:fe.example.org ptr:sgp.example.com exp=_expspf.example.org -all]
    yml_test.go:167:   domain _expspf.example.org
    yml_test.go:169:     TXT: [Sender domain not allowed from this host. Please see http://www.openspf.org/Why?s=mfrom&id=%{S}&ip=%{C}&r=%{R}]
    yml_test.go:167:   domain mail.example.org
    yml_test.go:169:     SPF: [v=spf1 include:a.example.org include:b.example.org -all]
    yml_test.go:169:     A: [192.0.2.28]
    yml_test.go:167:   domain smtp.example.org
    yml_test.go:169:     A: [198.51.100.2]
    yml_test.go:169:     AAAA: [2001:db8:ff0:100::3]
    yml_test.go:167:   domain smtp1.example.com
    yml_test.go:169:     A: [192.0.2.26]
    yml_test.go:169:     AAAA: [2001:db8:ff0:200::2]
    yml_test.go:167:   domain smtp6-v.fe.example.org
    yml_test.go:169:     AAAA: [2001:db8:ff0:100::2]
    yml_test.go:167:   domain a.example.org
    yml_test.go:169:     TXT: [Another TXT record.]
    yml_test.go:169:     TXT: [v=spf1 ip4:192.0.2.225 ?include:webmail.pair.com ?include:relay.pair.com -all]
    yml_test.go:169:     TXT: [More TXT records.]
    yml_test.go:169:     TXT: [A third TXT record.]
    yml_test.go:169:     AAAA: [2001:db8:ff0:300::4]
    yml_test.go:167:   domain b.example.org
    yml_test.go:169:     CNAME: a.example.org
    yml_test.go:167:   domain webmail.pair.com
    yml_test.go:169:     TXT: [v=spf1 ip4:66.39.3.0/24 ip4:209.68.6.94/32]
    yml_test.go:167:   domain relay.pair.com
    yml_test.go:169:     TXT: [v=spf1 ip4:209.68.5.9/32 ip4:209.68.5.15/32 a -all]
    yml_test.go:169:     A: [192.0.2.131]
    yml_test.go:251:   test cname-aliasing
    yml_test.go:253:     checkhost 192.0.2.27 test@mail.example.org
    spf.go:308: check "mail.example.org" 0 0
    spf.go:330: dns record "v=spf1 include:a.example.org include:b.example.org -all"
    spf.go:308: check "a.example.org" 1 0
    spf.go:330: dns record "v=spf1 ip4:192.0.2.225 ?include:webmail.pair.com ?include:relay.pair.com -all"
    spf.go:308: check "webmail.pair.com" 2 0
    spf.go:330: dns record "v=spf1 ip4:66.39.3.0/24 ip4:209.68.6.94/32"
    spf.go:444: fallback to neutral
    spf.go:308: check "relay.pair.com" 3 0
    spf.go:330: dns record "v=spf1 ip4:209.68.5.9/32 ip4:209.68.5.15/32 a -all"
    spf.go:747: masks on "a", "relay.pair.com": "relay.pair.com" [<nil>, <nil>]
    spf.go:397: all: fail
    spf.go:397: all: fail
    spf.go:308: check "b.example.org" 5 0
    spf.go:330: dns record "v=spf1 ip4:192.0.2.225 ?include:webmail.pair.com ?include:relay.pair.com -all"
    spf.go:308: check "webmail.pair.com" 6 0
    spf.go:330: dns record "v=spf1 ip4:66.39.3.0/24 ip4:209.68.6.94/32"
    spf.go:444: fallback to neutral
    spf.go:308: check "relay.pair.com" 7 0
    spf.go:330: dns record "v=spf1 ip4:209.68.5.9/32 ip4:209.68.5.15/32 a -all"
    spf.go:747: masks on "a", "relay.pair.com": "relay.pair.com" [<nil>, <nil>]
    spf.go:397: all: fail
    spf.go:397: all: fail
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [cname-aliasing]
    yml_test.go:251:   test bytes-bug
    yml_test.go:253:     checkhost 2001:db8:ff0:100::2 test@example.org
    spf.go:308: check "example.org" 0 0
    spf.go:330: dns record "v=spf1 mx redirect=_spf.example.com"
    spf.go:780: masks on "mx", "example.org": "example.org" [<nil>, <nil>]
    spf.go:828: mx ips: [198.51.100.2 2001:db8:ff0:100::3 192.0.2.26 2001:db8:ff0:200::2]
    spf.go:308: check "_spf.example.com" 2 0
    spf.go:330: dns record "v=spf1 ptr:fe.example.org ptr:sgp.example.com exp=_expspf.example.org -all"
    spf.go:591: ptr forward resolution "smtp6-v.fe.example.org." -> [{"2001:db8:ff0:100::2" ""}]
    spf.go:600: ptr evaluating "fe.example.org" in ["smtp6-v.fe.example.org."]
    spf.go:604: ptr match: "smtp6-v.fe.example.org."
    spf.go:421: "ptr:fe.example.org" pass, matched ptr
    spf.go:434: "redirect=_spf.example.com": pass, matched ptr
    yml_test.go:260:       success: pass, matched ptr  [bytes-bug]
--- PASS: TestRFC7208 (0.03s)
=== RUN   TestPySPF
    yml_test.go:162: suite: 
    yml_test.go:167:   domain example.co.uk
    yml_test.go:169:     SPF: [v=spf1 mx/26 exists:%{l}.%{d}.%{i}.spf.example.net -all]
    yml_test.go:167:   domain lyme.eater.example.co.uk.1.2.3.5.spf.example.net
    yml_test.go:169:     A: [127.0.0.1]
    yml_test.go:251:   test exists-pass
    yml_test.go:253:     checkhost 1.2.3.5 lyme.eater@example.co.uk
    spf.go:308: check "example.co.uk" 0 0
    spf.go:330: dns record "v=spf1 mx/26 exists:%{l}.%{d}.%{i}.spf.example.net -all"
    spf.go:780: masks on "mx/26", "example.co.uk": "example.co.uk" [/26, <nil>]
    spf.go:514: void lookup: nxdomain
    spf.go:923: macro "l": ["l" "l" "" "" ""]
    spf.go:923: macro "d": ["d" "d" "" "" ""]
    spf.go:923: macro "i": ["i" "i" "" "" ""]
    spf.go:1020: macro expanded "%{l}.%{d}.%{i}.spf.example.net" to "lyme.eater.example.co.uk.1.2.3.5.spf.example.net"
    spf.go:640: exists match: 127.0.0.1
    spf.go:426: "exists:%{l}.%{d}.%{i}.spf.example.net" pass, matched exists
    yml_test.go:260:       success: pass, matched exists  [exists-pass]
    yml_test.go:251:   test exists-fail
    yml_test.go:253:     checkhost 1.2.3.4 lyme.eater@example.co.uk
    spf.go:308: check "example.co.uk" 0 0
    spf.go:330: dns record "v=spf1 mx/26 exists:%{l}.%{d}.%{i}.spf.example.net -all"
    spf.go:780: masks on "mx/26", "example.co.uk": "example.co.uk" [/26, <nil>]
    spf.go:514: void lookup: nxdomain
    spf.go:923: macro "l": ["l" "l" "" "" ""]
    spf.go:923: macro "d": ["d" "d" "" "" ""]
    spf.go:923: macro "i": ["i" "i" "" "" ""]
    spf.go:1020: macro expanded "%{l}.%{d}.%{i}.spf.example.net" to "lyme.eater.example.co.uk.1.2.3.4.spf.example.net"
    spf.go:514: void lookup: nxdomain
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [exists-fail]
    yml_test.go:162: suite: 
    yml_test.go:167:   domain examplea.com
    yml_test.go:169:     SPF: [v=spf1 a mx include:b.com]
    yml_test.go:167:   domain exampleb.com
    yml_test.go:169:     SPF: [v=spf1 a mx include:a.com]
    yml_test.go:167:   domain examplec.com
    yml_test.go:169:     SPF: [v=spf1 -all:foobar]
    yml_test.go:167:   domain exampled.com
    yml_test.go:169:     SPF: [v=spf1 a:examplea.com:8080]
    yml_test.go:167:   domain examplee.com
    yml_test.go:169:     SPF: [v=spf1 ip4:1.2.3.4:8080]
    yml_test.go:167:   domain examplef.com
    yml_test.go:169:     SPF: [v=spf1 -all]
    yml_test.go:169:     SPF: [v=spf1 +all]
    yml_test.go:251:   test incloop
    yml_test.go:253:     checkhost 66.150.186.79 chuckvsr@examplea.com
    spf.go:308: check "examplea.com" 0 0
    spf.go:330: dns record "v=spf1 a mx include:b.com"
    spf.go:747: masks on "a", "examplea.com": "examplea.com" [<nil>, <nil>]
    spf.go:514: void lookup: nxdomain
    spf.go:780: masks on "mx", "examplea.com": "examplea.com" [<nil>, <nil>]
    spf.go:514: void lookup: nxdomain
    spf.go:308: check "b.com" 3 2
    spf.go:314: dns domain not found: lookup : domain not found (for testing)
    spf.go:401: "include:b.com" permerror, no DNS record found
    yml_test.go:260:       success: permerror, no DNS record found  [incloop]
    yml_test.go:251:   test badall
    yml_test.go:253:     checkhost 66.150.186.79 chuckvsr@examplec.com
    spf.go:308: check "examplec.com" 0 0
    spf.go:330: dns record "v=spf1 -all:foobar"
    spf.go:437: unknown field, permerror
    yml_test.go:260:       success: permerror, unknown field  [badall]
    yml_test.go:251:   test tworecs
    yml_test.go:253:     checkhost 66.150.186.79 chuckvsr@examplef.com
    spf.go:308: check "examplef.com" 0 0
    spf.go:322: multiple dns records
    yml_test.go:260:       success: permerror, multiple matching DNS records  [tworecs]
    yml_test.go:251:   test badip
    yml_test.go:253:     checkhost 66.150.186.79 chuckvsr@examplee.com
    spf.go:308: check "examplee.com" 0 0
    spf.go:330: dns record "v=spf1 ip4:1.2.3.4:8080"
    spf.go:416: "ip4:1.2.3.4:8080" permerror, invalid ipX value
    yml_test.go:260:       success: permerror, invalid ipX value  [badip]
    yml_test.go:162: suite: 
    yml_test.go:167:   domain example3.com
    yml_test.go:169:     SPF: [v=spf1 mx]
    yml_test.go:169:     SPF: [v=spf1  mx]
    yml_test.go:169:     MX: {0 mail.example1.com}
    yml_test.go:167:   domain example1.com
    yml_test.go:169:     SPF: [v=spf1]
    yml_test.go:167:   domain example2.com
    yml_test.go:169:     SPF: [v=spf1mx]
    yml_test.go:167:   domain mail.example1.com
    yml_test.go:169:     A: [1.2.3.4]
    yml_test.go:251:   test nospace1
    yml_test.go:253:     checkhost 1.2.3.4 foo@example2.com
    spf.go:308: check "example2.com" 0 0
    spf.go:330: dns record ""
    yml_test.go:260:       success: none, no DNS record found  [nospace1]
    yml_test.go:251:   test empty
    yml_test.go:253:     checkhost 1.2.3.4 foo@example1.com
    spf.go:308: check "example1.com" 0 0
    spf.go:330: dns record "v=spf1"
    spf.go:444: fallback to neutral
    yml_test.go:260:       success: neutral, <nil>  [empty]
    yml_test.go:251:   test nospace2
    yml_test.go:253:     checkhost 1.2.3.4 foo@example3.com
    spf.go:308: check "example3.com" 0 0
    spf.go:330: dns record "v=spf1 mx"
    spf.go:780: masks on "mx", "example3.com": "example3.com" [<nil>, <nil>]
    spf.go:828: mx ips: [1.2.3.4]
    spf.go:831: mx match: 1.2.3.4, 1.2.3.4, [<nil>, <nil>]
    spf.go:411: "mx" pass, matched mx
    yml_test.go:260:       success: pass, matched mx  [nospace2]
    yml_test.go:162: suite: 
    yml_test.go:167:   domain c1.example.com
    yml_test.go:169:     CNAME: c2.example.com.
    yml_test.go:167:   domain c2.example.com
    yml_test.go:169:     SPF: [v=spf1 a a:c1.example.com -all]
    yml_test.go:169:     A: [1.2.3.4]
    yml_test.go:167:   domain mx1.example.com
    yml_test.go:169:     <empty>
    yml_test.go:167:   domain e3.example.com
    yml_test.go:169:     SPF: [v=spf1 a:mx1.example.com mx:mx1.example.com ~all]
    yml_test.go:167:   domain mail.example.com
    yml_test.go:169:     MX: {0 }
    yml_test.go:169:     SPF: [v=spf1 mx]
    yml_test.go:167:   domain example.com
    yml_test.go:169:     SPF: [v=spf1 -all]
    yml_test.go:167:   domain e1.example.com
    yml_test.go:169:     SPF: [v=spf1 default=-]
    yml_test.go:167:   domain e2.example.com
    yml_test.go:169:     CNAME: c1.example.com.
    yml_test.go:251:   test emptyMX
    yml_test.go:253:     checkhost 1.2.3.4 
    spf.go:308: check "mail.example.com" 0 0
    spf.go:330: dns record "v=spf1 mx"
    spf.go:780: masks on "mx", "mail.example.com": "mail.example.com" [<nil>, <nil>]
    spf.go:828: mx ips: []
    spf.go:444: fallback to neutral
    yml_test.go:260:       success: neutral, <nil>  [emptyMX]
    yml_test.go:251:   test localhost
    yml_test.go:253:     checkhost 127.0.0.1 root@example.com
    spf.go:308: check "example.com" 0 0
    spf.go:330: dns record "v=spf1 -all"
    spf.go:397: all: fail
    yml_test.go:260:       success: fail, matched all  [localhost]
    yml_test.go:251:   test cname-chain
    yml_test.go:253:     checkhost 1.2.3.4 foo@e2.example.com
    spf.go:308: check "e2.example.com" 0 0
    spf.go:330: dns record "v=spf1 a a:c1.example.com -all"
    spf.go:747: masks on "a", "e2.example.com": "e2.example.com" [<nil>, <nil>]
    spf.go:768: a match: 1.2.3.4, 1.2.3.4, [<nil>, <nil>]
    spf.go:406: "a" pass, matched a
    yml_test.go:260:       success: pass, matched a  [cname-chain]
    yml_test.go:251:   test null-cname
    yml_test.go:253:     checkhost 1.2.3.4 bar@e3.example.com
    spf.go:308: check "e3.example.com" 0 0
    spf.go:330: dns record "v=spf1 a:mx1.example.com mx:mx1.example.com ~all"
    spf.go:747: masks on "a:mx1.example.com", "e3.example.com": "mx1.example.com" [<nil>, <nil>]
    spf.go:514: void lookup: nxdomain
    spf.go:780: masks on "mx:mx1.example.com", "e3.example.com": "mx1.example.com" [<nil>, <nil>]
    spf.go:514: void lookup: nxdomain
    spf.go:397: all: softfail
    yml_test.go:260:       success: softfail, matched all  [null-cname]
--- PASS: TestPySPF (0.00s)
PASS
ok  	blitiri.com.ar/go/spf	0.081s
   create-stamp debian/debhelper-build-stamp
   dh_testroot -O--buildsystem=golang
   dh_prep -O--buildsystem=golang
   dh_auto_install --destdir=debian/golang-blitiri-go-spf-dev/ -O--buildsystem=golang
   dh_installdocs -O--buildsystem=golang
   dh_installchangelogs -O--buildsystem=golang
   dh_installsystemduser -O--buildsystem=golang
   dh_perl -O--buildsystem=golang
   dh_link -O--buildsystem=golang
   dh_strip_nondeterminism -O--buildsystem=golang
   dh_compress -O--buildsystem=golang
   dh_fixperms -O--buildsystem=golang
   dh_missing -O--buildsystem=golang
   dh_installdeb -O--buildsystem=golang
   dh_golang -O--buildsystem=golang
   dh_gencontrol -O--buildsystem=golang
dpkg-gencontrol: warning: Depends field of package golang-blitiri-go-spf-dev: substitution variable ${shlibs:Depends} used, but is not defined
   dh_md5sums -O--buildsystem=golang
   dh_builddeb -O--buildsystem=golang
dpkg-deb: building package 'golang-blitiri-go-spf-dev' in '../golang-blitiri-go-spf-dev_1.5.1-1_all.deb'.
 dpkg-genbuildinfo --build=binary -O../golang-blitiri-go-spf_1.5.1-1_arm64.buildinfo
 dpkg-genchanges --build=binary -O../golang-blitiri-go-spf_1.5.1-1_arm64.changes
dpkg-genchanges: info: binary-only upload (no source code included)
 dpkg-source --after-build .
dpkg-buildpackage: info: binary-only upload (no source included)
dpkg-genchanges: info: including full source code in upload
I: copying local configuration
I: unmounting dev/ptmx filesystem
I: unmounting dev/pts filesystem
I: unmounting dev/shm filesystem
I: unmounting proc filesystem
I: unmounting sys filesystem
I: cleaning the build env 
I: removing directory /srv/workspace/pbuilder/3314642 and its subdirectories
I: Current time: Sun Feb 22 21:51:42 -12 2026
I: pbuilder-time-stamp: 1771840302