I: pbuilder: network access will be disabled during build I: Current time: Wed Jul 21 04:06:02 +14 2021 I: pbuilder-time-stamp: 1626789962 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/bullseye-reproducible-base.tgz] I: copying local configuration 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.1.0-1.dsc] I: copying [./golang-blitiri-go-spf_1.1.0.orig.tar.gz] I: copying [./golang-blitiri-go-spf_1.1.0-1.debian.tar.xz] I: Extracting source gpgv: unknown type of key resource 'trustedkeys.kbx' gpgv: keyblock resource '/tmp/dpkg-verify-sig.JTrEi9Cs/trustedkeys.kbx': General error gpgv: Signature made Tue Jun 30 05:19:37 2020 +14 gpgv: using RSA key DAA6EFF1C627EA1C26B1A692AA230FC45F8C27B1 gpgv: Can't check signature: No public key dpkg-source: warning: failed to verify signature on ./golang-blitiri-go-spf_1.1.0-1.dsc dpkg-source: info: extracting golang-blitiri-go-spf in golang-blitiri-go-spf-1.1.0 dpkg-source: info: unpacking golang-blitiri-go-spf_1.1.0.orig.tar.gz dpkg-source: info: unpacking golang-blitiri-go-spf_1.1.0-1.debian.tar.xz I: Not using root during the build. I: Installing the build-deps I: user script /srv/workspace/pbuilder/16804/tmp/hooks/D01_modify_environment starting debug: Running on jtx1c. I: Changing host+domainname to test build reproducibility I: Adding a custom variable just for the fun of it... I: Changing /bin/sh to bash Removing 'diversion of /bin/sh to /bin/sh.distrib by dash' Adding 'diversion of /bin/sh to /bin/sh.distrib by bash' Removing 'diversion of /usr/share/man/man1/sh.1.gz to /usr/share/man/man1/sh.distrib.1.gz by dash' Adding 'diversion of /usr/share/man/man1/sh.1.gz to /usr/share/man/man1/sh.distrib.1.gz by bash' I: Setting pbuilder2's login shell to /bin/bash I: Setting pbuilder2's GECOS to second user,second room,second work-phone,second home-phone,second other I: user script /srv/workspace/pbuilder/16804/tmp/hooks/D01_modify_environment finished I: user script /srv/workspace/pbuilder/16804/tmp/hooks/D02_print_environment starting I: set BASH=/bin/sh BASHOPTS=checkwinsize:cmdhist:complete_fullquote:extquote:force_fignore:globasciiranges:hostcomplete:interactive_comments:progcomp:promptvars:sourcepath BASH_ALIASES=() BASH_ARGC=() BASH_ARGV=() BASH_CMDS=() BASH_LINENO=([0]="12" [1]="0") BASH_SOURCE=([0]="/tmp/hooks/D02_print_environment" [1]="/tmp/hooks/D02_print_environment") BASH_VERSINFO=([0]="5" [1]="1" [2]="4" [3]="1" [4]="release" [5]="arm-unknown-linux-gnueabihf") BASH_VERSION='5.1.4(1)-release' BUILDDIR=/build BUILDUSERGECOS='second user,second room,second work-phone,second home-phone,second other' BUILDUSERNAME=pbuilder2 BUILD_ARCH=armhf DEBIAN_FRONTEND=noninteractive DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all,-fixfilepath parallel=4' DIRSTACK=() DISTRIBUTION= EUID=0 FUNCNAME=([0]="Echo" [1]="main") GROUPS=() HOME=/root HOSTNAME=i-capture-the-hostname HOSTTYPE=arm HOST_ARCH=armhf IFS=' ' INVOCATION_ID=88e75f10d351415c9ac53d52ac0425a4 LANG=C LANGUAGE=it_CH:it LC_ALL=C MACHTYPE=arm-unknown-linux-gnueabihf MAIL=/var/mail/root OPTERR=1 OPTIND=1 OSTYPE=linux-gnueabihf PATH=/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path PBCURRENTCOMMANDLINEOPERATION=build PBUILDER_OPERATION=build PBUILDER_PKGDATADIR=/usr/share/pbuilder PBUILDER_PKGLIBDIR=/usr/lib/pbuilder PBUILDER_SYSCONFDIR=/etc PIPESTATUS=([0]="0") POSIXLY_CORRECT=y PPID=16804 PS4='+ ' PWD=/ SHELL=/bin/bash SHELLOPTS=braceexpand:errexit:hashall:interactive-comments:posix SHLVL=3 SUDO_COMMAND='/usr/bin/timeout -k 24.1h 24h /usr/bin/ionice -c 3 /usr/bin/nice -n 11 /usr/bin/unshare --uts -- /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/tmp.eoLUxw9imM/pbuilderrc_YHx5 --hookdir /etc/pbuilder/rebuild-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/bullseye-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/tmp.eoLUxw9imM/b2 --logfile b2/build.log --extrapackages usrmerge golang-blitiri-go-spf_1.1.0-1.dsc' SUDO_GID=114 SUDO_UID=108 SUDO_USER=jenkins TERM=unknown TZ=/usr/share/zoneinfo/Etc/GMT-14 UID=0 USER=root _='I: set' http_proxy=http://10.0.0.15:8000/ I: uname -a Linux i-capture-the-hostname 5.10.0-7-arm64 #1 SMP Debian 5.10.40-1 (2021-05-28) aarch64 GNU/Linux I: ls -l /bin total 3580 -rwxr-xr-x 1 root root 816764 Jun 22 16:26 bash -rwxr-xr-x 3 root root 26052 Jul 21 2020 bunzip2 -rwxr-xr-x 3 root root 26052 Jul 21 2020 bzcat lrwxrwxrwx 1 root root 6 Jul 21 2020 bzcmp -> bzdiff -rwxr-xr-x 1 root root 2225 Jul 21 2020 bzdiff lrwxrwxrwx 1 root root 6 Jul 21 2020 bzegrep -> bzgrep -rwxr-xr-x 1 root root 4877 Sep 5 2019 bzexe lrwxrwxrwx 1 root root 6 Jul 21 2020 bzfgrep -> bzgrep -rwxr-xr-x 1 root root 3775 Jul 21 2020 bzgrep -rwxr-xr-x 3 root root 26052 Jul 21 2020 bzip2 -rwxr-xr-x 1 root root 9636 Jul 21 2020 bzip2recover lrwxrwxrwx 1 root root 6 Jul 21 2020 bzless -> bzmore -rwxr-xr-x 1 root root 1297 Jul 21 2020 bzmore -rwxr-xr-x 1 root root 26668 Sep 23 2020 cat -rwxr-xr-x 1 root root 43104 Sep 23 2020 chgrp -rwxr-xr-x 1 root root 38984 Sep 23 2020 chmod -rwxr-xr-x 1 root root 43112 Sep 23 2020 chown -rwxr-xr-x 1 root root 92616 Sep 23 2020 cp -rwxr-xr-x 1 root root 75524 Dec 11 2020 dash -rwxr-xr-x 1 root root 75880 Sep 23 2020 date -rwxr-xr-x 1 root root 55436 Sep 23 2020 dd -rwxr-xr-x 1 root root 59912 Sep 23 2020 df -rwxr-xr-x 1 root root 96764 Sep 23 2020 dir -rwxr-xr-x 1 root root 55012 Feb 8 04:38 dmesg lrwxrwxrwx 1 root root 8 Nov 8 2019 dnsdomainname -> hostname lrwxrwxrwx 1 root root 8 Nov 8 2019 domainname -> hostname -rwxr-xr-x 1 root root 22508 Sep 23 2020 echo -rwxr-xr-x 1 root root 28 Nov 10 2020 egrep -rwxr-xr-x 1 root root 22496 Sep 23 2020 false -rwxr-xr-x 1 root root 28 Nov 10 2020 fgrep -rwxr-xr-x 1 root root 47492 Feb 8 04:38 findmnt -rwsr-xr-x 1 root root 26076 Feb 27 06:12 fusermount -rwxr-xr-x 1 root root 124508 Nov 10 2020 grep -rwxr-xr-x 2 root root 2346 Mar 3 13:30 gunzip -rwxr-xr-x 1 root root 6376 Mar 3 13:30 gzexe -rwxr-xr-x 1 root root 64212 Mar 3 13:30 gzip -rwxr-xr-x 1 root root 13784 Nov 8 2019 hostname -rwxr-xr-x 1 root root 43180 Sep 23 2020 ln -rwxr-xr-x 1 root root 35068 Feb 8 2020 login -rwxr-xr-x 1 root root 96764 Sep 23 2020 ls -rwxr-xr-x 1 root root 99940 Feb 8 04:38 lsblk -rwxr-xr-x 1 root root 51408 Sep 23 2020 mkdir -rwxr-xr-x 1 root root 43184 Sep 23 2020 mknod -rwxr-xr-x 1 root root 30780 Sep 23 2020 mktemp -rwxr-xr-x 1 root root 34408 Feb 8 04:38 more -rwsr-xr-x 1 root root 34400 Feb 8 04:38 mount -rwxr-xr-x 1 root root 9824 Feb 8 04:38 mountpoint -rwxr-xr-x 1 root root 88524 Sep 23 2020 mv lrwxrwxrwx 1 root root 8 Nov 8 2019 nisdomainname -> hostname lrwxrwxrwx 1 root root 14 Apr 19 05:38 pidof -> /sbin/killall5 -rwxr-xr-x 1 root root 26652 Sep 23 2020 pwd lrwxrwxrwx 1 root root 4 Jun 22 16:26 rbash -> bash -rwxr-xr-x 1 root root 30740 Sep 23 2020 readlink -rwxr-xr-x 1 root root 43104 Sep 23 2020 rm -rwxr-xr-x 1 root root 30732 Sep 23 2020 rmdir -rwxr-xr-x 1 root root 14144 Sep 28 2020 run-parts -rwxr-xr-x 1 root root 76012 Dec 23 2018 sed lrwxrwxrwx 1 root root 4 Jul 21 04:06 sh -> bash lrwxrwxrwx 1 root root 4 Jul 20 23:26 sh.distrib -> dash -rwxr-xr-x 1 root root 22532 Sep 23 2020 sleep -rwxr-xr-x 1 root root 55360 Sep 23 2020 stty -rwsr-xr-x 1 root root 46704 Feb 8 04:38 su -rwxr-xr-x 1 root root 22532 Sep 23 2020 sync -rwxr-xr-x 1 root root 340872 Feb 17 23:55 tar -rwxr-xr-x 1 root root 9808 Sep 28 2020 tempfile -rwxr-xr-x 1 root root 67696 Sep 23 2020 touch -rwxr-xr-x 1 root root 22496 Sep 23 2020 true -rwxr-xr-x 1 root root 9636 Feb 27 06:12 ulockmgr_server -rwsr-xr-x 1 root root 22108 Feb 8 04:38 umount -rwxr-xr-x 1 root root 22520 Sep 23 2020 uname -rwxr-xr-x 2 root root 2346 Mar 3 13:30 uncompress -rwxr-xr-x 1 root root 96764 Sep 23 2020 vdir -rwxr-xr-x 1 root root 38512 Feb 8 04:38 wdctl lrwxrwxrwx 1 root root 8 Nov 8 2019 ypdomainname -> hostname -rwxr-xr-x 1 root root 1984 Mar 3 13:30 zcat -rwxr-xr-x 1 root root 1678 Mar 3 13:30 zcmp -rwxr-xr-x 1 root root 5880 Mar 3 13:30 zdiff -rwxr-xr-x 1 root root 29 Mar 3 13:30 zegrep -rwxr-xr-x 1 root root 29 Mar 3 13:30 zfgrep -rwxr-xr-x 1 root root 2081 Mar 3 13:30 zforce -rwxr-xr-x 1 root root 7585 Mar 3 13:30 zgrep -rwxr-xr-x 1 root root 2206 Mar 3 13:30 zless -rwxr-xr-x 1 root root 1842 Mar 3 13:30 zmore -rwxr-xr-x 1 root root 4553 Mar 3 13:30 znew I: user script /srv/workspace/pbuilder/16804/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: armhf Maintainer: Debian Pbuilder Team 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.v2-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 ... 19398 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.v2-dev; however: Package golang-gopkg-yaml.v2-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.15-go{a} golang-1.15-src{a} golang-any{a} golang-go{a} golang-gopkg-yaml.v2-dev{a} golang-src{a} groff-base{a} intltool-debian{a} libarchive-zip-perl{a} libdebhelper-perl{a} libelf1{a} libfile-stripnondeterminism-perl{a} libicu67{a} libmagic-mgc{a} libmagic1{a} libpipeline1{a} libsigsegv2{a} libsub-override-perl{a} libtool{a} libuchardet0{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 pkg-config pkgconf wget 0 packages upgraded, 38 newly installed, 0 to remove and 0 not upgraded. Need to get 74.8 MB of archives. After unpacking 395 MB will be used. Writing extended state information... Get: 1 http://deb.debian.org/debian bullseye/main armhf bsdextrautils armhf 2.36.1-7 [138 kB] Get: 2 http://deb.debian.org/debian bullseye/main armhf libuchardet0 armhf 0.0.7-1 [65.0 kB] Get: 3 http://deb.debian.org/debian bullseye/main armhf groff-base armhf 1.22.4-6 [847 kB] Get: 4 http://deb.debian.org/debian bullseye/main armhf libpipeline1 armhf 1.5.3-1 [30.1 kB] Get: 5 http://deb.debian.org/debian bullseye/main armhf man-db armhf 2.9.4-2 [1319 kB] Get: 6 http://deb.debian.org/debian bullseye/main armhf sensible-utils all 0.0.14 [14.8 kB] Get: 7 http://deb.debian.org/debian bullseye/main armhf libmagic-mgc armhf 1:5.39-3 [273 kB] Get: 8 http://deb.debian.org/debian bullseye/main armhf libmagic1 armhf 1:5.39-3 [117 kB] Get: 9 http://deb.debian.org/debian bullseye/main armhf file armhf 1:5.39-3 [68.1 kB] Get: 10 http://deb.debian.org/debian bullseye/main armhf gettext-base armhf 0.21-4 [171 kB] Get: 11 http://deb.debian.org/debian bullseye/main armhf libsigsegv2 armhf 2.13-1 [34.0 kB] Get: 12 http://deb.debian.org/debian bullseye/main armhf m4 armhf 1.4.18-5 [192 kB] Get: 13 http://deb.debian.org/debian bullseye/main armhf autoconf all 2.69-14 [313 kB] Get: 14 http://deb.debian.org/debian bullseye/main armhf autotools-dev all 20180224.1+nmu1 [77.1 kB] Get: 15 http://deb.debian.org/debian bullseye/main armhf automake all 1:1.16.3-2 [814 kB] Get: 16 http://deb.debian.org/debian bullseye/main armhf autopoint all 0.21-4 [510 kB] Get: 17 http://deb.debian.org/debian bullseye/main armhf libdebhelper-perl all 13.3.4 [189 kB] Get: 18 http://deb.debian.org/debian bullseye/main armhf libtool all 2.4.6-15 [513 kB] Get: 19 http://deb.debian.org/debian bullseye/main armhf dh-autoreconf all 20 [17.1 kB] Get: 20 http://deb.debian.org/debian bullseye/main armhf libarchive-zip-perl all 1.68-1 [104 kB] Get: 21 http://deb.debian.org/debian bullseye/main armhf libsub-override-perl all 0.09-2 [10.2 kB] Get: 22 http://deb.debian.org/debian bullseye/main armhf libfile-stripnondeterminism-perl all 1.11.0-1 [25.6 kB] Get: 23 http://deb.debian.org/debian bullseye/main armhf dh-strip-nondeterminism all 1.11.0-1 [15.3 kB] Get: 24 http://deb.debian.org/debian bullseye/main armhf libelf1 armhf 0.183-1 [161 kB] Get: 25 http://deb.debian.org/debian bullseye/main armhf dwz armhf 0.13+20210201-1 [179 kB] Get: 26 http://deb.debian.org/debian bullseye/main armhf libicu67 armhf 67.1-7 [8319 kB] Get: 27 http://deb.debian.org/debian bullseye/main armhf libxml2 armhf 2.9.10+dfsg-6.7 [602 kB] Get: 28 http://deb.debian.org/debian bullseye/main armhf gettext armhf 0.21-4 [1243 kB] Get: 29 http://deb.debian.org/debian bullseye/main armhf intltool-debian all 0.35.0+20060710.5 [26.8 kB] Get: 30 http://deb.debian.org/debian bullseye/main armhf po-debconf all 1.0.21+nmu1 [248 kB] Get: 31 http://deb.debian.org/debian bullseye/main armhf debhelper all 13.3.4 [1049 kB] Get: 32 http://deb.debian.org/debian bullseye/main armhf dh-golang all 1.51 [24.6 kB] Get: 33 http://deb.debian.org/debian bullseye/main armhf golang-1.15-src armhf 1.15.9-5 [13.8 MB] Get: 34 http://deb.debian.org/debian bullseye/main armhf golang-1.15-go armhf 1.15.9-5 [43.1 MB] Get: 35 http://deb.debian.org/debian bullseye/main armhf golang-src armhf 2:1.15~1 [4856 B] Get: 36 http://deb.debian.org/debian bullseye/main armhf golang-go armhf 2:1.15~1 [23.9 kB] Get: 37 http://deb.debian.org/debian bullseye/main armhf golang-any armhf 2:1.15~1 [4976 B] Get: 38 http://deb.debian.org/debian bullseye/main armhf golang-gopkg-yaml.v2-dev all 2.4.0-1 [61.3 kB] Fetched 74.8 MB in 7s (10.8 MB/s) debconf: delaying package configuration, since apt-utils is not installed Selecting previously unselected package bsdextrautils. (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 ... 19398 files and directories currently installed.) Preparing to unpack .../00-bsdextrautils_2.36.1-7_armhf.deb ... Unpacking bsdextrautils (2.36.1-7) ... Selecting previously unselected package libuchardet0:armhf. Preparing to unpack .../01-libuchardet0_0.0.7-1_armhf.deb ... Unpacking libuchardet0:armhf (0.0.7-1) ... Selecting previously unselected package groff-base. Preparing to unpack .../02-groff-base_1.22.4-6_armhf.deb ... Unpacking groff-base (1.22.4-6) ... Selecting previously unselected package libpipeline1:armhf. Preparing to unpack .../03-libpipeline1_1.5.3-1_armhf.deb ... Unpacking libpipeline1:armhf (1.5.3-1) ... Selecting previously unselected package man-db. Preparing to unpack .../04-man-db_2.9.4-2_armhf.deb ... Unpacking man-db (2.9.4-2) ... Selecting previously unselected package sensible-utils. Preparing to unpack .../05-sensible-utils_0.0.14_all.deb ... Unpacking sensible-utils (0.0.14) ... Selecting previously unselected package libmagic-mgc. Preparing to unpack .../06-libmagic-mgc_1%3a5.39-3_armhf.deb ... Unpacking libmagic-mgc (1:5.39-3) ... Selecting previously unselected package libmagic1:armhf. Preparing to unpack .../07-libmagic1_1%3a5.39-3_armhf.deb ... Unpacking libmagic1:armhf (1:5.39-3) ... Selecting previously unselected package file. Preparing to unpack .../08-file_1%3a5.39-3_armhf.deb ... Unpacking file (1:5.39-3) ... Selecting previously unselected package gettext-base. Preparing to unpack .../09-gettext-base_0.21-4_armhf.deb ... Unpacking gettext-base (0.21-4) ... Selecting previously unselected package libsigsegv2:armhf. Preparing to unpack .../10-libsigsegv2_2.13-1_armhf.deb ... Unpacking libsigsegv2:armhf (2.13-1) ... Selecting previously unselected package m4. Preparing to unpack .../11-m4_1.4.18-5_armhf.deb ... Unpacking m4 (1.4.18-5) ... Selecting previously unselected package autoconf. Preparing to unpack .../12-autoconf_2.69-14_all.deb ... Unpacking autoconf (2.69-14) ... Selecting previously unselected package autotools-dev. Preparing to unpack .../13-autotools-dev_20180224.1+nmu1_all.deb ... Unpacking autotools-dev (20180224.1+nmu1) ... Selecting previously unselected package automake. Preparing to unpack .../14-automake_1%3a1.16.3-2_all.deb ... Unpacking automake (1:1.16.3-2) ... Selecting previously unselected package autopoint. Preparing to unpack .../15-autopoint_0.21-4_all.deb ... Unpacking autopoint (0.21-4) ... Selecting previously unselected package libdebhelper-perl. Preparing to unpack .../16-libdebhelper-perl_13.3.4_all.deb ... Unpacking libdebhelper-perl (13.3.4) ... Selecting previously unselected package libtool. Preparing to unpack .../17-libtool_2.4.6-15_all.deb ... Unpacking libtool (2.4.6-15) ... Selecting previously unselected package dh-autoreconf. Preparing to unpack .../18-dh-autoreconf_20_all.deb ... Unpacking dh-autoreconf (20) ... Selecting previously unselected package libarchive-zip-perl. Preparing to unpack .../19-libarchive-zip-perl_1.68-1_all.deb ... Unpacking libarchive-zip-perl (1.68-1) ... Selecting previously unselected package libsub-override-perl. Preparing to unpack .../20-libsub-override-perl_0.09-2_all.deb ... Unpacking libsub-override-perl (0.09-2) ... Selecting previously unselected package libfile-stripnondeterminism-perl. Preparing to unpack .../21-libfile-stripnondeterminism-perl_1.11.0-1_all.deb ... Unpacking libfile-stripnondeterminism-perl (1.11.0-1) ... Selecting previously unselected package dh-strip-nondeterminism. Preparing to unpack .../22-dh-strip-nondeterminism_1.11.0-1_all.deb ... Unpacking dh-strip-nondeterminism (1.11.0-1) ... Selecting previously unselected package libelf1:armhf. Preparing to unpack .../23-libelf1_0.183-1_armhf.deb ... Unpacking libelf1:armhf (0.183-1) ... Selecting previously unselected package dwz. Preparing to unpack .../24-dwz_0.13+20210201-1_armhf.deb ... Unpacking dwz (0.13+20210201-1) ... Selecting previously unselected package libicu67:armhf. Preparing to unpack .../25-libicu67_67.1-7_armhf.deb ... Unpacking libicu67:armhf (67.1-7) ... Selecting previously unselected package libxml2:armhf. Preparing to unpack .../26-libxml2_2.9.10+dfsg-6.7_armhf.deb ... Unpacking libxml2:armhf (2.9.10+dfsg-6.7) ... Selecting previously unselected package gettext. Preparing to unpack .../27-gettext_0.21-4_armhf.deb ... Unpacking gettext (0.21-4) ... Selecting previously unselected package intltool-debian. Preparing to unpack .../28-intltool-debian_0.35.0+20060710.5_all.deb ... Unpacking intltool-debian (0.35.0+20060710.5) ... Selecting previously unselected package po-debconf. Preparing to unpack .../29-po-debconf_1.0.21+nmu1_all.deb ... Unpacking po-debconf (1.0.21+nmu1) ... Selecting previously unselected package debhelper. Preparing to unpack .../30-debhelper_13.3.4_all.deb ... Unpacking debhelper (13.3.4) ... Selecting previously unselected package dh-golang. Preparing to unpack .../31-dh-golang_1.51_all.deb ... Unpacking dh-golang (1.51) ... Selecting previously unselected package golang-1.15-src. Preparing to unpack .../32-golang-1.15-src_1.15.9-5_armhf.deb ... Unpacking golang-1.15-src (1.15.9-5) ... Selecting previously unselected package golang-1.15-go. Preparing to unpack .../33-golang-1.15-go_1.15.9-5_armhf.deb ... Unpacking golang-1.15-go (1.15.9-5) ... Selecting previously unselected package golang-src:armhf. Preparing to unpack .../34-golang-src_2%3a1.15~1_armhf.deb ... Unpacking golang-src:armhf (2:1.15~1) ... Selecting previously unselected package golang-go. Preparing to unpack .../35-golang-go_2%3a1.15~1_armhf.deb ... Unpacking golang-go (2:1.15~1) ... Selecting previously unselected package golang-any:armhf. Preparing to unpack .../36-golang-any_2%3a1.15~1_armhf.deb ... Unpacking golang-any:armhf (2:1.15~1) ... Selecting previously unselected package golang-gopkg-yaml.v2-dev. Preparing to unpack .../37-golang-gopkg-yaml.v2-dev_2.4.0-1_all.deb ... Unpacking golang-gopkg-yaml.v2-dev (2.4.0-1) ... Setting up libpipeline1:armhf (1.5.3-1) ... Setting up golang-gopkg-yaml.v2-dev (2.4.0-1) ... Setting up bsdextrautils (2.36.1-7) ... update-alternatives: using /usr/bin/write.ul to provide /usr/bin/write (write) in auto mode Setting up libicu67:armhf (67.1-7) ... Setting up libmagic-mgc (1:5.39-3) ... Setting up golang-1.15-src (1.15.9-5) ... Setting up libarchive-zip-perl (1.68-1) ... Setting up libdebhelper-perl (13.3.4) ... Setting up libmagic1:armhf (1:5.39-3) ... Setting up gettext-base (0.21-4) ... Setting up file (1:5.39-3) ... Setting up autotools-dev (20180224.1+nmu1) ... Setting up libsigsegv2:armhf (2.13-1) ... Setting up autopoint (0.21-4) ... Setting up sensible-utils (0.0.14) ... Setting up libuchardet0:armhf (0.0.7-1) ... Setting up libsub-override-perl (0.09-2) ... Setting up golang-src:armhf (2:1.15~1) ... Setting up golang-1.15-go (1.15.9-5) ... Setting up libelf1:armhf (0.183-1) ... Setting up libxml2:armhf (2.9.10+dfsg-6.7) ... Setting up libfile-stripnondeterminism-perl (1.11.0-1) ... Setting up gettext (0.21-4) ... Setting up libtool (2.4.6-15) ... Setting up golang-go (2:1.15~1) ... Setting up m4 (1.4.18-5) ... Setting up golang-any:armhf (2:1.15~1) ... Setting up intltool-debian (0.35.0+20060710.5) ... Setting up autoconf (2.69-14) ... Setting up dh-strip-nondeterminism (1.11.0-1) ... Setting up dwz (0.13+20210201-1) ... Setting up groff-base (1.22.4-6) ... Setting up automake (1:1.16.3-2) ... update-alternatives: using /usr/bin/automake-1.16 to provide /usr/bin/automake (automake) in auto mode Setting up po-debconf (1.0.21+nmu1) ... Setting up man-db (2.9.4-2) ... Not building database; man-db/auto-update is not 'true'. Setting up dh-autoreconf (20) ... Setting up debhelper (13.3.4) ... Setting up dh-golang (1.51) ... Processing triggers for libc-bin (2.31-12) ... 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 Reading package lists... Building dependency tree... Reading state information... The following additional packages will be installed: libfile-find-rule-perl libnumber-compare-perl libtext-glob-perl The following NEW packages will be installed: libfile-find-rule-perl libnumber-compare-perl libtext-glob-perl usrmerge 0 upgraded, 4 newly installed, 0 to remove and 0 not upgraded. Need to get 59.5 kB of archives. After this operation, 157 kB of additional disk space will be used. Get:1 http://deb.debian.org/debian bullseye/main armhf libnumber-compare-perl all 0.03-1.1 [6956 B] Get:2 http://deb.debian.org/debian bullseye/main armhf libtext-glob-perl all 0.11-1 [8888 B] Get:3 http://deb.debian.org/debian bullseye/main armhf libfile-find-rule-perl all 0.34-1 [30.6 kB] Get:4 http://deb.debian.org/debian bullseye/main armhf usrmerge all 25 [13.0 kB] debconf: delaying package configuration, since apt-utils is not installed Fetched 59.5 kB in 0s (451 kB/s) Selecting previously unselected package libnumber-compare-perl. (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 ... 31902 files and directories currently installed.) Preparing to unpack .../libnumber-compare-perl_0.03-1.1_all.deb ... Unpacking libnumber-compare-perl (0.03-1.1) ... Selecting previously unselected package libtext-glob-perl. Preparing to unpack .../libtext-glob-perl_0.11-1_all.deb ... Unpacking libtext-glob-perl (0.11-1) ... Selecting previously unselected package libfile-find-rule-perl. Preparing to unpack .../libfile-find-rule-perl_0.34-1_all.deb ... Unpacking libfile-find-rule-perl (0.34-1) ... Selecting previously unselected package usrmerge. Preparing to unpack .../archives/usrmerge_25_all.deb ... Unpacking usrmerge (25) ... Setting up libtext-glob-perl (0.11-1) ... Setting up libnumber-compare-perl (0.03-1.1) ... Setting up libfile-find-rule-perl (0.34-1) ... Setting up usrmerge (25) ... The system has been successfully converted. Processing triggers for man-db (2.9.4-2) ... Not building database; man-db/auto-update is not 'true'. I: Building the package hostname: Name or service not known I: Running cd /build/golang-blitiri-go-spf-1.1.0/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-genchanges -S > ../golang-blitiri-go-spf_1.1.0-1_source.changes dpkg-buildpackage: info: source package golang-blitiri-go-spf dpkg-buildpackage: info: source version 1.1.0-1 dpkg-buildpackage: info: source distribution unstable dpkg-buildpackage: info: source changed by Alberto Bertogli dpkg-source --before-build . dpkg-buildpackage: info: host architecture armhf 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-arm-linux-gnueabihf && go install -trimpath -v -p 4 blitiri.com.ar/go/spf runtime/internal/sys internal/cpu internal/unsafeheader math/bits unicode/utf8 runtime/internal/math internal/bytealg internal/race runtime/internal/atomic math sync/atomic unicode internal/testlog internal/nettrace runtime runtime/cgo sync internal/reflectlite internal/singleflight math/rand sort errors internal/oserror io strconv syscall vendor/golang.org/x/net/dns/dnsmessage strings reflect bytes regexp/syntax internal/syscall/unix time internal/syscall/execenv regexp internal/poll context os internal/fmtsort fmt net net/url blitiri.com.ar/go/spf dh_auto_test -O--buildsystem=golang cd obj-arm-linux-gnueabihf && go test -vet=off -v -p 4 blitiri.com.ar/go/spf === RUN TestBasic spf.go:114: check host "1.1.1.1" "domain" spf.go:160: check domain 1 spf.go:176: dns record "" spf.go:114: check host "1.1.1.1" "domain" spf.go:160: check domain 1 spf.go:176: dns record "" spf.go:114: check host "1.1.1.1" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1" spf.go:284: fallback to neutral spf.go:114: check host "1.1.1.1" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 " spf.go:284: fallback to neutral spf.go:114: check host "1.1.1.1" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 -" spf.go:277: permerror, unknown field spf.go:114: check host "1.1.1.1" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 all" spf.go:237: pass matched all spf.go:114: check host "1.1.1.1" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 exp=blah +all" spf.go:270: exp= not used, skipping spf.go:237: pass matched all spf.go:114: check host "1.1.1.1" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 +all" spf.go:237: pass matched all spf.go:114: check host "1.1.1.1" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 -all " spf.go:237: fail matched all spf.go:114: check host "1.1.1.1" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 ~all" spf.go:237: softfail matched all spf.go:114: check host "1.1.1.1" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 ?all" spf.go:237: neutral matched all spf.go:114: check host "1.1.1.1" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 a ~all" spf.go:526: masks on "a": ["a" "" "" "" "" "" ""] "domain" {-1 -1} spf.go:237: softfail matched all spf.go:114: check host "1.1.1.1" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 a/24" spf.go:526: masks on "a/24": ["a/24" "" "" "/24" "24" "" ""] "domain" {24 -1} spf.go:284: fallback to neutral spf.go:114: check host "1.1.1.1" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 a:d1110/24" spf.go:526: masks on "a:d1110/24": ["a:d1110/24" ":d1110" "d1110" "/24" "24" "" ""] "d1110" {24 -1} spf.go:561: mx matched 1.1.1.1, 1.1.1.0, {24 -1} spf.go:246: a ok, pass matched 'a' spf.go:114: check host "1.1.1.1" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 a:d1110/montoto" spf.go:246: a ok, permerror invalid mask spf.go:114: check host "1.1.1.1" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 a:d1110/99" spf.go:246: a ok, permerror invalid mask spf.go:114: check host "1.1.1.1" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 a:d1110/32" spf.go:526: masks on "a:d1110/32": ["a:d1110/32" ":d1110" "d1110" "/32" "32" "" ""] "d1110" {32 -1} spf.go:284: fallback to neutral spf.go:114: check host "1.1.1.1" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 a:d1110" spf.go:526: masks on "a:d1110": ["a:d1110" ":d1110" "d1110" "" "" "" ""] "d1110" {-1 -1} spf.go:284: fallback to neutral spf.go:114: check host "1.1.1.1" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 a:d1111" spf.go:526: masks on "a:d1111": ["a:d1111" ":d1111" "d1111" "" "" "" ""] "d1111" {-1 -1} spf.go:561: mx matched 1.1.1.1, 1.1.1.1, {-1 -1} spf.go:246: a ok, pass matched 'a' spf.go:114: check host "1.1.1.1" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 a:nothing/24" spf.go:526: masks on "a:nothing/24": ["a:nothing/24" ":nothing" "nothing" "/24" "24" "" ""] "nothing" {24 -1} spf.go:284: fallback to neutral spf.go:114: check host "1.1.1.1" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 mx" spf.go:526: masks on "mx": ["mx" "" "" "" "" "" ""] "domain" {-1 -1} spf.go:284: fallback to neutral spf.go:114: check host "1.1.1.1" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 mx/24" spf.go:526: masks on "mx/24": ["mx/24" "" "" "/24" "24" "" ""] "domain" {24 -1} spf.go:284: fallback to neutral spf.go:114: check host "1.1.1.1" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 mx:a/montoto ~all" spf.go:526: masks on "mx:a/montoto": [] "domain" {-1 -1} spf.go:246: a ok, permerror invalid mask spf.go:114: check host "1.1.1.1" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 mx:d1110/24 ~all" spf.go:526: masks on "mx:d1110/24": ["mx:d1110/24" ":d1110" "d1110" "/24" "24" "" ""] "d1110" {24 -1} spf.go:615: mx matched 1.1.1.1, 1.1.1.0, {24 -1} spf.go:251: mx ok, pass matched 'mx' spf.go:114: check host "1.1.1.1" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 mx:d1110/24//100 ~all" spf.go:526: masks on "mx:d1110/24//100": ["mx:d1110/24//100" ":d1110" "d1110" "/24" "24" "//100" "100"] "d1110" {24 100} spf.go:615: mx matched 1.1.1.1, 1.1.1.0, {24 100} spf.go:251: mx ok, pass matched 'mx' spf.go:114: check host "1.1.1.1" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 mx:d1110/24//129 ~all" spf.go:251: mx ok, permerror invalid mask spf.go:114: check host "1.1.1.1" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 mx:d1110/24/100 ~all" spf.go:526: masks on "mx:d1110/24/100": [] "domain" {-1 -1} spf.go:251: mx ok, permerror invalid mask spf.go:114: check host "1.1.1.1" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 mx:d1110/99 ~all" spf.go:251: mx ok, permerror invalid mask spf.go:114: check host "1.1.1.1" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 ip4:1.2.3.4 ~all" spf.go:237: softfail matched all spf.go:114: check host "1.1.1.1" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 ip6:12 ~all" spf.go:256: ip ok, permerror invalid ipX value spf.go:114: check host "1.1.1.1" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 ip4:1.1.1.1 -all" spf.go:256: ip ok, pass matched 'ip' spf.go:114: check host "1.1.1.1" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 ip4:1.1.1.1/24 -all" spf.go:256: ip ok, pass matched 'ip' spf.go:114: check host "1.1.1.1" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 ip4:1.1.1.1/lala -all" spf.go:256: ip ok, permerror invalid mask spf.go:114: check host "1.1.1.1" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 ip4:1.1.1.1/33 -all" spf.go:256: ip ok, permerror invalid mask spf.go:114: check host "1.1.1.1" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 include:doesnotexist" spf.go:160: check doesnotexist 2 spf.go:176: dns record "" spf.go:241: include ok, permerror no DNS record found spf.go:114: check host "1.1.1.1" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 ptr -all" spf.go:398: ptr forward resolution "lalala." -> ["1.1.1.1"] spf.go:398: ptr forward resolution "xx.domain." -> ["1.1.1.1"] spf.go:398: ptr forward resolution "d1111." -> ["1.1.1.1"] spf.go:407: ptr evaluating "domain" in ["lalala." "xx.domain." "d1111."] spf.go:261: ptr ok, pass matched 'ptr' spf.go:114: check host "1.1.1.1" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 ptr:d1111 -all" spf.go:398: ptr forward resolution "lalala." -> ["1.1.1.1"] spf.go:398: ptr forward resolution "xx.domain." -> ["1.1.1.1"] spf.go:398: ptr forward resolution "d1111." -> ["1.1.1.1"] spf.go:407: ptr evaluating "d1111" in ["lalala." "xx.domain." "d1111."] spf.go:261: ptr ok, pass matched 'ptr' spf.go:114: check host "1.1.1.1" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 ptr:lalala -all" spf.go:398: ptr forward resolution "lalala." -> ["1.1.1.1"] spf.go:398: ptr forward resolution "xx.domain." -> ["1.1.1.1"] spf.go:398: ptr forward resolution "d1111." -> ["1.1.1.1"] spf.go:407: ptr evaluating "lalala" in ["lalala." "xx.domain." "d1111."] spf.go:261: ptr ok, pass matched 'ptr' spf.go:114: check host "1.1.1.1" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 ptr:doesnotexist -all" spf.go:398: ptr forward resolution "lalala." -> ["1.1.1.1"] spf.go:398: ptr forward resolution "xx.domain." -> ["1.1.1.1"] spf.go:398: ptr forward resolution "d1111." -> ["1.1.1.1"] spf.go:407: ptr evaluating "doesnotexist" in ["lalala." "xx.domain." "d1111."] spf.go:237: fail matched all spf.go:114: check host "1.1.1.1" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 blah" spf.go:277: permerror, unknown field spf.go:114: check host "1.1.1.1" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 exists:d1111 -all" spf.go:266: exists ok, pass matched 'exists' spf.go:114: check host "1.1.1.1" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 redirect=" spf.go:273: redirect, "redirect=" --- PASS: TestBasic (0.01s) === RUN TestIPv6 spf.go:114: check host "2001:db8::68" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 all" spf.go:237: pass matched all spf.go:114: check host "2001:db8::68" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 a ~all" spf.go:526: masks on "a": ["a" "" "" "" "" "" ""] "domain" {-1 -1} spf.go:237: softfail matched all spf.go:114: check host "2001:db8::68" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 a/24" spf.go:526: masks on "a/24": ["a/24" "" "" "/24" "24" "" ""] "domain" {24 -1} spf.go:284: fallback to neutral spf.go:114: check host "2001:db8::68" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 a:d6660//24" spf.go:526: masks on "a:d6660//24": ["a:d6660//24" ":d6660" "d6660" "" "" "//24" "24"] "d6660" {-1 24} spf.go:561: mx matched 2001:db8::68, 2001:db8::, {-1 24} spf.go:246: a ok, pass matched 'a' spf.go:114: check host "2001:db8::68" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 a:d6660/24//100" spf.go:526: masks on "a:d6660/24//100": ["a:d6660/24//100" ":d6660" "d6660" "/24" "24" "//100" "100"] "d6660" {24 100} spf.go:561: mx matched 2001:db8::68, 2001:db8::, {24 100} spf.go:246: a ok, pass matched 'a' spf.go:114: check host "2001:db8::68" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 a:d6660" spf.go:526: masks on "a:d6660": ["a:d6660" ":d6660" "d6660" "" "" "" ""] "d6660" {-1 -1} spf.go:284: fallback to neutral spf.go:114: check host "2001:db8::68" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 a:d6666" spf.go:526: masks on "a:d6666": ["a:d6666" ":d6666" "d6666" "" "" "" ""] "d6666" {-1 -1} spf.go:561: mx matched 2001:db8::68, 2001:db8::68, {-1 -1} spf.go:246: a ok, pass matched 'a' spf.go:114: check host "2001:db8::68" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 a:nothing//24" spf.go:526: masks on "a:nothing//24": ["a:nothing//24" ":nothing" "nothing" "" "" "//24" "24"] "nothing" {-1 24} spf.go:284: fallback to neutral spf.go:114: check host "2001:db8::68" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 mx:d6660//24 ~all" spf.go:526: masks on "mx:d6660//24": ["mx:d6660//24" ":d6660" "d6660" "" "" "//24" "24"] "d6660" {-1 24} spf.go:615: mx matched 2001:db8::68, 2001:db8::, {-1 24} spf.go:251: mx ok, pass matched 'mx' spf.go:114: check host "2001:db8::68" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 mx:d6660/24//100 ~all" spf.go:526: masks on "mx:d6660/24//100": ["mx:d6660/24//100" ":d6660" "d6660" "/24" "24" "//100" "100"] "d6660" {24 100} spf.go:615: mx matched 2001:db8::68, 2001:db8::, {24 100} spf.go:251: mx ok, pass matched 'mx' spf.go:114: check host "2001:db8::68" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 mx:d6660/24/100 ~all" spf.go:526: masks on "mx:d6660/24/100": [] "domain" {-1 -1} spf.go:251: mx ok, permerror invalid mask spf.go:114: check host "2001:db8::68" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 ip6:2001:db8::68 ~all" spf.go:256: ip ok, pass matched 'ip' spf.go:114: check host "2001:db8::68" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 ip6:2001:db8::1/24 ~all" spf.go:256: ip ok, pass matched 'ip' spf.go:114: check host "2001:db8::68" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 ip6:2001:db8::1/100 ~all" spf.go:256: ip ok, pass matched 'ip' spf.go:114: check host "2001:db8::68" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 ptr -all" spf.go:398: ptr forward resolution "sonlas6." -> ["2001:db8::68"] spf.go:398: ptr forward resolution "domain." -> ["1.1.1.1"] spf.go:398: ptr forward resolution "d6666." -> ["2001:db8::68"] spf.go:407: ptr evaluating "domain" in ["sonlas6." "domain." "d6666."] spf.go:261: ptr ok, pass matched 'ptr' spf.go:114: check host "2001:db8::68" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 ptr:d6666 -all" spf.go:398: ptr forward resolution "sonlas6." -> ["2001:db8::68"] spf.go:398: ptr forward resolution "domain." -> ["1.1.1.1"] spf.go:398: ptr forward resolution "d6666." -> ["2001:db8::68"] spf.go:407: ptr evaluating "d6666" in ["sonlas6." "domain." "d6666."] spf.go:261: ptr ok, pass matched 'ptr' spf.go:114: check host "2001:db8::68" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 ptr:sonlas6 -all" spf.go:398: ptr forward resolution "sonlas6." -> ["2001:db8::68"] spf.go:398: ptr forward resolution "domain." -> ["1.1.1.1"] spf.go:398: ptr forward resolution "d6666." -> ["2001:db8::68"] spf.go:407: ptr evaluating "sonlas6" in ["sonlas6." "domain." "d6666."] spf.go:261: ptr ok, pass matched 'ptr' spf.go:114: check host "2001:db8::68" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 ptr:sonlas7 -all" spf.go:398: ptr forward resolution "sonlas6." -> ["2001:db8::68"] spf.go:398: ptr forward resolution "domain." -> ["1.1.1.1"] spf.go:398: ptr forward resolution "d6666." -> ["2001:db8::68"] spf.go:407: ptr evaluating "sonlas7" in ["sonlas6." "domain." "d6666."] spf.go:237: fail matched all --- PASS: TestIPv6 (0.00s) === RUN TestInclude spf.go:114: check host "1.1.1.1" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 include:domain2 ip4:1.1.1.1" spf.go:160: check domain2 2 spf.go:176: dns record "" spf.go:241: include ok, permerror no DNS record found spf.go:114: check host "1.1.1.1" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 include:domain2 ip4:1.1.1.1" spf.go:160: check domain2 2 spf.go:176: dns record "v=spf1 all" spf.go:237: pass matched all spf.go:241: include ok, pass matched 'all' spf.go:114: check host "1.1.1.1" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 include:domain2 ip4:1.1.1.1" spf.go:160: check domain2 2 spf.go:176: dns record "v=spf1" spf.go:284: fallback to neutral spf.go:256: ip ok, pass matched 'ip' spf.go:114: check host "1.1.1.1" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 include:domain2 ip4:1.1.1.1" spf.go:160: check domain2 2 spf.go:176: dns record "v=spf1 -all" spf.go:237: fail matched all spf.go:256: ip ok, pass matched 'ip' --- PASS: TestInclude (0.00s) === RUN TestRecursionLimit spf.go:114: check host "1.1.1.1" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 include:domain ~all" spf.go:160: check domain 2 spf.go:176: dns record "v=spf1 include:domain ~all" spf.go:160: check domain 3 spf.go:176: dns record "v=spf1 include:domain ~all" spf.go:160: check domain 4 spf.go:176: dns record "v=spf1 include:domain ~all" spf.go:160: check domain 5 spf.go:176: dns record "v=spf1 include:domain ~all" spf.go:160: check domain 6 spf.go:176: dns record "v=spf1 include:domain ~all" spf.go:160: check domain 7 spf.go:176: dns record "v=spf1 include:domain ~all" spf.go:160: check domain 8 spf.go:176: dns record "v=spf1 include:domain ~all" spf.go:160: check domain 9 spf.go:176: dns record "v=spf1 include:domain ~all" spf.go:160: check domain 10 spf.go:176: dns record "v=spf1 include:domain ~all" spf.go:160: check domain 11 spf.go:176: dns record "v=spf1 include:domain ~all" spf.go:218: lookup limit reached spf.go:241: include ok, permerror lookup limit reached spf.go:241: include ok, permerror lookup limit reached spf.go:241: include ok, permerror lookup limit reached spf.go:241: include ok, permerror lookup limit reached spf.go:241: include ok, permerror lookup limit reached spf.go:241: include ok, permerror lookup limit reached spf.go:241: include ok, permerror lookup limit reached spf.go:241: include ok, permerror lookup limit reached spf.go:241: include ok, permerror lookup limit reached spf.go:241: include ok, permerror lookup limit reached --- PASS: TestRecursionLimit (0.00s) === RUN TestRedirect spf.go:114: check host "1.1.1.1" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 redirect=domain2" spf.go:273: redirect, "redirect=domain2" spf.go:160: check domain2 2 spf.go:176: dns record "v=spf1 ip4:1.1.1.1 -all" spf.go:256: ip ok, pass matched 'ip' --- PASS: TestRedirect (0.00s) === RUN TestInvalidRedirect spf.go:114: check host "1.1.1.1" "doesnotexist" spf.go:160: check doesnotexist 1 spf.go:176: dns record "" spf.go:114: check host "1.1.1.1" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 redirect=doesnotexist" spf.go:273: redirect, "redirect=doesnotexist" spf.go:160: check doesnotexist 2 spf.go:176: dns record "" --- PASS: TestInvalidRedirect (0.00s) === RUN TestRedirectOrder spf.go:114: check host "1.1.1.1" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 redirect=faildom" spf.go:273: redirect, "redirect=faildom" spf.go:160: check faildom 2 spf.go:176: dns record "v=spf1 -all" spf.go:237: fail matched all spf.go:114: check host "1.1.1.1" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 redirect=faildom all" spf.go:237: pass matched all --- PASS: TestRedirectOrder (0.00s) === RUN TestNoRecord spf.go:114: check host "1.1.1.1" "d1" spf.go:160: check d1 1 spf.go:176: dns record "" spf.go:114: check host "1.1.1.1" "d2" spf.go:160: check d2 1 spf.go:176: dns record "" spf.go:114: check host "1.1.1.1" "d3" spf.go:160: check d3 1 spf.go:176: dns record "" spf.go:114: check host "1.1.1.1" "nospf" spf.go:160: check nospf 1 spf.go:173: dns perm error: no such domain --- PASS: TestNoRecord (0.00s) === RUN TestDNSTemporaryErrors spf.go:114: check host "1.1.1.1" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 include:tmperr" spf.go:160: check tmperr 2 spf.go:164: dns temp error: lookup : temporary error for testing spf.go:241: include ok, temperror lookup : temporary error for testing spf.go:114: check host "1.1.1.1" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 a:tmperr" spf.go:526: masks on "a:tmperr": ["a:tmperr" ":tmperr" "tmperr" "" "" "" ""] "tmperr" {-1 -1} spf.go:246: a ok, temperror lookup : temporary error for testing spf.go:114: check host "1.1.1.1" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 mx:tmperr" spf.go:526: masks on "mx:tmperr": ["mx:tmperr" ":tmperr" "tmperr" "" "" "" ""] "tmperr" {-1 -1} spf.go:251: mx ok, temperror lookup : temporary error for testing spf.go:114: check host "1.1.1.1" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 ptr:tmperr" spf.go:261: ptr ok, temperror lookup : temporary error for testing spf.go:114: check host "1.1.1.1" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 mx:tmpmx" spf.go:526: masks on "mx:tmpmx": ["mx:tmpmx" ":tmpmx" "tmpmx" "" "" "" ""] "tmpmx" {-1 -1} spf.go:251: mx ok, temperror lookup : temporary error for testing --- PASS: TestDNSTemporaryErrors (0.00s) === RUN TestDNSPermanentErrors spf.go:114: check host "1.1.1.1" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 include:tmperr" spf.go:160: check tmperr 2 spf.go:173: dns perm error: lookup : permanent error for testing spf.go:241: include ok, permerror lookup : permanent error for testing spf.go:114: check host "1.1.1.1" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 a:tmperr" spf.go:526: masks on "a:tmperr": ["a:tmperr" ":tmperr" "tmperr" "" "" "" ""] "tmperr" {-1 -1} spf.go:284: fallback to neutral spf.go:114: check host "1.1.1.1" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 mx:tmperr" spf.go:526: masks on "mx:tmperr": ["mx:tmperr" ":tmperr" "tmperr" "" "" "" ""] "tmperr" {-1 -1} spf.go:284: fallback to neutral spf.go:114: check host "1.1.1.1" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 ptr:tmperr" spf.go:284: fallback to neutral spf.go:114: check host "1.1.1.1" "domain" spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 mx:tmpmx" spf.go:526: masks on "mx:tmpmx": ["mx:tmpmx" ":tmpmx" "tmpmx" "" "" "" ""] "tmpmx" {-1 -1} spf.go:284: fallback to neutral --- PASS: TestDNSPermanentErrors (0.00s) === RUN TestMacros spf.go:129: check host with sender "2001:db8::68" "helo" "user@domain" ("domain") spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 ptr:%{fff} -all" spf.go:708: macro "fff": [] spf.go:261: ptr ok, permerror invalid macro spf.go:129: check host with sender "2001:db8::68" "helo" "user@domain" ("domain") spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 mx:%{fff} -all" spf.go:526: masks on "mx:%{fff}": ["mx:%{fff}" ":%{fff}" "%{fff}" "" "" "" ""] "%{fff}" {-1 -1} spf.go:708: macro "fff": [] spf.go:251: mx ok, permerror invalid macro spf.go:129: check host with sender "2001:db8::68" "helo" "user@domain" ("domain") spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 redirect=%{fff}" spf.go:273: redirect, "redirect=%{fff}" spf.go:708: macro "fff": [] spf.go:129: check host with sender "2001:db8::68" "helo" "user@domain" ("domain") spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 a:%{o0}" spf.go:526: masks on "a:%{o0}": ["a:%{o0}" ":%{o0}" "%{o0}" "" "" "" ""] "%{o0}" {-1 -1} spf.go:708: macro "o0": ["o0" "o" "0" "" ""] spf.go:246: a ok, permerror invalid macro spf.go:129: check host with sender "2001:db8::68" "helo" "user@domain" ("domain") spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 +a:sss-%{s}-sss" spf.go:526: masks on "a:sss-%{s}-sss": ["a:sss-%{s}-sss" ":sss-%{s}-sss" "sss-%{s}-sss" "" "" "" ""] "sss-%{s}-sss" {-1 -1} spf.go:708: macro "s": ["s" "s" "" "" ""] spf.go:805: macro expanded "sss-%{s}-sss" to "sss-user@domain-sss" spf.go:561: mx matched 2001:db8::68, 2001:db8::68, {-1 -1} spf.go:246: a ok, pass matched 'a' spf.go:129: check host with sender "2001:db8::68" "helo" "user@domain" ("domain") spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 +a:ooo-%{o}-ooo" spf.go:526: masks on "a:ooo-%{o}-ooo": ["a:ooo-%{o}-ooo" ":ooo-%{o}-ooo" "ooo-%{o}-ooo" "" "" "" ""] "ooo-%{o}-ooo" {-1 -1} spf.go:708: macro "o": ["o" "o" "" "" ""] spf.go:805: macro expanded "ooo-%{o}-ooo" to "ooo-domain-ooo" spf.go:561: mx matched 2001:db8::68, 2001:db8::68, {-1 -1} spf.go:246: a ok, pass matched 'a' spf.go:129: check host with sender "2001:db8::68" "helo" "user@domain" ("domain") spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 +a:OOO-%{O}-OOO" spf.go:526: masks on "a:OOO-%{O}-OOO": ["a:OOO-%{O}-OOO" ":OOO-%{O}-OOO" "OOO-%{O}-OOO" "" "" "" ""] "OOO-%{O}-OOO" {-1 -1} spf.go:708: macro "O": ["O" "O" "" "" ""] spf.go:805: macro expanded "OOO-%{O}-OOO" to "OOO-domain-OOO" spf.go:561: mx matched 2001:db8::68, 2001:db8::68, {-1 -1} spf.go:246: a ok, pass matched 'a' spf.go:129: check host with sender "2001:db8::68" "helo" "user@domain" ("domain") spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 +a:ppp-%{p}-ppp" spf.go:526: masks on "a:ppp-%{p}-ppp": ["a:ppp-%{p}-ppp" ":ppp-%{p}-ppp" "ppp-%{p}-ppp" "" "" "" ""] "ppp-%{p}-ppp" {-1 -1} spf.go:708: macro "p": ["p" "p" "" "" ""] spf.go:805: macro expanded "ppp-%{p}-ppp" to "ppp-unknown-ppp" spf.go:561: mx matched 2001:db8::68, 2001:db8::68, {-1 -1} spf.go:246: a ok, pass matched 'a' spf.go:129: check host with sender "2001:db8::68" "helo" "user@domain" ("domain") spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 +a:vvv-%{v}-vvv" spf.go:526: masks on "a:vvv-%{v}-vvv": ["a:vvv-%{v}-vvv" ":vvv-%{v}-vvv" "vvv-%{v}-vvv" "" "" "" ""] "vvv-%{v}-vvv" {-1 -1} spf.go:708: macro "v": ["v" "v" "" "" ""] spf.go:805: macro expanded "vvv-%{v}-vvv" to "vvv-ip6-vvv" spf.go:561: mx matched 2001:db8::68, 2001:db8::68, {-1 -1} spf.go:246: a ok, pass matched 'a' spf.go:129: check host with sender "2001:db8::68" "helo" "user@domain" ("domain") spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 a:%{x}" spf.go:526: masks on "a:%{x}": ["a:%{x}" ":%{x}" "%{x}" "" "" "" ""] "%{x}" {-1 -1} spf.go:708: macro "x": [] spf.go:246: a ok, permerror invalid macro spf.go:129: check host with sender "2001:db8::68" "helo" "user@domain" ("domain") spf.go:160: check domain 1 spf.go:176: dns record "v=spf1 +a:ooo-%{o7}-ooo" spf.go:526: masks on "a:ooo-%{o7}-ooo": ["a:ooo-%{o7}-ooo" ":ooo-%{o7}-ooo" "ooo-%{o7}-ooo" "" "" "" ""] "ooo-%{o7}-ooo" {-1 -1} spf.go:708: macro "o7": ["o7" "o" "7" "" ""] spf.go:805: macro expanded "ooo-%{o7}-ooo" to "ooo-domain-ooo" spf.go:561: mx matched 2001:db8::68, 2001:db8::68, {-1 -1} spf.go:246: a ok, pass matched 'a' --- PASS: TestMacros (0.00s) === RUN TestMacrosV4 spf.go:129: check host with sender "1.1.1.1" "helo" "user@domain.com" ("domain.com") spf.go:160: check domain.com 1 spf.go:176: dns record "v=spf1 +a:sr-%{sr}-sr" spf.go:526: masks on "a:sr-%{sr}-sr": ["a:sr-%{sr}-sr" ":sr-%{sr}-sr" "sr-%{sr}-sr" "" "" "" ""] "sr-%{sr}-sr" {-1 -1} spf.go:708: macro "sr": ["sr" "s" "" "r" ""] spf.go:805: macro expanded "sr-%{sr}-sr" to "sr-com.user@domain-sr" spf.go:561: mx matched 1.1.1.1, 1.1.1.1, {-1 -1} spf.go:246: a ok, pass matched 'a' spf.go:129: check host with sender "1.1.1.1" "helo" "user@domain.com" ("domain.com") spf.go:160: check domain.com 1 spf.go:176: dns record "v=spf1 +a:sra-%{sr.}-sra" spf.go:526: masks on "a:sra-%{sr.}-sra": ["a:sra-%{sr.}-sra" ":sra-%{sr.}-sra" "sra-%{sr.}-sra" "" "" "" ""] "sra-%{sr.}-sra" {-1 -1} spf.go:708: macro "sr.": ["sr." "s" "" "r" "."] spf.go:805: macro expanded "sra-%{sr.}-sra" to "sra-com.user@domain-sra" spf.go:561: mx matched 1.1.1.1, 1.1.1.1, {-1 -1} spf.go:246: a ok, pass matched 'a' spf.go:129: check host with sender "1.1.1.1" "helo" "user@domain.com" ("domain.com") spf.go:160: check domain.com 1 spf.go:176: dns record "v=spf1 +a:o7-%{o7}-o7" spf.go:526: masks on "a:o7-%{o7}-o7": ["a:o7-%{o7}-o7" ":o7-%{o7}-o7" "o7-%{o7}-o7" "" "" "" ""] "o7-%{o7}-o7" {-1 -1} spf.go:708: macro "o7": ["o7" "o" "7" "" ""] spf.go:805: macro expanded "o7-%{o7}-o7" to "o7-domain.com-o7" spf.go:561: mx matched 1.1.1.1, 1.1.1.1, {-1 -1} spf.go:246: a ok, pass matched 'a' spf.go:129: check host with sender "1.1.1.1" "helo" "user@domain.com" ("domain.com") spf.go:160: check domain.com 1 spf.go:176: dns record "v=spf1 +a:o1-%{o1}-o1" spf.go:526: masks on "a:o1-%{o1}-o1": ["a:o1-%{o1}-o1" ":o1-%{o1}-o1" "o1-%{o1}-o1" "" "" "" ""] "o1-%{o1}-o1" {-1 -1} spf.go:708: macro "o1": ["o1" "o" "1" "" ""] spf.go:805: macro expanded "o1-%{o1}-o1" to "o1-com-o1" spf.go:561: mx matched 1.1.1.1, 1.1.1.1, {-1 -1} spf.go:246: a ok, pass matched 'a' spf.go:129: check host with sender "1.1.1.1" "helo" "user@domain.com" ("domain.com") spf.go:160: check domain.com 1 spf.go:176: dns record "v=spf1 +a:o1r-%{o1r}-o1r" spf.go:526: masks on "a:o1r-%{o1r}-o1r": ["a:o1r-%{o1r}-o1r" ":o1r-%{o1r}-o1r" "o1r-%{o1r}-o1r" "" "" "" ""] "o1r-%{o1r}-o1r" {-1 -1} spf.go:708: macro "o1r": ["o1r" "o" "1" "r" ""] spf.go:805: macro expanded "o1r-%{o1r}-o1r" to "o1r-domain-o1r" spf.go:561: mx matched 1.1.1.1, 1.1.1.1, {-1 -1} spf.go:246: a ok, pass matched 'a' spf.go:129: check host with sender "1.1.1.1" "helo" "user@domain.com" ("domain.com") spf.go:160: check domain.com 1 spf.go:176: dns record "v=spf1 +a:vvv-%{v}-vvv" spf.go:526: masks on "a:vvv-%{v}-vvv": ["a:vvv-%{v}-vvv" ":vvv-%{v}-vvv" "vvv-%{v}-vvv" "" "" "" ""] "vvv-%{v}-vvv" {-1 -1} spf.go:708: macro "v": ["v" "v" "" "" ""] spf.go:805: macro expanded "vvv-%{v}-vvv" to "vvv-in-addr-vvv" spf.go:561: mx matched 1.1.1.1, 1.1.1.1, {-1 -1} spf.go:246: a ok, pass matched 'a' --- PASS: TestMacrosV4 (0.00s) === RUN TestSimple yml_test.go:152: suite: Simple successes yml_test.go:157: domain example.net yml_test.go:159: SPF: [v=spf1 +all] yml_test.go:225: test test2 yml_test.go:227: checkhost 1.2.3.4 foobar@example.net spf.go:129: check host with sender "1.2.3.4" "blargh" "foobar@example.net" ("example.net") spf.go:160: check example.net 1 spf.go:176: dns record "v=spf1 +all" spf.go:237: pass matched all yml_test.go:234: success: pass, matched 'all' [test2] yml_test.go:225: test test1 yml_test.go:227: checkhost 1.2.3.4 foobar@example.net spf.go:129: check host with sender "1.2.3.4" "example.net" "foobar@example.net" ("example.net") spf.go:160: check example.net 1 spf.go:176: dns record "v=spf1 +all" spf.go:237: pass matched all yml_test.go:234: success: pass, matched 'all' [test1] yml_test.go:152: suite: Simple failures yml_test.go:157: domain example.net yml_test.go:159: SPF: [v=spf1 -all] yml_test.go:225: test test1 yml_test.go:227: checkhost 1.2.3.4 foobar@example.net spf.go:129: check host with sender "1.2.3.4" "example.net" "foobar@example.net" ("example.net") spf.go:160: check example.net 1 spf.go:176: dns record "v=spf1 -all" spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [test1] yml_test.go:225: test test2 yml_test.go:227: checkhost 1.2.3.4 foobar@example.net spf.go:129: check host with sender "1.2.3.4" "blargh" "foobar@example.net" ("example.net") spf.go:160: check example.net 1 spf.go:176: dns record "v=spf1 -all" spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [test2] --- PASS: TestSimple (0.00s) === RUN TestRFC4408 yml_test.go:152: suite: Initial processing yml_test.go:157: domain nothosed.example.com yml_test.go:159: SPF: [v=spf1 a:example.net -all] yml_test.go:159: SPF: [–] yml_test.go:157: domain fine.example.com yml_test.go:159: TXT: [v=spf1 a -all] yml_test.go:157: domain example.net yml_test.go:159: SPF: [v=spf1 -all exp=exp.example.net] yml_test.go:157: domain exp.example.net yml_test.go:159: TXT: [%{l}] yml_test.go:157: domain hosed.example.com yml_test.go:159: SPF: [v=spf1 a:garbage.example.net -all] yml_test.go:157: domain hosed3.example.com yml_test.go:159: SPF: [v=spf1 a:example.net –all] yml_test.go:157: domain example.com yml_test.go:159: TIMEOUT yml_test.go:157: domain a.example.net yml_test.go:159: SPF: [v=spf1 -all exp=exp.example.net] yml_test.go:157: domain a12345678901234567890123456789012345678901234567890123456789012.example.com yml_test.go:159: SPF: [v=spf1 -all] yml_test.go:157: domain hosed2.example.com yml_test.go:159: SPF: [v=spf1 €a:example.net -all] yml_test.go:225: test non-ascii-non-spf yml_test.go:227: checkhost 1.2.3.4 foobar@nothosed.example.com spf.go:129: check host with sender "1.2.3.4" "hosed" "foobar@nothosed.example.com" ("nothosed.example.com") spf.go:160: check nothosed.example.com 1 spf.go:176: dns record "v=spf1 a:example.net -all" spf.go:526: masks on "a:example.net": ["a:example.net" ":example.net" "example.net" "" "" "" ""] "example.net" {-1 -1} spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [non-ascii-non-spf] yml_test.go:225: test toolonglabel yml_test.go:227: checkhost 1.2.3.5 lyme.eater@A123456789012345678901234567890123456789012345678901234567890123.example.com spf.go:129: check host with sender "1.2.3.5" "mail.example.net" "lyme.eater@A123456789012345678901234567890123456789012345678901234567890123.example.com" ("A123456789012345678901234567890123456789012345678901234567890123.example.com") spf.go:160: check A123456789012345678901234567890123456789012345678901234567890123.example.com 1 spf.go:176: dns record "" yml_test.go:234: success: none, no DNS record found [toolonglabel] yml_test.go:225: test emptylabel yml_test.go:227: checkhost 1.2.3.5 lyme.eater@A...example.com spf.go:129: check host with sender "1.2.3.5" "mail.example.net" "lyme.eater@A...example.com" ("A...example.com") spf.go:160: check A...example.com 1 spf.go:176: dns record "" yml_test.go:234: success: none, no DNS record found [emptylabel] yml_test.go:225: test helo-not-fqdn yml_test.go:227: checkhost 1.2.3.5 spf.go:129: check host with sender "1.2.3.5" "A2345678" "" ("A2345678") spf.go:160: check A2345678 1 spf.go:176: dns record "" yml_test.go:234: success: none, no DNS record found [helo-not-fqdn] yml_test.go:225: test domain-literal yml_test.go:227: checkhost 1.2.3.5 foo@[1.2.3.5] spf.go:129: check host with sender "1.2.3.5" "OEMCOMPUTER" "foo@[1.2.3.5]" ("[1.2.3.5]") spf.go:160: check [1.2.3.5] 1 spf.go:176: dns record "" yml_test.go:234: success: none, no DNS record found [domain-literal] yml_test.go:225: test non-ascii-result yml_test.go:227: checkhost 1.2.3.4 foobar@hosed3.example.com spf.go:129: check host with sender "1.2.3.4" "hosed" "foobar@hosed3.example.com" ("hosed3.example.com") spf.go:160: check hosed3.example.com 1 spf.go:176: dns record "v=spf1 a:example.net \u0096all" spf.go:526: masks on "a:example.net": ["a:example.net" ":example.net" "example.net" "" "" "" ""] "example.net" {-1 -1} spf.go:277: permerror, unknown field yml_test.go:234: success: permerror, unknown field [non-ascii-result] yml_test.go:225: test longlabel yml_test.go:227: checkhost 1.2.3.5 lyme.eater@A12345678901234567890123456789012345678901234567890123456789012.example.com spf.go:129: check host with sender "1.2.3.5" "mail.example.net" "lyme.eater@A12345678901234567890123456789012345678901234567890123456789012.example.com" ("A12345678901234567890123456789012345678901234567890123456789012.example.com") spf.go:160: check A12345678901234567890123456789012345678901234567890123456789012.example.com 1 spf.go:176: dns record "v=spf1 -all" spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [longlabel] yml_test.go:225: test helo-domain-literal yml_test.go:227: checkhost 1.2.3.5 spf.go:129: check host with sender "1.2.3.5" "[1.2.3.5]" "" ("[1.2.3.5]") spf.go:160: check [1.2.3.5] 1 spf.go:176: dns record "" yml_test.go:234: success: none, no DNS record found [helo-domain-literal] yml_test.go:225: test nolocalpart yml_test.go:227: checkhost 1.2.3.4 @example.net spf.go:129: check host with sender "1.2.3.4" "mail.example.net" "@example.net" ("example.net") spf.go:160: check example.net 1 spf.go:176: dns record "v=spf1 -all exp=exp.example.net" spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [nolocalpart] yml_test.go:225: test two-spaces yml_test.go:227: checkhost 1.2.3.4 actually@fine.example.com spf.go:129: check host with sender "1.2.3.4" "hosed" "actually@fine.example.com" ("fine.example.com") spf.go:160: check fine.example.com 1 spf.go:176: dns record "v=spf1 a -all" spf.go:526: masks on "a": ["a" "" "" "" "" "" ""] "fine.example.com" {-1 -1} spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [two-spaces] yml_test.go:152: suite: Record lookup yml_test.go:157: domain both.example.net yml_test.go:159: TXT: [v=spf1 -all] yml_test.go:159: SPF: [v=spf1 -all] yml_test.go:157: domain txtonly.example.net yml_test.go:159: TXT: [v=spf1 -all] yml_test.go:157: domain spfonly.example.net yml_test.go:159: SPF: [v=spf1 -all] yml_test.go:159: TXT: [NONE] yml_test.go:157: domain spftimeout.example.net yml_test.go:159: TXT: [v=spf1 -all] yml_test.go:159: TIMEOUT yml_test.go:157: domain txttimeout.example.net yml_test.go:159: SPF: [v=spf1 -all] yml_test.go:159: TXT: [NONE] yml_test.go:159: TIMEOUT yml_test.go:157: domain nospftxttimeout.example.net yml_test.go:159: SPF: [v=spf3 !a:yahoo.com -all] yml_test.go:159: TXT: [NONE] yml_test.go:159: TIMEOUT yml_test.go:157: domain alltimeout.example.net yml_test.go:159: TIMEOUT yml_test.go:225: test spfonly yml_test.go:227: checkhost 1.2.3.4 foo@spfonly.example.net spf.go:129: check host with sender "1.2.3.4" "mail.example.net" "foo@spfonly.example.net" ("spfonly.example.net") spf.go:160: check spfonly.example.net 1 spf.go:176: dns record "" yml_test.go:234: success: none, no DNS record found [spfonly] yml_test.go:225: test spftimeout yml_test.go:227: checkhost 1.2.3.4 foo@spftimeout.example.net spf.go:129: check host with sender "1.2.3.4" "mail.example.net" "foo@spftimeout.example.net" ("spftimeout.example.net") spf.go:160: check spftimeout.example.net 1 spf.go:164: dns temp error: lookup : test timeout error yml_test.go:234: success: temperror, lookup : test timeout error [spftimeout] yml_test.go:225: test txttimeout yml_test.go:227: checkhost 1.2.3.4 foo@txttimeout.example.net spf.go:129: check host with sender "1.2.3.4" "mail.example.net" "foo@txttimeout.example.net" ("txttimeout.example.net") spf.go:160: check txttimeout.example.net 1 spf.go:164: dns temp error: lookup : test timeout error yml_test.go:234: success: temperror, lookup : test timeout error [txttimeout] yml_test.go:225: test nospftxttimeout yml_test.go:227: checkhost 1.2.3.4 foo@nospftxttimeout.example.net spf.go:129: check host with sender "1.2.3.4" "mail.example.net" "foo@nospftxttimeout.example.net" ("nospftxttimeout.example.net") spf.go:160: check nospftxttimeout.example.net 1 spf.go:164: dns temp error: lookup : test timeout error yml_test.go:234: success: temperror, lookup : test timeout error [nospftxttimeout] yml_test.go:225: test alltimeout yml_test.go:227: checkhost 1.2.3.4 foo@alltimeout.example.net spf.go:129: check host with sender "1.2.3.4" "mail.example.net" "foo@alltimeout.example.net" ("alltimeout.example.net") spf.go:160: check alltimeout.example.net 1 spf.go:164: dns temp error: lookup : test timeout error yml_test.go:234: success: temperror, lookup : test timeout error [alltimeout] yml_test.go:225: test both yml_test.go:227: checkhost 1.2.3.4 foo@both.example.net spf.go:129: check host with sender "1.2.3.4" "mail.example.net" "foo@both.example.net" ("both.example.net") spf.go:160: check both.example.net 1 spf.go:176: dns record "v=spf1 -all" spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [both] yml_test.go:225: test txtonly yml_test.go:227: checkhost 1.2.3.4 foo@txtonly.example.net spf.go:129: check host with sender "1.2.3.4" "mail.example.net" "foo@txtonly.example.net" ("txtonly.example.net") spf.go:160: check txtonly.example.net 1 spf.go:176: dns record "v=spf1 -all" spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [txtonly] yml_test.go:152: suite: Selecting records yml_test.go:157: domain mail.example1.com yml_test.go:159: A: [1.2.3.4] yml_test.go:157: domain example5.com yml_test.go:159: SPF: [v=spf1 +all] yml_test.go:159: TXT: [v=spf1 -all] yml_test.go:159: TXT: [v=spf1 +all] yml_test.go:157: domain example7.com yml_test.go:159: SPF: [v=spf1 -all] yml_test.go:159: SPF: [v=spf1 -all] yml_test.go:157: domain example3.com yml_test.go:159: SPF: [v=spf10] yml_test.go:159: SPF: [v=spf1 mx] yml_test.go:159: MX: {0 mail.example1.com} yml_test.go:157: domain example2.com yml_test.go:159: SPF: [v=spf1 mx] yml_test.go:157: domain example6.com yml_test.go:159: SPF: [v=spf1 -all] yml_test.go:159: SPF: [V=sPf1 +all] yml_test.go:157: domain example8.com yml_test.go:159: SPF: [V=spf1 -all] yml_test.go:159: SPF: [v=spf1 -all] yml_test.go:159: TXT: [v=spf1 +all] yml_test.go:157: domain example9.com yml_test.go:159: SPF: [v=SpF1 ~all] yml_test.go:157: domain example1.com yml_test.go:159: SPF: [v=spf1] yml_test.go:157: domain example4.com yml_test.go:159: SPF: [v=spf1 +all] yml_test.go:159: TXT: [v=spf1 -all] yml_test.go:225: test nospace1 yml_test.go:227: checkhost 1.2.3.4 foo@example2.com spf.go:129: check host with sender "1.2.3.4" "mail.example1.com" "foo@example2.com" ("example2.com") spf.go:160: check example2.com 1 spf.go:176: dns record "" yml_test.go:234: success: none, no DNS record found [nospace1] yml_test.go:225: test empty yml_test.go:227: checkhost 1.2.3.4 foo@example1.com spf.go:129: check host with sender "1.2.3.4" "mail1.example1.com" "foo@example1.com" ("example1.com") spf.go:160: check example1.com 1 spf.go:176: dns record "v=spf1" spf.go:284: fallback to neutral yml_test.go:234: success: neutral, [empty] yml_test.go:225: test multitxt2 yml_test.go:227: checkhost 1.2.3.4 foo@example6.com spf.go:129: check host with sender "1.2.3.4" "mail.example1.com" "foo@example6.com" ("example6.com") spf.go:160: check example6.com 1 spf.go:168: multiple dns records yml_test.go:234: success: permerror, multiple matching DNS records [multitxt2] yml_test.go:225: test multispf1 yml_test.go:227: checkhost 1.2.3.4 foo@example7.com spf.go:129: check host with sender "1.2.3.4" "mail.example1.com" "foo@example7.com" ("example7.com") spf.go:160: check example7.com 1 spf.go:168: multiple dns records yml_test.go:234: success: permerror, multiple matching DNS records [multispf1] yml_test.go:225: test nospf yml_test.go:227: checkhost 1.2.3.4 foo@mail.example1.com spf.go:129: check host with sender "1.2.3.4" "mail.example1.com" "foo@mail.example1.com" ("mail.example1.com") spf.go:160: check mail.example1.com 1 spf.go:176: dns record "" yml_test.go:234: success: none, no DNS record found [nospf] yml_test.go:225: test nospace2 yml_test.go:227: checkhost 1.2.3.4 foo@example3.com spf.go:129: check host with sender "1.2.3.4" "mail.example1.com" "foo@example3.com" ("example3.com") spf.go:160: check example3.com 1 spf.go:176: dns record "v=spf1 mx" spf.go:526: masks on "mx": ["mx" "" "" "" "" "" ""] "example3.com" {-1 -1} spf.go:615: mx matched 1.2.3.4, 1.2.3.4, {-1 -1} spf.go:251: mx ok, pass matched 'mx' yml_test.go:234: success: pass, matched 'mx' [nospace2] yml_test.go:225: test spfoverride yml_test.go:227: checkhost 1.2.3.4 foo@example4.com spf.go:129: check host with sender "1.2.3.4" "mail.example1.com" "foo@example4.com" ("example4.com") spf.go:160: check example4.com 1 spf.go:176: dns record "v=spf1 -all" spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [spfoverride] yml_test.go:225: test multitxt1 yml_test.go:227: checkhost 1.2.3.4 foo@example5.com spf.go:129: check host with sender "1.2.3.4" "mail.example1.com" "foo@example5.com" ("example5.com") spf.go:160: check example5.com 1 spf.go:168: multiple dns records yml_test.go:234: success: permerror, multiple matching DNS records [multitxt1] yml_test.go:225: test multispf2 yml_test.go:227: checkhost 1.2.3.4 foo@example8.com spf.go:129: check host with sender "1.2.3.4" "mail.example1.com" "foo@example8.com" ("example8.com") spf.go:160: check example8.com 1 spf.go:176: dns record "v=spf1 +all" spf.go:237: pass matched all yml_test.go:234: success: pass, matched 'all' [multispf2] yml_test.go:225: test case-insensitive yml_test.go:227: checkhost 1.2.3.4 foo@example9.com spf.go:129: check host with sender "1.2.3.4" "mail.example1.com" "foo@example9.com" ("example9.com") spf.go:160: check example9.com 1 spf.go:176: dns record "v=SpF1 ~all" spf.go:237: softfail matched all yml_test.go:234: success: softfail, matched 'all' [case-insensitive] yml_test.go:152: suite: Record evaluation yml_test.go:157: domain t11.example.com yml_test.go:159: SPF: [v=spf1 a:a123456789012345678901234567890123456789012345678901234567890123.example.com -all] yml_test.go:157: domain t12.example.com yml_test.go:159: SPF: [v=spf1 a:%{H}.bar -all] yml_test.go:157: domain t1.example.com yml_test.go:159: SPF: [v=spf1 ip4:1.2.3.4 -all moo] yml_test.go:157: domain t4.example.com yml_test.go:159: SPF: [v=spf1 moo.cow:far_out=man:dog/cat ip4:1.2.3.4 -all] yml_test.go:157: domain t5.example.com yml_test.go:159: SPF: [v=spf1 redirect=t5.example.com ~all] yml_test.go:157: domain t7.example.com yml_test.go:159: SPF: [v=spf1 ip4:1.2.3.4] yml_test.go:157: domain t8.example.com yml_test.go:159: SPF: [v=spf1 ip4:1.2.3.4 redirect:t2.example.com] yml_test.go:157: domain t9.example.com yml_test.go:159: SPF: [v=spf1 a:foo-bar -all] yml_test.go:157: domain mail.example.com yml_test.go:159: A: [1.2.3.4] yml_test.go:157: domain t2.example.com yml_test.go:159: SPF: [v=spf1 moo.cow-far_out=man:dog/cat ip4:1.2.3.4 -all] yml_test.go:157: domain t3.example.com yml_test.go:159: SPF: [v=spf1 moo.cow/far_out=man:dog/cat ip4:1.2.3.4 -all] yml_test.go:157: domain t6.example.com yml_test.go:159: SPF: [v=spf1 ip4:1.2.3.4 redirect=t2.example.com] yml_test.go:157: domain t10.example.com yml_test.go:159: SPF: [v=spf1 a:mail.example...com -all] yml_test.go:225: test redirect-after-mechanisms1 yml_test.go:227: checkhost 1.2.3.4 foo@t5.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@t5.example.com" ("t5.example.com") spf.go:160: check t5.example.com 1 spf.go:176: dns record "v=spf1 redirect=t5.example.com ~all" spf.go:237: softfail matched all yml_test.go:234: success: softfail, matched 'all' [redirect-after-mechanisms1] yml_test.go:225: test default-result yml_test.go:227: checkhost 1.2.3.5 foo@t7.example.com spf.go:129: check host with sender "1.2.3.5" "mail.example.com" "foo@t7.example.com" ("t7.example.com") spf.go:160: check t7.example.com 1 spf.go:176: dns record "v=spf1 ip4:1.2.3.4" spf.go:284: fallback to neutral yml_test.go:234: success: neutral, [default-result] yml_test.go:225: test invalid-domain-empty-label yml_test.go:227: checkhost 1.2.3.4 foo@t10.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@t10.example.com" ("t10.example.com") spf.go:160: check t10.example.com 1 spf.go:176: dns record "v=spf1 a:mail.example...com -all" spf.go:526: masks on "a:mail.example...com": ["a:mail.example...com" ":mail.example...com" "mail.example...com" "" "" "" ""] "mail.example...com" {-1 -1} spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [invalid-domain-empty-label] yml_test.go:225: test modifier-charset-bad1 yml_test.go:227: checkhost 1.2.3.4 foo@t3.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@t3.example.com" ("t3.example.com") spf.go:160: check t3.example.com 1 spf.go:176: dns record "v=spf1 moo.cow/far_out=man:dog/cat ip4:1.2.3.4 -all" spf.go:277: permerror, unknown field yml_test.go:234: success: permerror, unknown field [modifier-charset-bad1] yml_test.go:225: test invalid-domain-long-via-macro yml_test.go:227: checkhost 1.2.3.4 foo@t12.example.com spf.go:129: check host with sender "1.2.3.4" "%%%%%%%%%%%%%%%%%%%%%%" "foo@t12.example.com" ("t12.example.com") spf.go:160: check t12.example.com 1 spf.go:176: dns record "v=spf1 a:%{H}.bar -all" spf.go:526: masks on "a:%{H}.bar": ["a:%{H}.bar" ":%{H}.bar" "%{H}.bar" "" "" "" ""] "%{H}.bar" {-1 -1} spf.go:708: macro "H": ["H" "H" "" "" ""] spf.go:805: macro expanded "%{H}.bar" to "t12.example.com.bar" spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [invalid-domain-long-via-macro] yml_test.go:225: test modifier-charset-bad2 yml_test.go:227: checkhost 1.2.3.4 foo@t4.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@t4.example.com" ("t4.example.com") spf.go:160: check t4.example.com 1 spf.go:176: dns record "v=spf1 moo.cow:far_out=man:dog/cat ip4:1.2.3.4 -all" spf.go:277: permerror, unknown field yml_test.go:234: success: permerror, unknown field [modifier-charset-bad2] yml_test.go:225: test invalid-domain-long yml_test.go:227: checkhost 1.2.3.4 foo@t11.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@t11.example.com" ("t11.example.com") spf.go:160: check t11.example.com 1 spf.go:176: dns record "v=spf1 a:a123456789012345678901234567890123456789012345678901234567890123.example.com -all" spf.go:526: masks on "a:a123456789012345678901234567890123456789012345678901234567890123.example.com": ["a:a123456789012345678901234567890123456789012345678901234567890123.example.com" ":a123456789012345678901234567890123456789012345678901234567890123.example.com" "a123456789012345678901234567890123456789012345678901234567890123.example.com" "" "" "" ""] "a123456789012345678901234567890123456789012345678901234567890123.example.com" {-1 -1} spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [invalid-domain-long] yml_test.go:152: suite: ALL mechanism syntax yml_test.go:157: domain mail.example.com yml_test.go:159: A: [1.2.3.4] yml_test.go:157: domain e1.example.com yml_test.go:159: SPF: [v=spf1 -all.] yml_test.go:157: domain e2.example.com yml_test.go:159: SPF: [v=spf1 -all:foobar] yml_test.go:157: domain e3.example.com yml_test.go:159: SPF: [v=spf1 -all/8] yml_test.go:157: domain e4.example.com yml_test.go:159: SPF: [v=spf1 ?all] yml_test.go:157: domain e5.example.com yml_test.go:159: SPF: [v=spf1 all -all] yml_test.go:225: test all-cidr yml_test.go:227: checkhost 1.2.3.4 foo@e3.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e3.example.com" ("e3.example.com") spf.go:160: check e3.example.com 1 spf.go:176: dns record "v=spf1 -all/8" spf.go:277: permerror, unknown field yml_test.go:234: success: permerror, unknown field [all-cidr] yml_test.go:225: test all-neutral yml_test.go:227: checkhost 1.2.3.4 foo@e4.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e4.example.com" ("e4.example.com") spf.go:160: check e4.example.com 1 spf.go:176: dns record "v=spf1 ?all" spf.go:237: neutral matched all yml_test.go:234: success: neutral, matched 'all' [all-neutral] yml_test.go:225: test all-double yml_test.go:227: checkhost 1.2.3.4 foo@e5.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e5.example.com" ("e5.example.com") spf.go:160: check e5.example.com 1 spf.go:176: dns record "v=spf1 all -all" spf.go:237: pass matched all yml_test.go:234: success: pass, matched 'all' [all-double] yml_test.go:225: test all-dot yml_test.go:227: checkhost 1.2.3.4 foo@e1.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e1.example.com" ("e1.example.com") spf.go:160: check e1.example.com 1 spf.go:176: dns record "v=spf1 -all." spf.go:277: permerror, unknown field yml_test.go:234: success: permerror, unknown field [all-dot] yml_test.go:225: test all-arg yml_test.go:227: checkhost 1.2.3.4 foo@e2.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e2.example.com" ("e2.example.com") spf.go:160: check e2.example.com 1 spf.go:176: dns record "v=spf1 -all:foobar" spf.go:277: permerror, unknown field yml_test.go:234: success: permerror, unknown field [all-arg] yml_test.go:152: suite: PTR mechanism syntax yml_test.go:157: domain e2.example.com yml_test.go:159: SPF: [v=spf1 ptr:example.com -all] yml_test.go:157: domain 4.3.2.1.in-addr.arpa yml_test.go:159: PTR: [e3.example.com] yml_test.go:159: PTR: [e4.example.com] yml_test.go:159: PTR: [mail.example.com] yml_test.go:157: 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:159: PTR: [e3.example.com] yml_test.go:157: domain e3.example.com yml_test.go:159: SPF: [v=spf1 ptr -all] yml_test.go:159: A: [1.2.3.4] yml_test.go:159: AAAA: [CAFE:BABE::1] yml_test.go:157: domain e4.example.com yml_test.go:159: SPF: [v=spf1 ptr -all] yml_test.go:157: domain e5.example.com yml_test.go:159: SPF: [v=spf1 ptr:] yml_test.go:157: domain mail.example.com yml_test.go:159: A: [1.2.3.4] yml_test.go:157: domain e1.example.com yml_test.go:159: SPF: [v=spf1 ptr/0 -all] yml_test.go:225: test ptr-cidr yml_test.go:227: checkhost 1.2.3.4 foo@e1.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e1.example.com" ("e1.example.com") spf.go:160: check e1.example.com 1 spf.go:176: dns record "v=spf1 ptr/0 -all" spf.go:277: permerror, unknown field yml_test.go:234: success: permerror, unknown field [ptr-cidr] yml_test.go:225: test ptr-match-target yml_test.go:227: checkhost 1.2.3.4 foo@e2.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e2.example.com" ("e2.example.com") spf.go:160: check e2.example.com 1 spf.go:176: dns record "v=spf1 ptr:example.com -all" spf.go:398: ptr forward resolution "e3.example.com." -> ["1.2.3.4" "cafe:babe::1"] spf.go:398: ptr forward resolution "e4.example.com." -> [] spf.go:398: ptr forward resolution "mail.example.com." -> ["1.2.3.4"] spf.go:407: ptr evaluating "example.com" in ["e3.example.com." "mail.example.com."] spf.go:261: ptr ok, pass matched 'ptr' yml_test.go:234: success: pass, matched 'ptr' [ptr-match-target] yml_test.go:225: test ptr-match-implicit yml_test.go:227: checkhost 1.2.3.4 foo@e3.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e3.example.com" ("e3.example.com") spf.go:160: check e3.example.com 1 spf.go:176: dns record "v=spf1 ptr -all" spf.go:398: ptr forward resolution "e3.example.com." -> ["1.2.3.4" "cafe:babe::1"] spf.go:398: ptr forward resolution "e4.example.com." -> [] spf.go:398: ptr forward resolution "mail.example.com." -> ["1.2.3.4"] spf.go:407: ptr evaluating "e3.example.com" in ["e3.example.com." "mail.example.com."] spf.go:261: ptr ok, pass matched 'ptr' yml_test.go:234: success: pass, matched 'ptr' [ptr-match-implicit] yml_test.go:225: test ptr-nomatch-invalid yml_test.go:227: checkhost 1.2.3.4 foo@e4.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e4.example.com" ("e4.example.com") spf.go:160: check e4.example.com 1 spf.go:176: dns record "v=spf1 ptr -all" spf.go:398: ptr forward resolution "e3.example.com." -> ["1.2.3.4" "cafe:babe::1"] spf.go:398: ptr forward resolution "e4.example.com." -> [] spf.go:398: ptr forward resolution "mail.example.com." -> ["1.2.3.4"] spf.go:407: ptr evaluating "e4.example.com" in ["e3.example.com." "mail.example.com."] spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [ptr-nomatch-invalid] yml_test.go:225: test ptr-match-ip6 yml_test.go:227: checkhost cafe:babe::1 foo@e3.example.com spf.go:129: check host with sender "cafe:babe::1" "mail.example.com" "foo@e3.example.com" ("e3.example.com") spf.go:160: check e3.example.com 1 spf.go:176: dns record "v=spf1 ptr -all" spf.go:398: ptr forward resolution "e3.example.com." -> ["1.2.3.4" "cafe:babe::1"] spf.go:407: ptr evaluating "e3.example.com" in ["e3.example.com."] spf.go:261: ptr ok, pass matched 'ptr' yml_test.go:234: success: pass, matched 'ptr' [ptr-match-ip6] yml_test.go:225: test ptr-empty-domain yml_test.go:227: checkhost 1.2.3.4 foo@e5.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e5.example.com" ("e5.example.com") spf.go:160: check e5.example.com 1 spf.go:176: dns record "v=spf1 ptr:" spf.go:261: ptr ok, permerror invalid domain yml_test.go:234: success: permerror, invalid domain [ptr-empty-domain] yml_test.go:152: suite: A mechanism syntax yml_test.go:157: domain e10.example.com yml_test.go:159: SPF: [v=spf1 a:foo.example.com/24] yml_test.go:157: domain e2.example.com yml_test.go:159: A: [1.1.1.1] yml_test.go:159: AAAA: [1234::2] yml_test.go:159: SPF: [v=spf1 a/0 -all] yml_test.go:157: domain e6a.example.com yml_test.go:159: SPF: [v=spf1 a/33 -all] yml_test.go:157: domain e7.example.com yml_test.go:159: SPF: [v=spf1 a//129 -all] yml_test.go:157: domain e8.example.com yml_test.go:159: A: [1.2.3.5] yml_test.go:159: AAAA: [2001:db8:1234::dead:beef] yml_test.go:159: SPF: [v=spf1 a/24//64 -all] yml_test.go:157: domain e3.example.com yml_test.go:159: SPF: [v=spf1 a:foo.example.com] yml_test.go:157: domain e8e.example.com yml_test.go:159: A: [1.2.3.5] yml_test.go:159: AAAA: [2001:db8:1234::dead:beef] yml_test.go:159: SPF: [v=spf1 a/24/64 -all] yml_test.go:157: domain foo:bar/baz.example.com yml_test.go:159: A: [1.2.3.4] yml_test.go:157: domain mail.example.com yml_test.go:159: A: [1.2.3.4] yml_test.go:157: domain e2a.example.com yml_test.go:159: AAAA: [1234::1] yml_test.go:159: SPF: [v=spf1 a//0 -all] yml_test.go:157: domain ipv6.example.com yml_test.go:159: AAAA: [1234::1] yml_test.go:159: A: [1.1.1.1] yml_test.go:159: SPF: [v=spf1 a -all] yml_test.go:157: domain e5a.example.com yml_test.go:159: SPF: [v=spf1 a:museum] yml_test.go:157: domain e11.example.com yml_test.go:159: SPF: [v=spf1 a:foo:bar/baz.example.com] yml_test.go:157: domain e8b.example.com yml_test.go:159: A: [1.2.3.5] yml_test.go:159: AAAA: [2001:db8:1234::dead:beef] yml_test.go:159: SPF: [v=spf1 a//64 -all] yml_test.go:157: domain e9.example.com yml_test.go:159: SPF: [v=spf1 a:example.com:8080] yml_test.go:157: domain e14.example.com yml_test.go:159: SPF: [v=spf1 a:foo.example.xn--zckzah -all] yml_test.go:157: domain e4.example.com yml_test.go:159: SPF: [v=spf1 a:111.222.33.44] yml_test.go:157: domain e2b.example.com yml_test.go:159: A: [1.1.1.1] yml_test.go:159: SPF: [v=spf1 a//0 -all] yml_test.go:157: domain e5.example.com yml_test.go:159: SPF: [v=spf1 a:abc.123] yml_test.go:157: domain e8a.example.com yml_test.go:159: A: [1.2.3.5] yml_test.go:159: AAAA: [2001:db8:1234::dead:beef] yml_test.go:159: SPF: [v=spf1 a/24 -all] yml_test.go:157: domain e12.example.com yml_test.go:159: SPF: [v=spf1 a:example.-com] yml_test.go:157: domain foo.example.xn--zckzah yml_test.go:159: A: [1.2.3.4] yml_test.go:157: domain e5b.example.com yml_test.go:159: SPF: [v=spf1 a:museum.] yml_test.go:157: domain e13.example.com yml_test.go:159: SPF: [v=spf1 a:] yml_test.go:157: domain e1.example.com yml_test.go:159: SPF: [v=spf1 a/0 -all] yml_test.go:157: domain e6.example.com yml_test.go:159: SPF: [v=spf1 a//33 -all] yml_test.go:157: domain foo.example.com yml_test.go:159: A: [1.1.1.1] yml_test.go:159: A: [1.2.3.5] yml_test.go:225: test a-multi-ip2 yml_test.go:227: checkhost 1.2.3.4 foo@e10.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e10.example.com" ("e10.example.com") spf.go:160: check e10.example.com 1 spf.go:176: dns record "v=spf1 a:foo.example.com/24" spf.go:526: masks on "a:foo.example.com/24": ["a:foo.example.com/24" ":foo.example.com" "foo.example.com" "/24" "24" "" ""] "foo.example.com" {24 -1} spf.go:561: mx matched 1.2.3.4, 1.2.3.5, {24 -1} spf.go:246: a ok, pass matched 'a' yml_test.go:234: success: pass, matched 'a' [a-multi-ip2] yml_test.go:225: test a-ip6-dualstack yml_test.go:227: checkhost 1234::1 foo@ipv6.example.com spf.go:129: check host with sender "1234::1" "mail.example.com" "foo@ipv6.example.com" ("ipv6.example.com") spf.go:160: check ipv6.example.com 1 spf.go:176: dns record "v=spf1 a -all" spf.go:526: masks on "a": ["a" "" "" "" "" "" ""] "ipv6.example.com" {-1 -1} spf.go:561: mx matched 1234::1, 1234::1, {-1 -1} spf.go:246: a ok, pass matched 'a' yml_test.go:234: success: pass, matched 'a' [a-ip6-dualstack] yml_test.go:225: test a-dual-cidr-ip4-err yml_test.go:227: checkhost 1.2.3.4 foo@e8e.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e8e.example.com" ("e8e.example.com") spf.go:160: check e8e.example.com 1 spf.go:176: dns record "v=spf1 a/24/64 -all" spf.go:526: masks on "a/24/64": [] "e8e.example.com" {-1 -1} spf.go:246: a ok, permerror invalid mask yml_test.go:234: success: permerror, invalid mask [a-dual-cidr-ip4-err] yml_test.go:225: test a-bad-cidr6 yml_test.go:227: checkhost 1.2.3.4 foo@e7.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e7.example.com" ("e7.example.com") spf.go:160: check e7.example.com 1 spf.go:176: dns record "v=spf1 a//129 -all" spf.go:246: a ok, permerror invalid mask yml_test.go:234: success: permerror, invalid mask [a-bad-cidr6] yml_test.go:225: test a-cidr6-0-ip4mapped yml_test.go:227: checkhost 1.2.3.4 foo@e2a.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e2a.example.com" ("e2a.example.com") spf.go:160: check e2a.example.com 1 spf.go:176: dns record "v=spf1 a//0 -all" spf.go:526: masks on "a//0": ["a//0" "" "" "" "" "//0" "0"] "e2a.example.com" {-1 0} spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [a-cidr6-0-ip4mapped] yml_test.go:225: test a-dash-in-toplabel yml_test.go:227: checkhost 1.2.3.4 foo@e14.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e14.example.com" ("e14.example.com") spf.go:160: check e14.example.com 1 spf.go:176: dns record "v=spf1 a:foo.example.xn--zckzah -all" spf.go:526: masks on "a:foo.example.xn--zckzah": ["a:foo.example.xn--zckzah" ":foo.example.xn--zckzah" "foo.example.xn--zckzah" "" "" "" ""] "foo.example.xn--zckzah" {-1 -1} spf.go:561: mx matched 1.2.3.4, 1.2.3.4, {-1 -1} spf.go:246: a ok, pass matched 'a' yml_test.go:234: success: pass, matched 'a' [a-dash-in-toplabel] yml_test.go:225: test a-cidr4-0 yml_test.go:227: checkhost 1.2.3.4 foo@e2.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e2.example.com" ("e2.example.com") spf.go:160: check e2.example.com 1 spf.go:176: dns record "v=spf1 a/0 -all" spf.go:526: masks on "a/0": ["a/0" "" "" "/0" "0" "" ""] "e2.example.com" {0 -1} spf.go:561: mx matched 1.2.3.4, 1.1.1.1, {0 -1} spf.go:246: a ok, pass matched 'a' yml_test.go:234: success: pass, matched 'a' [a-cidr4-0] yml_test.go:225: test a-dual-cidr-ip4-match yml_test.go:227: checkhost 1.2.3.4 foo@e8.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e8.example.com" ("e8.example.com") spf.go:160: check e8.example.com 1 spf.go:176: dns record "v=spf1 a/24//64 -all" spf.go:526: masks on "a/24//64": ["a/24//64" "" "" "/24" "24" "//64" "64"] "e8.example.com" {24 64} spf.go:561: mx matched 1.2.3.4, 1.2.3.5, {24 64} spf.go:246: a ok, pass matched 'a' yml_test.go:234: success: pass, matched 'a' [a-dual-cidr-ip4-match] yml_test.go:225: test a-dual-cidr-ip6-match yml_test.go:227: checkhost 2001:db8:1234::cafe:babe foo@e8.example.com spf.go:129: check host with sender "2001:db8:1234::cafe:babe" "mail.example.com" "foo@e8.example.com" ("e8.example.com") spf.go:160: check e8.example.com 1 spf.go:176: dns record "v=spf1 a/24//64 -all" spf.go:526: masks on "a/24//64": ["a/24//64" "" "" "/24" "24" "//64" "64"] "e8.example.com" {24 64} spf.go:561: mx matched 2001:db8:1234::cafe:babe, 2001:db8:1234::dead:beef, {24 64} spf.go:246: a ok, pass matched 'a' yml_test.go:234: success: pass, matched 'a' [a-dual-cidr-ip6-match] yml_test.go:225: test a-nxdomain yml_test.go:227: checkhost 1.2.3.4 foo@e1.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e1.example.com" ("e1.example.com") spf.go:160: check e1.example.com 1 spf.go:176: dns record "v=spf1 a/0 -all" spf.go:526: masks on "a/0": ["a/0" "" "" "/0" "0" "" ""] "e1.example.com" {0 -1} spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [a-nxdomain] yml_test.go:225: test a-cidr4-0-ip6 yml_test.go:227: checkhost 1234::1 foo@e2.example.com spf.go:129: check host with sender "1234::1" "mail.example.com" "foo@e2.example.com" ("e2.example.com") spf.go:160: check e2.example.com 1 spf.go:176: dns record "v=spf1 a/0 -all" spf.go:526: masks on "a/0": ["a/0" "" "" "/0" "0" "" ""] "e2.example.com" {0 -1} spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [a-cidr4-0-ip6] yml_test.go:225: test a-cidr6-0-ip6 yml_test.go:227: checkhost 1234::1 foo@e2a.example.com spf.go:129: check host with sender "1234::1" "mail.example.com" "foo@e2a.example.com" ("e2a.example.com") spf.go:160: check e2a.example.com 1 spf.go:176: dns record "v=spf1 a//0 -all" spf.go:526: masks on "a//0": ["a//0" "" "" "" "" "//0" "0"] "e2a.example.com" {-1 0} spf.go:561: mx matched 1234::1, 1234::1, {-1 0} spf.go:246: a ok, pass matched 'a' yml_test.go:234: success: pass, matched 'a' [a-cidr6-0-ip6] yml_test.go:225: test a-cidr6 yml_test.go:227: checkhost 1.2.3.4 foo@e6.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e6.example.com" ("e6.example.com") spf.go:160: check e6.example.com 1 spf.go:176: dns record "v=spf1 a//33 -all" spf.go:526: masks on "a//33": ["a//33" "" "" "" "" "//33" "33"] "e6.example.com" {-1 33} spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [a-cidr6] yml_test.go:225: test a-multi-ip1 yml_test.go:227: checkhost 1.2.3.4 foo@e10.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e10.example.com" ("e10.example.com") spf.go:160: check e10.example.com 1 spf.go:176: dns record "v=spf1 a:foo.example.com/24" spf.go:526: masks on "a:foo.example.com/24": ["a:foo.example.com/24" ":foo.example.com" "foo.example.com" "/24" "24" "" ""] "foo.example.com" {24 -1} spf.go:561: mx matched 1.2.3.4, 1.2.3.5, {24 -1} spf.go:246: a ok, pass matched 'a' yml_test.go:234: success: pass, matched 'a' [a-multi-ip1] yml_test.go:225: test a-dual-cidr-ip4-default yml_test.go:227: checkhost 1.2.3.4 foo@e8b.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e8b.example.com" ("e8b.example.com") spf.go:160: check e8b.example.com 1 spf.go:176: dns record "v=spf1 a//64 -all" spf.go:526: masks on "a//64": ["a//64" "" "" "" "" "//64" "64"] "e8b.example.com" {-1 64} spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [a-dual-cidr-ip4-default] yml_test.go:225: test a-dual-cidr-ip6-default yml_test.go:227: checkhost 2001:db8:1234::cafe:babe foo@e8a.example.com spf.go:129: check host with sender "2001:db8:1234::cafe:babe" "mail.example.com" "foo@e8a.example.com" ("e8a.example.com") spf.go:160: check e8a.example.com 1 spf.go:176: dns record "v=spf1 a/24 -all" spf.go:526: masks on "a/24": ["a/24" "" "" "/24" "24" "" ""] "e8a.example.com" {24 -1} spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [a-dual-cidr-ip6-default] yml_test.go:225: test a-cidr6-0-ip4 yml_test.go:227: checkhost 1.2.3.4 foo@e2a.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e2a.example.com" ("e2a.example.com") spf.go:160: check e2a.example.com 1 spf.go:176: dns record "v=spf1 a//0 -all" spf.go:526: masks on "a//0": ["a//0" "" "" "" "" "//0" "0"] "e2a.example.com" {-1 0} spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [a-cidr6-0-ip4] yml_test.go:225: test a-cidr6-0-nxdomain yml_test.go:227: checkhost 1234::1 foo@e2b.example.com spf.go:129: check host with sender "1234::1" "mail.example.com" "foo@e2b.example.com" ("e2b.example.com") spf.go:160: check e2b.example.com 1 spf.go:176: dns record "v=spf1 a//0 -all" spf.go:526: masks on "a//0": ["a//0" "" "" "" "" "//0" "0"] "e2b.example.com" {-1 0} spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [a-cidr6-0-nxdomain] yml_test.go:225: test a-bad-cidr4 yml_test.go:227: checkhost 1.2.3.4 foo@e6a.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e6a.example.com" ("e6a.example.com") spf.go:160: check e6a.example.com 1 spf.go:176: dns record "v=spf1 a/33 -all" spf.go:246: a ok, permerror invalid mask yml_test.go:234: success: permerror, invalid mask [a-bad-cidr4] yml_test.go:152: suite: Include mechanism semantics and syntax yml_test.go:157: domain e1.example.com yml_test.go:159: SPF: [v=spf1 include:ip5.example.com ~all] yml_test.go:157: domain e3.example.com yml_test.go:159: SPF: [v=spf1 include:ip7.example.com -all] yml_test.go:157: domain mail.example.com yml_test.go:159: A: [1.2.3.4] yml_test.go:157: domain ip5.example.com yml_test.go:159: SPF: [v=spf1 ip4:1.2.3.5 -all] yml_test.go:157: domain ip7.example.com yml_test.go:159: SPF: [v=spf1 ip4:1.2.3.7 ?all] yml_test.go:157: domain e5.example.com yml_test.go:159: SPF: [v=spf1 include:e6.example.com -all] yml_test.go:157: domain e6.example.com yml_test.go:159: SPF: [v=spf1 include +all] yml_test.go:157: domain e7.example.com yml_test.go:159: SPF: [v=spf1 include:erehwon.example.com -all] yml_test.go:157: domain e2.example.com yml_test.go:159: SPF: [v=spf1 include:ip6.example.com all] yml_test.go:157: domain e8.example.com yml_test.go:159: SPF: [v=spf1 include: -all] yml_test.go:157: domain e4.example.com yml_test.go:159: SPF: [v=spf1 include:ip8.example.com -all] yml_test.go:157: domain e9.example.com yml_test.go:159: SPF: [v=spf1 include:ip5.example.com/24 -all] yml_test.go:157: domain ip6.example.com yml_test.go:159: SPF: [v=spf1 ip4:1.2.3.6 ~all] yml_test.go:157: domain ip8.example.com yml_test.go:159: TIMEOUT yml_test.go:157: domain erehwon.example.com yml_test.go:159: TXT: [v=spfl am not an SPF record] yml_test.go:225: test include-cidr yml_test.go:227: checkhost 1.2.3.4 foo@e9.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e9.example.com" ("e9.example.com") spf.go:160: check e9.example.com 1 spf.go:176: dns record "v=spf1 include:ip5.example.com/24 -all" spf.go:659: macro contains / spf.go:241: include ok, permerror invalid macro yml_test.go:234: success: permerror, invalid macro [include-cidr] yml_test.go:225: test include-softfail yml_test.go:227: checkhost 1.2.3.4 foo@e2.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e2.example.com" ("e2.example.com") spf.go:160: check e2.example.com 1 spf.go:176: dns record "v=spf1 include:ip6.example.com all" spf.go:160: check ip6.example.com 2 spf.go:176: dns record "v=spf1 ip4:1.2.3.6 ~all" spf.go:237: softfail matched all spf.go:237: pass matched all yml_test.go:234: success: pass, matched 'all' [include-softfail] yml_test.go:225: test include-neutral yml_test.go:227: checkhost 1.2.3.4 foo@e3.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e3.example.com" ("e3.example.com") spf.go:160: check e3.example.com 1 spf.go:176: dns record "v=spf1 include:ip7.example.com -all" spf.go:160: check ip7.example.com 2 spf.go:176: dns record "v=spf1 ip4:1.2.3.7 ?all" spf.go:237: neutral matched all spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [include-neutral] yml_test.go:225: test include-temperror yml_test.go:227: checkhost 1.2.3.4 foo@e4.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e4.example.com" ("e4.example.com") spf.go:160: check e4.example.com 1 spf.go:176: dns record "v=spf1 include:ip8.example.com -all" spf.go:160: check ip8.example.com 2 spf.go:164: dns temp error: lookup : test timeout error spf.go:241: include ok, temperror lookup : test timeout error yml_test.go:234: success: temperror, lookup : test timeout error [include-temperror] yml_test.go:225: test include-none yml_test.go:227: checkhost 1.2.3.4 foo@e7.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e7.example.com" ("e7.example.com") spf.go:160: check e7.example.com 1 spf.go:176: dns record "v=spf1 include:erehwon.example.com -all" spf.go:160: check erehwon.example.com 2 spf.go:176: dns record "" spf.go:241: include ok, permerror no DNS record found yml_test.go:234: success: permerror, no DNS record found [include-none] yml_test.go:225: test include-empty-domain yml_test.go:227: checkhost 1.2.3.4 foo@e8.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e8.example.com" ("e8.example.com") spf.go:160: check e8.example.com 1 spf.go:176: dns record "v=spf1 include: -all" spf.go:160: check 2 spf.go:176: dns record "" spf.go:241: include ok, permerror no DNS record found yml_test.go:234: success: permerror, no DNS record found [include-empty-domain] yml_test.go:225: test include-fail yml_test.go:227: checkhost 1.2.3.4 foo@e1.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e1.example.com" ("e1.example.com") spf.go:160: check e1.example.com 1 spf.go:176: dns record "v=spf1 include:ip5.example.com ~all" spf.go:160: check ip5.example.com 2 spf.go:176: dns record "v=spf1 ip4:1.2.3.5 -all" spf.go:237: fail matched all spf.go:237: softfail matched all yml_test.go:234: success: softfail, matched 'all' [include-fail] yml_test.go:225: test include-permerror yml_test.go:227: checkhost 1.2.3.4 foo@e5.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e5.example.com" ("e5.example.com") spf.go:160: check e5.example.com 1 spf.go:176: dns record "v=spf1 include:e6.example.com -all" spf.go:160: check e6.example.com 2 spf.go:176: dns record "v=spf1 include +all" spf.go:277: permerror, unknown field spf.go:241: include ok, permerror unknown field yml_test.go:234: success: permerror, unknown field [include-permerror] yml_test.go:225: test include-syntax-error yml_test.go:227: checkhost 1.2.3.4 foo@e6.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e6.example.com" ("e6.example.com") spf.go:160: check e6.example.com 1 spf.go:176: dns record "v=spf1 include +all" spf.go:277: permerror, unknown field yml_test.go:234: success: permerror, unknown field [include-syntax-error] yml_test.go:152: suite: MX mechanism syntax yml_test.go:157: domain mail.example.com yml_test.go:159: A: [1.2.3.4] yml_test.go:159: MX: {0 } yml_test.go:159: SPF: [v=spf1 mx] yml_test.go:157: domain e5.example.com yml_test.go:159: SPF: [v=spf1 mx:abc.123] yml_test.go:157: domain foo1.example.com yml_test.go:159: A: [1.1.1.1] yml_test.go:159: A: [1.2.3.5] yml_test.go:157: domain e10.example.com yml_test.go:159: SPF: [v=spf1 mx:foo.example.com/24] yml_test.go:157: domain e2a.example.com yml_test.go:159: AAAA: [1234::1] yml_test.go:159: MX: {0 e2a.example.com} yml_test.go:159: SPF: [v=spf1 mx//0 -all] yml_test.go:157: domain e2b.example.com yml_test.go:159: A: [1.1.1.1] yml_test.go:159: MX: {0 e2b.example.com} yml_test.go:159: SPF: [v=spf1 mx//0 -all] yml_test.go:157: domain e9.example.com yml_test.go:159: SPF: [v=spf1 mx:example.com:8080] yml_test.go:157: domain e4.example.com yml_test.go:159: SPF: [v=spf1 mx] yml_test.go:159: A: [1.2.3.4] yml_test.go:157: domain e6a.example.com yml_test.go:159: SPF: [v=spf1 mx/33 -all] yml_test.go:157: domain e7.example.com yml_test.go:159: SPF: [v=spf1 mx//129 -all] yml_test.go:157: domain foo.example.com yml_test.go:159: MX: {0 foo1.example.com} yml_test.go:157: domain foo:bar/baz.example.com yml_test.go:159: MX: {0 foo:bar/baz.example.com} yml_test.go:159: A: [1.2.3.4] yml_test.go:157: domain e1.example.com yml_test.go:159: SPF: [v=spf1 mx/0 -all] yml_test.go:159: MX: {0 e1.example.com} yml_test.go:157: domain e2.example.com yml_test.go:159: A: [1.1.1.1] yml_test.go:159: AAAA: [1234::2] yml_test.go:159: MX: {0 e2.example.com} yml_test.go:159: SPF: [v=spf1 mx/0 -all] yml_test.go:157: domain e3.example.com yml_test.go:159: SPF: [v=spf1 mx:foo.example.com] yml_test.go:157: domain e12.example.com yml_test.go:159: SPF: [v=spf1 mx:example.-com] yml_test.go:157: domain e13.example.com yml_test.go:159: SPF: [v=spf1 mx: -all] yml_test.go:157: domain e6.example.com yml_test.go:159: SPF: [v=spf1 mx//33 -all] yml_test.go:157: domain e11.example.com yml_test.go:159: SPF: [v=spf1 mx:foo:bar/baz.example.com] yml_test.go:225: test mx-nxdomain yml_test.go:227: checkhost 1.2.3.4 foo@e1.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e1.example.com" ("e1.example.com") spf.go:160: check e1.example.com 1 spf.go:176: dns record "v=spf1 mx/0 -all" spf.go:526: masks on "mx/0": ["mx/0" "" "" "/0" "0" "" ""] "e1.example.com" {0 -1} spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [mx-nxdomain] yml_test.go:225: test mx-cidr4-0 yml_test.go:227: checkhost 1.2.3.4 foo@e2.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e2.example.com" ("e2.example.com") spf.go:160: check e2.example.com 1 spf.go:176: dns record "v=spf1 mx/0 -all" spf.go:526: masks on "mx/0": ["mx/0" "" "" "/0" "0" "" ""] "e2.example.com" {0 -1} spf.go:615: mx matched 1.2.3.4, 1.1.1.1, {0 -1} spf.go:251: mx ok, pass matched 'mx' yml_test.go:234: success: pass, matched 'mx' [mx-cidr4-0] yml_test.go:225: test mx-implicit yml_test.go:227: checkhost 1.2.3.4 foo@e4.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e4.example.com" ("e4.example.com") spf.go:160: check e4.example.com 1 spf.go:176: dns record "v=spf1 mx" spf.go:526: masks on "mx": ["mx" "" "" "" "" "" ""] "e4.example.com" {-1 -1} spf.go:284: fallback to neutral yml_test.go:234: success: neutral, [mx-implicit] yml_test.go:225: test mx-cidr6 yml_test.go:227: checkhost 1.2.3.4 foo@e6.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e6.example.com" ("e6.example.com") spf.go:160: check e6.example.com 1 spf.go:176: dns record "v=spf1 mx//33 -all" spf.go:526: masks on "mx//33": ["mx//33" "" "" "" "" "//33" "33"] "e6.example.com" {-1 33} spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [mx-cidr6] yml_test.go:225: test mx-bad-cidr6 yml_test.go:227: checkhost 1.2.3.4 foo@e7.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e7.example.com" ("e7.example.com") spf.go:160: check e7.example.com 1 spf.go:176: dns record "v=spf1 mx//129 -all" spf.go:251: mx ok, permerror invalid mask yml_test.go:234: success: permerror, invalid mask [mx-bad-cidr6] yml_test.go:225: test mx-cidr6-0-ip4 yml_test.go:227: checkhost 1.2.3.4 foo@e2a.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e2a.example.com" ("e2a.example.com") spf.go:160: check e2a.example.com 1 spf.go:176: dns record "v=spf1 mx//0 -all" spf.go:526: masks on "mx//0": ["mx//0" "" "" "" "" "//0" "0"] "e2a.example.com" {-1 0} spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [mx-cidr6-0-ip4] yml_test.go:225: test mx-bad-cidr4 yml_test.go:227: checkhost 1.2.3.4 foo@e6a.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e6a.example.com" ("e6a.example.com") spf.go:160: check e6a.example.com 1 spf.go:176: dns record "v=spf1 mx/33 -all" spf.go:251: mx ok, permerror invalid mask yml_test.go:234: success: permerror, invalid mask [mx-bad-cidr4] yml_test.go:225: test mx-multi-ip2 yml_test.go:227: checkhost 1.2.3.4 foo@e10.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e10.example.com" ("e10.example.com") spf.go:160: check e10.example.com 1 spf.go:176: dns record "v=spf1 mx:foo.example.com/24" spf.go:526: masks on "mx:foo.example.com/24": ["mx:foo.example.com/24" ":foo.example.com" "foo.example.com" "/24" "24" "" ""] "foo.example.com" {24 -1} spf.go:615: mx matched 1.2.3.4, 1.2.3.5, {24 -1} spf.go:251: mx ok, pass matched 'mx' yml_test.go:234: success: pass, matched 'mx' [mx-multi-ip2] yml_test.go:225: test mx-cidr6-0-ip6 yml_test.go:227: checkhost 1234::1 foo@e2a.example.com spf.go:129: check host with sender "1234::1" "mail.example.com" "foo@e2a.example.com" ("e2a.example.com") spf.go:160: check e2a.example.com 1 spf.go:176: dns record "v=spf1 mx//0 -all" spf.go:526: masks on "mx//0": ["mx//0" "" "" "" "" "//0" "0"] "e2a.example.com" {-1 0} spf.go:615: mx matched 1234::1, 1234::1, {-1 0} spf.go:251: mx ok, pass matched 'mx' yml_test.go:234: success: pass, matched 'mx' [mx-cidr6-0-ip6] yml_test.go:225: test mx-multi-ip1 yml_test.go:227: checkhost 1.2.3.4 foo@e10.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e10.example.com" ("e10.example.com") spf.go:160: check e10.example.com 1 spf.go:176: dns record "v=spf1 mx:foo.example.com/24" spf.go:526: masks on "mx:foo.example.com/24": ["mx:foo.example.com/24" ":foo.example.com" "foo.example.com" "/24" "24" "" ""] "foo.example.com" {24 -1} spf.go:615: mx matched 1.2.3.4, 1.2.3.5, {24 -1} spf.go:251: mx ok, pass matched 'mx' yml_test.go:234: success: pass, matched 'mx' [mx-multi-ip1] yml_test.go:225: test mx-cidr4-0-ip6 yml_test.go:227: checkhost 1234::1 foo@e2.example.com spf.go:129: check host with sender "1234::1" "mail.example.com" "foo@e2.example.com" ("e2.example.com") spf.go:160: check e2.example.com 1 spf.go:176: dns record "v=spf1 mx/0 -all" spf.go:526: masks on "mx/0": ["mx/0" "" "" "/0" "0" "" ""] "e2.example.com" {0 -1} spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [mx-cidr4-0-ip6] yml_test.go:225: test mx-cidr6-0-ip4mapped yml_test.go:227: checkhost 1.2.3.4 foo@e2a.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e2a.example.com" ("e2a.example.com") spf.go:160: check e2a.example.com 1 spf.go:176: dns record "v=spf1 mx//0 -all" spf.go:526: masks on "mx//0": ["mx//0" "" "" "" "" "//0" "0"] "e2a.example.com" {-1 0} spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [mx-cidr6-0-ip4mapped] yml_test.go:225: test mx-cidr6-0-nxdomain yml_test.go:227: checkhost 1234::1 foo@e2b.example.com spf.go:129: check host with sender "1234::1" "mail.example.com" "foo@e2b.example.com" ("e2b.example.com") spf.go:160: check e2b.example.com 1 spf.go:176: dns record "v=spf1 mx//0 -all" spf.go:526: masks on "mx//0": ["mx//0" "" "" "" "" "//0" "0"] "e2b.example.com" {-1 0} spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [mx-cidr6-0-nxdomain] yml_test.go:225: test mx-empty yml_test.go:227: checkhost 1.2.3.4 spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "" ("mail.example.com") spf.go:160: check mail.example.com 1 spf.go:176: dns record "v=spf1 mx" spf.go:526: masks on "mx": ["mx" "" "" "" "" "" ""] "mail.example.com" {-1 -1} spf.go:284: fallback to neutral yml_test.go:234: success: neutral, [mx-empty] yml_test.go:152: suite: EXISTS mechanism syntax yml_test.go:157: domain mail6.example.com yml_test.go:159: AAAA: [CAFE:BABE::4] yml_test.go:157: domain e1.example.com yml_test.go:159: SPF: [v=spf1 exists:] yml_test.go:157: domain e3.example.com yml_test.go:159: SPF: [v=spf1 exists:mail.example.com/24] yml_test.go:157: domain mail.example.com yml_test.go:159: A: [1.2.3.4] yml_test.go:157: domain err.example.com yml_test.go:159: TIMEOUT yml_test.go:157: domain e2.example.com yml_test.go:159: SPF: [v=spf1 exists] yml_test.go:157: domain e4.example.com yml_test.go:159: SPF: [v=spf1 exists:mail.example.com] yml_test.go:157: domain e5.example.com yml_test.go:159: SPF: [v=spf1 exists:mail6.example.com -all] yml_test.go:157: domain e6.example.com yml_test.go:159: SPF: [v=spf1 exists:err.example.com -all] yml_test.go:225: test exists-implicit yml_test.go:227: checkhost 1.2.3.4 foo@e2.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e2.example.com" ("e2.example.com") spf.go:160: check e2.example.com 1 spf.go:176: dns record "v=spf1 exists" spf.go:277: permerror, unknown field yml_test.go:234: success: permerror, unknown field [exists-implicit] yml_test.go:225: test exists-cidr yml_test.go:227: checkhost 1.2.3.4 foo@e3.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e3.example.com" ("e3.example.com") spf.go:160: check e3.example.com 1 spf.go:176: dns record "v=spf1 exists:mail.example.com/24" spf.go:659: macro contains / spf.go:266: exists ok, permerror invalid macro yml_test.go:234: success: permerror, invalid macro [exists-cidr] yml_test.go:225: test exists-ip4 yml_test.go:227: checkhost 1.2.3.4 foo@e4.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e4.example.com" ("e4.example.com") spf.go:160: check e4.example.com 1 spf.go:176: dns record "v=spf1 exists:mail.example.com" spf.go:266: exists ok, pass matched 'exists' yml_test.go:234: success: pass, matched 'exists' [exists-ip4] yml_test.go:225: test exists-ip6 yml_test.go:227: checkhost cafe:babe::3 foo@e4.example.com spf.go:129: check host with sender "cafe:babe::3" "mail.example.com" "foo@e4.example.com" ("e4.example.com") spf.go:160: check e4.example.com 1 spf.go:176: dns record "v=spf1 exists:mail.example.com" spf.go:266: exists ok, pass matched 'exists' yml_test.go:234: success: pass, matched 'exists' [exists-ip6] yml_test.go:225: test exists-ip6only yml_test.go:227: checkhost cafe:babe::3 foo@e5.example.com spf.go:129: check host with sender "cafe:babe::3" "mail.example.com" "foo@e5.example.com" ("e5.example.com") spf.go:160: check e5.example.com 1 spf.go:176: dns record "v=spf1 exists:mail6.example.com -all" spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [exists-ip6only] yml_test.go:225: test exists-dnserr yml_test.go:227: checkhost cafe:babe::3 foo@e6.example.com spf.go:129: check host with sender "cafe:babe::3" "mail.example.com" "foo@e6.example.com" ("e6.example.com") spf.go:160: check e6.example.com 1 spf.go:176: dns record "v=spf1 exists:err.example.com -all" spf.go:266: exists ok, temperror lookup : test timeout error yml_test.go:234: success: temperror, lookup : test timeout error [exists-dnserr] yml_test.go:225: test exists-empty-domain yml_test.go:227: checkhost 1.2.3.4 foo@e1.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e1.example.com" ("e1.example.com") spf.go:160: check e1.example.com 1 spf.go:176: dns record "v=spf1 exists:" spf.go:266: exists ok, permerror invalid domain yml_test.go:234: success: permerror, invalid domain [exists-empty-domain] yml_test.go:152: suite: IP4 mechanism syntax yml_test.go:157: domain e1.example.com yml_test.go:159: SPF: [v=spf1 ip4:1.1.1.1/0 -all] yml_test.go:157: domain e4.example.com yml_test.go:159: SPF: [v=spf1 ip4:1.2.3.4/032 -all] yml_test.go:157: domain e6.example.com yml_test.go:159: SPF: [v=spf1 ip4:1.2.3.4//32] yml_test.go:157: domain e8.example.com yml_test.go:159: SPF: [v=spf1 ip4:1.2.3.4:8080] yml_test.go:157: domain e9.example.com yml_test.go:159: SPF: [v=spf1 ip4:1.2.3] yml_test.go:157: domain mail.example.com yml_test.go:159: A: [1.2.3.4] yml_test.go:157: domain e3.example.com yml_test.go:159: SPF: [v=spf1 ip4:1.2.3.4/33 -all] yml_test.go:157: domain e5.example.com yml_test.go:159: SPF: [v=spf1 ip4] yml_test.go:157: domain e7.example.com yml_test.go:159: SPF: [v=spf1 -ip4:1.2.3.4 ip6:::FFFF:1.2.3.4] yml_test.go:157: domain e2.example.com yml_test.go:159: SPF: [v=spf1 ip4:1.2.3.4/32 -all] yml_test.go:225: test cidr4-0 yml_test.go:227: checkhost 1.2.3.4 foo@e1.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e1.example.com" ("e1.example.com") spf.go:160: check e1.example.com 1 spf.go:176: dns record "v=spf1 ip4:1.1.1.1/0 -all" spf.go:256: ip ok, pass matched 'ip' yml_test.go:234: success: pass, matched 'ip' [cidr4-0] yml_test.go:225: test cidr4-33 yml_test.go:227: checkhost 1.2.3.4 foo@e3.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e3.example.com" ("e3.example.com") spf.go:160: check e3.example.com 1 spf.go:176: dns record "v=spf1 ip4:1.2.3.4/33 -all" spf.go:256: ip ok, permerror invalid mask yml_test.go:234: success: permerror, invalid mask [cidr4-33] yml_test.go:225: test bare-ip4 yml_test.go:227: checkhost 1.2.3.4 foo@e5.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e5.example.com" ("e5.example.com") spf.go:160: check e5.example.com 1 spf.go:176: dns record "v=spf1 ip4" spf.go:277: permerror, unknown field yml_test.go:234: success: permerror, unknown field [bare-ip4] yml_test.go:225: test ip4-dual-cidr yml_test.go:227: checkhost 1.2.3.4 foo@e6.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e6.example.com" ("e6.example.com") spf.go:160: check e6.example.com 1 spf.go:176: dns record "v=spf1 ip4:1.2.3.4//32" spf.go:256: ip ok, permerror invalid mask yml_test.go:234: success: permerror, invalid mask [ip4-dual-cidr] yml_test.go:225: test cidr4-32 yml_test.go:227: checkhost 1.2.3.4 foo@e2.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e2.example.com" ("e2.example.com") spf.go:160: check e2.example.com 1 spf.go:176: dns record "v=spf1 ip4:1.2.3.4/32 -all" spf.go:256: ip ok, pass matched 'ip' yml_test.go:234: success: pass, matched 'ip' [cidr4-32] yml_test.go:225: test bad-ip4-port yml_test.go:227: checkhost 1.2.3.4 foo@e8.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e8.example.com" ("e8.example.com") spf.go:160: check e8.example.com 1 spf.go:176: dns record "v=spf1 ip4:1.2.3.4:8080" spf.go:256: ip ok, permerror invalid ipX value yml_test.go:234: success: permerror, invalid ipX value [bad-ip4-port] yml_test.go:225: test bad-ip4-short yml_test.go:227: checkhost 1.2.3.4 foo@e9.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e9.example.com" ("e9.example.com") spf.go:160: check e9.example.com 1 spf.go:176: dns record "v=spf1 ip4:1.2.3" spf.go:256: ip ok, permerror invalid ipX value yml_test.go:234: success: permerror, invalid ipX value [bad-ip4-short] yml_test.go:225: test ip4-mapped-ip6 yml_test.go:227: checkhost 1.2.3.4 foo@e7.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e7.example.com" ("e7.example.com") spf.go:160: check e7.example.com 1 spf.go:176: dns record "v=spf1 -ip4:1.2.3.4 ip6:::FFFF:1.2.3.4" spf.go:256: ip ok, fail matched 'ip' yml_test.go:234: success: fail, matched 'ip' [ip4-mapped-ip6] yml_test.go:152: suite: IP6 mechanism syntax yml_test.go:157: domain mail.example.com yml_test.go:159: A: [1.2.3.4] yml_test.go:157: domain e1.example.com yml_test.go:159: SPF: [v=spf1 -all ip6] yml_test.go:157: domain e2.example.com yml_test.go:159: SPF: [v=spf1 ip6:::1.1.1.1/0] yml_test.go:157: domain e3.example.com yml_test.go:159: SPF: [v=spf1 ip6:::1.1.1.1/129] yml_test.go:157: domain e4.example.com yml_test.go:159: SPF: [v=spf1 ip6:::1.1.1.1//33] yml_test.go:157: domain e5.example.com yml_test.go:159: SPF: [v=spf1 ip6:CAFE:BABE:8000::/33] yml_test.go:157: domain e6.example.com yml_test.go:159: SPF: [v=spf1 ip6::CAFE::BABE] yml_test.go:225: test cidr6-bad yml_test.go:227: checkhost 1.2.3.4 foo@e4.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e4.example.com" ("e4.example.com") spf.go:160: check e4.example.com 1 spf.go:176: dns record "v=spf1 ip6:::1.1.1.1//33" spf.go:256: ip ok, permerror invalid mask yml_test.go:234: success: permerror, invalid mask [cidr6-bad] yml_test.go:225: test cidr6-33 yml_test.go:227: checkhost cafe:babe:8000:: foo@e5.example.com spf.go:129: check host with sender "cafe:babe:8000::" "mail.example.com" "foo@e5.example.com" ("e5.example.com") spf.go:160: check e5.example.com 1 spf.go:176: dns record "v=spf1 ip6:CAFE:BABE:8000::/33" spf.go:256: ip ok, pass matched 'ip' yml_test.go:234: success: pass, matched 'ip' [cidr6-33] yml_test.go:225: test ip6-bad1 yml_test.go:227: checkhost 1.2.3.4 foo@e6.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e6.example.com" ("e6.example.com") spf.go:160: check e6.example.com 1 spf.go:176: dns record "v=spf1 ip6::CAFE::BABE" spf.go:256: ip ok, permerror invalid ipX value yml_test.go:234: success: permerror, invalid ipX value [ip6-bad1] yml_test.go:225: test cidr6-0-ip4 yml_test.go:227: checkhost 1.2.3.4 foo@e2.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e2.example.com" ("e2.example.com") spf.go:160: check e2.example.com 1 spf.go:176: dns record "v=spf1 ip6:::1.1.1.1/0" spf.go:284: fallback to neutral yml_test.go:234: success: neutral, [cidr6-0-ip4] yml_test.go:225: test cidr6-ip4 yml_test.go:227: checkhost 1.2.3.4 foo@e2.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e2.example.com" ("e2.example.com") spf.go:160: check e2.example.com 1 spf.go:176: dns record "v=spf1 ip6:::1.1.1.1/0" spf.go:284: fallback to neutral yml_test.go:234: success: neutral, [cidr6-ip4] yml_test.go:225: test cidr6-0 yml_test.go:227: checkhost deaf:babe::cab:fee foo@e2.example.com spf.go:129: check host with sender "deaf:babe::cab:fee" "mail.example.com" "foo@e2.example.com" ("e2.example.com") spf.go:160: check e2.example.com 1 spf.go:176: dns record "v=spf1 ip6:::1.1.1.1/0" spf.go:256: ip ok, pass matched 'ip' yml_test.go:234: success: pass, matched 'ip' [cidr6-0] yml_test.go:225: test cidr6-129 yml_test.go:227: checkhost 1.2.3.4 foo@e3.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e3.example.com" ("e3.example.com") spf.go:160: check e3.example.com 1 spf.go:176: dns record "v=spf1 ip6:::1.1.1.1/129" spf.go:256: ip ok, permerror invalid mask yml_test.go:234: success: permerror, invalid mask [cidr6-129] yml_test.go:225: test cidr6-33-ip4 yml_test.go:227: checkhost 1.2.3.4 foo@e5.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e5.example.com" ("e5.example.com") spf.go:160: check e5.example.com 1 spf.go:176: dns record "v=spf1 ip6:CAFE:BABE:8000::/33" spf.go:284: fallback to neutral yml_test.go:234: success: neutral, [cidr6-33-ip4] yml_test.go:152: suite: Semantics of exp and other modifiers yml_test.go:157: domain tworecs.example.com yml_test.go:159: SPF: [v=spf1 exp=twoexp.example.com -all] yml_test.go:157: domain e13.example.com yml_test.go:159: SPF: [v=spf1 exp=e13msg.example.com -all] yml_test.go:157: domain exp1.example.com yml_test.go:159: TXT: [No-see-um] yml_test.go:157: domain exp2.example.com yml_test.go:159: TXT: [See me.] yml_test.go:157: domain e5.example.com yml_test.go:159: SPF: [v=spf1 1up=foo] yml_test.go:157: domain e14.example.com yml_test.go:159: SPF: [v=spf1 exp=e13msg.example.com -all exp=e11msg.example.com] yml_test.go:157: domain twoexp.example.com yml_test.go:159: TXT: [one] yml_test.go:159: TXT: [two] yml_test.go:157: domain mail.example.com yml_test.go:159: A: [1.2.3.4] yml_test.go:157: domain exp3.example.com yml_test.go:159: TXT: [Correct!] yml_test.go:157: domain e16.example.com yml_test.go:159: SPF: [v=spf1 exp=-all] yml_test.go:157: domain e3.example.com yml_test.go:159: SPF: [v=spf1 exp=exp1.example.com redirect=e4.example.com] yml_test.go:157: domain e4.example.com yml_test.go:159: SPF: [v=spf1 -all exp=exp2.example.com] yml_test.go:157: domain e10.example.com yml_test.go:159: SPF: [v=spf1 redirect=erehwon.example.com] yml_test.go:157: domain e17.example.com yml_test.go:159: SPF: [v=spf1 redirect=-all ?all] yml_test.go:157: domain nonascii.example.com yml_test.go:159: SPF: [v=spf1 exp=badexp.example.com -all] yml_test.go:157: domain e1.example.com yml_test.go:159: SPF: [v=spf1 exp=exp1.example.com redirect=e2.example.com] yml_test.go:157: domain e20.example.com yml_test.go:159: SPF: [v=spf1 default=+] yml_test.go:157: domain e21.example.com yml_test.go:159: SPF: [v=spf1 exp=e21msg.example.com -all] yml_test.go:157: domain e11msg.example.com yml_test.go:159: TXT: [Answer a fool according to his folly.] yml_test.go:159: TXT: [Do not answer a fool according to his folly.] yml_test.go:157: domain e8.example.com yml_test.go:159: SPF: [v=spf1 -all exp=exp4.example.com] yml_test.go:157: domain e15.example.com yml_test.go:159: SPF: [v=spf1 redirect=e12.example.com -all redirect=e12.example.com] yml_test.go:157: domain exp4.example.com yml_test.go:159: TXT: [%{l} in implementation] yml_test.go:157: domain e7.example.com yml_test.go:159: SPF: [v=spf1 include:e3.example.com -all exp=exp3.example.com] yml_test.go:157: domain e9.example.com yml_test.go:159: SPF: [v=spf1 -all foo=%abc] yml_test.go:157: domain e12.example.com yml_test.go:159: SPF: [v=spf1 exp= -all] yml_test.go:157: domain e18.example.com yml_test.go:159: SPF: [v=spf1 ?all redirect=] yml_test.go:157: domain e21msg.example.com yml_test.go:159: TIMEOUT yml_test.go:157: domain badexp.example.com yml_test.go:159: TXT: [Explanation] yml_test.go:157: domain e2.example.com yml_test.go:159: SPF: [v=spf1 -all] yml_test.go:157: domain e11.example.com yml_test.go:159: SPF: [v=spf1 -all exp=e11msg.example.com] yml_test.go:157: domain e13msg.example.com yml_test.go:159: TXT: [The %{x}-files.] yml_test.go:157: domain e19.example.com yml_test.go:159: SPF: [v=spf1 default=pass] yml_test.go:157: domain e22.example.com yml_test.go:159: SPF: [v=spf1 exp=mail.example.com -all] yml_test.go:157: domain e6.example.com yml_test.go:159: SPF: [v=spf1 =all] yml_test.go:225: test empty-modifier-name yml_test.go:227: checkhost 1.2.3.4 foo@e6.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e6.example.com" ("e6.example.com") spf.go:160: check e6.example.com 1 spf.go:176: dns record "v=spf1 =all" spf.go:277: permerror, unknown field yml_test.go:234: success: permerror, unknown field [empty-modifier-name] yml_test.go:225: test exp-dns-error yml_test.go:227: checkhost 1.2.3.4 foo@e21.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e21.example.com" ("e21.example.com") spf.go:160: check e21.example.com 1 spf.go:176: dns record "v=spf1 exp=e21msg.example.com -all" spf.go:270: exp= not used, skipping spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [exp-dns-error] yml_test.go:225: test redirect-twice yml_test.go:227: checkhost 1.2.3.4 foo@e15.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e15.example.com" ("e15.example.com") spf.go:160: check e15.example.com 1 spf.go:176: dns record "v=spf1 redirect=e12.example.com -all redirect=e12.example.com" yml_test.go:234: success: permerror, invalid domain [redirect-twice] yml_test.go:225: test redirect-cancels-prior-exp yml_test.go:227: checkhost 1.2.3.4 foo@e3.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e3.example.com" ("e3.example.com") spf.go:160: check e3.example.com 1 spf.go:176: dns record "v=spf1 exp=exp1.example.com redirect=e4.example.com" spf.go:270: exp= not used, skipping spf.go:273: redirect, "redirect=e4.example.com" spf.go:160: check e4.example.com 2 spf.go:176: dns record "v=spf1 -all exp=exp2.example.com" spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [redirect-cancels-prior-exp] yml_test.go:225: test explanation-syntax-error yml_test.go:227: checkhost 1.2.3.4 foo@e13.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e13.example.com" ("e13.example.com") spf.go:160: check e13.example.com 1 spf.go:176: dns record "v=spf1 exp=e13msg.example.com -all" spf.go:270: exp= not used, skipping spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [explanation-syntax-error] yml_test.go:225: test redirect-none yml_test.go:227: checkhost 1.2.3.4 foo@e10.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e10.example.com" ("e10.example.com") spf.go:160: check e10.example.com 1 spf.go:176: dns record "v=spf1 redirect=erehwon.example.com" spf.go:273: redirect, "redirect=erehwon.example.com" spf.go:160: check erehwon.example.com 2 spf.go:176: dns record "" yml_test.go:234: success: permerror, no DNS record found [redirect-none] yml_test.go:225: test redirect-cancels-exp yml_test.go:227: checkhost 1.2.3.4 foo@e1.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e1.example.com" ("e1.example.com") spf.go:160: check e1.example.com 1 spf.go:176: dns record "v=spf1 exp=exp1.example.com redirect=e2.example.com" spf.go:270: exp= not used, skipping spf.go:273: redirect, "redirect=e2.example.com" spf.go:160: check e2.example.com 2 spf.go:176: dns record "v=spf1 -all" spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [redirect-cancels-exp] yml_test.go:225: test invalid-modifier yml_test.go:227: checkhost 1.2.3.4 foo@e5.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e5.example.com" ("e5.example.com") spf.go:160: check e5.example.com 1 spf.go:176: dns record "v=spf1 1up=foo" spf.go:277: permerror, unknown field yml_test.go:234: success: permerror, unknown field [invalid-modifier] yml_test.go:225: test dorky-sentinel yml_test.go:227: checkhost 1.2.3.4 Macro Error@e8.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "Macro Error@e8.example.com" ("e8.example.com") spf.go:160: check e8.example.com 1 spf.go:176: dns record "v=spf1 -all exp=exp4.example.com" spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [dorky-sentinel] yml_test.go:225: test two-exp-records yml_test.go:227: checkhost 1.2.3.4 foobar@tworecs.example.com spf.go:129: check host with sender "1.2.3.4" "hosed" "foobar@tworecs.example.com" ("tworecs.example.com") spf.go:160: check tworecs.example.com 1 spf.go:176: dns record "v=spf1 exp=twoexp.example.com -all" spf.go:270: exp= not used, skipping spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [two-exp-records] yml_test.go:225: test include-ignores-exp yml_test.go:227: checkhost 1.2.3.4 foo@e7.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e7.example.com" ("e7.example.com") spf.go:160: check e7.example.com 1 spf.go:176: dns record "v=spf1 include:e3.example.com -all exp=exp3.example.com" spf.go:160: check e3.example.com 2 spf.go:176: dns record "v=spf1 exp=exp1.example.com redirect=e4.example.com" spf.go:270: exp= not used, skipping spf.go:273: redirect, "redirect=e4.example.com" spf.go:160: check e4.example.com 3 spf.go:176: dns record "v=spf1 -all exp=exp2.example.com" spf.go:237: fail matched all spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [include-ignores-exp] yml_test.go:225: test exp-multiple-txt yml_test.go:227: checkhost 1.2.3.4 foo@e11.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e11.example.com" ("e11.example.com") spf.go:160: check e11.example.com 1 spf.go:176: dns record "v=spf1 -all exp=e11msg.example.com" spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [exp-multiple-txt] yml_test.go:225: test exp-no-txt yml_test.go:227: checkhost 1.2.3.4 foo@e22.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e22.example.com" ("e22.example.com") spf.go:160: check e22.example.com 1 spf.go:176: dns record "v=spf1 exp=mail.example.com -all" spf.go:270: exp= not used, skipping spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [exp-no-txt] yml_test.go:225: test non-ascii-exp yml_test.go:227: checkhost 1.2.3.4 foobar@nonascii.example.com spf.go:129: check host with sender "1.2.3.4" "hosed" "foobar@nonascii.example.com" ("nonascii.example.com") spf.go:160: check nonascii.example.com 1 spf.go:176: dns record "v=spf1 exp=badexp.example.com -all" spf.go:270: exp= not used, skipping spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [non-ascii-exp] yml_test.go:152: suite: Macro expansion rules yml_test.go:157: domain mx.example.com yml_test.go:159: A: [192.168.218.41] yml_test.go:159: A: [192.168.218.42] yml_test.go:159: AAAA: [CAFE:BABE::2] yml_test.go:159: AAAA: [CAFE:BABE::3] yml_test.go:157: domain 40.218.168.192.in-addr.arpa yml_test.go:159: PTR: [mx.example.com] yml_test.go:157: domain 41.218.168.192.in-addr.arpa yml_test.go:159: PTR: [mx.example.com] yml_test.go:157: domain mx.e7.example.com.should.example.com yml_test.go:159: A: [127.0.0.2] yml_test.go:157: domain _spfh.example.com yml_test.go:159: SPF: [v=spf1 -a:%{h} +all] yml_test.go:157: domain e4.example.com yml_test.go:159: SPF: [v=spf1 -all exp=e4msg.example.com] yml_test.go:157: domain e5.example.com yml_test.go:159: SPF: [v=spf1 a:%{a}.example.com -all] yml_test.go:157: domain mx.e7.example.com yml_test.go:159: A: [192.168.218.42] yml_test.go:157: domain msg8.example.com yml_test.go:159: TXT: [http://example.com/why.html?l=%{L}] yml_test.go:157: domain msgbas2x.cos.example.com yml_test.go:159: A: [192.168.218.40] yml_test.go:157: domain e1e.example.com yml_test.go:159: SPF: [v=spf1 exists:foo%(ir).sbl.example.com ?all] yml_test.go:157: domain e1t.example.com yml_test.go:159: SPF: [v=spf1 exists:foo%.sbl.example.com ?all] yml_test.go:157: 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:159: TXT: [Congratulations! That was tricky.] yml_test.go:157: domain e11.example.com yml_test.go:159: SPF: [v=spf1 exists:%{i}.%{l2r-}.user.%{d2}] yml_test.go:157: domain 1.2.3.4.gladstone.philip.user.example.com yml_test.go:159: A: [127.0.0.2] yml_test.go:157: domain e12.example.com yml_test.go:159: SPF: [v=spf1 exists:%{l2r+-}.user.%{d2}] yml_test.go:157: domain msg.example.com yml_test.go:159: TXT: [This is a test.] yml_test.go:157: domain e4msg.example.com yml_test.go:159: TXT: [%{c} is queried as %{ir}.%{v}.arpa] yml_test.go:157: domain e6msg.example.com yml_test.go:159: TXT: [connect from %{p}] yml_test.go:157: domain e9.example.com yml_test.go:159: SPF: [v=spf1 a:%{H} -all] yml_test.go:157: domain o.spf.example.com yml_test.go:159: SPF: [v=spf1 ip4:192.168.218.40] yml_test.go:157: domain macro%percent space%20url-space.example.com yml_test.go:159: A: [1.2.3.4] yml_test.go:157: domain e2.example.com yml_test.go:159: SPF: [v=spf1 -all exp=%{r}.example.com] yml_test.go:157: domain mx.example.com.ok.example.com yml_test.go:159: A: [127.0.0.2] yml_test.go:157: domain 40.218.168.192.example.com yml_test.go:159: TXT: [Connections from %{c} not authorized.] yml_test.go:157: domain somewhat.long.exp.example.com yml_test.go:159: SPF: [v=spf1 -all exp=foobar.%{o}.%{o}.%{o}.%{o}.%{o}.%{o}.%{o}.%{o}.example.com] yml_test.go:157: domain e6.example.com yml_test.go:159: SPF: [v=spf1 -all exp=e6msg.example.com] yml_test.go:157: 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:159: PTR: [mx.example.com] yml_test.go:157: domain example.com yml_test.go:159: A: [192.168.90.76] yml_test.go:159: SPF: [v=spf1 redirect=%{d}.d.spf.example.com.] yml_test.go:157: domain exp.example.com yml_test.go:159: SPF: [v=spf1 exp=msg.example.com. -all] yml_test.go:157: domain e1a.example.com yml_test.go:159: SPF: [v=spf1 a:macro%%percent%_%_space%-url-space.example.com -all] yml_test.go:157: domain e3.example.com yml_test.go:159: SPF: [v=spf1 -all exp=%{ir}.example.com] yml_test.go:157: domain bar.foo.user.example.com yml_test.go:159: A: [127.0.0.2] yml_test.go:157: domain 42.218.168.192.in-addr.arpa yml_test.go:159: PTR: [mx.example.com] yml_test.go:159: PTR: [mx.e7.example.com] yml_test.go:157: 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:159: PTR: [mx.example.com] yml_test.go:157: domain e8.example.com yml_test.go:159: SPF: [v=spf1 -all exp=msg8.%{D2}] yml_test.go:157: domain e10.example.com yml_test.go:159: SPF: [v=spf1 -include:_spfh.%{d2} ip4:1.2.3.0/24 -all] yml_test.go:157: domain example.com.d.spf.example.com yml_test.go:159: SPF: [v=spf1 redirect=a.spf.example.com] yml_test.go:157: domain a.spf.example.com yml_test.go:159: SPF: [v=spf1 include:o.spf.example.com. ~all] yml_test.go:157: domain e1.example.com yml_test.go:159: SPF: [v=spf1 -exists:%(ir).sbl.example.com ?all] yml_test.go:157: domain e7.example.com yml_test.go:159: SPF: [v=spf1 exists:%{p}.should.example.com ~exists:%{p}.ok.example.com] yml_test.go:225: test v-macro-ip6 yml_test.go:227: checkhost cafe:babe::1 test@e4.example.com spf.go:129: check host with sender "cafe:babe::1" "msgbas2x.cos.example.com" "test@e4.example.com" ("e4.example.com") spf.go:160: check e4.example.com 1 spf.go:176: dns record "v=spf1 -all exp=e4msg.example.com" spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [v-macro-ip6] yml_test.go:225: test undef-macro yml_test.go:227: checkhost cafe:babe::c0a8:da28 test@e5.example.com spf.go:129: check host with sender "cafe:babe::c0a8:da28" "msgbas2x.cos.example.com" "test@e5.example.com" ("e5.example.com") spf.go:160: check e5.example.com 1 spf.go:176: dns record "v=spf1 a:%{a}.example.com -all" spf.go:526: masks on "a:%{a}.example.com": ["a:%{a}.example.com" ":%{a}.example.com" "%{a}.example.com" "" "" "" ""] "%{a}.example.com" {-1 -1} spf.go:708: macro "a": [] spf.go:246: a ok, permerror invalid macro yml_test.go:234: success: permerror, invalid macro [undef-macro] yml_test.go:225: test p-macro-ip6-novalid yml_test.go:227: checkhost cafe:babe::1 test@e6.example.com spf.go:129: check host with sender "cafe:babe::1" "msgbas2x.cos.example.com" "test@e6.example.com" ("e6.example.com") spf.go:160: check e6.example.com 1 spf.go:176: dns record "v=spf1 -all exp=e6msg.example.com" spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [p-macro-ip6-novalid] yml_test.go:225: test trailing-dot-domain yml_test.go:227: checkhost 192.168.218.40 test@example.com spf.go:129: check host with sender "192.168.218.40" "msgbas2x.cos.example.com" "test@example.com" ("example.com") spf.go:160: check example.com 1 spf.go:176: dns record "v=spf1 redirect=%{d}.d.spf.example.com." spf.go:273: redirect, "redirect=%{d}.d.spf.example.com." spf.go:708: macro "d": ["d" "d" "" "" ""] spf.go:805: macro expanded "%{d}.d.spf.example.com." to "example.com.d.spf.example.com." spf.go:160: check example.com.d.spf.example.com. 2 spf.go:176: dns record "v=spf1 redirect=a.spf.example.com" spf.go:273: redirect, "redirect=a.spf.example.com" spf.go:160: check a.spf.example.com 3 spf.go:176: dns record "v=spf1 include:o.spf.example.com. ~all" spf.go:160: check o.spf.example.com. 4 spf.go:176: dns record "v=spf1 ip4:192.168.218.40" spf.go:256: ip ok, pass matched 'ip' spf.go:241: include ok, pass matched 'ip' yml_test.go:234: success: pass, matched 'ip' [trailing-dot-domain] yml_test.go:225: test invalid-macro-char yml_test.go:227: checkhost 192.168.218.40 test@e1.example.com spf.go:129: check host with sender "192.168.218.40" "msgbas2x.cos.example.com" "test@e1.example.com" ("e1.example.com") spf.go:160: check e1.example.com 1 spf.go:176: dns record "v=spf1 -exists:%(ir).sbl.example.com ?all" spf.go:266: exists ok, permerror invalid macro yml_test.go:234: success: permerror, invalid macro [invalid-macro-char] yml_test.go:225: test invalid-trailing-macro-char yml_test.go:227: checkhost 192.168.218.40 test@e1t.example.com spf.go:129: check host with sender "192.168.218.40" "msgbas2x.cos.example.com" "test@e1t.example.com" ("e1t.example.com") spf.go:160: check e1t.example.com 1 spf.go:176: dns record "v=spf1 exists:foo%.sbl.example.com ?all" spf.go:266: exists ok, permerror invalid macro yml_test.go:234: success: permerror, invalid macro [invalid-trailing-macro-char] yml_test.go:225: test exp-txt-macro-char yml_test.go:227: checkhost 192.168.218.40 test@e3.example.com spf.go:129: check host with sender "192.168.218.40" "msgbas2x.cos.example.com" "test@e3.example.com" ("e3.example.com") spf.go:160: check e3.example.com 1 spf.go:176: dns record "v=spf1 -all exp=%{ir}.example.com" spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [exp-txt-macro-char] yml_test.go:225: test invalid-hello-macro yml_test.go:227: checkhost 192.168.218.40 test@e9.example.com spf.go:129: check host with sender "192.168.218.40" "JUMPIN' JUPITER" "test@e9.example.com" ("e9.example.com") spf.go:160: check e9.example.com 1 spf.go:176: dns record "v=spf1 a:%{H} -all" spf.go:526: masks on "a:%{H}": ["a:%{H}" ":%{H}" "%{H}" "" "" "" ""] "%{H}" {-1 -1} spf.go:708: macro "H": ["H" "H" "" "" ""] spf.go:805: macro expanded "%{H}" to "e9.example.com" spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [invalid-hello-macro] yml_test.go:225: test p-macro-ip4-valid yml_test.go:227: checkhost 192.168.218.41 test@e6.example.com spf.go:129: check host with sender "192.168.218.41" "msgbas2x.cos.example.com" "test@e6.example.com" ("e6.example.com") spf.go:160: check e6.example.com 1 spf.go:176: dns record "v=spf1 -all exp=e6msg.example.com" spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [p-macro-ip4-valid] yml_test.go:225: test p-macro-ip6-valid yml_test.go:227: checkhost cafe:babe::3 test@e6.example.com spf.go:129: check host with sender "cafe:babe::3" "msgbas2x.cos.example.com" "test@e6.example.com" ("e6.example.com") spf.go:160: check e6.example.com 1 spf.go:176: dns record "v=spf1 -all exp=e6msg.example.com" spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [p-macro-ip6-valid] yml_test.go:225: test p-macro-ip4-novalid yml_test.go:227: checkhost 192.168.218.40 test@e6.example.com spf.go:129: check host with sender "192.168.218.40" "msgbas2x.cos.example.com" "test@e6.example.com" ("e6.example.com") spf.go:160: check e6.example.com 1 spf.go:176: dns record "v=spf1 -all exp=e6msg.example.com" spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [p-macro-ip4-novalid] yml_test.go:225: test hello-domain-literal yml_test.go:227: checkhost 192.168.218.40 test@e9.example.com spf.go:129: check host with sender "192.168.218.40" "[192.168.218.40]" "test@e9.example.com" ("e9.example.com") spf.go:160: check e9.example.com 1 spf.go:176: dns record "v=spf1 a:%{H} -all" spf.go:526: masks on "a:%{H}": ["a:%{H}" ":%{H}" "%{H}" "" "" "" ""] "%{H}" {-1 -1} spf.go:708: macro "H": ["H" "H" "" "" ""] spf.go:805: macro expanded "%{H}" to "e9.example.com" spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [hello-domain-literal] yml_test.go:225: test require-valid-helo yml_test.go:227: checkhost 1.2.3.4 test@e10.example.com spf.go:129: check host with sender "1.2.3.4" "OEMCOMPUTER" "test@e10.example.com" ("e10.example.com") spf.go:160: check e10.example.com 1 spf.go:176: dns record "v=spf1 -include:_spfh.%{d2} ip4:1.2.3.0/24 -all" spf.go:708: macro "d2": ["d2" "d" "2" "" ""] spf.go:805: macro expanded "_spfh.%{d2}" to "_spfh.example.com" spf.go:160: check _spfh.example.com 2 spf.go:176: dns record "v=spf1 -a:%{h} +all" spf.go:526: masks on "a:%{h}": ["a:%{h}" ":%{h}" "%{h}" "" "" "" ""] "%{h}" {-1 -1} spf.go:708: macro "h": ["h" "h" "" "" ""] spf.go:805: macro expanded "%{h}" to "_spfh.example.com" spf.go:237: pass matched all spf.go:241: include ok, fail matched 'all' yml_test.go:234: success: fail, matched 'all' [require-valid-helo] yml_test.go:225: test trailing-dot-exp yml_test.go:227: checkhost 192.168.218.40 test@exp.example.com spf.go:129: check host with sender "192.168.218.40" "msgbas2x.cos.example.com" "test@exp.example.com" ("exp.example.com") spf.go:160: check exp.example.com 1 spf.go:176: dns record "v=spf1 exp=msg.example.com. -all" spf.go:270: exp= not used, skipping spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [trailing-dot-exp] yml_test.go:225: test invalid-embedded-macro-char yml_test.go:227: checkhost 192.168.218.40 test@e1e.example.com spf.go:129: check host with sender "192.168.218.40" "msgbas2x.cos.example.com" "test@e1e.example.com" ("e1e.example.com") spf.go:160: check e1e.example.com 1 spf.go:176: dns record "v=spf1 exists:foo%(ir).sbl.example.com ?all" spf.go:266: exists ok, permerror invalid macro yml_test.go:234: success: permerror, invalid macro [invalid-embedded-macro-char] yml_test.go:225: test macro-mania-in-domain yml_test.go:227: checkhost 1.2.3.4 test@e1a.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "test@e1a.example.com" ("e1a.example.com") spf.go:160: check e1a.example.com 1 spf.go:176: dns record "v=spf1 a:macro%%percent%_%_space%-url-space.example.com -all" spf.go:526: masks on "a:macro%%percent%_%_space%-url-space.example.com": ["a:macro%%percent%_%_space%-url-space.example.com" ":macro%%percent%_%_space%-url-space.example.com" "macro%%percent%_%_space%-url-space.example.com" "" "" "" ""] "macro%%percent%_%_space%-url-space.example.com" {-1 -1} spf.go:805: macro expanded "macro%%percent%_%_space%-url-space.example.com" to "macro%percent space%20url-space.example.com" spf.go:561: mx matched 1.2.3.4, 1.2.3.4, {-1 -1} spf.go:246: a ok, pass matched 'a' yml_test.go:234: success: pass, matched 'a' [macro-mania-in-domain] yml_test.go:225: test domain-name-truncation yml_test.go:227: checkhost 192.168.218.40 test@somewhat.long.exp.example.com spf.go:129: check host with sender "192.168.218.40" "msgbas2x.cos.example.com" "test@somewhat.long.exp.example.com" ("somewhat.long.exp.example.com") spf.go:160: check somewhat.long.exp.example.com 1 spf.go:176: dns record "v=spf1 -all exp=foobar.%{o}.%{o}.%{o}.%{o}.%{o}.%{o}.%{o}.%{o}.example.com" spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [domain-name-truncation] yml_test.go:225: test v-macro-ip4 yml_test.go:227: checkhost 192.168.218.40 test@e4.example.com spf.go:129: check host with sender "192.168.218.40" "msgbas2x.cos.example.com" "test@e4.example.com" ("e4.example.com") spf.go:160: check e4.example.com 1 spf.go:176: dns record "v=spf1 -all exp=e4msg.example.com" spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [v-macro-ip4] yml_test.go:225: test upper-macro yml_test.go:227: checkhost 192.168.218.42 jack&jill=up@e8.example.com spf.go:129: check host with sender "192.168.218.42" "msgbas2x.cos.example.com" "jack&jill=up@e8.example.com" ("e8.example.com") spf.go:160: check e8.example.com 1 spf.go:176: dns record "v=spf1 -all exp=msg8.%{D2}" spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [upper-macro] yml_test.go:225: test macro-reverse-split-on-dash yml_test.go:227: checkhost 1.2.3.4 philip-gladstone-test@e11.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "philip-gladstone-test@e11.example.com" ("e11.example.com") spf.go:160: check e11.example.com 1 spf.go:176: dns record "v=spf1 exists:%{i}.%{l2r-}.user.%{d2}" spf.go:708: macro "i": ["i" "i" "" "" ""] spf.go:708: macro "l2r-": ["l2r-" "l" "2" "r" "-"] spf.go:708: macro "d2": ["d2" "d" "2" "" ""] spf.go:805: macro expanded "%{i}.%{l2r-}.user.%{d2}" to "1.2.3.4.gladstone.philip.user.example.com" spf.go:266: exists ok, pass matched 'exists' yml_test.go:234: success: pass, matched 'exists' [macro-reverse-split-on-dash] yml_test.go:225: test macro-multiple-delimiters yml_test.go:227: checkhost 1.2.3.4 foo-bar+zip+quux@e12.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo-bar+zip+quux@e12.example.com" ("e12.example.com") spf.go:160: check e12.example.com 1 spf.go:176: dns record "v=spf1 exists:%{l2r+-}.user.%{d2}" spf.go:708: macro "l2r+-": ["l2r+-" "l" "2" "r" "+-"] spf.go:708: macro "d2": ["d2" "d" "2" "" ""] spf.go:805: macro expanded "%{l2r+-}.user.%{d2}" to "bar.foo.user.example.com" spf.go:266: exists ok, pass matched 'exists' yml_test.go:234: success: pass, matched 'exists' [macro-multiple-delimiters] yml_test.go:152: suite: Processing limits yml_test.go:157: domain e10.example.com yml_test.go:159: SPF: [v=spf1 a -all] yml_test.go:159: A: [1.2.3.1] yml_test.go:159: A: [1.2.3.2] yml_test.go:159: A: [1.2.3.3] yml_test.go:159: A: [1.2.3.4] yml_test.go:159: A: [1.2.3.5] yml_test.go:159: A: [1.2.3.6] yml_test.go:159: A: [1.2.3.7] yml_test.go:159: A: [1.2.3.8] yml_test.go:159: A: [1.2.3.9] yml_test.go:159: A: [1.2.3.10] yml_test.go:159: A: [1.2.3.11] yml_test.go:159: A: [1.2.3.12] yml_test.go:157: domain e2.example.com yml_test.go:159: SPF: [v=spf1 include:e3.example.com] yml_test.go:159: A: [1.2.3.7] yml_test.go:157: domain 5.3.2.1.in-addr.arpa yml_test.go:159: PTR: [e1.example.com.] yml_test.go:159: PTR: [e2.example.com.] yml_test.go:159: PTR: [e3.example.com.] yml_test.go:159: PTR: [e4.example.com.] yml_test.go:159: PTR: [example.com.] yml_test.go:159: PTR: [e6.example.com.] yml_test.go:159: PTR: [e7.example.com.] yml_test.go:159: PTR: [e8.example.com.] yml_test.go:159: PTR: [e9.example.com.] yml_test.go:159: PTR: [e10.example.com.] yml_test.go:159: PTR: [e5.example.com.] yml_test.go:157: domain e7.example.com yml_test.go:159: SPF: [v=spf1 a mx a mx a mx a mx a ptr a ip4:1.2.3.4 -all] yml_test.go:159: A: [1.2.3.20] yml_test.go:157: domain e8.example.com yml_test.go:159: SPF: [v=spf1 a include:inc.example.com ip4:1.2.3.4 mx -all] yml_test.go:159: A: [1.2.3.4] yml_test.go:157: domain inc.example.com yml_test.go:159: SPF: [v=spf1 a a a a a a a a] yml_test.go:159: A: [1.2.3.10] yml_test.go:157: domain e9.example.com yml_test.go:159: SPF: [v=spf1 a include:inc.example.com a ip4:1.2.3.4 -all] yml_test.go:159: A: [1.2.3.21] yml_test.go:157: domain mail.example.com yml_test.go:159: A: [1.2.3.4] yml_test.go:157: domain e1.example.com yml_test.go:159: SPF: [v=spf1 ip4:1.1.1.1 redirect=e1.example.com] yml_test.go:159: A: [1.2.3.6] yml_test.go:157: domain e3.example.com yml_test.go:159: SPF: [v=spf1 include:e2.example.com] yml_test.go:159: A: [1.2.3.8] yml_test.go:157: domain e4.example.com yml_test.go:159: SPF: [v=spf1 mx] yml_test.go:159: MX: {0 mail.example.com} yml_test.go:159: MX: {1 mail.example.com} yml_test.go:159: MX: {2 mail.example.com} yml_test.go:159: MX: {3 mail.example.com} yml_test.go:159: MX: {4 mail.example.com} yml_test.go:159: MX: {5 mail.example.com} yml_test.go:159: MX: {6 mail.example.com} yml_test.go:159: MX: {7 mail.example.com} yml_test.go:159: MX: {8 mail.example.com} yml_test.go:159: MX: {9 mail.example.com} yml_test.go:159: MX: {10 e4.example.com} yml_test.go:159: A: [1.2.3.5] yml_test.go:157: domain e5.example.com yml_test.go:159: SPF: [v=spf1 ptr] yml_test.go:159: A: [1.2.3.5] yml_test.go:157: domain e6.example.com yml_test.go:159: SPF: [v=spf1 a mx a mx a mx a mx a ptr ip4:1.2.3.4 -all] yml_test.go:159: A: [1.2.3.8] yml_test.go:159: MX: {10 e6.example.com} yml_test.go:225: test redirect-loop yml_test.go:227: checkhost 1.2.3.4 foo@e1.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e1.example.com" ("e1.example.com") spf.go:160: check e1.example.com 1 spf.go:176: dns record "v=spf1 ip4:1.1.1.1 redirect=e1.example.com" spf.go:273: redirect, "redirect=e1.example.com" spf.go:160: check e1.example.com 2 spf.go:176: dns record "v=spf1 ip4:1.1.1.1 redirect=e1.example.com" spf.go:273: redirect, "redirect=e1.example.com" spf.go:160: check e1.example.com 3 spf.go:176: dns record "v=spf1 ip4:1.1.1.1 redirect=e1.example.com" spf.go:273: redirect, "redirect=e1.example.com" spf.go:160: check e1.example.com 4 spf.go:176: dns record "v=spf1 ip4:1.1.1.1 redirect=e1.example.com" spf.go:273: redirect, "redirect=e1.example.com" spf.go:160: check e1.example.com 5 spf.go:176: dns record "v=spf1 ip4:1.1.1.1 redirect=e1.example.com" spf.go:273: redirect, "redirect=e1.example.com" spf.go:160: check e1.example.com 6 spf.go:176: dns record "v=spf1 ip4:1.1.1.1 redirect=e1.example.com" spf.go:273: redirect, "redirect=e1.example.com" spf.go:160: check e1.example.com 7 spf.go:176: dns record "v=spf1 ip4:1.1.1.1 redirect=e1.example.com" spf.go:273: redirect, "redirect=e1.example.com" spf.go:160: check e1.example.com 8 spf.go:176: dns record "v=spf1 ip4:1.1.1.1 redirect=e1.example.com" spf.go:273: redirect, "redirect=e1.example.com" spf.go:160: check e1.example.com 9 spf.go:176: dns record "v=spf1 ip4:1.1.1.1 redirect=e1.example.com" spf.go:273: redirect, "redirect=e1.example.com" spf.go:160: check e1.example.com 10 spf.go:176: dns record "v=spf1 ip4:1.1.1.1 redirect=e1.example.com" spf.go:273: redirect, "redirect=e1.example.com" spf.go:160: check e1.example.com 11 spf.go:176: dns record "v=spf1 ip4:1.1.1.1 redirect=e1.example.com" spf.go:218: lookup limit reached yml_test.go:234: success: permerror, lookup limit reached [redirect-loop] yml_test.go:225: test mx-limit yml_test.go:227: checkhost 1.2.3.5 foo@e4.example.com spf.go:129: check host with sender "1.2.3.5" "mail.example.com" "foo@e4.example.com" ("e4.example.com") spf.go:160: check e4.example.com 1 spf.go:176: dns record "v=spf1 mx" spf.go:526: masks on "mx": ["mx" "" "" "" "" "" ""] "e4.example.com" {-1 -1} spf.go:251: mx ok, permerror too many MX records yml_test.go:234: success: permerror, too many MX records [mx-limit] yml_test.go:225: test ptr-limit yml_test.go:227: checkhost 1.2.3.5 foo@e5.example.com spf.go:129: check host with sender "1.2.3.5" "mail.example.com" "foo@e5.example.com" ("e5.example.com") spf.go:160: check e5.example.com 1 spf.go:176: dns record "v=spf1 ptr" spf.go:398: ptr forward resolution "e1.example.com." -> ["1.2.3.6"] spf.go:398: ptr forward resolution "e2.example.com." -> ["1.2.3.7"] spf.go:398: ptr forward resolution "e3.example.com." -> ["1.2.3.8"] spf.go:398: ptr forward resolution "e4.example.com." -> ["1.2.3.5"] spf.go:398: ptr forward resolution "example.com." -> [] spf.go:398: ptr forward resolution "e6.example.com." -> ["1.2.3.8"] spf.go:398: ptr forward resolution "e7.example.com." -> ["1.2.3.20"] spf.go:398: ptr forward resolution "e8.example.com." -> ["1.2.3.4"] spf.go:398: ptr forward resolution "e9.example.com." -> ["1.2.3.21"] spf.go:284: fallback to neutral yml_test.go:234: success: neutral, [ptr-limit] yml_test.go:225: test mech-over-limit yml_test.go:227: checkhost 1.2.3.4 foo@e7.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e7.example.com" ("e7.example.com") spf.go:160: check e7.example.com 1 spf.go:176: dns record "v=spf1 a mx a mx a mx a mx a ptr a ip4:1.2.3.4 -all" spf.go:526: masks on "a": ["a" "" "" "" "" "" ""] "e7.example.com" {-1 -1} spf.go:526: masks on "mx": ["mx" "" "" "" "" "" ""] "e7.example.com" {-1 -1} spf.go:526: masks on "a": ["a" "" "" "" "" "" ""] "e7.example.com" {-1 -1} spf.go:526: masks on "mx": ["mx" "" "" "" "" "" ""] "e7.example.com" {-1 -1} spf.go:526: masks on "a": ["a" "" "" "" "" "" ""] "e7.example.com" {-1 -1} spf.go:526: masks on "mx": ["mx" "" "" "" "" "" ""] "e7.example.com" {-1 -1} spf.go:526: masks on "a": ["a" "" "" "" "" "" ""] "e7.example.com" {-1 -1} spf.go:526: masks on "mx": ["mx" "" "" "" "" "" ""] "e7.example.com" {-1 -1} spf.go:526: masks on "a": ["a" "" "" "" "" "" ""] "e7.example.com" {-1 -1} spf.go:407: ptr evaluating "e7.example.com" in [] spf.go:218: lookup limit reached yml_test.go:234: success: permerror, lookup limit reached [mech-over-limit] yml_test.go:225: test include-over-limit yml_test.go:227: checkhost 1.2.3.4 foo@e9.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e9.example.com" ("e9.example.com") spf.go:160: check e9.example.com 1 spf.go:176: dns record "v=spf1 a include:inc.example.com a ip4:1.2.3.4 -all" spf.go:526: masks on "a": ["a" "" "" "" "" "" ""] "e9.example.com" {-1 -1} spf.go:160: check inc.example.com 3 spf.go:176: dns record "v=spf1 a a a a a a a a" spf.go:526: masks on "a": ["a" "" "" "" "" "" ""] "inc.example.com" {-1 -1} spf.go:526: masks on "a": ["a" "" "" "" "" "" ""] "inc.example.com" {-1 -1} spf.go:526: masks on "a": ["a" "" "" "" "" "" ""] "inc.example.com" {-1 -1} spf.go:526: masks on "a": ["a" "" "" "" "" "" ""] "inc.example.com" {-1 -1} spf.go:526: masks on "a": ["a" "" "" "" "" "" ""] "inc.example.com" {-1 -1} spf.go:526: masks on "a": ["a" "" "" "" "" "" ""] "inc.example.com" {-1 -1} spf.go:526: masks on "a": ["a" "" "" "" "" "" ""] "inc.example.com" {-1 -1} spf.go:526: masks on "a": ["a" "" "" "" "" "" ""] "inc.example.com" {-1 -1} spf.go:284: fallback to neutral spf.go:218: lookup limit reached yml_test.go:234: success: permerror, lookup limit reached [include-over-limit] yml_test.go:225: test include-loop yml_test.go:227: checkhost 1.2.3.4 foo@e2.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e2.example.com" ("e2.example.com") spf.go:160: check e2.example.com 1 spf.go:176: dns record "v=spf1 include:e3.example.com" spf.go:160: check e3.example.com 2 spf.go:176: dns record "v=spf1 include:e2.example.com" spf.go:160: check e2.example.com 3 spf.go:176: dns record "v=spf1 include:e3.example.com" spf.go:160: check e3.example.com 4 spf.go:176: dns record "v=spf1 include:e2.example.com" spf.go:160: check e2.example.com 5 spf.go:176: dns record "v=spf1 include:e3.example.com" spf.go:160: check e3.example.com 6 spf.go:176: dns record "v=spf1 include:e2.example.com" spf.go:160: check e2.example.com 7 spf.go:176: dns record "v=spf1 include:e3.example.com" spf.go:160: check e3.example.com 8 spf.go:176: dns record "v=spf1 include:e2.example.com" spf.go:160: check e2.example.com 9 spf.go:176: dns record "v=spf1 include:e3.example.com" spf.go:160: check e3.example.com 10 spf.go:176: dns record "v=spf1 include:e2.example.com" spf.go:160: check e2.example.com 11 spf.go:176: dns record "v=spf1 include:e3.example.com" spf.go:218: lookup limit reached spf.go:241: include ok, permerror lookup limit reached spf.go:241: include ok, permerror lookup limit reached spf.go:241: include ok, permerror lookup limit reached spf.go:241: include ok, permerror lookup limit reached spf.go:241: include ok, permerror lookup limit reached spf.go:241: include ok, permerror lookup limit reached spf.go:241: include ok, permerror lookup limit reached spf.go:241: include ok, permerror lookup limit reached spf.go:241: include ok, permerror lookup limit reached spf.go:241: include ok, permerror lookup limit reached yml_test.go:234: success: permerror, lookup limit reached [include-loop] yml_test.go:225: test false-a-limit yml_test.go:227: checkhost 1.2.3.12 foo@e10.example.com spf.go:129: check host with sender "1.2.3.12" "mail.example.com" "foo@e10.example.com" ("e10.example.com") spf.go:160: check e10.example.com 1 spf.go:176: dns record "v=spf1 a -all" spf.go:526: masks on "a": ["a" "" "" "" "" "" ""] "e10.example.com" {-1 -1} spf.go:561: mx matched 1.2.3.12, 1.2.3.12, {-1 -1} spf.go:246: a ok, pass matched 'a' yml_test.go:234: success: pass, matched 'a' [false-a-limit] yml_test.go:225: test include-at-limit yml_test.go:227: checkhost 1.2.3.4 foo@e8.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e8.example.com" ("e8.example.com") spf.go:160: check e8.example.com 1 spf.go:176: dns record "v=spf1 a include:inc.example.com ip4:1.2.3.4 mx -all" spf.go:526: masks on "a": ["a" "" "" "" "" "" ""] "e8.example.com" {-1 -1} spf.go:561: mx matched 1.2.3.4, 1.2.3.4, {-1 -1} spf.go:246: a ok, pass matched 'a' yml_test.go:234: success: pass, matched 'a' [include-at-limit] --- PASS: TestRFC4408 (0.10s) === RUN TestRFC7208 yml_test.go:152: suite: Initial processing yml_test.go:157: domain exp.example.net yml_test.go:159: TXT: [%{l}] yml_test.go:157: domain a12345678901234567890123456789012345678901234567890123456789012.example.com yml_test.go:159: SPF: [v=spf1 -all] yml_test.go:157: domain hosed2.example.com yml_test.go:159: SPF: [v=spf1 €a:example.net -all] yml_test.go:157: domain hosed3.example.com yml_test.go:159: SPF: [v=spf1 a:example.net –all] yml_test.go:157: domain nothosed.example.com yml_test.go:159: SPF: [v=spf1 a:example.net -all] yml_test.go:159: SPF: [–] yml_test.go:157: domain trail.example.com yml_test.go:159: SPF: [v=spf1 a -all ] yml_test.go:157: domain example.com yml_test.go:159: TIMEOUT yml_test.go:157: domain a.example.net yml_test.go:159: SPF: [v=spf1 -all exp=exp.example.net] yml_test.go:157: domain ctrl.example.com yml_test.go:159: SPF: [v=spf1 a:ctrl.example.com ptr -all] yml_test.go:159: A: [192.0.2.3] yml_test.go:157: domain fine.example.com yml_test.go:159: SPF: [v=spf1 a -all] yml_test.go:157: domain null.example.com yml_test.go:159: SPF: [v=spf1 ip4: 192.0.2.5 -all] yml_test.go:159: yml_test.go:157: domain example.net yml_test.go:159: SPF: [v=spf1 -all exp=exp.example.net] yml_test.go:157: domain hosed.example.com yml_test.go:159: SPF: [v=spf1 a:garbage.example.net -all] yml_test.go:225: test emptylabel yml_test.go:227: checkhost 1.2.3.5 lyme.eater@A...example.com spf.go:129: check host with sender "1.2.3.5" "mail.example.net" "lyme.eater@A...example.com" ("A...example.com") spf.go:160: check A...example.com 1 spf.go:176: dns record "" yml_test.go:234: success: none, no DNS record found [emptylabel] yml_test.go:225: test helo-domain-literal yml_test.go:227: checkhost 1.2.3.5 spf.go:129: check host with sender "1.2.3.5" "[1.2.3.5]" "" ("[1.2.3.5]") spf.go:160: check [1.2.3.5] 1 spf.go:176: dns record "" yml_test.go:234: success: none, no DNS record found [helo-domain-literal] yml_test.go:225: test nolocalpart yml_test.go:227: checkhost 1.2.3.4 @example.net spf.go:129: check host with sender "1.2.3.4" "mail.example.net" "@example.net" ("example.net") spf.go:160: check example.net 1 spf.go:176: dns record "v=spf1 -all exp=exp.example.net" spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [nolocalpart] yml_test.go:225: test longlabel yml_test.go:227: checkhost 1.2.3.5 lyme.eater@A12345678901234567890123456789012345678901234567890123456789012.example.com spf.go:129: check host with sender "1.2.3.5" "mail.example.net" "lyme.eater@A12345678901234567890123456789012345678901234567890123456789012.example.com" ("A12345678901234567890123456789012345678901234567890123456789012.example.com") spf.go:160: check A12345678901234567890123456789012345678901234567890123456789012.example.com 1 spf.go:176: dns record "v=spf1 -all" spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [longlabel] yml_test.go:225: test non-ascii-non-spf yml_test.go:227: checkhost 1.2.3.4 foobar@nothosed.example.com spf.go:129: check host with sender "1.2.3.4" "hosed" "foobar@nothosed.example.com" ("nothosed.example.com") spf.go:160: check nothosed.example.com 1 spf.go:176: dns record "v=spf1 a:example.net -all" spf.go:526: masks on "a:example.net": ["a:example.net" ":example.net" "example.net" "" "" "" ""] "example.net" {-1 -1} spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [non-ascii-non-spf] yml_test.go:225: test toolonglabel yml_test.go:227: checkhost 1.2.3.5 lyme.eater@A123456789012345678901234567890123456789012345678901234567890123.example.com spf.go:129: check host with sender "1.2.3.5" "mail.example.net" "lyme.eater@A123456789012345678901234567890123456789012345678901234567890123.example.com" ("A123456789012345678901234567890123456789012345678901234567890123.example.com") spf.go:160: check A123456789012345678901234567890123456789012345678901234567890123.example.com 1 spf.go:176: dns record "" yml_test.go:234: success: none, no DNS record found [toolonglabel] yml_test.go:225: test helo-not-fqdn yml_test.go:227: checkhost 1.2.3.5 spf.go:129: check host with sender "1.2.3.5" "A2345678" "" ("A2345678") spf.go:160: check A2345678 1 spf.go:176: dns record "" yml_test.go:234: success: none, no DNS record found [helo-not-fqdn] yml_test.go:225: test domain-literal yml_test.go:227: checkhost 1.2.3.5 foo@[1.2.3.5] spf.go:129: check host with sender "1.2.3.5" "OEMCOMPUTER" "foo@[1.2.3.5]" ("[1.2.3.5]") spf.go:160: check [1.2.3.5] 1 spf.go:176: dns record "" yml_test.go:234: success: none, no DNS record found [domain-literal] yml_test.go:225: test trailing-space yml_test.go:227: checkhost 192.0.2.5 silly@trail.example.com spf.go:129: check host with sender "192.0.2.5" "hosed" "silly@trail.example.com" ("trail.example.com") spf.go:160: check trail.example.com 1 spf.go:176: dns record "v=spf1 a -all " spf.go:526: masks on "a": ["a" "" "" "" "" "" ""] "trail.example.com" {-1 -1} spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [trailing-space] yml_test.go:225: test non-ascii-result yml_test.go:227: checkhost 1.2.3.4 foobar@hosed3.example.com spf.go:129: check host with sender "1.2.3.4" "hosed" "foobar@hosed3.example.com" ("hosed3.example.com") spf.go:160: check hosed3.example.com 1 spf.go:176: dns record "v=spf1 a:example.net \u0096all" spf.go:526: masks on "a:example.net": ["a:example.net" ":example.net" "example.net" "" "" "" ""] "example.net" {-1 -1} spf.go:277: permerror, unknown field yml_test.go:234: success: permerror, unknown field [non-ascii-result] yml_test.go:225: test two-spaces yml_test.go:227: checkhost 1.2.3.4 actually@fine.example.com spf.go:129: check host with sender "1.2.3.4" "hosed" "actually@fine.example.com" ("fine.example.com") spf.go:160: check fine.example.com 1 spf.go:176: dns record "v=spf1 a -all" spf.go:526: masks on "a": ["a" "" "" "" "" "" ""] "fine.example.com" {-1 -1} spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [two-spaces] yml_test.go:225: test null-text yml_test.go:227: checkhost 192.0.2.5 silly@null.example.com spf.go:129: check host with sender "192.0.2.5" "hosed" "silly@null.example.com" ("null.example.com") spf.go:160: check null.example.com 1 spf.go:176: dns record "v=spf1 ip4:192.0.2.5 -all" spf.go:256: ip ok, pass matched 'ip' yml_test.go:234: success: pass, matched 'ip' [null-text] yml_test.go:152: suite: Record lookup yml_test.go:157: domain both.example.net yml_test.go:159: TXT: [v=spf1 -all] yml_test.go:159: SPF: [v=spf1 -all] yml_test.go:157: domain txtonly.example.net yml_test.go:159: TXT: [v=spf1 -all] yml_test.go:157: domain spfonly.example.net yml_test.go:159: SPF: [v=spf1 -all] yml_test.go:159: TXT: [NONE] yml_test.go:157: domain spftimeout.example.net yml_test.go:159: TXT: [v=spf1 -all] yml_test.go:159: TIMEOUT yml_test.go:157: domain txttimeout.example.net yml_test.go:159: SPF: [v=spf1 -all] yml_test.go:159: TXT: [NONE] yml_test.go:159: TIMEOUT yml_test.go:157: domain nospftxttimeout.example.net yml_test.go:159: SPF: [v=spf3 !a:yahoo.com -all] yml_test.go:159: TXT: [NONE] yml_test.go:159: TIMEOUT yml_test.go:157: domain alltimeout.example.net yml_test.go:159: TIMEOUT yml_test.go:225: test both yml_test.go:227: checkhost 1.2.3.4 foo@both.example.net spf.go:129: check host with sender "1.2.3.4" "mail.example.net" "foo@both.example.net" ("both.example.net") spf.go:160: check both.example.net 1 spf.go:176: dns record "v=spf1 -all" spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [both] yml_test.go:225: test txtonly yml_test.go:227: checkhost 1.2.3.4 foo@txtonly.example.net spf.go:129: check host with sender "1.2.3.4" "mail.example.net" "foo@txtonly.example.net" ("txtonly.example.net") spf.go:160: check txtonly.example.net 1 spf.go:176: dns record "v=spf1 -all" spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [txtonly] yml_test.go:225: test spfonly yml_test.go:227: checkhost 1.2.3.4 foo@spfonly.example.net spf.go:129: check host with sender "1.2.3.4" "mail.example.net" "foo@spfonly.example.net" ("spfonly.example.net") spf.go:160: check spfonly.example.net 1 spf.go:176: dns record "" yml_test.go:234: success: none, no DNS record found [spfonly] yml_test.go:225: test txttimeout yml_test.go:227: checkhost 1.2.3.4 foo@txttimeout.example.net spf.go:129: check host with sender "1.2.3.4" "mail.example.net" "foo@txttimeout.example.net" ("txttimeout.example.net") spf.go:160: check txttimeout.example.net 1 spf.go:164: dns temp error: lookup : test timeout error yml_test.go:234: success: temperror, lookup : test timeout error [txttimeout] yml_test.go:225: test nospftxttimeout yml_test.go:227: checkhost 1.2.3.4 foo@nospftxttimeout.example.net spf.go:129: check host with sender "1.2.3.4" "mail.example.net" "foo@nospftxttimeout.example.net" ("nospftxttimeout.example.net") spf.go:160: check nospftxttimeout.example.net 1 spf.go:164: dns temp error: lookup : test timeout error yml_test.go:234: success: temperror, lookup : test timeout error [nospftxttimeout] yml_test.go:225: test alltimeout yml_test.go:227: checkhost 1.2.3.4 foo@alltimeout.example.net spf.go:129: check host with sender "1.2.3.4" "mail.example.net" "foo@alltimeout.example.net" ("alltimeout.example.net") spf.go:160: check alltimeout.example.net 1 spf.go:164: dns temp error: lookup : test timeout error yml_test.go:234: success: temperror, lookup : test timeout error [alltimeout] yml_test.go:152: suite: Selecting records yml_test.go:157: domain example1.com yml_test.go:159: SPF: [v=spf1] yml_test.go:157: domain example8.com yml_test.go:159: SPF: [V=spf1 -all] yml_test.go:159: SPF: [v=spf1 -all] yml_test.go:159: TXT: [v=spf1 +all] yml_test.go:157: domain example9.com yml_test.go:159: SPF: [v=SpF1 ~all] yml_test.go:157: domain example4.com yml_test.go:159: SPF: [v=spf1 +all] yml_test.go:159: TXT: [v=spf1 -all] yml_test.go:157: domain example5.com yml_test.go:159: SPF: [v=spf1 +all] yml_test.go:159: TXT: [v=spf1 -all] yml_test.go:159: TXT: [v=spf1 +all] yml_test.go:157: domain example6.com yml_test.go:159: SPF: [v=spf1 -all] yml_test.go:159: SPF: [V=sPf1 +all] yml_test.go:157: domain example7.com yml_test.go:159: SPF: [v=spf1 -all] yml_test.go:159: SPF: [v=spf1 -all] yml_test.go:157: domain example3.com yml_test.go:159: SPF: [v=spf10] yml_test.go:159: SPF: [v=spf1 mx] yml_test.go:159: MX: {0 mail.example1.com} yml_test.go:157: domain example2.com yml_test.go:159: SPF: [v=spf1 mx] yml_test.go:157: domain mail.example1.com yml_test.go:159: A: [1.2.3.4] yml_test.go:225: test empty yml_test.go:227: checkhost 1.2.3.4 foo@example1.com spf.go:129: check host with sender "1.2.3.4" "mail1.example1.com" "foo@example1.com" ("example1.com") spf.go:160: check example1.com 1 spf.go:176: dns record "v=spf1" spf.go:284: fallback to neutral yml_test.go:234: success: neutral, [empty] yml_test.go:225: test nospace2 yml_test.go:227: checkhost 1.2.3.4 foo@example3.com spf.go:129: check host with sender "1.2.3.4" "mail.example1.com" "foo@example3.com" ("example3.com") spf.go:160: check example3.com 1 spf.go:176: dns record "v=spf1 mx" spf.go:526: masks on "mx": ["mx" "" "" "" "" "" ""] "example3.com" {-1 -1} spf.go:615: mx matched 1.2.3.4, 1.2.3.4, {-1 -1} spf.go:251: mx ok, pass matched 'mx' yml_test.go:234: success: pass, matched 'mx' [nospace2] yml_test.go:225: test multitxt2 yml_test.go:227: checkhost 1.2.3.4 foo@example6.com spf.go:129: check host with sender "1.2.3.4" "mail.example1.com" "foo@example6.com" ("example6.com") spf.go:160: check example6.com 1 spf.go:168: multiple dns records yml_test.go:234: success: permerror, multiple matching DNS records [multitxt2] yml_test.go:225: test case-insensitive yml_test.go:227: checkhost 1.2.3.4 foo@example9.com spf.go:129: check host with sender "1.2.3.4" "mail.example1.com" "foo@example9.com" ("example9.com") spf.go:160: check example9.com 1 spf.go:176: dns record "v=SpF1 ~all" spf.go:237: softfail matched all yml_test.go:234: success: softfail, matched 'all' [case-insensitive] yml_test.go:225: test multispf2 yml_test.go:227: checkhost 1.2.3.4 foo@example8.com spf.go:129: check host with sender "1.2.3.4" "mail.example1.com" "foo@example8.com" ("example8.com") spf.go:160: check example8.com 1 spf.go:176: dns record "v=spf1 +all" spf.go:237: pass matched all yml_test.go:234: success: pass, matched 'all' [multispf2] yml_test.go:225: test nospf yml_test.go:227: checkhost 1.2.3.4 foo@mail.example1.com spf.go:129: check host with sender "1.2.3.4" "mail.example1.com" "foo@mail.example1.com" ("mail.example1.com") spf.go:160: check mail.example1.com 1 spf.go:176: dns record "" yml_test.go:234: success: none, no DNS record found [nospf] yml_test.go:225: test nospace1 yml_test.go:227: checkhost 1.2.3.4 foo@example2.com spf.go:129: check host with sender "1.2.3.4" "mail.example1.com" "foo@example2.com" ("example2.com") spf.go:160: check example2.com 1 spf.go:176: dns record "" yml_test.go:234: success: none, no DNS record found [nospace1] yml_test.go:225: test spfoverride yml_test.go:227: checkhost 1.2.3.4 foo@example4.com spf.go:129: check host with sender "1.2.3.4" "mail.example1.com" "foo@example4.com" ("example4.com") spf.go:160: check example4.com 1 spf.go:176: dns record "v=spf1 -all" spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [spfoverride] yml_test.go:225: test multitxt1 yml_test.go:227: checkhost 1.2.3.4 foo@example5.com spf.go:129: check host with sender "1.2.3.4" "mail.example1.com" "foo@example5.com" ("example5.com") spf.go:160: check example5.com 1 spf.go:168: multiple dns records yml_test.go:234: success: permerror, multiple matching DNS records [multitxt1] yml_test.go:225: test multispf1 yml_test.go:227: checkhost 1.2.3.4 foo@example7.com spf.go:129: check host with sender "1.2.3.4" "mail.example1.com" "foo@example7.com" ("example7.com") spf.go:160: check example7.com 1 spf.go:168: multiple dns records yml_test.go:234: success: permerror, multiple matching DNS records [multispf1] yml_test.go:152: suite: Record evaluation yml_test.go:157: domain mail.example.com yml_test.go:159: A: [1.2.3.4] yml_test.go:157: domain t3.example.com yml_test.go:159: SPF: [v=spf1 moo.cow/far_out=man:dog/cat ip4:1.2.3.4 -all] yml_test.go:157: domain t8.example.com yml_test.go:159: SPF: [v=spf1 ip4:1.2.3.4 redirect:t2.example.com] yml_test.go:157: domain t9.example.com yml_test.go:159: SPF: [v=spf1 a:foo-bar -all] yml_test.go:157: domain t11.example.com yml_test.go:159: SPF: [v=spf1 a:a123456789012345678901234567890123456789012345678901234567890123.example.com -all] yml_test.go:157: domain t12.example.com yml_test.go:159: SPF: [v=spf1 a:%{H}.bar -all] yml_test.go:157: domain t1.example.com yml_test.go:159: SPF: [v=spf1 ip4:1.2.3.4 -all moo] yml_test.go:157: domain t2.example.com yml_test.go:159: SPF: [v=spf1 moo.cow-far_out=man:dog/cat ip4:1.2.3.4 -all] yml_test.go:157: domain t4.example.com yml_test.go:159: SPF: [v=spf1 moo.cow:far_out=man:dog/cat ip4:1.2.3.4 -all] yml_test.go:157: domain t5.example.com yml_test.go:159: SPF: [v=spf1 redirect=t5.example.com ~all] yml_test.go:157: domain t6.example.com yml_test.go:159: SPF: [v=spf1 ip4:1.2.3.4 redirect=t2.example.com] yml_test.go:157: domain t7.example.com yml_test.go:159: SPF: [v=spf1 ip4:1.2.3.4] yml_test.go:157: domain t10.example.com yml_test.go:159: SPF: [v=spf1 a:mail.example...com -all] yml_test.go:225: test redirect-after-mechanisms1 yml_test.go:227: checkhost 1.2.3.4 foo@t5.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@t5.example.com" ("t5.example.com") spf.go:160: check t5.example.com 1 spf.go:176: dns record "v=spf1 redirect=t5.example.com ~all" spf.go:237: softfail matched all yml_test.go:234: success: softfail, matched 'all' [redirect-after-mechanisms1] yml_test.go:225: test default-result yml_test.go:227: checkhost 1.2.3.5 foo@t7.example.com spf.go:129: check host with sender "1.2.3.5" "mail.example.com" "foo@t7.example.com" ("t7.example.com") spf.go:160: check t7.example.com 1 spf.go:176: dns record "v=spf1 ip4:1.2.3.4" spf.go:284: fallback to neutral yml_test.go:234: success: neutral, [default-result] yml_test.go:225: test modifier-charset-bad2 yml_test.go:227: checkhost 1.2.3.4 foo@t4.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@t4.example.com" ("t4.example.com") spf.go:160: check t4.example.com 1 spf.go:176: dns record "v=spf1 moo.cow:far_out=man:dog/cat ip4:1.2.3.4 -all" spf.go:277: permerror, unknown field yml_test.go:234: success: permerror, unknown field [modifier-charset-bad2] yml_test.go:225: test invalid-domain-empty-label yml_test.go:227: checkhost 1.2.3.4 foo@t10.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@t10.example.com" ("t10.example.com") spf.go:160: check t10.example.com 1 spf.go:176: dns record "v=spf1 a:mail.example...com -all" spf.go:526: masks on "a:mail.example...com": ["a:mail.example...com" ":mail.example...com" "mail.example...com" "" "" "" ""] "mail.example...com" {-1 -1} spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [invalid-domain-empty-label] yml_test.go:225: test invalid-domain-long yml_test.go:227: checkhost 1.2.3.4 foo@t11.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@t11.example.com" ("t11.example.com") spf.go:160: check t11.example.com 1 spf.go:176: dns record "v=spf1 a:a123456789012345678901234567890123456789012345678901234567890123.example.com -all" spf.go:526: masks on "a:a123456789012345678901234567890123456789012345678901234567890123.example.com": ["a:a123456789012345678901234567890123456789012345678901234567890123.example.com" ":a123456789012345678901234567890123456789012345678901234567890123.example.com" "a123456789012345678901234567890123456789012345678901234567890123.example.com" "" "" "" ""] "a123456789012345678901234567890123456789012345678901234567890123.example.com" {-1 -1} spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [invalid-domain-long] yml_test.go:225: test invalid-domain-long-via-macro yml_test.go:227: checkhost 1.2.3.4 foo@t12.example.com spf.go:129: check host with sender "1.2.3.4" "%%%%%%%%%%%%%%%%%%%%%%" "foo@t12.example.com" ("t12.example.com") spf.go:160: check t12.example.com 1 spf.go:176: dns record "v=spf1 a:%{H}.bar -all" spf.go:526: masks on "a:%{H}.bar": ["a:%{H}.bar" ":%{H}.bar" "%{H}.bar" "" "" "" ""] "%{H}.bar" {-1 -1} spf.go:708: macro "H": ["H" "H" "" "" ""] spf.go:805: macro expanded "%{H}.bar" to "t12.example.com.bar" spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [invalid-domain-long-via-macro] yml_test.go:225: test modifier-charset-bad1 yml_test.go:227: checkhost 1.2.3.4 foo@t3.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@t3.example.com" ("t3.example.com") spf.go:160: check t3.example.com 1 spf.go:176: dns record "v=spf1 moo.cow/far_out=man:dog/cat ip4:1.2.3.4 -all" spf.go:277: permerror, unknown field yml_test.go:234: success: permerror, unknown field [modifier-charset-bad1] yml_test.go:152: suite: ALL mechanism syntax yml_test.go:157: domain e5.example.com yml_test.go:159: SPF: [v=spf1 all -all] yml_test.go:157: domain mail.example.com yml_test.go:159: A: [1.2.3.4] yml_test.go:157: domain e1.example.com yml_test.go:159: SPF: [v=spf1 -all.] yml_test.go:157: domain e2.example.com yml_test.go:159: SPF: [v=spf1 -all:foobar] yml_test.go:157: domain e3.example.com yml_test.go:159: SPF: [v=spf1 -all/8] yml_test.go:157: domain e4.example.com yml_test.go:159: SPF: [v=spf1 ?all] yml_test.go:225: test all-neutral yml_test.go:227: checkhost 1.2.3.4 foo@e4.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e4.example.com" ("e4.example.com") spf.go:160: check e4.example.com 1 spf.go:176: dns record "v=spf1 ?all" spf.go:237: neutral matched all yml_test.go:234: success: neutral, matched 'all' [all-neutral] yml_test.go:225: test all-double yml_test.go:227: checkhost 1.2.3.4 foo@e5.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e5.example.com" ("e5.example.com") spf.go:160: check e5.example.com 1 spf.go:176: dns record "v=spf1 all -all" spf.go:237: pass matched all yml_test.go:234: success: pass, matched 'all' [all-double] yml_test.go:225: test all-dot yml_test.go:227: checkhost 1.2.3.4 foo@e1.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e1.example.com" ("e1.example.com") spf.go:160: check e1.example.com 1 spf.go:176: dns record "v=spf1 -all." spf.go:277: permerror, unknown field yml_test.go:234: success: permerror, unknown field [all-dot] yml_test.go:225: test all-arg yml_test.go:227: checkhost 1.2.3.4 foo@e2.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e2.example.com" ("e2.example.com") spf.go:160: check e2.example.com 1 spf.go:176: dns record "v=spf1 -all:foobar" spf.go:277: permerror, unknown field yml_test.go:234: success: permerror, unknown field [all-arg] yml_test.go:225: test all-cidr yml_test.go:227: checkhost 1.2.3.4 foo@e3.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e3.example.com" ("e3.example.com") spf.go:160: check e3.example.com 1 spf.go:176: dns record "v=spf1 -all/8" spf.go:277: permerror, unknown field yml_test.go:234: success: permerror, unknown field [all-cidr] yml_test.go:152: suite: PTR mechanism syntax yml_test.go:157: 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:159: PTR: [e3.example.com] yml_test.go:157: domain e3.example.com yml_test.go:159: SPF: [v=spf1 ptr -all] yml_test.go:159: A: [1.2.3.4] yml_test.go:159: AAAA: [CAFE:BABE::1] yml_test.go:157: domain loop.example.com yml_test.go:159: SPF: [v=spf1 ptr] yml_test.go:157: domain mail.example.com yml_test.go:159: A: [1.2.3.4] yml_test.go:159: AAAA: [2001:db8::1] yml_test.go:157: domain 4.3.2.1.in-addr.arpa yml_test.go:159: PTR: [e3.example.com] yml_test.go:159: PTR: [e4.example.com] yml_test.go:159: PTR: [mail.example.com] yml_test.go:157: domain e4.example.com yml_test.go:159: SPF: [v=spf1 ptr -all] yml_test.go:157: domain loop4.example.com yml_test.go:159: CNAME: [CNAME.example.com.] yml_test.go:157: domain e2.example.com yml_test.go:159: SPF: [v=spf1 ptr:example.com -all] yml_test.go:157: domain cname.example.com yml_test.go:159: CNAME: [CNAME.example.com.] yml_test.go:157: domain e1.example.com yml_test.go:159: SPF: [v=spf1 ptr/0 -all] yml_test.go:157: 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:159: PTR: [mail.Example.com] yml_test.go:157: domain e5.example.com yml_test.go:159: SPF: [v=spf1 ptr:] yml_test.go:157: domain e6.example.com yml_test.go:159: SPF: [v=spf1 ptr:example.Com -all] yml_test.go:157: domain 4.2.0.192.in-addr.arpa yml_test.go:159: PTR: [loop4.example.com.] yml_test.go:225: test ptr-cidr yml_test.go:227: checkhost 1.2.3.4 foo@e1.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e1.example.com" ("e1.example.com") spf.go:160: check e1.example.com 1 spf.go:176: dns record "v=spf1 ptr/0 -all" spf.go:277: permerror, unknown field yml_test.go:234: success: permerror, unknown field [ptr-cidr] yml_test.go:225: test ptr-match-target yml_test.go:227: checkhost 1.2.3.4 foo@e2.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e2.example.com" ("e2.example.com") spf.go:160: check e2.example.com 1 spf.go:176: dns record "v=spf1 ptr:example.com -all" spf.go:398: ptr forward resolution "e3.example.com." -> ["1.2.3.4" "cafe:babe::1"] spf.go:398: ptr forward resolution "e4.example.com." -> [] spf.go:398: ptr forward resolution "mail.example.com." -> ["1.2.3.4" "2001:db8::1"] spf.go:407: ptr evaluating "example.com" in ["e3.example.com." "mail.example.com."] spf.go:261: ptr ok, pass matched 'ptr' yml_test.go:234: success: pass, matched 'ptr' [ptr-match-target] yml_test.go:225: test ptr-match-implicit yml_test.go:227: checkhost 1.2.3.4 foo@e3.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e3.example.com" ("e3.example.com") spf.go:160: check e3.example.com 1 spf.go:176: dns record "v=spf1 ptr -all" spf.go:398: ptr forward resolution "e3.example.com." -> ["1.2.3.4" "cafe:babe::1"] spf.go:398: ptr forward resolution "e4.example.com." -> [] spf.go:398: ptr forward resolution "mail.example.com." -> ["1.2.3.4" "2001:db8::1"] spf.go:407: ptr evaluating "e3.example.com" in ["e3.example.com." "mail.example.com."] spf.go:261: ptr ok, pass matched 'ptr' yml_test.go:234: success: pass, matched 'ptr' [ptr-match-implicit] yml_test.go:225: test ptr-nomatch-invalid yml_test.go:227: checkhost 1.2.3.4 foo@e4.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e4.example.com" ("e4.example.com") spf.go:160: check e4.example.com 1 spf.go:176: dns record "v=spf1 ptr -all" spf.go:398: ptr forward resolution "e3.example.com." -> ["1.2.3.4" "cafe:babe::1"] spf.go:398: ptr forward resolution "e4.example.com." -> [] spf.go:398: ptr forward resolution "mail.example.com." -> ["1.2.3.4" "2001:db8::1"] spf.go:407: ptr evaluating "e4.example.com" in ["e3.example.com." "mail.example.com."] spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [ptr-nomatch-invalid] yml_test.go:225: test ptr-match-ip6 yml_test.go:227: checkhost cafe:babe::1 foo@e3.example.com spf.go:129: check host with sender "cafe:babe::1" "mail.example.com" "foo@e3.example.com" ("e3.example.com") spf.go:160: check e3.example.com 1 spf.go:176: dns record "v=spf1 ptr -all" spf.go:398: ptr forward resolution "e3.example.com." -> ["1.2.3.4" "cafe:babe::1"] spf.go:407: ptr evaluating "e3.example.com" in ["e3.example.com."] spf.go:261: ptr ok, pass matched 'ptr' yml_test.go:234: success: pass, matched 'ptr' [ptr-match-ip6] yml_test.go:225: test ptr-empty-domain yml_test.go:227: checkhost 1.2.3.4 foo@e5.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e5.example.com" ("e5.example.com") spf.go:160: check e5.example.com 1 spf.go:176: dns record "v=spf1 ptr:" spf.go:261: ptr ok, permerror invalid domain yml_test.go:234: success: permerror, invalid domain [ptr-empty-domain] yml_test.go:225: test ptr-case-change yml_test.go:227: checkhost 2001:db8::1 bar@e6.example.com spf.go:129: check host with sender "2001:db8::1" "mail.example.com" "bar@e6.example.com" ("e6.example.com") spf.go:160: check e6.example.com 1 spf.go:176: dns record "v=spf1 ptr:example.Com -all" spf.go:398: ptr forward resolution "mail.Example.com." -> ["1.2.3.4" "2001:db8::1"] spf.go:407: ptr evaluating "example.Com" in ["mail.example.com."] spf.go:261: ptr ok, pass matched 'ptr' yml_test.go:234: success: pass, matched 'ptr' [ptr-case-change] yml_test.go:225: test ptr-cname-loop yml_test.go:227: checkhost 192.0.2.4 postmaster@loop.example.com spf.go:129: check host with sender "192.0.2.4" "loop.example.com" "postmaster@loop.example.com" ("loop.example.com") spf.go:160: check loop.example.com 1 spf.go:176: dns record "v=spf1 ptr" spf.go:398: ptr forward resolution "loop4.example.com." -> [] spf.go:407: ptr evaluating "loop.example.com" in [] spf.go:284: fallback to neutral yml_test.go:234: success: neutral, [ptr-cname-loop] yml_test.go:152: suite: A mechanism syntax yml_test.go:157: domain e8.example.com yml_test.go:159: A: [1.2.3.5] yml_test.go:159: AAAA: [2001:db8:1234::dead:beef] yml_test.go:159: SPF: [v=spf1 a/24//64 -all] yml_test.go:157: domain foo.example.com yml_test.go:159: A: [1.1.1.1] yml_test.go:159: A: [1.2.3.5] yml_test.go:157: domain e13.example.com yml_test.go:159: SPF: [v=spf1 a:] yml_test.go:157: domain e2b.example.com yml_test.go:159: A: [1.1.1.1] yml_test.go:159: SPF: [v=spf1 a//0 -all] yml_test.go:157: domain e4.example.com yml_test.go:159: SPF: [v=spf1 a:111.222.33.44] yml_test.go:157: domain e5a.example.com yml_test.go:159: SPF: [v=spf1 a:museum] yml_test.go:157: domain e6a.example.com yml_test.go:159: SPF: [v=spf1 a/33 -all] yml_test.go:157: domain e8e.example.com yml_test.go:159: A: [1.2.3.5] yml_test.go:159: AAAA: [2001:db8:1234::dead:beef] yml_test.go:159: SPF: [v=spf1 a/24/64 -all] yml_test.go:157: domain e8a.example.com yml_test.go:159: A: [1.2.3.5] yml_test.go:159: AAAA: [2001:db8:1234::dead:beef] yml_test.go:159: SPF: [v=spf1 a/24 -all] yml_test.go:157: domain mail.example.com yml_test.go:159: A: [1.2.3.4] yml_test.go:157: domain e7.example.com yml_test.go:159: SPF: [v=spf1 a//129 -all] yml_test.go:157: domain e9.example.com yml_test.go:159: SPF: [v=spf1 a:example.com:8080] yml_test.go:157: domain e6.example.com yml_test.go:159: SPF: [v=spf1 a//33 -all] yml_test.go:157: domain e11.example.com yml_test.go:159: SPF: [v=spf1 a:foo:bar/baz.example.com] yml_test.go:157: domain e1.example.com yml_test.go:159: SPF: [v=spf1 a/0 -all] yml_test.go:157: domain e2.example.com yml_test.go:159: A: [1.1.1.1] yml_test.go:159: AAAA: [1234::2] yml_test.go:159: SPF: [v=spf1 a/0 -all] yml_test.go:157: domain e3.example.com yml_test.go:159: SPF: [v=spf1 a:foo.example.com] yml_test.go:157: domain e5b.example.com yml_test.go:159: SPF: [v=spf1 a:museum.] yml_test.go:157: domain e8b.example.com yml_test.go:159: A: [1.2.3.5] yml_test.go:159: AAAA: [2001:db8:1234::dead:beef] yml_test.go:159: SPF: [v=spf1 a//64 -all] yml_test.go:157: domain e5.example.com yml_test.go:159: SPF: [v=spf1 a:abc.123] yml_test.go:157: domain e12.example.com yml_test.go:159: SPF: [v=spf1 a:example.-com] yml_test.go:157: domain e2a.example.com yml_test.go:159: AAAA: [1234::1] yml_test.go:159: SPF: [v=spf1 a//0 -all] yml_test.go:157: domain ipv6.example.com yml_test.go:159: AAAA: [1234::1] yml_test.go:159: A: [1.1.1.1] yml_test.go:159: SPF: [v=spf1 a -all] yml_test.go:157: domain e10.example.com yml_test.go:159: SPF: [v=spf1 a:foo.example.com/24] yml_test.go:157: domain foo:bar/baz.example.com yml_test.go:159: A: [1.2.3.4] yml_test.go:157: domain e14.example.com yml_test.go:159: SPF: [v=spf1 a:foo.example.xn--zckzah -all] yml_test.go:157: domain foo.example.xn--zckzah yml_test.go:159: A: [1.2.3.4] yml_test.go:225: test a-cidr6-0-ip4mapped yml_test.go:227: checkhost 1.2.3.4 foo@e2a.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e2a.example.com" ("e2a.example.com") spf.go:160: check e2a.example.com 1 spf.go:176: dns record "v=spf1 a//0 -all" spf.go:526: masks on "a//0": ["a//0" "" "" "" "" "//0" "0"] "e2a.example.com" {-1 0} spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [a-cidr6-0-ip4mapped] yml_test.go:225: test a-ip6-dualstack yml_test.go:227: checkhost 1234::1 foo@ipv6.example.com spf.go:129: check host with sender "1234::1" "mail.example.com" "foo@ipv6.example.com" ("ipv6.example.com") spf.go:160: check ipv6.example.com 1 spf.go:176: dns record "v=spf1 a -all" spf.go:526: masks on "a": ["a" "" "" "" "" "" ""] "ipv6.example.com" {-1 -1} spf.go:561: mx matched 1234::1, 1234::1, {-1 -1} spf.go:246: a ok, pass matched 'a' yml_test.go:234: success: pass, matched 'a' [a-ip6-dualstack] yml_test.go:225: test a-dual-cidr-ip4-match yml_test.go:227: checkhost 1.2.3.4 foo@e8.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e8.example.com" ("e8.example.com") spf.go:160: check e8.example.com 1 spf.go:176: dns record "v=spf1 a/24//64 -all" spf.go:526: masks on "a/24//64": ["a/24//64" "" "" "/24" "24" "//64" "64"] "e8.example.com" {24 64} spf.go:561: mx matched 1.2.3.4, 1.2.3.5, {24 64} spf.go:246: a ok, pass matched 'a' yml_test.go:234: success: pass, matched 'a' [a-dual-cidr-ip4-match] yml_test.go:225: test a-dual-cidr-ip4-default yml_test.go:227: checkhost 1.2.3.4 foo@e8b.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e8b.example.com" ("e8b.example.com") spf.go:160: check e8b.example.com 1 spf.go:176: dns record "v=spf1 a//64 -all" spf.go:526: masks on "a//64": ["a//64" "" "" "" "" "//64" "64"] "e8b.example.com" {-1 64} spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [a-dual-cidr-ip4-default] yml_test.go:225: test a-cidr4-0 yml_test.go:227: checkhost 1.2.3.4 foo@e2.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e2.example.com" ("e2.example.com") spf.go:160: check e2.example.com 1 spf.go:176: dns record "v=spf1 a/0 -all" spf.go:526: masks on "a/0": ["a/0" "" "" "/0" "0" "" ""] "e2.example.com" {0 -1} spf.go:561: mx matched 1.2.3.4, 1.1.1.1, {0 -1} spf.go:246: a ok, pass matched 'a' yml_test.go:234: success: pass, matched 'a' [a-cidr4-0] yml_test.go:225: test a-cidr6 yml_test.go:227: checkhost 1.2.3.4 foo@e6.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e6.example.com" ("e6.example.com") spf.go:160: check e6.example.com 1 spf.go:176: dns record "v=spf1 a//33 -all" spf.go:526: masks on "a//33": ["a//33" "" "" "" "" "//33" "33"] "e6.example.com" {-1 33} spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [a-cidr6] yml_test.go:225: test a-multi-ip1 yml_test.go:227: checkhost 1.2.3.4 foo@e10.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e10.example.com" ("e10.example.com") spf.go:160: check e10.example.com 1 spf.go:176: dns record "v=spf1 a:foo.example.com/24" spf.go:526: masks on "a:foo.example.com/24": ["a:foo.example.com/24" ":foo.example.com" "foo.example.com" "/24" "24" "" ""] "foo.example.com" {24 -1} spf.go:561: mx matched 1.2.3.4, 1.2.3.5, {24 -1} spf.go:246: a ok, pass matched 'a' yml_test.go:234: success: pass, matched 'a' [a-multi-ip1] yml_test.go:225: test a-cidr4-0-ip6 yml_test.go:227: checkhost 1234::1 foo@e2.example.com spf.go:129: check host with sender "1234::1" "mail.example.com" "foo@e2.example.com" ("e2.example.com") spf.go:160: check e2.example.com 1 spf.go:176: dns record "v=spf1 a/0 -all" spf.go:526: masks on "a/0": ["a/0" "" "" "/0" "0" "" ""] "e2.example.com" {0 -1} spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [a-cidr4-0-ip6] yml_test.go:225: test a-dual-cidr-ip6-default yml_test.go:227: checkhost 2001:db8:1234::cafe:babe foo@e8a.example.com spf.go:129: check host with sender "2001:db8:1234::cafe:babe" "mail.example.com" "foo@e8a.example.com" ("e8a.example.com") spf.go:160: check e8a.example.com 1 spf.go:176: dns record "v=spf1 a/24 -all" spf.go:526: masks on "a/24": ["a/24" "" "" "/24" "24" "" ""] "e8a.example.com" {24 -1} spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [a-dual-cidr-ip6-default] yml_test.go:225: test a-cidr6-0-ip4 yml_test.go:227: checkhost 1.2.3.4 foo@e2a.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e2a.example.com" ("e2a.example.com") spf.go:160: check e2a.example.com 1 spf.go:176: dns record "v=spf1 a//0 -all" spf.go:526: masks on "a//0": ["a//0" "" "" "" "" "//0" "0"] "e2a.example.com" {-1 0} spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [a-cidr6-0-ip4] yml_test.go:225: test a-cidr6-0-ip6 yml_test.go:227: checkhost 1234::1 foo@e2a.example.com spf.go:129: check host with sender "1234::1" "mail.example.com" "foo@e2a.example.com" ("e2a.example.com") spf.go:160: check e2a.example.com 1 spf.go:176: dns record "v=spf1 a//0 -all" spf.go:526: masks on "a//0": ["a//0" "" "" "" "" "//0" "0"] "e2a.example.com" {-1 0} spf.go:561: mx matched 1234::1, 1234::1, {-1 0} spf.go:246: a ok, pass matched 'a' yml_test.go:234: success: pass, matched 'a' [a-cidr6-0-ip6] yml_test.go:225: test a-dash-in-toplabel yml_test.go:227: checkhost 1.2.3.4 foo@e14.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e14.example.com" ("e14.example.com") spf.go:160: check e14.example.com 1 spf.go:176: dns record "v=spf1 a:foo.example.xn--zckzah -all" spf.go:526: masks on "a:foo.example.xn--zckzah": ["a:foo.example.xn--zckzah" ":foo.example.xn--zckzah" "foo.example.xn--zckzah" "" "" "" ""] "foo.example.xn--zckzah" {-1 -1} spf.go:561: mx matched 1.2.3.4, 1.2.3.4, {-1 -1} spf.go:246: a ok, pass matched 'a' yml_test.go:234: success: pass, matched 'a' [a-dash-in-toplabel] yml_test.go:225: test a-bad-cidr4 yml_test.go:227: checkhost 1.2.3.4 foo@e6a.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e6a.example.com" ("e6a.example.com") spf.go:160: check e6a.example.com 1 spf.go:176: dns record "v=spf1 a/33 -all" spf.go:246: a ok, permerror invalid mask yml_test.go:234: success: permerror, invalid mask [a-bad-cidr4] yml_test.go:225: test a-dual-cidr-ip4-err yml_test.go:227: checkhost 1.2.3.4 foo@e8e.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e8e.example.com" ("e8e.example.com") spf.go:160: check e8e.example.com 1 spf.go:176: dns record "v=spf1 a/24/64 -all" spf.go:526: masks on "a/24/64": [] "e8e.example.com" {-1 -1} spf.go:246: a ok, permerror invalid mask yml_test.go:234: success: permerror, invalid mask [a-dual-cidr-ip4-err] yml_test.go:225: test a-dual-cidr-ip6-match yml_test.go:227: checkhost 2001:db8:1234::cafe:babe foo@e8.example.com spf.go:129: check host with sender "2001:db8:1234::cafe:babe" "mail.example.com" "foo@e8.example.com" ("e8.example.com") spf.go:160: check e8.example.com 1 spf.go:176: dns record "v=spf1 a/24//64 -all" spf.go:526: masks on "a/24//64": ["a/24//64" "" "" "/24" "24" "//64" "64"] "e8.example.com" {24 64} spf.go:561: mx matched 2001:db8:1234::cafe:babe, 2001:db8:1234::dead:beef, {24 64} spf.go:246: a ok, pass matched 'a' yml_test.go:234: success: pass, matched 'a' [a-dual-cidr-ip6-match] yml_test.go:225: test a-multi-ip2 yml_test.go:227: checkhost 1.2.3.4 foo@e10.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e10.example.com" ("e10.example.com") spf.go:160: check e10.example.com 1 spf.go:176: dns record "v=spf1 a:foo.example.com/24" spf.go:526: masks on "a:foo.example.com/24": ["a:foo.example.com/24" ":foo.example.com" "foo.example.com" "/24" "24" "" ""] "foo.example.com" {24 -1} spf.go:561: mx matched 1.2.3.4, 1.2.3.5, {24 -1} spf.go:246: a ok, pass matched 'a' yml_test.go:234: success: pass, matched 'a' [a-multi-ip2] yml_test.go:225: test a-nxdomain yml_test.go:227: checkhost 1.2.3.4 foo@e1.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e1.example.com" ("e1.example.com") spf.go:160: check e1.example.com 1 spf.go:176: dns record "v=spf1 a/0 -all" spf.go:526: masks on "a/0": ["a/0" "" "" "/0" "0" "" ""] "e1.example.com" {0 -1} spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [a-nxdomain] yml_test.go:225: test a-bad-cidr6 yml_test.go:227: checkhost 1.2.3.4 foo@e7.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e7.example.com" ("e7.example.com") spf.go:160: check e7.example.com 1 spf.go:176: dns record "v=spf1 a//129 -all" spf.go:246: a ok, permerror invalid mask yml_test.go:234: success: permerror, invalid mask [a-bad-cidr6] yml_test.go:225: test a-cidr6-0-nxdomain yml_test.go:227: checkhost 1234::1 foo@e2b.example.com spf.go:129: check host with sender "1234::1" "mail.example.com" "foo@e2b.example.com" ("e2b.example.com") spf.go:160: check e2b.example.com 1 spf.go:176: dns record "v=spf1 a//0 -all" spf.go:526: masks on "a//0": ["a//0" "" "" "" "" "//0" "0"] "e2b.example.com" {-1 0} spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [a-cidr6-0-nxdomain] yml_test.go:152: suite: Include mechanism semantics and syntax yml_test.go:157: domain ip6.example.com yml_test.go:159: SPF: [v=spf1 ip4:1.2.3.6 ~all] yml_test.go:157: domain ip7.example.com yml_test.go:159: SPF: [v=spf1 ip4:1.2.3.7 ?all] yml_test.go:157: domain e3.example.com yml_test.go:159: SPF: [v=spf1 include:ip7.example.com -all] yml_test.go:157: domain e5.example.com yml_test.go:159: SPF: [v=spf1 include:e6.example.com -all] yml_test.go:157: domain e6.example.com yml_test.go:159: SPF: [v=spf1 include +all] yml_test.go:157: domain e9.example.com yml_test.go:159: SPF: [v=spf1 include:ip5.example.com/24 -all] yml_test.go:157: domain ip5.example.com yml_test.go:159: SPF: [v=spf1 ip4:1.2.3.5 -all] yml_test.go:157: domain mail.example.com yml_test.go:159: A: [1.2.3.4] yml_test.go:157: domain erehwon.example.com yml_test.go:159: TXT: [v=spfl am not an SPF record] yml_test.go:157: domain e2.example.com yml_test.go:159: SPF: [v=spf1 include:ip6.example.com all] yml_test.go:157: domain e8.example.com yml_test.go:159: SPF: [v=spf1 include: -all] yml_test.go:157: domain ip8.example.com yml_test.go:159: TIMEOUT yml_test.go:157: domain e4.example.com yml_test.go:159: SPF: [v=spf1 include:ip8.example.com -all] yml_test.go:157: domain e7.example.com yml_test.go:159: SPF: [v=spf1 include:erehwon.example.com -all] yml_test.go:157: domain e1.example.com yml_test.go:159: SPF: [v=spf1 include:ip5.example.com ~all] yml_test.go:225: test include-neutral yml_test.go:227: checkhost 1.2.3.4 foo@e3.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e3.example.com" ("e3.example.com") spf.go:160: check e3.example.com 1 spf.go:176: dns record "v=spf1 include:ip7.example.com -all" spf.go:160: check ip7.example.com 2 spf.go:176: dns record "v=spf1 ip4:1.2.3.7 ?all" spf.go:237: neutral matched all spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [include-neutral] yml_test.go:225: test include-temperror yml_test.go:227: checkhost 1.2.3.4 foo@e4.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e4.example.com" ("e4.example.com") spf.go:160: check e4.example.com 1 spf.go:176: dns record "v=spf1 include:ip8.example.com -all" spf.go:160: check ip8.example.com 2 spf.go:164: dns temp error: lookup : test timeout error spf.go:241: include ok, temperror lookup : test timeout error yml_test.go:234: success: temperror, lookup : test timeout error [include-temperror] yml_test.go:225: test include-syntax-error yml_test.go:227: checkhost 1.2.3.4 foo@e6.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e6.example.com" ("e6.example.com") spf.go:160: check e6.example.com 1 spf.go:176: dns record "v=spf1 include +all" spf.go:277: permerror, unknown field yml_test.go:234: success: permerror, unknown field [include-syntax-error] yml_test.go:225: test include-cidr yml_test.go:227: checkhost 1.2.3.4 foo@e9.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e9.example.com" ("e9.example.com") spf.go:160: check e9.example.com 1 spf.go:176: dns record "v=spf1 include:ip5.example.com/24 -all" spf.go:659: macro contains / spf.go:241: include ok, permerror invalid macro yml_test.go:234: success: permerror, invalid macro [include-cidr] yml_test.go:225: test include-none yml_test.go:227: checkhost 1.2.3.4 foo@e7.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e7.example.com" ("e7.example.com") spf.go:160: check e7.example.com 1 spf.go:176: dns record "v=spf1 include:erehwon.example.com -all" spf.go:160: check erehwon.example.com 2 spf.go:176: dns record "" spf.go:241: include ok, permerror no DNS record found yml_test.go:234: success: permerror, no DNS record found [include-none] yml_test.go:225: test include-softfail yml_test.go:227: checkhost 1.2.3.4 foo@e2.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e2.example.com" ("e2.example.com") spf.go:160: check e2.example.com 1 spf.go:176: dns record "v=spf1 include:ip6.example.com all" spf.go:160: check ip6.example.com 2 spf.go:176: dns record "v=spf1 ip4:1.2.3.6 ~all" spf.go:237: softfail matched all spf.go:237: pass matched all yml_test.go:234: success: pass, matched 'all' [include-softfail] yml_test.go:225: test include-permerror yml_test.go:227: checkhost 1.2.3.4 foo@e5.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e5.example.com" ("e5.example.com") spf.go:160: check e5.example.com 1 spf.go:176: dns record "v=spf1 include:e6.example.com -all" spf.go:160: check e6.example.com 2 spf.go:176: dns record "v=spf1 include +all" spf.go:277: permerror, unknown field spf.go:241: include ok, permerror unknown field yml_test.go:234: success: permerror, unknown field [include-permerror] yml_test.go:225: test include-empty-domain yml_test.go:227: checkhost 1.2.3.4 foo@e8.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e8.example.com" ("e8.example.com") spf.go:160: check e8.example.com 1 spf.go:176: dns record "v=spf1 include: -all" spf.go:160: check 2 spf.go:176: dns record "" spf.go:241: include ok, permerror no DNS record found yml_test.go:234: success: permerror, no DNS record found [include-empty-domain] yml_test.go:225: test include-fail yml_test.go:227: checkhost 1.2.3.4 foo@e1.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e1.example.com" ("e1.example.com") spf.go:160: check e1.example.com 1 spf.go:176: dns record "v=spf1 include:ip5.example.com ~all" spf.go:160: check ip5.example.com 2 spf.go:176: dns record "v=spf1 ip4:1.2.3.5 -all" spf.go:237: fail matched all spf.go:237: softfail matched all yml_test.go:234: success: softfail, matched 'all' [include-fail] yml_test.go:152: suite: MX mechanism syntax yml_test.go:157: domain foo.example.com yml_test.go:159: MX: {0 foo1.example.com} yml_test.go:157: domain mail.example.com yml_test.go:159: A: [1.2.3.4] yml_test.go:159: MX: {0 } yml_test.go:159: SPF: [v=spf1 mx] yml_test.go:157: domain e1.example.com yml_test.go:159: SPF: [v=spf1 mx/0 -all] yml_test.go:159: MX: {0 e1.example.com} yml_test.go:157: domain e2.example.com yml_test.go:159: A: [1.1.1.1] yml_test.go:159: AAAA: [1234::2] yml_test.go:159: MX: {0 e2.example.com} yml_test.go:159: SPF: [v=spf1 mx/0 -all] yml_test.go:157: domain e3.example.com yml_test.go:159: SPF: [v=spf1 mx:foo.example.com] yml_test.go:157: domain e5.example.com yml_test.go:159: SPF: [v=spf1 mx:abc.123] yml_test.go:157: domain e12.example.com yml_test.go:159: SPF: [v=spf1 mx:example.-com] yml_test.go:157: domain e2a.example.com yml_test.go:159: AAAA: [1234::1] yml_test.go:159: MX: {0 e2a.example.com} yml_test.go:159: SPF: [v=spf1 mx//0 -all] yml_test.go:157: domain e6.example.com yml_test.go:159: SPF: [v=spf1 mx//33 -all] yml_test.go:157: domain e6a.example.com yml_test.go:159: SPF: [v=spf1 mx/33 -all] yml_test.go:157: domain e7.example.com yml_test.go:159: SPF: [v=spf1 mx//129 -all] yml_test.go:157: domain foo:bar/baz.example.com yml_test.go:159: MX: {0 foo:bar/baz.example.com} yml_test.go:159: A: [1.2.3.4] yml_test.go:157: domain e2b.example.com yml_test.go:159: A: [1.1.1.1] yml_test.go:159: MX: {0 e2b.example.com} yml_test.go:159: SPF: [v=spf1 mx//0 -all] yml_test.go:157: domain e4.example.com yml_test.go:159: SPF: [v=spf1 mx] yml_test.go:159: A: [1.2.3.4] yml_test.go:157: domain e9.example.com yml_test.go:159: SPF: [v=spf1 mx:example.com:8080] yml_test.go:157: domain e10.example.com yml_test.go:159: SPF: [v=spf1 mx:foo.example.com/24] yml_test.go:157: domain e13.example.com yml_test.go:159: SPF: [v=spf1 mx: -all] yml_test.go:157: domain foo1.example.com yml_test.go:159: A: [1.1.1.1] yml_test.go:159: A: [1.2.3.5] yml_test.go:157: domain e11.example.com yml_test.go:159: SPF: [v=spf1 mx:foo:bar/baz.example.com] yml_test.go:225: test mx-implicit yml_test.go:227: checkhost 1.2.3.4 foo@e4.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e4.example.com" ("e4.example.com") spf.go:160: check e4.example.com 1 spf.go:176: dns record "v=spf1 mx" spf.go:526: masks on "mx": ["mx" "" "" "" "" "" ""] "e4.example.com" {-1 -1} spf.go:284: fallback to neutral yml_test.go:234: success: neutral, [mx-implicit] yml_test.go:225: test mx-bad-cidr4 yml_test.go:227: checkhost 1.2.3.4 foo@e6a.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e6a.example.com" ("e6a.example.com") spf.go:160: check e6a.example.com 1 spf.go:176: dns record "v=spf1 mx/33 -all" spf.go:251: mx ok, permerror invalid mask yml_test.go:234: success: permerror, invalid mask [mx-bad-cidr4] yml_test.go:225: test mx-cidr6-0-ip4 yml_test.go:227: checkhost 1.2.3.4 foo@e2a.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e2a.example.com" ("e2a.example.com") spf.go:160: check e2a.example.com 1 spf.go:176: dns record "v=spf1 mx//0 -all" spf.go:526: masks on "mx//0": ["mx//0" "" "" "" "" "//0" "0"] "e2a.example.com" {-1 0} spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [mx-cidr6-0-ip4] yml_test.go:225: test mx-cidr6-0-ip4mapped yml_test.go:227: checkhost 1.2.3.4 foo@e2a.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e2a.example.com" ("e2a.example.com") spf.go:160: check e2a.example.com 1 spf.go:176: dns record "v=spf1 mx//0 -all" spf.go:526: masks on "mx//0": ["mx//0" "" "" "" "" "//0" "0"] "e2a.example.com" {-1 0} spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [mx-cidr6-0-ip4mapped] yml_test.go:225: test mx-cidr6-0-nxdomain yml_test.go:227: checkhost 1234::1 foo@e2b.example.com spf.go:129: check host with sender "1234::1" "mail.example.com" "foo@e2b.example.com" ("e2b.example.com") spf.go:160: check e2b.example.com 1 spf.go:176: dns record "v=spf1 mx//0 -all" spf.go:526: masks on "mx//0": ["mx//0" "" "" "" "" "//0" "0"] "e2b.example.com" {-1 0} spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [mx-cidr6-0-nxdomain] yml_test.go:225: test mx-cidr6 yml_test.go:227: checkhost 1.2.3.4 foo@e6.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e6.example.com" ("e6.example.com") spf.go:160: check e6.example.com 1 spf.go:176: dns record "v=spf1 mx//33 -all" spf.go:526: masks on "mx//33": ["mx//33" "" "" "" "" "//33" "33"] "e6.example.com" {-1 33} spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [mx-cidr6] yml_test.go:225: test mx-multi-ip1 yml_test.go:227: checkhost 1.2.3.4 foo@e10.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e10.example.com" ("e10.example.com") spf.go:160: check e10.example.com 1 spf.go:176: dns record "v=spf1 mx:foo.example.com/24" spf.go:526: masks on "mx:foo.example.com/24": ["mx:foo.example.com/24" ":foo.example.com" "foo.example.com" "/24" "24" "" ""] "foo.example.com" {24 -1} spf.go:615: mx matched 1.2.3.4, 1.2.3.5, {24 -1} spf.go:251: mx ok, pass matched 'mx' yml_test.go:234: success: pass, matched 'mx' [mx-multi-ip1] yml_test.go:225: test mx-empty yml_test.go:227: checkhost 1.2.3.4 spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "" ("mail.example.com") spf.go:160: check mail.example.com 1 spf.go:176: dns record "v=spf1 mx" spf.go:526: masks on "mx": ["mx" "" "" "" "" "" ""] "mail.example.com" {-1 -1} spf.go:284: fallback to neutral yml_test.go:234: success: neutral, [mx-empty] yml_test.go:225: test mx-multi-ip2 yml_test.go:227: checkhost 1.2.3.4 foo@e10.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e10.example.com" ("e10.example.com") spf.go:160: check e10.example.com 1 spf.go:176: dns record "v=spf1 mx:foo.example.com/24" spf.go:526: masks on "mx:foo.example.com/24": ["mx:foo.example.com/24" ":foo.example.com" "foo.example.com" "/24" "24" "" ""] "foo.example.com" {24 -1} spf.go:615: mx matched 1.2.3.4, 1.2.3.5, {24 -1} spf.go:251: mx ok, pass matched 'mx' yml_test.go:234: success: pass, matched 'mx' [mx-multi-ip2] yml_test.go:225: test mx-cidr4-0-ip6 yml_test.go:227: checkhost 1234::1 foo@e2.example.com spf.go:129: check host with sender "1234::1" "mail.example.com" "foo@e2.example.com" ("e2.example.com") spf.go:160: check e2.example.com 1 spf.go:176: dns record "v=spf1 mx/0 -all" spf.go:526: masks on "mx/0": ["mx/0" "" "" "/0" "0" "" ""] "e2.example.com" {0 -1} spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [mx-cidr4-0-ip6] yml_test.go:225: test mx-cidr6-0-ip6 yml_test.go:227: checkhost 1234::1 foo@e2a.example.com spf.go:129: check host with sender "1234::1" "mail.example.com" "foo@e2a.example.com" ("e2a.example.com") spf.go:160: check e2a.example.com 1 spf.go:176: dns record "v=spf1 mx//0 -all" spf.go:526: masks on "mx//0": ["mx//0" "" "" "" "" "//0" "0"] "e2a.example.com" {-1 0} spf.go:615: mx matched 1234::1, 1234::1, {-1 0} spf.go:251: mx ok, pass matched 'mx' yml_test.go:234: success: pass, matched 'mx' [mx-cidr6-0-ip6] yml_test.go:225: test mx-bad-cidr6 yml_test.go:227: checkhost 1.2.3.4 foo@e7.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e7.example.com" ("e7.example.com") spf.go:160: check e7.example.com 1 spf.go:176: dns record "v=spf1 mx//129 -all" spf.go:251: mx ok, permerror invalid mask yml_test.go:234: success: permerror, invalid mask [mx-bad-cidr6] yml_test.go:225: test mx-nxdomain yml_test.go:227: checkhost 1.2.3.4 foo@e1.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e1.example.com" ("e1.example.com") spf.go:160: check e1.example.com 1 spf.go:176: dns record "v=spf1 mx/0 -all" spf.go:526: masks on "mx/0": ["mx/0" "" "" "/0" "0" "" ""] "e1.example.com" {0 -1} spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [mx-nxdomain] yml_test.go:225: test mx-cidr4-0 yml_test.go:227: checkhost 1.2.3.4 foo@e2.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e2.example.com" ("e2.example.com") spf.go:160: check e2.example.com 1 spf.go:176: dns record "v=spf1 mx/0 -all" spf.go:526: masks on "mx/0": ["mx/0" "" "" "/0" "0" "" ""] "e2.example.com" {0 -1} spf.go:615: mx matched 1.2.3.4, 1.1.1.1, {0 -1} spf.go:251: mx ok, pass matched 'mx' yml_test.go:234: success: pass, matched 'mx' [mx-cidr4-0] yml_test.go:152: suite: EXISTS mechanism syntax yml_test.go:157: domain e3.example.com yml_test.go:159: SPF: [v=spf1 exists:mail.example.com/24] yml_test.go:157: domain e4.example.com yml_test.go:159: SPF: [v=spf1 exists:mail.example.com] yml_test.go:157: domain e6.example.com yml_test.go:159: SPF: [v=spf1 exists:err.example.com -all] yml_test.go:157: domain mail.example.com yml_test.go:159: A: [1.2.3.4] yml_test.go:157: domain mail6.example.com yml_test.go:159: AAAA: [CAFE:BABE::4] yml_test.go:157: domain err.example.com yml_test.go:159: TIMEOUT yml_test.go:157: domain e1.example.com yml_test.go:159: SPF: [v=spf1 exists:] yml_test.go:157: domain e2.example.com yml_test.go:159: SPF: [v=spf1 exists] yml_test.go:157: domain e5.example.com yml_test.go:159: SPF: [v=spf1 exists:mail6.example.com -all] yml_test.go:225: test exists-ip6only yml_test.go:227: checkhost cafe:babe::3 foo@e5.example.com spf.go:129: check host with sender "cafe:babe::3" "mail.example.com" "foo@e5.example.com" ("e5.example.com") spf.go:160: check e5.example.com 1 spf.go:176: dns record "v=spf1 exists:mail6.example.com -all" spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [exists-ip6only] yml_test.go:225: test exists-dnserr yml_test.go:227: checkhost cafe:babe::3 foo@e6.example.com spf.go:129: check host with sender "cafe:babe::3" "mail.example.com" "foo@e6.example.com" ("e6.example.com") spf.go:160: check e6.example.com 1 spf.go:176: dns record "v=spf1 exists:err.example.com -all" spf.go:266: exists ok, temperror lookup : test timeout error yml_test.go:234: success: temperror, lookup : test timeout error [exists-dnserr] yml_test.go:225: test exists-empty-domain yml_test.go:227: checkhost 1.2.3.4 foo@e1.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e1.example.com" ("e1.example.com") spf.go:160: check e1.example.com 1 spf.go:176: dns record "v=spf1 exists:" spf.go:266: exists ok, permerror invalid domain yml_test.go:234: success: permerror, invalid domain [exists-empty-domain] yml_test.go:225: test exists-implicit yml_test.go:227: checkhost 1.2.3.4 foo@e2.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e2.example.com" ("e2.example.com") spf.go:160: check e2.example.com 1 spf.go:176: dns record "v=spf1 exists" spf.go:277: permerror, unknown field yml_test.go:234: success: permerror, unknown field [exists-implicit] yml_test.go:225: test exists-cidr yml_test.go:227: checkhost 1.2.3.4 foo@e3.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e3.example.com" ("e3.example.com") spf.go:160: check e3.example.com 1 spf.go:176: dns record "v=spf1 exists:mail.example.com/24" spf.go:659: macro contains / spf.go:266: exists ok, permerror invalid macro yml_test.go:234: success: permerror, invalid macro [exists-cidr] yml_test.go:225: test exists-ip4 yml_test.go:227: checkhost 1.2.3.4 foo@e4.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e4.example.com" ("e4.example.com") spf.go:160: check e4.example.com 1 spf.go:176: dns record "v=spf1 exists:mail.example.com" spf.go:266: exists ok, pass matched 'exists' yml_test.go:234: success: pass, matched 'exists' [exists-ip4] yml_test.go:225: test exists-ip6 yml_test.go:227: checkhost cafe:babe::3 foo@e4.example.com spf.go:129: check host with sender "cafe:babe::3" "mail.example.com" "foo@e4.example.com" ("e4.example.com") spf.go:160: check e4.example.com 1 spf.go:176: dns record "v=spf1 exists:mail.example.com" spf.go:266: exists ok, pass matched 'exists' yml_test.go:234: success: pass, matched 'exists' [exists-ip6] yml_test.go:152: suite: IP4 mechanism syntax yml_test.go:157: domain mail.example.com yml_test.go:159: A: [1.2.3.4] yml_test.go:157: domain e1.example.com yml_test.go:159: SPF: [v=spf1 ip4:1.1.1.1/0 -all] yml_test.go:157: domain e6.example.com yml_test.go:159: SPF: [v=spf1 ip4:1.2.3.4//32] yml_test.go:157: domain e9.example.com yml_test.go:159: SPF: [v=spf1 ip4:1.2.3] yml_test.go:157: domain e8.example.com yml_test.go:159: SPF: [v=spf1 ip4:1.2.3.4:8080] yml_test.go:157: domain e2.example.com yml_test.go:159: SPF: [v=spf1 ip4:1.2.3.4/32 -all] yml_test.go:157: domain e3.example.com yml_test.go:159: SPF: [v=spf1 ip4:1.2.3.4/33 -all] yml_test.go:157: domain e4.example.com yml_test.go:159: SPF: [v=spf1 ip4:1.2.3.4/032 -all] yml_test.go:157: domain e5.example.com yml_test.go:159: SPF: [v=spf1 ip4] yml_test.go:157: domain e7.example.com yml_test.go:159: SPF: [v=spf1 -ip4:1.2.3.4 ip6:::FFFF:1.2.3.4] yml_test.go:225: test cidr4-0 yml_test.go:227: checkhost 1.2.3.4 foo@e1.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e1.example.com" ("e1.example.com") spf.go:160: check e1.example.com 1 spf.go:176: dns record "v=spf1 ip4:1.1.1.1/0 -all" spf.go:256: ip ok, pass matched 'ip' yml_test.go:234: success: pass, matched 'ip' [cidr4-0] yml_test.go:225: test cidr4-33 yml_test.go:227: checkhost 1.2.3.4 foo@e3.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e3.example.com" ("e3.example.com") spf.go:160: check e3.example.com 1 spf.go:176: dns record "v=spf1 ip4:1.2.3.4/33 -all" spf.go:256: ip ok, permerror invalid mask yml_test.go:234: success: permerror, invalid mask [cidr4-33] yml_test.go:225: test bad-ip4-short yml_test.go:227: checkhost 1.2.3.4 foo@e9.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e9.example.com" ("e9.example.com") spf.go:160: check e9.example.com 1 spf.go:176: dns record "v=spf1 ip4:1.2.3" spf.go:256: ip ok, permerror invalid ipX value yml_test.go:234: success: permerror, invalid ipX value [bad-ip4-short] yml_test.go:225: test ip4-dual-cidr yml_test.go:227: checkhost 1.2.3.4 foo@e6.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e6.example.com" ("e6.example.com") spf.go:160: check e6.example.com 1 spf.go:176: dns record "v=spf1 ip4:1.2.3.4//32" spf.go:256: ip ok, permerror invalid mask yml_test.go:234: success: permerror, invalid mask [ip4-dual-cidr] yml_test.go:225: test ip4-mapped-ip6 yml_test.go:227: checkhost 1.2.3.4 foo@e7.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e7.example.com" ("e7.example.com") spf.go:160: check e7.example.com 1 spf.go:176: dns record "v=spf1 -ip4:1.2.3.4 ip6:::FFFF:1.2.3.4" spf.go:256: ip ok, fail matched 'ip' yml_test.go:234: success: fail, matched 'ip' [ip4-mapped-ip6] yml_test.go:225: test cidr4-32 yml_test.go:227: checkhost 1.2.3.4 foo@e2.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e2.example.com" ("e2.example.com") spf.go:160: check e2.example.com 1 spf.go:176: dns record "v=spf1 ip4:1.2.3.4/32 -all" spf.go:256: ip ok, pass matched 'ip' yml_test.go:234: success: pass, matched 'ip' [cidr4-32] yml_test.go:225: test bare-ip4 yml_test.go:227: checkhost 1.2.3.4 foo@e5.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e5.example.com" ("e5.example.com") spf.go:160: check e5.example.com 1 spf.go:176: dns record "v=spf1 ip4" spf.go:277: permerror, unknown field yml_test.go:234: success: permerror, unknown field [bare-ip4] yml_test.go:225: test bad-ip4-port yml_test.go:227: checkhost 1.2.3.4 foo@e8.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e8.example.com" ("e8.example.com") spf.go:160: check e8.example.com 1 spf.go:176: dns record "v=spf1 ip4:1.2.3.4:8080" spf.go:256: ip ok, permerror invalid ipX value yml_test.go:234: success: permerror, invalid ipX value [bad-ip4-port] yml_test.go:152: suite: IP6 mechanism syntax yml_test.go:157: domain e5.example.com yml_test.go:159: SPF: [v=spf1 ip6:Cafe:Babe:8000::/33] yml_test.go:157: domain e6.example.com yml_test.go:159: SPF: [v=spf1 ip6::CAFE::BABE] yml_test.go:157: domain mail.example.com yml_test.go:159: A: [1.2.3.4] yml_test.go:157: domain e1.example.com yml_test.go:159: SPF: [v=spf1 -all ip6] yml_test.go:157: domain e2.example.com yml_test.go:159: SPF: [v=spf1 ip6:::1.1.1.1/0] yml_test.go:157: domain e3.example.com yml_test.go:159: SPF: [v=spf1 ip6:::1.1.1.1/129] yml_test.go:157: domain e4.example.com yml_test.go:159: SPF: [v=spf1 ip6:::1.1.1.1//33] yml_test.go:225: test ip6-bad1 yml_test.go:227: checkhost 1.2.3.4 foo@e6.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e6.example.com" ("e6.example.com") spf.go:160: check e6.example.com 1 spf.go:176: dns record "v=spf1 ip6::CAFE::BABE" spf.go:256: ip ok, permerror invalid ipX value yml_test.go:234: success: permerror, invalid ipX value [ip6-bad1] yml_test.go:225: test cidr6-0-ip4 yml_test.go:227: checkhost 1.2.3.4 foo@e2.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e2.example.com" ("e2.example.com") spf.go:160: check e2.example.com 1 spf.go:176: dns record "v=spf1 ip6:::1.1.1.1/0" spf.go:284: fallback to neutral yml_test.go:234: success: neutral, [cidr6-0-ip4] yml_test.go:225: test cidr6-0 yml_test.go:227: checkhost deaf:babe::cab:fee foo@e2.example.com spf.go:129: check host with sender "deaf:babe::cab:fee" "mail.example.com" "foo@e2.example.com" ("e2.example.com") spf.go:160: check e2.example.com 1 spf.go:176: dns record "v=spf1 ip6:::1.1.1.1/0" spf.go:256: ip ok, pass matched 'ip' yml_test.go:234: success: pass, matched 'ip' [cidr6-0] yml_test.go:225: test cidr6-129 yml_test.go:227: checkhost 1.2.3.4 foo@e3.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e3.example.com" ("e3.example.com") spf.go:160: check e3.example.com 1 spf.go:176: dns record "v=spf1 ip6:::1.1.1.1/129" spf.go:256: ip ok, permerror invalid mask yml_test.go:234: success: permerror, invalid mask [cidr6-129] yml_test.go:225: test cidr6-33 yml_test.go:227: checkhost cafe:babe:8000:: foo@e5.example.com spf.go:129: check host with sender "cafe:babe:8000::" "mail.example.com" "foo@e5.example.com" ("e5.example.com") spf.go:160: check e5.example.com 1 spf.go:176: dns record "v=spf1 ip6:Cafe:Babe:8000::/33" spf.go:256: ip ok, pass matched 'ip' yml_test.go:234: success: pass, matched 'ip' [cidr6-33] yml_test.go:225: test cidr6-ip4 yml_test.go:227: checkhost 1.2.3.4 foo@e2.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e2.example.com" ("e2.example.com") spf.go:160: check e2.example.com 1 spf.go:176: dns record "v=spf1 ip6:::1.1.1.1/0" spf.go:284: fallback to neutral yml_test.go:234: success: neutral, [cidr6-ip4] yml_test.go:225: test cidr6-bad yml_test.go:227: checkhost 1.2.3.4 foo@e4.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e4.example.com" ("e4.example.com") spf.go:160: check e4.example.com 1 spf.go:176: dns record "v=spf1 ip6:::1.1.1.1//33" spf.go:256: ip ok, permerror invalid mask yml_test.go:234: success: permerror, invalid mask [cidr6-bad] yml_test.go:225: test cidr6-33-ip4 yml_test.go:227: checkhost 1.2.3.4 foo@e5.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e5.example.com" ("e5.example.com") spf.go:160: check e5.example.com 1 spf.go:176: dns record "v=spf1 ip6:Cafe:Babe:8000::/33" spf.go:284: fallback to neutral yml_test.go:234: success: neutral, [cidr6-33-ip4] yml_test.go:152: suite: Semantics of exp and other modifiers yml_test.go:157: domain e20.example.com yml_test.go:159: SPF: [v=spf1 default=+] yml_test.go:157: domain e22.example.com yml_test.go:159: SPF: [v=spf1 exp=mail.example.com -all] yml_test.go:157: domain e4.example.com yml_test.go:159: SPF: [v=spf1 -all exp=exp2.example.com] yml_test.go:157: domain e7.example.com yml_test.go:159: SPF: [v=spf1 include:e3.example.com -all exp=exp3.example.com] yml_test.go:157: domain e14.example.com yml_test.go:159: SPF: [v=spf1 exp=e13msg.example.com -all exp=e11msg.example.com] yml_test.go:157: domain e16.example.com yml_test.go:159: SPF: [v=spf1 exp=-all] yml_test.go:157: domain nonascii.example.com yml_test.go:159: SPF: [v=spf1 exp=badexp.example.com -all] yml_test.go:157: domain testimplicit.example.com yml_test.go:159: SPF: [v=spf1 a -all] yml_test.go:159: A: [192.0.2.2] yml_test.go:157: domain e21.example.com yml_test.go:159: SPF: [v=spf1 exp=e21msg.example.com -all] yml_test.go:157: domain e21msg.example.com yml_test.go:159: TIMEOUT yml_test.go:157: domain badexp.example.com yml_test.go:159: TXT: [Explanation] yml_test.go:157: domain e6.example.com yml_test.go:159: SPF: [v=spf1 =all] yml_test.go:157: domain e8.example.com yml_test.go:159: SPF: [v=spf1 -all exp=exp4.example.com] yml_test.go:157: domain e10.example.com yml_test.go:159: SPF: [v=spf1 redirect=erehwon.example.com] yml_test.go:157: domain e13msg.example.com yml_test.go:159: TXT: [The %{x}-files.] yml_test.go:157: domain e15.example.com yml_test.go:159: SPF: [v=spf1 redirect=e12.example.com -all redirect=e12.example.com] yml_test.go:157: domain e18.example.com yml_test.go:159: SPF: [v=spf1 ?all redirect=] yml_test.go:157: domain e2.example.com yml_test.go:159: SPF: [v=spf1 -all] yml_test.go:157: domain e11.example.com yml_test.go:159: SPF: [v=spf1 -all exp=e11msg.example.com] yml_test.go:157: domain e13.example.com yml_test.go:159: SPF: [v=spf1 exp=e13msg.example.com -all] yml_test.go:157: domain tworecs.example.com yml_test.go:159: SPF: [v=spf1 exp=twoexp.example.com -all] yml_test.go:157: domain exp2.example.com yml_test.go:159: TXT: [See me.] yml_test.go:157: domain exp3.example.com yml_test.go:159: TXT: [Correct!] yml_test.go:157: domain e19.example.com yml_test.go:159: SPF: [v=spf1 default=pass] yml_test.go:157: domain e9.example.com yml_test.go:159: SPF: [v=spf1 -all foo=%abc] yml_test.go:157: domain e11msg.example.com yml_test.go:159: TXT: [Answer a fool according to his folly.] yml_test.go:159: TXT: [Do not answer a fool according to his folly.] yml_test.go:157: domain e12.example.com yml_test.go:159: SPF: [v=spf1 exp= -all] yml_test.go:157: domain twoexp.example.com yml_test.go:159: TXT: [one] yml_test.go:159: TXT: [two] yml_test.go:157: domain e23.example.com yml_test.go:159: SPF: [v=spf1 a:erehwon.example.com a:foobar.com exp=nxdomain.com -all] yml_test.go:157: domain exp1.example.com yml_test.go:159: TXT: [No-see-um] yml_test.go:157: domain exp4.example.com yml_test.go:159: TXT: [%{l} in implementation] yml_test.go:157: domain e5.example.com yml_test.go:159: SPF: [v=spf1 1up=foo] yml_test.go:157: domain e24.example.com yml_test.go:159: SPF: [v=spf1 redirect=testimplicit.example.com] yml_test.go:159: A: [192.0.2.1] yml_test.go:157: domain e17.example.com yml_test.go:159: SPF: [v=spf1 redirect=-all ?all] yml_test.go:157: domain mail.example.com yml_test.go:159: A: [1.2.3.4] yml_test.go:157: domain e1.example.com yml_test.go:159: SPF: [v=spf1 exp=exp1.example.com redirect=e2.example.com] yml_test.go:157: domain e3.example.com yml_test.go:159: SPF: [v=spf1 exp=exp1.example.com redirect=e4.example.com] yml_test.go:225: test non-ascii-exp yml_test.go:227: checkhost 1.2.3.4 foobar@nonascii.example.com spf.go:129: check host with sender "1.2.3.4" "hosed" "foobar@nonascii.example.com" ("nonascii.example.com") spf.go:160: check nonascii.example.com 1 spf.go:176: dns record "v=spf1 exp=badexp.example.com -all" spf.go:270: exp= not used, skipping spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [non-ascii-exp] yml_test.go:225: test exp-void yml_test.go:227: checkhost 1.2.3.4 foo@e23.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e23.example.com" ("e23.example.com") spf.go:160: check e23.example.com 1 spf.go:176: dns record "v=spf1 a:erehwon.example.com a:foobar.com exp=nxdomain.com -all" spf.go:526: masks on "a:erehwon.example.com": ["a:erehwon.example.com" ":erehwon.example.com" "erehwon.example.com" "" "" "" ""] "erehwon.example.com" {-1 -1} spf.go:526: masks on "a:foobar.com": ["a:foobar.com" ":foobar.com" "foobar.com" "" "" "" ""] "foobar.com" {-1 -1} spf.go:270: exp= not used, skipping spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [exp-void] yml_test.go:225: test redirect-implicit yml_test.go:227: checkhost 192.0.2.2 bar@e24.example.com spf.go:129: check host with sender "192.0.2.2" "e24.example.com" "bar@e24.example.com" ("e24.example.com") spf.go:160: check e24.example.com 1 spf.go:176: dns record "v=spf1 redirect=testimplicit.example.com" spf.go:273: redirect, "redirect=testimplicit.example.com" spf.go:160: check testimplicit.example.com 2 spf.go:176: dns record "v=spf1 a -all" spf.go:526: masks on "a": ["a" "" "" "" "" "" ""] "testimplicit.example.com" {-1 -1} spf.go:561: mx matched 192.0.2.2, 192.0.2.2, {-1 -1} spf.go:246: a ok, pass matched 'a' yml_test.go:234: success: pass, matched 'a' [redirect-implicit] yml_test.go:225: test redirect-twice yml_test.go:227: checkhost 1.2.3.4 foo@e15.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e15.example.com" ("e15.example.com") spf.go:160: check e15.example.com 1 spf.go:176: dns record "v=spf1 redirect=e12.example.com -all redirect=e12.example.com" yml_test.go:234: success: permerror, invalid domain [redirect-twice] yml_test.go:225: test include-ignores-exp yml_test.go:227: checkhost 1.2.3.4 foo@e7.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e7.example.com" ("e7.example.com") spf.go:160: check e7.example.com 1 spf.go:176: dns record "v=spf1 include:e3.example.com -all exp=exp3.example.com" spf.go:160: check e3.example.com 2 spf.go:176: dns record "v=spf1 exp=exp1.example.com redirect=e4.example.com" spf.go:270: exp= not used, skipping spf.go:273: redirect, "redirect=e4.example.com" spf.go:160: check e4.example.com 3 spf.go:176: dns record "v=spf1 -all exp=exp2.example.com" spf.go:237: fail matched all spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [include-ignores-exp] yml_test.go:225: test redirect-cancels-prior-exp yml_test.go:227: checkhost 1.2.3.4 foo@e3.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e3.example.com" ("e3.example.com") spf.go:160: check e3.example.com 1 spf.go:176: dns record "v=spf1 exp=exp1.example.com redirect=e4.example.com" spf.go:270: exp= not used, skipping spf.go:273: redirect, "redirect=e4.example.com" spf.go:160: check e4.example.com 2 spf.go:176: dns record "v=spf1 -all exp=exp2.example.com" spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [redirect-cancels-prior-exp] yml_test.go:225: test invalid-modifier yml_test.go:227: checkhost 1.2.3.4 foo@e5.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e5.example.com" ("e5.example.com") spf.go:160: check e5.example.com 1 spf.go:176: dns record "v=spf1 1up=foo" spf.go:277: permerror, unknown field yml_test.go:234: success: permerror, unknown field [invalid-modifier] yml_test.go:225: test exp-multiple-txt yml_test.go:227: checkhost 1.2.3.4 foo@e11.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e11.example.com" ("e11.example.com") spf.go:160: check e11.example.com 1 spf.go:176: dns record "v=spf1 -all exp=e11msg.example.com" spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [exp-multiple-txt] yml_test.go:225: test redirect-none yml_test.go:227: checkhost 1.2.3.4 foo@e10.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e10.example.com" ("e10.example.com") spf.go:160: check e10.example.com 1 spf.go:176: dns record "v=spf1 redirect=erehwon.example.com" spf.go:273: redirect, "redirect=erehwon.example.com" spf.go:160: check erehwon.example.com 2 spf.go:176: dns record "" yml_test.go:234: success: permerror, no DNS record found [redirect-none] yml_test.go:225: test empty-modifier-name yml_test.go:227: checkhost 1.2.3.4 foo@e6.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e6.example.com" ("e6.example.com") spf.go:160: check e6.example.com 1 spf.go:176: dns record "v=spf1 =all" spf.go:277: permerror, unknown field yml_test.go:234: success: permerror, unknown field [empty-modifier-name] yml_test.go:225: test exp-dns-error yml_test.go:227: checkhost 1.2.3.4 foo@e21.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e21.example.com" ("e21.example.com") spf.go:160: check e21.example.com 1 spf.go:176: dns record "v=spf1 exp=e21msg.example.com -all" spf.go:270: exp= not used, skipping spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [exp-dns-error] yml_test.go:225: test explanation-syntax-error yml_test.go:227: checkhost 1.2.3.4 foo@e13.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e13.example.com" ("e13.example.com") spf.go:160: check e13.example.com 1 spf.go:176: dns record "v=spf1 exp=e13msg.example.com -all" spf.go:270: exp= not used, skipping spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [explanation-syntax-error] yml_test.go:225: test two-exp-records yml_test.go:227: checkhost 1.2.3.4 foobar@tworecs.example.com spf.go:129: check host with sender "1.2.3.4" "hosed" "foobar@tworecs.example.com" ("tworecs.example.com") spf.go:160: check tworecs.example.com 1 spf.go:176: dns record "v=spf1 exp=twoexp.example.com -all" spf.go:270: exp= not used, skipping spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [two-exp-records] yml_test.go:225: test redirect-cancels-exp yml_test.go:227: checkhost 1.2.3.4 foo@e1.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e1.example.com" ("e1.example.com") spf.go:160: check e1.example.com 1 spf.go:176: dns record "v=spf1 exp=exp1.example.com redirect=e2.example.com" spf.go:270: exp= not used, skipping spf.go:273: redirect, "redirect=e2.example.com" spf.go:160: check e2.example.com 2 spf.go:176: dns record "v=spf1 -all" spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [redirect-cancels-exp] yml_test.go:225: test dorky-sentinel yml_test.go:227: checkhost 1.2.3.4 Macro Error@e8.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "Macro Error@e8.example.com" ("e8.example.com") spf.go:160: check e8.example.com 1 spf.go:176: dns record "v=spf1 -all exp=exp4.example.com" spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [dorky-sentinel] yml_test.go:225: test exp-no-txt yml_test.go:227: checkhost 1.2.3.4 foo@e22.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e22.example.com" ("e22.example.com") spf.go:160: check e22.example.com 1 spf.go:176: dns record "v=spf1 exp=mail.example.com -all" spf.go:270: exp= not used, skipping spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [exp-no-txt] yml_test.go:152: suite: Macro expansion rules yml_test.go:157: domain msg8.example.com yml_test.go:159: TXT: [http://example.com/why.html?l=%{L}] yml_test.go:157: domain bar.foo.user.example.com yml_test.go:159: A: [127.0.0.2] yml_test.go:157: domain example.com yml_test.go:159: A: [192.168.90.76] yml_test.go:159: SPF: [v=spf1 redirect=%{d}.d.spf.example.com.] yml_test.go:157: domain e4msg.example.com yml_test.go:159: TXT: [%{c} is queried as %{ir}.%{v}.arpa] yml_test.go:157: domain macro%percent space%20url-space.example.com yml_test.go:159: A: [1.2.3.4] yml_test.go:157: domain somewhat.long.exp.example.com yml_test.go:159: SPF: [v=spf1 -all exp=foobar.%{o}.%{o}.%{o}.%{o}.%{o}.%{o}.%{o}.%{o}.example.com] yml_test.go:157: domain e5.example.com yml_test.go:159: SPF: [v=spf1 a:%{a}.example.com -all] yml_test.go:157: domain e6.example.com yml_test.go:159: SPF: [v=spf1 -all exp=e6msg.example.com] yml_test.go:157: domain 41.218.168.192.in-addr.arpa yml_test.go:159: PTR: [mx.example.com] yml_test.go:157: domain msg.example.com yml_test.go:159: TXT: [This is a test.] yml_test.go:157: domain e1.example.com yml_test.go:159: SPF: [v=spf1 -exists:%(ir).sbl.example.com ?all] yml_test.go:157: domain 40.218.168.192.example.com yml_test.go:159: TXT: [Connections from %{c} not authorized.] yml_test.go:157: domain e9.example.com yml_test.go:159: SPF: [v=spf1 a:%{H} -all] yml_test.go:157: domain e10.example.com yml_test.go:159: SPF: [v=spf1 -include:_spfh.%{d2} ip4:1.2.3.0/24 -all] yml_test.go:157: domain _spfh.example.com yml_test.go:159: SPF: [v=spf1 -a:%{h} +all] yml_test.go:157: domain example.com.d.spf.example.com yml_test.go:159: SPF: [v=spf1 redirect=a.spf.example.com] yml_test.go:157: domain a.spf.example.com yml_test.go:159: SPF: [v=spf1 include:o.spf.example.com. ~all] yml_test.go:157: 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:159: PTR: [mx.example.com] yml_test.go:157: domain e7.example.com yml_test.go:159: SPF: [v=spf1 exists:%{p}.should.example.com ~exists:%{p}.ok.example.com] yml_test.go:157: 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:159: TXT: [Congratulations! That was tricky.] yml_test.go:157: domain 40.218.168.192.in-addr.arpa yml_test.go:159: PTR: [mx.example.com] yml_test.go:157: domain e3.example.com yml_test.go:159: SPF: [v=spf1 -all exp=%{ir}.example.com] yml_test.go:157: domain mx.example.com yml_test.go:159: A: [192.168.218.41] yml_test.go:159: A: [192.168.218.42] yml_test.go:159: AAAA: [CAFE:BABE::2] yml_test.go:159: AAAA: [CAFE:BABE::3] yml_test.go:157: domain mx.e7.example.com.should.example.com yml_test.go:159: A: [127.0.0.2] yml_test.go:157: domain e8.example.com yml_test.go:159: SPF: [v=spf1 -all exp=msg8.%{D2}] yml_test.go:157: domain e11.example.com yml_test.go:159: SPF: [v=spf1 exists:%{i}.%{l2r-}.user.%{d2}] yml_test.go:157: domain e1t.example.com yml_test.go:159: SPF: [v=spf1 exists:foo%.sbl.example.com ?all] yml_test.go:157: domain e1a.example.com yml_test.go:159: SPF: [v=spf1 a:macro%%percent%_%_space%-url-space.example.com -all] yml_test.go:157: domain e1e.example.com yml_test.go:159: SPF: [v=spf1 exists:foo%(ir).sbl.example.com ?all] yml_test.go:157: domain e4.example.com yml_test.go:159: SPF: [v=spf1 -all exp=e4msg.example.com] yml_test.go:157: domain mx.e7.example.com yml_test.go:159: A: [192.168.218.42] yml_test.go:157: domain e12.example.com yml_test.go:159: SPF: [v=spf1 exists:%{l2r+-}.user.%{d2}] yml_test.go:157: domain msgbas2x.cos.example.com yml_test.go:159: A: [192.168.218.40] yml_test.go:157: domain exp.example.com yml_test.go:159: SPF: [v=spf1 exp=msg.example.com. -all] yml_test.go:157: 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:159: PTR: [mx.example.com] yml_test.go:157: domain 1.2.3.4.gladstone.philip.user.example.com yml_test.go:159: A: [127.0.0.2] yml_test.go:157: domain e6msg.example.com yml_test.go:159: TXT: [connect from %{p}] yml_test.go:157: domain 42.218.168.192.in-addr.arpa yml_test.go:159: PTR: [mx.example.com] yml_test.go:159: PTR: [mx.e7.example.com] yml_test.go:157: domain mx.example.com.ok.example.com yml_test.go:159: A: [127.0.0.2] yml_test.go:157: domain o.spf.example.com yml_test.go:159: SPF: [v=spf1 ip4:192.168.218.40] yml_test.go:157: domain e2.example.com yml_test.go:159: SPF: [v=spf1 -all exp=%{r}.example.com] yml_test.go:225: test trailing-dot-exp yml_test.go:227: checkhost 192.168.218.40 test@exp.example.com spf.go:129: check host with sender "192.168.218.40" "msgbas2x.cos.example.com" "test@exp.example.com" ("exp.example.com") spf.go:160: check exp.example.com 1 spf.go:176: dns record "v=spf1 exp=msg.example.com. -all" spf.go:270: exp= not used, skipping spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [trailing-dot-exp] yml_test.go:225: test invalid-macro-char yml_test.go:227: checkhost 192.168.218.40 test@e1.example.com spf.go:129: check host with sender "192.168.218.40" "msgbas2x.cos.example.com" "test@e1.example.com" ("e1.example.com") spf.go:160: check e1.example.com 1 spf.go:176: dns record "v=spf1 -exists:%(ir).sbl.example.com ?all" spf.go:266: exists ok, permerror invalid macro yml_test.go:234: success: permerror, invalid macro [invalid-macro-char] yml_test.go:225: test v-macro-ip4 yml_test.go:227: checkhost 192.168.218.40 test@e4.example.com spf.go:129: check host with sender "192.168.218.40" "msgbas2x.cos.example.com" "test@e4.example.com" ("e4.example.com") spf.go:160: check e4.example.com 1 spf.go:176: dns record "v=spf1 -all exp=e4msg.example.com" spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [v-macro-ip4] yml_test.go:225: test p-macro-ip4-novalid yml_test.go:227: checkhost 192.168.218.40 test@e6.example.com spf.go:129: check host with sender "192.168.218.40" "msgbas2x.cos.example.com" "test@e6.example.com" ("e6.example.com") spf.go:160: check e6.example.com 1 spf.go:176: dns record "v=spf1 -all exp=e6msg.example.com" spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [p-macro-ip4-novalid] yml_test.go:225: test invalid-hello-macro yml_test.go:227: checkhost 192.168.218.40 test@e9.example.com spf.go:129: check host with sender "192.168.218.40" "JUMPIN' JUPITER" "test@e9.example.com" ("e9.example.com") spf.go:160: check e9.example.com 1 spf.go:176: dns record "v=spf1 a:%{H} -all" spf.go:526: masks on "a:%{H}": ["a:%{H}" ":%{H}" "%{H}" "" "" "" ""] "%{H}" {-1 -1} spf.go:708: macro "H": ["H" "H" "" "" ""] spf.go:805: macro expanded "%{H}" to "e9.example.com" spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [invalid-hello-macro] yml_test.go:225: test trailing-dot-domain yml_test.go:227: checkhost 192.168.218.40 test@example.com spf.go:129: check host with sender "192.168.218.40" "msgbas2x.cos.example.com" "test@example.com" ("example.com") spf.go:160: check example.com 1 spf.go:176: dns record "v=spf1 redirect=%{d}.d.spf.example.com." spf.go:273: redirect, "redirect=%{d}.d.spf.example.com." spf.go:708: macro "d": ["d" "d" "" "" ""] spf.go:805: macro expanded "%{d}.d.spf.example.com." to "example.com.d.spf.example.com." spf.go:160: check example.com.d.spf.example.com. 2 spf.go:176: dns record "v=spf1 redirect=a.spf.example.com" spf.go:273: redirect, "redirect=a.spf.example.com" spf.go:160: check a.spf.example.com 3 spf.go:176: dns record "v=spf1 include:o.spf.example.com. ~all" spf.go:160: check o.spf.example.com. 4 spf.go:176: dns record "v=spf1 ip4:192.168.218.40" spf.go:256: ip ok, pass matched 'ip' spf.go:241: include ok, pass matched 'ip' yml_test.go:234: success: pass, matched 'ip' [trailing-dot-domain] yml_test.go:225: test exp-txt-macro-char yml_test.go:227: checkhost 192.168.218.40 test@e3.example.com spf.go:129: check host with sender "192.168.218.40" "msgbas2x.cos.example.com" "test@e3.example.com" ("e3.example.com") spf.go:160: check e3.example.com 1 spf.go:176: dns record "v=spf1 -all exp=%{ir}.example.com" spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [exp-txt-macro-char] yml_test.go:225: test v-macro-ip6 yml_test.go:227: checkhost cafe:babe::1 test@e4.example.com spf.go:129: check host with sender "cafe:babe::1" "msgbas2x.cos.example.com" "test@e4.example.com" ("e4.example.com") spf.go:160: check e4.example.com 1 spf.go:176: dns record "v=spf1 -all exp=e4msg.example.com" spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [v-macro-ip6] yml_test.go:225: test p-macro-ip4-valid yml_test.go:227: checkhost 192.168.218.41 test@e6.example.com spf.go:129: check host with sender "192.168.218.41" "msgbas2x.cos.example.com" "test@e6.example.com" ("e6.example.com") spf.go:160: check e6.example.com 1 spf.go:176: dns record "v=spf1 -all exp=e6msg.example.com" spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [p-macro-ip4-valid] yml_test.go:225: test p-macro-ip6-novalid yml_test.go:227: checkhost cafe:babe::1 test@e6.example.com spf.go:129: check host with sender "cafe:babe::1" "msgbas2x.cos.example.com" "test@e6.example.com" ("e6.example.com") spf.go:160: check e6.example.com 1 spf.go:176: dns record "v=spf1 -all exp=e6msg.example.com" spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [p-macro-ip6-novalid] yml_test.go:225: test hello-domain-literal yml_test.go:227: checkhost 192.168.218.40 test@e9.example.com spf.go:129: check host with sender "192.168.218.40" "[192.168.218.40]" "test@e9.example.com" ("e9.example.com") spf.go:160: check e9.example.com 1 spf.go:176: dns record "v=spf1 a:%{H} -all" spf.go:526: masks on "a:%{H}": ["a:%{H}" ":%{H}" "%{H}" "" "" "" ""] "%{H}" {-1 -1} spf.go:708: macro "H": ["H" "H" "" "" ""] spf.go:805: macro expanded "%{H}" to "e9.example.com" spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [hello-domain-literal] yml_test.go:225: test macro-multiple-delimiters yml_test.go:227: checkhost 1.2.3.4 foo-bar+zip+quux@e12.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo-bar+zip+quux@e12.example.com" ("e12.example.com") spf.go:160: check e12.example.com 1 spf.go:176: dns record "v=spf1 exists:%{l2r+-}.user.%{d2}" spf.go:708: macro "l2r+-": ["l2r+-" "l" "2" "r" "+-"] spf.go:708: macro "d2": ["d2" "d" "2" "" ""] spf.go:805: macro expanded "%{l2r+-}.user.%{d2}" to "bar.foo.user.example.com" spf.go:266: exists ok, pass matched 'exists' yml_test.go:234: success: pass, matched 'exists' [macro-multiple-delimiters] yml_test.go:225: test invalid-embedded-macro-char yml_test.go:227: checkhost 192.168.218.40 test@e1e.example.com spf.go:129: check host with sender "192.168.218.40" "msgbas2x.cos.example.com" "test@e1e.example.com" ("e1e.example.com") spf.go:160: check e1e.example.com 1 spf.go:176: dns record "v=spf1 exists:foo%(ir).sbl.example.com ?all" spf.go:266: exists ok, permerror invalid macro yml_test.go:234: success: permerror, invalid macro [invalid-embedded-macro-char] yml_test.go:225: test invalid-trailing-macro-char yml_test.go:227: checkhost 192.168.218.40 test@e1t.example.com spf.go:129: check host with sender "192.168.218.40" "msgbas2x.cos.example.com" "test@e1t.example.com" ("e1t.example.com") spf.go:160: check e1t.example.com 1 spf.go:176: dns record "v=spf1 exists:foo%.sbl.example.com ?all" spf.go:266: exists ok, permerror invalid macro yml_test.go:234: success: permerror, invalid macro [invalid-trailing-macro-char] yml_test.go:225: test undef-macro yml_test.go:227: checkhost cafe:babe::c0a8:da28 test@e5.example.com spf.go:129: check host with sender "cafe:babe::c0a8:da28" "msgbas2x.cos.example.com" "test@e5.example.com" ("e5.example.com") spf.go:160: check e5.example.com 1 spf.go:176: dns record "v=spf1 a:%{a}.example.com -all" spf.go:526: masks on "a:%{a}.example.com": ["a:%{a}.example.com" ":%{a}.example.com" "%{a}.example.com" "" "" "" ""] "%{a}.example.com" {-1 -1} spf.go:708: macro "a": [] spf.go:246: a ok, permerror invalid macro yml_test.go:234: success: permerror, invalid macro [undef-macro] yml_test.go:225: test p-macro-ip6-valid yml_test.go:227: checkhost cafe:babe::3 test@e6.example.com spf.go:129: check host with sender "cafe:babe::3" "msgbas2x.cos.example.com" "test@e6.example.com" ("e6.example.com") spf.go:160: check e6.example.com 1 spf.go:176: dns record "v=spf1 -all exp=e6msg.example.com" spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [p-macro-ip6-valid] yml_test.go:225: test require-valid-helo yml_test.go:227: checkhost 1.2.3.4 test@e10.example.com spf.go:129: check host with sender "1.2.3.4" "OEMCOMPUTER" "test@e10.example.com" ("e10.example.com") spf.go:160: check e10.example.com 1 spf.go:176: dns record "v=spf1 -include:_spfh.%{d2} ip4:1.2.3.0/24 -all" spf.go:708: macro "d2": ["d2" "d" "2" "" ""] spf.go:805: macro expanded "_spfh.%{d2}" to "_spfh.example.com" spf.go:160: check _spfh.example.com 2 spf.go:176: dns record "v=spf1 -a:%{h} +all" spf.go:526: masks on "a:%{h}": ["a:%{h}" ":%{h}" "%{h}" "" "" "" ""] "%{h}" {-1 -1} spf.go:708: macro "h": ["h" "h" "" "" ""] spf.go:805: macro expanded "%{h}" to "_spfh.example.com" spf.go:237: pass matched all spf.go:241: include ok, fail matched 'all' yml_test.go:234: success: fail, matched 'all' [require-valid-helo] yml_test.go:225: test macro-mania-in-domain yml_test.go:227: checkhost 1.2.3.4 test@e1a.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "test@e1a.example.com" ("e1a.example.com") spf.go:160: check e1a.example.com 1 spf.go:176: dns record "v=spf1 a:macro%%percent%_%_space%-url-space.example.com -all" spf.go:526: masks on "a:macro%%percent%_%_space%-url-space.example.com": ["a:macro%%percent%_%_space%-url-space.example.com" ":macro%%percent%_%_space%-url-space.example.com" "macro%%percent%_%_space%-url-space.example.com" "" "" "" ""] "macro%%percent%_%_space%-url-space.example.com" {-1 -1} spf.go:805: macro expanded "macro%%percent%_%_space%-url-space.example.com" to "macro%percent space%20url-space.example.com" spf.go:561: mx matched 1.2.3.4, 1.2.3.4, {-1 -1} spf.go:246: a ok, pass matched 'a' yml_test.go:234: success: pass, matched 'a' [macro-mania-in-domain] yml_test.go:225: test domain-name-truncation yml_test.go:227: checkhost 192.168.218.40 test@somewhat.long.exp.example.com spf.go:129: check host with sender "192.168.218.40" "msgbas2x.cos.example.com" "test@somewhat.long.exp.example.com" ("somewhat.long.exp.example.com") spf.go:160: check somewhat.long.exp.example.com 1 spf.go:176: dns record "v=spf1 -all exp=foobar.%{o}.%{o}.%{o}.%{o}.%{o}.%{o}.%{o}.%{o}.example.com" spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [domain-name-truncation] yml_test.go:225: test upper-macro yml_test.go:227: checkhost 192.168.218.42 ~jack&jill=up-a_b3.c@e8.example.com spf.go:129: check host with sender "192.168.218.42" "msgbas2x.cos.example.com" "~jack&jill=up-a_b3.c@e8.example.com" ("e8.example.com") spf.go:160: check e8.example.com 1 spf.go:176: dns record "v=spf1 -all exp=msg8.%{D2}" spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [upper-macro] yml_test.go:225: test macro-reverse-split-on-dash yml_test.go:227: checkhost 1.2.3.4 philip-gladstone-test@e11.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "philip-gladstone-test@e11.example.com" ("e11.example.com") spf.go:160: check e11.example.com 1 spf.go:176: dns record "v=spf1 exists:%{i}.%{l2r-}.user.%{d2}" spf.go:708: macro "i": ["i" "i" "" "" ""] spf.go:708: macro "l2r-": ["l2r-" "l" "2" "r" "-"] spf.go:708: macro "d2": ["d2" "d" "2" "" ""] spf.go:805: macro expanded "%{i}.%{l2r-}.user.%{d2}" to "1.2.3.4.gladstone.philip.user.example.com" spf.go:266: exists ok, pass matched 'exists' yml_test.go:234: success: pass, matched 'exists' [macro-reverse-split-on-dash] yml_test.go:152: suite: Processing limits yml_test.go:157: domain 5.3.2.1.in-addr.arpa yml_test.go:159: PTR: [e1.example.com.] yml_test.go:159: PTR: [e2.example.com.] yml_test.go:159: PTR: [e3.example.com.] yml_test.go:159: PTR: [e4.example.com.] yml_test.go:159: PTR: [example.com.] yml_test.go:159: PTR: [e6.example.com.] yml_test.go:159: PTR: [e7.example.com.] yml_test.go:159: PTR: [e8.example.com.] yml_test.go:159: PTR: [e9.example.com.] yml_test.go:159: PTR: [e10.example.com.] yml_test.go:159: PTR: [e5.example.com.] yml_test.go:157: domain e6.example.com yml_test.go:159: SPF: [v=spf1 a mx a mx a mx a mx a ptr ip4:1.2.3.4 -all] yml_test.go:159: A: [1.2.3.8] yml_test.go:159: MX: {10 e6.example.com} yml_test.go:157: domain e9.example.com yml_test.go:159: SPF: [v=spf1 a include:inc.example.com a ip4:1.2.3.4 -all] yml_test.go:159: A: [1.2.3.21] yml_test.go:157: domain e12.example.com yml_test.go:159: TXT: [v=spf1 a:err.example.com a:err1.example.com ?all] yml_test.go:157: domain mail.example.com yml_test.go:159: A: [1.2.3.4] yml_test.go:157: domain e2.example.com yml_test.go:159: SPF: [v=spf1 include:e3.example.com] yml_test.go:159: A: [1.2.3.7] yml_test.go:157: domain e4.example.com yml_test.go:159: SPF: [v=spf1 mx] yml_test.go:159: MX: {0 mail.example.com} yml_test.go:159: MX: {1 mail.example.com} yml_test.go:159: MX: {2 mail.example.com} yml_test.go:159: MX: {3 mail.example.com} yml_test.go:159: MX: {4 mail.example.com} yml_test.go:159: MX: {5 mail.example.com} yml_test.go:159: MX: {6 mail.example.com} yml_test.go:159: MX: {7 mail.example.com} yml_test.go:159: MX: {8 mail.example.com} yml_test.go:159: MX: {9 mail.example.com} yml_test.go:159: MX: {10 e4.example.com} yml_test.go:159: A: [1.2.3.5] yml_test.go:157: domain e5.example.com yml_test.go:159: SPF: [v=spf1 ptr] yml_test.go:159: A: [1.2.3.5] yml_test.go:157: domain inc.example.com yml_test.go:159: SPF: [v=spf1 a a a a a a a a] yml_test.go:159: A: [1.2.3.10] yml_test.go:157: domain e10.example.com yml_test.go:159: SPF: [v=spf1 a -all] yml_test.go:159: A: [1.2.3.1] yml_test.go:159: A: [1.2.3.2] yml_test.go:159: A: [1.2.3.3] yml_test.go:159: A: [1.2.3.4] yml_test.go:159: A: [1.2.3.5] yml_test.go:159: A: [1.2.3.6] yml_test.go:159: A: [1.2.3.7] yml_test.go:159: A: [1.2.3.8] yml_test.go:159: A: [1.2.3.9] yml_test.go:159: A: [1.2.3.10] yml_test.go:159: A: [1.2.3.11] yml_test.go:159: A: [1.2.3.12] yml_test.go:157: domain e11.example.com yml_test.go:159: TXT: [v=spf1 a:err.example.com a:err1.example.com a:err2.example.com ?all] yml_test.go:157: domain e1.example.com yml_test.go:159: SPF: [v=spf1 ip4:1.1.1.1 redirect=e1.example.com] yml_test.go:159: A: [1.2.3.6] yml_test.go:157: domain e3.example.com yml_test.go:159: SPF: [v=spf1 include:e2.example.com] yml_test.go:159: A: [1.2.3.8] yml_test.go:157: domain e7.example.com yml_test.go:159: SPF: [v=spf1 a mx a mx a mx a mx a ptr a ip4:1.2.3.4 -all] yml_test.go:159: A: [1.2.3.20] yml_test.go:157: domain e8.example.com yml_test.go:159: SPF: [v=spf1 a include:inc.example.com ip4:1.2.3.4 mx -all] yml_test.go:159: A: [1.2.3.4] yml_test.go:225: test false-a-limit yml_test.go:227: checkhost 1.2.3.12 foo@e10.example.com spf.go:129: check host with sender "1.2.3.12" "mail.example.com" "foo@e10.example.com" ("e10.example.com") spf.go:160: check e10.example.com 1 spf.go:176: dns record "v=spf1 a -all" spf.go:526: masks on "a": ["a" "" "" "" "" "" ""] "e10.example.com" {-1 -1} spf.go:561: mx matched 1.2.3.12, 1.2.3.12, {-1 -1} spf.go:246: a ok, pass matched 'a' yml_test.go:234: success: pass, matched 'a' [false-a-limit] yml_test.go:225: test include-at-limit yml_test.go:227: checkhost 1.2.3.4 foo@e8.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e8.example.com" ("e8.example.com") spf.go:160: check e8.example.com 1 spf.go:176: dns record "v=spf1 a include:inc.example.com ip4:1.2.3.4 mx -all" spf.go:526: masks on "a": ["a" "" "" "" "" "" ""] "e8.example.com" {-1 -1} spf.go:561: mx matched 1.2.3.4, 1.2.3.4, {-1 -1} spf.go:246: a ok, pass matched 'a' yml_test.go:234: success: pass, matched 'a' [include-at-limit] yml_test.go:225: test redirect-loop yml_test.go:227: checkhost 1.2.3.4 foo@e1.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e1.example.com" ("e1.example.com") spf.go:160: check e1.example.com 1 spf.go:176: dns record "v=spf1 ip4:1.1.1.1 redirect=e1.example.com" spf.go:273: redirect, "redirect=e1.example.com" spf.go:160: check e1.example.com 2 spf.go:176: dns record "v=spf1 ip4:1.1.1.1 redirect=e1.example.com" spf.go:273: redirect, "redirect=e1.example.com" spf.go:160: check e1.example.com 3 spf.go:176: dns record "v=spf1 ip4:1.1.1.1 redirect=e1.example.com" spf.go:273: redirect, "redirect=e1.example.com" spf.go:160: check e1.example.com 4 spf.go:176: dns record "v=spf1 ip4:1.1.1.1 redirect=e1.example.com" spf.go:273: redirect, "redirect=e1.example.com" spf.go:160: check e1.example.com 5 spf.go:176: dns record "v=spf1 ip4:1.1.1.1 redirect=e1.example.com" spf.go:273: redirect, "redirect=e1.example.com" spf.go:160: check e1.example.com 6 spf.go:176: dns record "v=spf1 ip4:1.1.1.1 redirect=e1.example.com" spf.go:273: redirect, "redirect=e1.example.com" spf.go:160: check e1.example.com 7 spf.go:176: dns record "v=spf1 ip4:1.1.1.1 redirect=e1.example.com" spf.go:273: redirect, "redirect=e1.example.com" spf.go:160: check e1.example.com 8 spf.go:176: dns record "v=spf1 ip4:1.1.1.1 redirect=e1.example.com" spf.go:273: redirect, "redirect=e1.example.com" spf.go:160: check e1.example.com 9 spf.go:176: dns record "v=spf1 ip4:1.1.1.1 redirect=e1.example.com" spf.go:273: redirect, "redirect=e1.example.com" spf.go:160: check e1.example.com 10 spf.go:176: dns record "v=spf1 ip4:1.1.1.1 redirect=e1.example.com" spf.go:273: redirect, "redirect=e1.example.com" spf.go:160: check e1.example.com 11 spf.go:176: dns record "v=spf1 ip4:1.1.1.1 redirect=e1.example.com" spf.go:218: lookup limit reached yml_test.go:234: success: permerror, lookup limit reached [redirect-loop] yml_test.go:225: test mx-limit yml_test.go:227: checkhost 1.2.3.5 foo@e4.example.com spf.go:129: check host with sender "1.2.3.5" "mail.example.com" "foo@e4.example.com" ("e4.example.com") spf.go:160: check e4.example.com 1 spf.go:176: dns record "v=spf1 mx" spf.go:526: masks on "mx": ["mx" "" "" "" "" "" ""] "e4.example.com" {-1 -1} spf.go:251: mx ok, permerror too many MX records yml_test.go:234: success: permerror, too many MX records [mx-limit] yml_test.go:225: test ptr-limit yml_test.go:227: checkhost 1.2.3.5 foo@e5.example.com spf.go:129: check host with sender "1.2.3.5" "mail.example.com" "foo@e5.example.com" ("e5.example.com") spf.go:160: check e5.example.com 1 spf.go:176: dns record "v=spf1 ptr" spf.go:398: ptr forward resolution "e1.example.com." -> ["1.2.3.6"] spf.go:398: ptr forward resolution "e2.example.com." -> ["1.2.3.7"] spf.go:398: ptr forward resolution "e3.example.com." -> ["1.2.3.8"] spf.go:398: ptr forward resolution "e4.example.com." -> ["1.2.3.5"] spf.go:398: ptr forward resolution "example.com." -> [] spf.go:398: ptr forward resolution "e6.example.com." -> ["1.2.3.8"] spf.go:398: ptr forward resolution "e7.example.com." -> ["1.2.3.20"] spf.go:398: ptr forward resolution "e8.example.com." -> ["1.2.3.4"] spf.go:398: ptr forward resolution "e9.example.com." -> ["1.2.3.21"] spf.go:284: fallback to neutral yml_test.go:234: success: neutral, [ptr-limit] yml_test.go:225: test mech-over-limit yml_test.go:227: checkhost 1.2.3.4 foo@e7.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e7.example.com" ("e7.example.com") spf.go:160: check e7.example.com 1 spf.go:176: dns record "v=spf1 a mx a mx a mx a mx a ptr a ip4:1.2.3.4 -all" spf.go:526: masks on "a": ["a" "" "" "" "" "" ""] "e7.example.com" {-1 -1} spf.go:526: masks on "mx": ["mx" "" "" "" "" "" ""] "e7.example.com" {-1 -1} spf.go:526: masks on "a": ["a" "" "" "" "" "" ""] "e7.example.com" {-1 -1} spf.go:526: masks on "mx": ["mx" "" "" "" "" "" ""] "e7.example.com" {-1 -1} spf.go:526: masks on "a": ["a" "" "" "" "" "" ""] "e7.example.com" {-1 -1} spf.go:526: masks on "mx": ["mx" "" "" "" "" "" ""] "e7.example.com" {-1 -1} spf.go:526: masks on "a": ["a" "" "" "" "" "" ""] "e7.example.com" {-1 -1} spf.go:526: masks on "mx": ["mx" "" "" "" "" "" ""] "e7.example.com" {-1 -1} spf.go:526: masks on "a": ["a" "" "" "" "" "" ""] "e7.example.com" {-1 -1} spf.go:407: ptr evaluating "e7.example.com" in [] spf.go:218: lookup limit reached yml_test.go:234: success: permerror, lookup limit reached [mech-over-limit] yml_test.go:225: test include-over-limit yml_test.go:227: checkhost 1.2.3.4 foo@e9.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e9.example.com" ("e9.example.com") spf.go:160: check e9.example.com 1 spf.go:176: dns record "v=spf1 a include:inc.example.com a ip4:1.2.3.4 -all" spf.go:526: masks on "a": ["a" "" "" "" "" "" ""] "e9.example.com" {-1 -1} spf.go:160: check inc.example.com 3 spf.go:176: dns record "v=spf1 a a a a a a a a" spf.go:526: masks on "a": ["a" "" "" "" "" "" ""] "inc.example.com" {-1 -1} spf.go:526: masks on "a": ["a" "" "" "" "" "" ""] "inc.example.com" {-1 -1} spf.go:526: masks on "a": ["a" "" "" "" "" "" ""] "inc.example.com" {-1 -1} spf.go:526: masks on "a": ["a" "" "" "" "" "" ""] "inc.example.com" {-1 -1} spf.go:526: masks on "a": ["a" "" "" "" "" "" ""] "inc.example.com" {-1 -1} spf.go:526: masks on "a": ["a" "" "" "" "" "" ""] "inc.example.com" {-1 -1} spf.go:526: masks on "a": ["a" "" "" "" "" "" ""] "inc.example.com" {-1 -1} spf.go:526: masks on "a": ["a" "" "" "" "" "" ""] "inc.example.com" {-1 -1} spf.go:284: fallback to neutral spf.go:218: lookup limit reached yml_test.go:234: success: permerror, lookup limit reached [include-over-limit] yml_test.go:225: test void-at-limit yml_test.go:227: checkhost 1.2.3.4 foo@e12.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e12.example.com" ("e12.example.com") spf.go:160: check e12.example.com 1 spf.go:176: dns record "v=spf1 a:err.example.com a:err1.example.com ?all" spf.go:526: masks on "a:err.example.com": ["a:err.example.com" ":err.example.com" "err.example.com" "" "" "" ""] "err.example.com" {-1 -1} spf.go:526: masks on "a:err1.example.com": ["a:err1.example.com" ":err1.example.com" "err1.example.com" "" "" "" ""] "err1.example.com" {-1 -1} spf.go:237: neutral matched all yml_test.go:234: success: neutral, matched 'all' [void-at-limit] yml_test.go:225: test include-loop yml_test.go:227: checkhost 1.2.3.4 foo@e2.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "foo@e2.example.com" ("e2.example.com") spf.go:160: check e2.example.com 1 spf.go:176: dns record "v=spf1 include:e3.example.com" spf.go:160: check e3.example.com 2 spf.go:176: dns record "v=spf1 include:e2.example.com" spf.go:160: check e2.example.com 3 spf.go:176: dns record "v=spf1 include:e3.example.com" spf.go:160: check e3.example.com 4 spf.go:176: dns record "v=spf1 include:e2.example.com" spf.go:160: check e2.example.com 5 spf.go:176: dns record "v=spf1 include:e3.example.com" spf.go:160: check e3.example.com 6 spf.go:176: dns record "v=spf1 include:e2.example.com" spf.go:160: check e2.example.com 7 spf.go:176: dns record "v=spf1 include:e3.example.com" spf.go:160: check e3.example.com 8 spf.go:176: dns record "v=spf1 include:e2.example.com" spf.go:160: check e2.example.com 9 spf.go:176: dns record "v=spf1 include:e3.example.com" spf.go:160: check e3.example.com 10 spf.go:176: dns record "v=spf1 include:e2.example.com" spf.go:160: check e2.example.com 11 spf.go:176: dns record "v=spf1 include:e3.example.com" spf.go:218: lookup limit reached spf.go:241: include ok, permerror lookup limit reached spf.go:241: include ok, permerror lookup limit reached spf.go:241: include ok, permerror lookup limit reached spf.go:241: include ok, permerror lookup limit reached spf.go:241: include ok, permerror lookup limit reached spf.go:241: include ok, permerror lookup limit reached spf.go:241: include ok, permerror lookup limit reached spf.go:241: include ok, permerror lookup limit reached spf.go:241: include ok, permerror lookup limit reached spf.go:241: include ok, permerror lookup limit reached yml_test.go:234: success: permerror, lookup limit reached [include-loop] yml_test.go:152: suite: Test cases from implementation bugs yml_test.go:157: domain _expspf.example.org yml_test.go:159: 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:157: domain example.org yml_test.go:159: SPF: [v=spf1 mx redirect=_spf.example.com] yml_test.go:159: MX: {10 smtp.example.org} yml_test.go:159: MX: {10 smtp1.example.com} yml_test.go:157: domain smtp.example.org yml_test.go:159: A: [198.51.100.2] yml_test.go:159: AAAA: [2001:db8:ff0:100::3] yml_test.go:157: domain smtp1.example.com yml_test.go:159: A: [192.0.2.26] yml_test.go:159: AAAA: [2001:db8:ff0:200::2] yml_test.go:157: 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:159: PTR: [smtp6-v.fe.example.org] yml_test.go:157: domain smtp6-v.fe.example.org yml_test.go:159: AAAA: [2001:db8:ff0:100::2] yml_test.go:157: domain _spf.example.com yml_test.go:159: SPF: [v=spf1 ptr:fe.example.org ptr:sgp.example.com exp=_expspf.example.org -all] yml_test.go:225: test bytes-bug yml_test.go:227: checkhost 2001:db8:ff0:100::2 test@example.org spf.go:129: check host with sender "2001:db8:ff0:100::2" "example.org" "test@example.org" ("example.org") spf.go:160: check example.org 1 spf.go:176: dns record "v=spf1 mx redirect=_spf.example.com" spf.go:526: masks on "mx": ["mx" "" "" "" "" "" ""] "example.org" {-1 -1} spf.go:273: redirect, "redirect=_spf.example.com" spf.go:160: check _spf.example.com 5 spf.go:176: dns record "v=spf1 ptr:fe.example.org ptr:sgp.example.com exp=_expspf.example.org -all" spf.go:398: ptr forward resolution "smtp6-v.fe.example.org." -> ["2001:db8:ff0:100::2"] spf.go:407: ptr evaluating "fe.example.org" in ["smtp6-v.fe.example.org."] spf.go:261: ptr ok, pass matched 'ptr' yml_test.go:234: success: pass, matched 'ptr' [bytes-bug] --- PASS: TestRFC7208 (0.13s) === RUN TestPySPF yml_test.go:152: suite: yml_test.go:157: domain lyme.eater.example.co.uk.1.2.3.5.spf.example.net yml_test.go:159: A: [127.0.0.1] yml_test.go:157: domain example.co.uk yml_test.go:159: SPF: [v=spf1 mx/26 exists:%{l}.%{d}.%{i}.spf.example.net -all] yml_test.go:225: test exists-pass yml_test.go:227: checkhost 1.2.3.5 lyme.eater@example.co.uk spf.go:129: check host with sender "1.2.3.5" "mail.example.net" "lyme.eater@example.co.uk" ("example.co.uk") spf.go:160: check example.co.uk 1 spf.go:176: dns record "v=spf1 mx/26 exists:%{l}.%{d}.%{i}.spf.example.net -all" spf.go:526: masks on "mx/26": ["mx/26" "" "" "/26" "26" "" ""] "example.co.uk" {26 -1} spf.go:708: macro "l": ["l" "l" "" "" ""] spf.go:708: macro "d": ["d" "d" "" "" ""] spf.go:708: macro "i": ["i" "i" "" "" ""] spf.go:805: macro expanded "%{l}.%{d}.%{i}.spf.example.net" to "lyme.eater.example.co.uk.1.2.3.5.spf.example.net" spf.go:266: exists ok, pass matched 'exists' yml_test.go:234: success: pass, matched 'exists' [exists-pass] yml_test.go:225: test exists-fail yml_test.go:227: checkhost 1.2.3.4 lyme.eater@example.co.uk spf.go:129: check host with sender "1.2.3.4" "mail.example.net" "lyme.eater@example.co.uk" ("example.co.uk") spf.go:160: check example.co.uk 1 spf.go:176: dns record "v=spf1 mx/26 exists:%{l}.%{d}.%{i}.spf.example.net -all" spf.go:526: masks on "mx/26": ["mx/26" "" "" "/26" "26" "" ""] "example.co.uk" {26 -1} spf.go:708: macro "l": ["l" "l" "" "" ""] spf.go:708: macro "d": ["d" "d" "" "" ""] spf.go:708: macro "i": ["i" "i" "" "" ""] spf.go:805: macro expanded "%{l}.%{d}.%{i}.spf.example.net" to "lyme.eater.example.co.uk.1.2.3.4.spf.example.net" spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [exists-fail] yml_test.go:152: suite: yml_test.go:157: domain examplea.com yml_test.go:159: SPF: [v=spf1 a mx include:b.com] yml_test.go:157: domain exampleb.com yml_test.go:159: SPF: [v=spf1 a mx include:a.com] yml_test.go:157: domain examplec.com yml_test.go:159: SPF: [v=spf1 -all:foobar] yml_test.go:157: domain exampled.com yml_test.go:159: SPF: [v=spf1 a:examplea.com:8080] yml_test.go:157: domain examplee.com yml_test.go:159: SPF: [v=spf1 ip4:1.2.3.4:8080] yml_test.go:157: domain examplef.com yml_test.go:159: SPF: [v=spf1 -all] yml_test.go:159: SPF: [v=spf1 +all] yml_test.go:225: test tworecs yml_test.go:227: checkhost 66.150.186.79 chuckvsr@examplef.com spf.go:129: check host with sender "66.150.186.79" "mail.example.com" "chuckvsr@examplef.com" ("examplef.com") spf.go:160: check examplef.com 1 spf.go:168: multiple dns records yml_test.go:234: success: permerror, multiple matching DNS records [tworecs] yml_test.go:225: test badip yml_test.go:227: checkhost 66.150.186.79 chuckvsr@examplee.com spf.go:129: check host with sender "66.150.186.79" "mail.example.com" "chuckvsr@examplee.com" ("examplee.com") spf.go:160: check examplee.com 1 spf.go:176: dns record "v=spf1 ip4:1.2.3.4:8080" spf.go:256: ip ok, permerror invalid ipX value yml_test.go:234: success: permerror, invalid ipX value [badip] yml_test.go:225: test incloop yml_test.go:227: checkhost 66.150.186.79 chuckvsr@examplea.com spf.go:129: check host with sender "66.150.186.79" "mail.example.com" "chuckvsr@examplea.com" ("examplea.com") spf.go:160: check examplea.com 1 spf.go:176: dns record "v=spf1 a mx include:b.com" spf.go:526: masks on "a": ["a" "" "" "" "" "" ""] "examplea.com" {-1 -1} spf.go:526: masks on "mx": ["mx" "" "" "" "" "" ""] "examplea.com" {-1 -1} spf.go:160: check b.com 4 spf.go:176: dns record "" spf.go:241: include ok, permerror no DNS record found yml_test.go:234: success: permerror, no DNS record found [incloop] yml_test.go:225: test badall yml_test.go:227: checkhost 66.150.186.79 chuckvsr@examplec.com spf.go:129: check host with sender "66.150.186.79" "mail.example.com" "chuckvsr@examplec.com" ("examplec.com") spf.go:160: check examplec.com 1 spf.go:176: dns record "v=spf1 -all:foobar" spf.go:277: permerror, unknown field yml_test.go:234: success: permerror, unknown field [badall] yml_test.go:152: suite: yml_test.go:157: domain example1.com yml_test.go:159: SPF: [v=spf1] yml_test.go:157: domain example2.com yml_test.go:159: SPF: [v=spf1mx] yml_test.go:157: domain mail.example1.com yml_test.go:159: A: [1.2.3.4] yml_test.go:157: domain example3.com yml_test.go:159: SPF: [v=spf1 mx] yml_test.go:159: SPF: [v=spf1 mx] yml_test.go:159: MX: {0 mail.example1.com} yml_test.go:225: test nospace1 yml_test.go:227: checkhost 1.2.3.4 foo@example2.com spf.go:129: check host with sender "1.2.3.4" "mail.example1.com" "foo@example2.com" ("example2.com") spf.go:160: check example2.com 1 spf.go:176: dns record "" yml_test.go:234: success: none, no DNS record found [nospace1] yml_test.go:225: test empty yml_test.go:227: checkhost 1.2.3.4 foo@example1.com spf.go:129: check host with sender "1.2.3.4" "mail1.example1.com" "foo@example1.com" ("example1.com") spf.go:160: check example1.com 1 spf.go:176: dns record "v=spf1" spf.go:284: fallback to neutral yml_test.go:234: success: neutral, [empty] yml_test.go:225: test nospace2 yml_test.go:227: checkhost 1.2.3.4 foo@example3.com spf.go:129: check host with sender "1.2.3.4" "mail.example1.com" "foo@example3.com" ("example3.com") spf.go:160: check example3.com 1 spf.go:176: dns record "v=spf1 mx" spf.go:526: masks on "mx": ["mx" "" "" "" "" "" ""] "example3.com" {-1 -1} spf.go:615: mx matched 1.2.3.4, 1.2.3.4, {-1 -1} spf.go:251: mx ok, pass matched 'mx' yml_test.go:234: success: pass, matched 'mx' [nospace2] yml_test.go:152: suite: yml_test.go:157: domain e3.example.com yml_test.go:159: SPF: [v=spf1 a:mx1.example.com mx:mx1.example.com ~all] yml_test.go:157: domain mail.example.com yml_test.go:159: MX: {0 } yml_test.go:159: SPF: [v=spf1 mx] yml_test.go:157: domain example.com yml_test.go:159: SPF: [v=spf1 -all] yml_test.go:157: domain e1.example.com yml_test.go:159: SPF: [v=spf1 default=-] yml_test.go:157: domain e2.example.com yml_test.go:159: CNAME: [c1.example.com.] yml_test.go:157: domain c1.example.com yml_test.go:159: CNAME: [c2.example.com.] yml_test.go:157: domain c2.example.com yml_test.go:159: SPF: [v=spf1 a a:c1.example.com -all] yml_test.go:159: A: [1.2.3.4] yml_test.go:157: domain mx1.example.com yml_test.go:159: CNAME: [] yml_test.go:225: test null-cname yml_test.go:227: checkhost 1.2.3.4 bar@e3.example.com spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "bar@e3.example.com" ("e3.example.com") spf.go:160: check e3.example.com 1 spf.go:176: dns record "v=spf1 a:mx1.example.com mx:mx1.example.com ~all" spf.go:526: masks on "a:mx1.example.com": ["a:mx1.example.com" ":mx1.example.com" "mx1.example.com" "" "" "" ""] "mx1.example.com" {-1 -1} spf.go:526: masks on "mx:mx1.example.com": ["mx:mx1.example.com" ":mx1.example.com" "mx1.example.com" "" "" "" ""] "mx1.example.com" {-1 -1} spf.go:237: softfail matched all yml_test.go:234: success: softfail, matched 'all' [null-cname] yml_test.go:225: test emptyMX yml_test.go:227: checkhost 1.2.3.4 spf.go:129: check host with sender "1.2.3.4" "mail.example.com" "" ("mail.example.com") spf.go:160: check mail.example.com 1 spf.go:176: dns record "v=spf1 mx" spf.go:526: masks on "mx": ["mx" "" "" "" "" "" ""] "mail.example.com" {-1 -1} spf.go:284: fallback to neutral yml_test.go:234: success: neutral, [emptyMX] yml_test.go:225: test localhost yml_test.go:227: checkhost 127.0.0.1 root@example.com spf.go:129: check host with sender "127.0.0.1" "mail.example.com" "root@example.com" ("example.com") spf.go:160: check example.com 1 spf.go:176: dns record "v=spf1 -all" spf.go:237: fail matched all yml_test.go:234: success: fail, matched 'all' [localhost] --- PASS: TestPySPF (0.01s) PASS ok blitiri.com.ar/go/spf 0.296s create-stamp debian/debhelper-build-stamp dh_testroot -O--buildsystem=golang dh_prep -O--buildsystem=golang dh_auto_install -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.1.0-1_all.deb'. dpkg-genbuildinfo --build=binary dpkg-genchanges --build=binary >../golang-blitiri-go-spf_1.1.0-1_armhf.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: user script /srv/workspace/pbuilder/16804/tmp/hooks/B01_cleanup starting I: user script /srv/workspace/pbuilder/16804/tmp/hooks/B01_cleanup finished 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/16804 and its subdirectories I: Current time: Wed Jul 21 04:11:21 +14 2021 I: pbuilder-time-stamp: 1626790281