# this file is read by test.pl
# 
# it can be used as a common test configurator for all SPF client libraries.
# meng will keep it up to date to match spf1-test.mailzone.com.
# 
# tab-separated format:
# 
#  test_number        i know this starts at 2; test 1 is for loading the test.txt itself
#  sender             where no username@ is provided, substitute droid@ for the localpart
#  client_ip          the IP of the pretend client
#  result             expected result
# [smtp_comment]      optional smtp comment
# [header_comment]    optional header comment (not counting the local "domain name: " prefix)
#
# The sender field can have a ':' in it. In this case the part of the field after the colon
# contains a local policy to be used just before the terminating 'all'.
# 
# most tests have no smtp_comment / header_comment.
# to execute a test, feed the SPF client library the sender / client_ip input tuple,
# and see if you get back the expected result.
# 
# keep the numbers straight with perl -ple 'BEGIN { $num = 1 } s/(?:^|\G)(\d+)(,)?/++$num . "$2"/eg;'

2  localhost.localdomain      127.0.0.1           pass

# '01.spf1-test.mailzone.com:v=spf1                                                             :60
# '02.spf1-test.mailzone.com:v=spf1                                             -all       :60
# '03.spf1-test.mailzone.com:v=spf1                                             ~all:60
# '04.spf1-test.mailzone.com:v=spf1                                             +all   :60::poboxnet
# '05.spf1-test.mailzone.com:v=spf1                                             default=deny   :60
# '06.spf1-test.mailzone.com:v=spf1                                             ?all :60
# '07.spf1-test.mailzone.com:v=spf2                                             default=bogus   :60

3  01.spf1-test.mailzone.com  192.0.2.1           neutral
4  02.spf1-test.mailzone.com  192.0.2.1           fail
5  03.spf1-test.mailzone.com  192.0.2.1           softfail
6  05.spf1-test.mailzone.com  192.0.2.1           fail
7,8,9	06.spf1-test.mailzone.com	192.0.2.1	neutral	/./	192.0.2.1 is neither permitted nor denied by domain of 06.spf1-test.mailzone.com
10  07.spf1-test.mailzone.com  192.0.2.1           none
11  08.spf1-test.mailzone.com  192.0.2.1           fail

# '08.spf1-test.mailzone.com:v=spf1                       -all      ?all  :60
# '09.spf1-test.mailzone.com:v=spf1    scope=header-from scope=envelope         -all  :60

# '10.spf1-test.mailzone.com:v=spf1 mx                                          -all:60
12  10.spf1-test.mailzone.com  192.0.2.1           fail
13  10.spf1-test.mailzone.com  192.0.2.10          pass
14  10.spf1-test.mailzone.com  192.0.2.11          pass
15  10.spf1-test.mailzone.com  192.0.2.12          pass
16   10.spf1-test.mailzone.com  192.0.2.13          pass
17   10.spf1-test.mailzone.com  192.0.2.20          pass
18   10.spf1-test.mailzone.com  192.0.2.21          pass
19   10.spf1-test.mailzone.com  192.0.2.22          pass
20   10.spf1-test.mailzone.com  192.0.2.23          pass
21   10.spf1-test.mailzone.com  192.0.2.30          pass
22   10.spf1-test.mailzone.com  192.0.2.31          pass
23   10.spf1-test.mailzone.com  192.0.2.32          pass
24   10.spf1-test.mailzone.com  192.0.2.33          pass
25   10.spf1-test.mailzone.com  192.0.2.34          fail

# @10.spf1-test.mailzone.com::mx01.spf1-test.mailzone.com:10:60
# @10.spf1-test.mailzone.com::mx02.spf1-test.mailzone.com:10:60
# @10.spf1-test.mailzone.com::mx03.spf1-test.mailzone.com:20:60
# 
# @12.spf1-test.mailzone.com::mx01.spf1-test.mailzone.com:10:60
# @12.spf1-test.mailzone.com::mx02.spf1-test.mailzone.com:10:60
# @12.spf1-test.mailzone.com::mx03.spf1-test.mailzone.com:20:60
# 
# @14.spf1-test.mailzone.com::mx01.spf1-test.mailzone.com:10:60
# @14.spf1-test.mailzone.com::mx02.spf1-test.mailzone.com:10:60
# @14.spf1-test.mailzone.com::mx03.spf1-test.mailzone.com:20:60
 
# '11.spf1-test.mailzone.com:v=spf1    mx\072spf1-test.mailzone.com                          -all:60
26   11.spf1-test.mailzone.com  192.0.2.1           fail
27   11.spf1-test.mailzone.com  192.0.2.10          pass
28   11.spf1-test.mailzone.com  192.0.2.33          pass
 
# '12.spf1-test.mailzone.com:v=spf1 mx mx\072spf1-test.mailzone.com                          -all:60
29   12.spf1-test.mailzone.com  192.0.2.1           fail
30   12.spf1-test.mailzone.com  192.0.2.10          pass
31   12.spf1-test.mailzone.com  192.0.2.33          pass
32   12.spf1-test.mailzone.com  208.210.124.192     fail
 
# '13.spf1-test.mailzone.com:v=spf1    mx\072spf1-test.mailzone.com mx\072fallback-relay.spf1-test.mailzone.com -all:60
33   13.spf1-test.mailzone.com  192.0.2.1           fail
34   13.spf1-test.mailzone.com  192.0.2.10          pass
35   13.spf1-test.mailzone.com  192.0.2.33          pass
36   13.spf1-test.mailzone.com  208.210.124.192     fail
37   13.spf1-test.mailzone.com  192.0.2.40          pass
 
# '14.spf1-test.mailzone.com:v=spf1 mx mx\072spf1-test.mailzone.com mx\072fallback-relay.spf1-test.mailzone.com -all:60
38   14.spf1-test.mailzone.com  192.0.2.1           fail
39   14.spf1-test.mailzone.com  192.0.2.10          pass
40   14.spf1-test.mailzone.com  192.0.2.33          pass
41   14.spf1-test.mailzone.com  208.210.124.192     fail
42   14.spf1-test.mailzone.com  192.0.2.40          pass

# # the spf1-test.mailzone.com domain has two A records and three MX records.
# # the first A record has no PTR.  the second does.  it's real.
# @spf1-test.mailzone.com::mx01.spf1-test.mailzone.com:10:60
# @spf1-test.mailzone.com::mx02.spf1-test.mailzone.com:10:60
# @spf1-test.mailzone.com::mx03.spf1-test.mailzone.com:20:60
# 
# +spf1-test.mailzone.com:192.0.2.200:60
# =spf1-test.mailzone.com:208.210.124.192:60
# 
# @fallback-relay.spf1-test.mailzone.com::mx04.spf1-test.mailzone.com:10:60
# 
# +mx01.spf1-test.mailzone.com:192.0.2.10:60
# +mx01.spf1-test.mailzone.com:192.0.2.11:60
# +mx01.spf1-test.mailzone.com:192.0.2.12:60
# +mx01.spf1-test.mailzone.com:192.0.2.13:60
# 
# +mx02.spf1-test.mailzone.com:192.0.2.20:60
# +mx02.spf1-test.mailzone.com:192.0.2.21:60
# +mx02.spf1-test.mailzone.com:192.0.2.22:60
# +mx02.spf1-test.mailzone.com:192.0.2.23:60
# 
# +mx03.spf1-test.mailzone.com:192.0.2.30:60
# +mx03.spf1-test.mailzone.com:192.0.2.31:60
# +mx03.spf1-test.mailzone.com:192.0.2.32:60
# +mx03.spf1-test.mailzone.com:192.0.2.33:60
# 
# +mx04.spf1-test.mailzone.com:192.0.2.40:60
# +mx04.spf1-test.mailzone.com:192.0.2.41:60
# +mx04.spf1-test.mailzone.com:192.0.2.42:60
# +mx04.spf1-test.mailzone.com:192.0.2.43:60
# 

# '20.spf1-test.mailzone.com:v=spf1 a                                           -all:60
43 20.spf1-test.mailzone.com    192.0.2.1           fail
44 20.spf1-test.mailzone.com    192.0.2.120         pass

# '21.spf1-test.mailzone.com:v=spf1   a\072spf1-test.mailzone.com                            -all:60
45 21.spf1-test.mailzone.com    192.0.2.1           fail
46 21.spf1-test.mailzone.com    192.0.2.121         fail
47 21.spf1-test.mailzone.com    192.0.2.200         pass

# '22.spf1-test.mailzone.com:v=spf1 a a\072spf1-test.mailzone.com                            -all:60
48 22.spf1-test.mailzone.com    192.0.2.1           fail
49 22.spf1-test.mailzone.com    192.0.2.122         pass
50 22.spf1-test.mailzone.com    192.0.2.200         pass

# 
# +20.spf1-test.mailzone.com:192.0.2.120:60
# +21.spf1-test.mailzone.com:192.0.2.121:60
# +22.spf1-test.mailzone.com:192.0.2.122:60
# 

# '30.spf1-test.mailzone.com:v=spf1 ptr                                         -all:60
# '30.spf1-test.mailzone.com:v=spf1 ptr                                         default=softdeny:60
51 30.spf1-test.mailzone.com    64.236.24.4         fail
52 30.spf1-test.mailzone.com    208.210.124.130     pass

# '31.spf1-test.mailzone.com:v=spf1     ptr\072spf1-test.mailzone.com                        -all:60
53 31.spf1-test.mailzone.com    64.236.24.4         fail
54 31.spf1-test.mailzone.com    208.210.124.130     pass
55 31.spf1-test.mailzone.com    208.210.124.192     pass

# '32.spf1-test.mailzone.com:v=spf1 ptr ptr\072spf1-test.mailzone.com                        -all:60
56 32.spf1-test.mailzone.com    64.236.24.4         fail
57 32.spf1-test.mailzone.com    208.210.124.130     pass
58 32.spf1-test.mailzone.com    208.210.124.131     pass
59 32.spf1-test.mailzone.com    208.210.124.192     pass

# =30.spf1-test.mailzone.com:208.210.124.130:60
# =31.spf1-test.mailzone.com:208.210.124.131:60
# =32.spf1-test.mailzone.com:208.210.124.132:60

# '40.spf1-test.mailzone.com:v=spf1 exists\072%{ir}.%{v}._spf.%{d}                    -all:60
60 40.spf1-test.mailzone.com    192.0.2.100         pass
61 40.spf1-test.mailzone.com    192.0.2.101         pass
62 40.spf1-test.mailzone.com    192.0.2.102         fail

# '41.spf1-test.mailzone.com:v=spf1 exists\072%{ir}.%{v}._spf.spf1-test.mailzone.com            -all:60
63 41.spf1-test.mailzone.com    192.0.2.100         fail
64 41.spf1-test.mailzone.com    192.0.2.110         pass
65 41.spf1-test.mailzone.com    192.0.2.111         pass

# '42.spf1-test.mailzone.com:v=spf1 exists\072%{ir}.%{v}._spf.%{d} exists\072%{ir}.%{v}._spf.%{d3} -all:60
66 42.spf1-test.mailzone.com    192.0.2.100         fail
67 42.spf1-test.mailzone.com    192.0.2.110         pass
68 42.spf1-test.mailzone.com    192.0.2.130    pass
69 42.spf1-test.mailzone.com    192.0.2.131    pass


# 
# +100.2.0.192.in-addr._spf.40.spf1-test.mailzone.com:127.0.0.2:60
# +101.2.0.192.in-addr._spf.40.spf1-test.mailzone.com:127.0.0.2:60
# 
# +110.2.0.192.in-addr._spf.spf1-test.mailzone.com:127.0.0.2:60
# +111.2.0.192.in-addr._spf.spf1-test.mailzone.com:127.0.0.2:60
# 
# +120.2.0.192.spf1-test.mailzone.com:127.0.0.2:60
# +121.2.0.192.spf1-test.mailzone.com:127.0.0.2:60
# 
# +130.2.0.192.in-addr._spf.42.spf1-test.mailzone.com:127.0.0.2:60
# +131.2.0.192.in-addr._spf.42.spf1-test.mailzone.com:127.0.0.2:60
# 

# '45.spf1-test.mailzone.com:v=spf1 -a a\072spf1-test.mailzone.com                           -all:60
70 45.spf1-test.mailzone.com    192.0.2.140    fail
71 45.spf1-test.mailzone.com    192.0.2.145    fail
72 45.spf1-test.mailzone.com    192.0.2.146    fail
73 45.spf1-test.mailzone.com    192.0.2.147    fail
74 45.spf1-test.mailzone.com    192.0.2.148    fail
75 45.spf1-test.mailzone.com    208.210.124.192    pass
76 45.spf1-test.mailzone.com    192.0.2.200    pass

# 
# +45.spf1-test.mailzone.com:192.0.2.145:60
# +45.spf1-test.mailzone.com:192.0.2.146:60
# +45.spf1-test.mailzone.com:192.0.2.147:60
# 

# '50.spf1-test.mailzone.com:v=spf1 include                                     -all:60
77 50.spf1-test.mailzone.com    192.0.2.200    unknown

# '51.spf1-test.mailzone.com:v=spf1 include\07242.spf1-test.mailzone.com                  -all:60
78 51.spf1-test.mailzone.com    192.0.2.200       fail
79 51.spf1-test.mailzone.com    192.0.2.130       pass

# '52.spf1-test.mailzone.com:v=spf1 include\07253.spf1-test.mailzone.com                  -all:60
# C53.spf1-test.mailzone.com:54.spf1-test.mailzone.com
# '54.spf1-test.mailzone.com:v=spf1 include\07242.spf1-test.mailzone.com                  -all:60
80 52.spf1-test.mailzone.com    192.0.2.200       fail
81 52.spf1-test.mailzone.com    192.0.2.130       pass

# '55.spf1-test.mailzone.com:v=spf1 include\07256.spf1-test.mailzone.com                  -all:60
82	55.spf1-test.mailzone.com	192.0.2.200	unknown
83	55.spf1-test.mailzone.com	192.0.2.130	unknown

# SPF1_TEST(56) deliberately left blank
84 56.spf1-test.mailzone.com    192.0.2.200       fail

# TODO: none and fail are both acceptable.  we need a way to indicate that multiple result codes are OK.

# include something that doesn't have SPF records
# '57.spf1-test.mailzone.com:v=spf1 include\072spf1-test.mailzone.com         -all:60
85	57.spf1-test.mailzone.com	192.0.2.200	unknown
86	57.spf1-test.mailzone.com	192.0.2.130	unknown

# loop detection
# '58.spf1-test.mailzone.com:v=spf1 include\07259.spf1-test.mailzone.com                  -all:60
# '59.spf1-test.mailzone.com:v=spf1 include\07258.spf1-test.mailzone.com                  -all:60
87	58.spf1-test.mailzone.com	192.0.2.200	unknown
88	59.spf1-test.mailzone.com	192.0.2.130	unknown

# '70.spf1-test.mailzone.com:v=spf1 exists\072%{lr+=}.lp._spf.spf1-test.mailzone.com -all:60
# 
# +*.bob.lp._spf.spf1-test.mailzone.com:127.0.0.2:60
# +bob.lp._spf.spf1-test.mailzone.com:127.0.0.2:60
# 
# # no entries for joe.

# 'SPF1_TEST(70):v=spf1 exists\072%{lr+=}.lp._spf.spf1-test.mailzone.com -all:60
89 droid@70.spf1-test.mailzone.com  192.0.2.103          fail

90 bob+1@70.spf1-test.mailzone.com  192.0.2.103          pass
91 bob+2@70.spf1-test.mailzone.com  192.0.2.103          pass
92   bob@70.spf1-test.mailzone.com  192.0.2.103          pass
93 joe+1@70.spf1-test.mailzone.com  192.0.2.103          fail
94 joe-2@70.spf1-test.mailzone.com  192.0.2.103          fail
95 moe-1@70.spf1-test.mailzone.com  192.0.2.103          fail

# client should substitute mailer-daemon when no localpart.
96 70.spf1-test.mailzone.com  192.0.2.103                pass

# '80.spf1-test.mailzone.com:v=spf1 a mx exists\072%{ir}.%{v}._spf.80.spf1-test.mailzone.com ptr -all:60
# =80.spf1-test.mailzone.com:208.210.124.180:60
# +80.2.0.192.in-addr._spf.80.spf1-test.mailzone.com:127.0.0.2:60
97 80.spf1-test.mailzone.com    64.236.24.4       fail
98 80.spf1-test.mailzone.com    208.210.124.180       pass
99 80.spf1-test.mailzone.com    192.0.2.80       pass

# '90.spf1-test.mailzone.com:v=spf1  ip4\072192.0.2.128/25 -all:60
100 90.spf1-test.mailzone.com    192.0.2.1       fail
101 90.spf1-test.mailzone.com    192.0.2.127       fail
102 90.spf1-test.mailzone.com    192.0.2.129       pass

# '91.spf1-test.mailzone.com:v=spf1 -ip4\072192.0.2.128/25 ip4\072192.0.2.0/24 -all:60
103 91.spf1-test.mailzone.com    192.168.1.1       fail
104 91.spf1-test.mailzone.com    192.0.2.127       pass
105 91.spf1-test.mailzone.com    192.0.2.129       fail

# '92.spf1-test.mailzone.com:v=spf1 ?ip4\072192.0.2.192/26 ip4\072192.0.2.128/25 -ip4\072192.0.2.0/24 -all:60
106 92.spf1-test.mailzone.com    192.168.2.1       fail
107 92.spf1-test.mailzone.com    192.0.2.1       fail
108 92.spf1-test.mailzone.com    192.0.2.129       pass
109 92.spf1-test.mailzone.com    192.0.2.193       neutral

# '95.spf1-test.mailzone.com:v=spf1 exists\072%{p}.whitelist.spf1-test.mailzone.com -all:60
# '96.spf1-test.mailzone.com:v=spf1 -exists\072%{d}.blacklist.spf1-test.mailzone.com -all:60
# '97.spf1-test.mailzone.com:v=spf1 exists\072%{p}.whitelist.spf1-test.mailzone.com -exists\072%{d}.blacklist.spf1-test.mailzone.com -all:60
110 95.spf1-test.mailzone.com  208.210.124.180       pass
111 95.spf1-test.mailzone.com  208.210.124.1       fail
112 96.spf1-test.mailzone.com  192.0.2.193       fail
113 97.spf1-test.mailzone.com  208.210.124.180       pass

# +*.spf1-test.mailzone.com.blacklist.spf1-test.mailzone.com:127.0.0.2:60
# +*.spf1-test.mailzone.com.whitelist.spf1-test.mailzone.com:127.0.0.2:60

# '98.spf1-test.mailzone.com:v=spf1 a/26 mx/26 -all:60
# +98.spf1-test.mailzone.com:192.0.2.98:60
# @98.spf1-test.mailzone.com::80.spf1-test.mailzone.com:10:60
114 98.spf1-test.mailzone.com  192.0.2.1          fail
115 98.spf1-test.mailzone.com  192.0.2.98         pass
116 98.spf1-test.mailzone.com  192.0.2.99         pass
117 98.spf1-test.mailzone.com  208.210.124.180    pass
118 98.spf1-test.mailzone.com  208.210.124.1      fail
119 98.spf1-test.mailzone.com  208.210.124.181    pass

# 'SPF1_TEST(08):v=spf2                       default=softdeny      default=deny  :60
# 'SPF1_TEST(09):v=spf2    scope=header-from scope=envelope         default=deny  :60
120 08.spf1-test.mailzone.com  192.0.2.1     fail
121 09.spf1-test.mailzone.com  192.0.2.1     fail

# '99.spf1-test.mailzone.com:v=spf1 -all exp=99txt.spf1-test.mailzone.com moo:60
# '99txt.spf1-test.mailzone.com:%u %s %d %t %h %i %% %U %S %D %T %H %I %% moo:60
122 99.spf1-test.mailzone.com  192.0.2.1     fail

# testing redirection
# '100.spf1-test.mailzone.com:v=spf1      redirect=98.spf1-test.mailzone.com:60
123 100.spf1-test.mailzone.com  192.0.2.1     fail
124 100.spf1-test.mailzone.com  192.0.2.98    pass

# '101.spf1-test.mailzone.com:v=spf1 -all redirect=98.spf1-test.mailzone.com:60
125 101.spf1-test.mailzone.com  192.0.2.98    fail

# '102.spf1-test.mailzone.com:v=spf1 ?all redirect=98.spf1-test.mailzone.com:60
126 102.spf1-test.mailzone.com  192.0.2.98    neutral 

# '103.spf1-test.mailzone.com:v=spf1      redirect=98.%{d3}:60
127 103.spf1-test.mailzone.com  192.0.2.98    pass

# '104.spf1-test.mailzone.com:v=spf1      redirect=105.%{d3}:60
# '105.spf1-test.mailzone.com:v=spf1      redirect=106.%{d3}:60
# '106.spf1-test.mailzone.com:v=spf1      redirect=107.%{d3}:60
# '107.spf1-test.mailzone.com:v=spf1       include\072104.%{d3}:60
128,129,130	droid@104.spf1-test.mailzone.com	192.0.2.98	unknown	SPF record error: loop encountered: 104.spf1-test.mailzone.com redirects to 105.spf1-test.mailzone.com redirects to 106.spf1-test.mailzone.com redirects to 107.spf1-test.mailzone.com includes 104.spf1-test.mailzone.com	error in processing during lookup of droid@104.spf1-test.mailzone.com

131,132,133	droid@110.spf1-test.mailzone.com	192.0.2.98	unknown some:unrecognized=mechanism	SPF record error: unrecognized mechanism some:unrecognized=mechanism	encountered unrecognized mechanism during SPF processing of domain of droid@110.spf1-test.mailzone.com

# the following tests are for Mail::SPF::Query's result2 and message_result2 methods only.

134,135,136   20.spf1-test.mailzone.com  192.0.2.33          foo@bar.com=fail,foo@spf1-test.mailzone.com=fail,fail
137,138,139,140	20.spf1-test.mailzone.com	192.0.2.33	foo@spf1-test.mailzone.com=pass,foo@bar.com=fail,fail	.	domain of 20.spf1-test.mailzone.com does not designate 192.0.2.33 as permitted sender
141,142,143	20.spf1-test.mailzone.com	192.0.2.33	foo@spf1-test.mailzone.com=pass,pass	.	message received from 192.0.2.33 which is an MX secondary for foo@spf1-test.mailzone.com
144,145   20.spf1-test.mailzone.com  192.0.2.33          foo@bar.com=fail,fail
146,147,148   20.spf1-test.mailzone.com  192.0.2.34          foo@spf1-test.mailzone.com=fail,foo@bar.com=fail,fail
149,150,151 20.spf1-test.mailzone.com       192.0.2.120     dog@cat.com=pass,foo@bar.com=pass,pass
152,153 20.spf1-test.mailzone.com       192.0.2.120     dog@cat.com;foo@bar.com=pass,pass
154,155,156	20.spf1-test.mailzone.com	192.0.2.33	foo@spf1-test.mailzone.com;foo@bar.com=fail,fail	.	domain of 20.spf1-test.mailzone.com does not designate 192.0.2.33 as permitted sender
157,158,159	20.spf1-test.mailzone.com	192.0.2.33	foo@bar.com;foo@spf1-test.mailzone.com=fail,fail	.	domain of 20.spf1-test.mailzone.com does not designate 192.0.2.33 as permitted sender

# tests for localpolicy overrides

160 103.spf1-test.mailzone.com:-all  192.0.2.98    pass 

161,162,163	20.spf1-test.mailzone.com:+all	192.0.2.1	pass	/./	local policy designates 192.0.2.1 as permitted sender
164,165,166	20.spf1-test.mailzone.com:+ip4:192.0.2.1	192.0.2.1	pass	/./	local policy designates 192.0.2.1 as permitted sender
167 20.spf1-test.mailzone.com:+ip4:192.0.2.2    192.0.2.1           fail 

# '91.spf1-test.mailzone.com:v=spf1 -ip4\072192.0.2.128/25 ip4\072192.0.2.0/24 -all:60
168 91.spf1-test.mailzone.com:ip4:192.168.1.0/24    192.168.1.1       pass
169 91.spf1-test.mailzone.com:-ip4:192.0.0.0/8    192.0.2.127       pass
170 91.spf1-test.mailzone.com:ip4:192.0.0.0/8    192.0.2.129       fail

# '92.spf1-test.mailzone.com:v=spf1 ?ip4\072192.0.2.192/26 ip4\072192.0.2.128/25 -ip4\072192.0.2.0/24 -all:60
171 92.spf1-test.mailzone.com:+all    192.168.2.1       pass
172 92.spf1-test.mailzone.com:+all    192.0.2.1       pass
173 92.spf1-test.mailzone.com:-all    192.0.2.129       pass
174 92.spf1-test.mailzone.com:-all    192.0.2.193       neutral

# '100.spf1-test.mailzone.com:v=spf1      redirect=98.spf1-test.mailzone.com:60
175 100.spf1-test.mailzone.com:+all  192.0.2.1     pass
176 100.spf1-test.mailzone.com:-all  192.0.2.98    pass

# '101.spf1-test.mailzone.com:v=spf1 -all redirect=98.spf1-test.mailzone.com:60
177 101.spf1-test.mailzone.com:+all  192.0.2.98    fail

# '102.spf1-test.mailzone.com:v=spf1 ?all redirect=98.spf1-test.mailzone.com:60
178 102.spf1-test.mailzone.com:+all  192.0.2.98    neutral

# '51.spf1-test.mailzone.com:v=spf1 include\07242.spf1-test.mailzone.com                  -all:60
# '10.spf1-test.mailzone.com:v=spf1 mx                                          -all:60
179,180,181	10.spf1-test.mailzone.com:include:42.%{d3}	192.0.2.200	fail	explanation	domain of 10.spf1-test.mailzone.com does not designate 192.0.2.200 as permitted sender
182,183,184	10.spf1-test.mailzone.com:include:42.%{d3} +all	192.0.2.200	pass	/./	local policy designates 192.0.2.200 as permitted sender
185,186,187	10.spf1-test.mailzone.com:include:42.%{d3} +all	192.0.2.110	pass	/./	SPF record at 42.spf1-test.mailzone.com designates 192.0.2.110 as permitted sender

188,189,190	42-27@10.spf1-test.mailzone.com:include:%{l1r-}.%{d3} +all	192.0.2.110	pass	/./	SPF record at 42.spf1-test.mailzone.com designates 192.0.2.110 as permitted sender
191,192,193	42-27@10.spf1-test.mailzone.com:include:%{l1r0-9}.%{d3} +all	192.0.2.110	pass	/./	SPF record at 42.spf1-test.mailzone.com designates 192.0.2.110 as permitted sender
194,195,196	42-27@10.spf1-test.mailzone.com:include:%{l1r^-}.%{d3} +all	192.0.2.110	pass	/./	SPF record at 42.spf1-test.mailzone.com designates 192.0.2.110 as permitted sender
197,198,199	42di27@10.spf1-test.mailzone.com:include:%{l1r:digit:}.%{d3} +all	192.0.2.110	pass	/./	SPF record at 42.spf1-test.mailzone.com designates 192.0.2.110 as permitted sender
200,201,202	42\07227@10.spf1-test.mailzone.com:include:%{l1r:digit:}.%{d3} +all	192.0.2.110	pass	/./	SPF record at 42.spf1-test.mailzone.com designates 192.0.2.110 as permitted sender
203,204,205	42\07227@10.spf1-test.mailzone.com:include:%{l1r$foo:}.%{d3} +all	192.0.2.110	pass	/./	SPF record at 42.spf1-test.mailzone.com designates 192.0.2.110 as permitted sender
206,207,208	42\27@10.spf1-test.mailzone.com:include:%{l1r$fo\o:}.%{d3} +all	192.0.2.110	pass	/./	SPF record at 42.spf1-test.mailzone.com designates 192.0.2.110 as permitted sender
209,210,211	42-27@10.spf1-test.mailzone.com:include:%{l1r-[]}.%{d3} +all	192.0.2.110	pass	/./	SPF record at 42.spf1-test.mailzone.com designates 192.0.2.110 as permitted sender
212,213,214	42327@10.spf1-test.mailzone.com:include:%{l1r-[]3}.%{d3} +all	192.0.2.110	pass	/./	SPF record at 42.spf1-test.mailzone.com designates 192.0.2.110 as permitted sender
215,216,217	10.spf1-test.mailzone.com:include:01.%{d3} include:02.%{d3} include:06.%{d3} +all	192.0.2.110	pass	/./	local policy designates 192.0.2.110 as permitted sender

218,219,220	10.spf1-test.mailzone.com:include:servfail.%{d3}	192.0.2.200	error	explanation: DNS error while looking up servfail.spf1-test.mailzone.com TXT: SERVFAIL	encountered temporary error during SPF processing of domain of 10.spf1-test.mailzone.com

221,222,223	10.spf1-test.mailzone.com:~all	192.0.2.200	softfail	explanation	transitioning local policy does not designate 192.0.2.200 as permitted sender
