libspf2  1.2.10
spf_dns_test.c
Go to the documentation of this file.
1 /*
2  * This program is free software; you can redistribute it and/or modify
3  * it under the terms of either:
4  *
5  * a) The GNU Lesser General Public License as published by the Free
6  * Software Foundation; either version 2.1, or (at your option) any
7  * later version,
8  *
9  * OR
10  *
11  * b) The two-clause BSD license.
12  *
13  * These licenses can be found with the distribution in the file LICENSES
14  */
15 
16 #include "spf_sys_config.h"
17 
18 #ifdef STDC_HEADERS
19 # include <stdlib.h> /* malloc / free */
20 #endif
21 
22 #ifdef HAVE_STRING_H
23 # include <string.h> /* strstr / strdup */
24 #else
25 # ifdef HAVE_STRINGS_H
26 # include <strings.h> /* strstr / strdup */
27 # endif
28 #endif
29 
30 #ifdef HAVE_NETDB_H
31 #include <netdb.h>
32 #endif
33 
34 #include "spf.h"
35 #include "spf_dns.h"
36 #include "spf_internal.h"
37 #include "spf_dns_internal.h"
38 #include "spf_dns_test.h"
39 #include "spf_dns_zone.h"
40 
41 
42 
43 #define USE_SPF_SPEC_ZONE
44 #define USE_MAILZONE_ZONE
45 #define USE_EXT_MAILZONE_ZONE
46 
47 
48 typedef struct
49 {
50  const char *domain;
51  int rr_type;
53  const char *data;
55 
56 
57 
58 
59 static const SPF_dns_test_data_t SPF_dns_db[] = {
60  { "localhost",
61  ns_t_a, NETDB_SUCCESS, "127.0.0.1" },
62 
63 #ifdef USE_SPF_SPEC_ZONE
64  { "example.com",
65  ns_t_a, NETDB_SUCCESS, "192.0.2.3" },
66  { "example.com",
67  ns_t_mx, NETDB_SUCCESS, "mx.example.org" },
68  { "example.com",
69  ns_t_txt, NETDB_SUCCESS, "v=spf1 mx -all" },
70  { "3.2.0.192.in-addr.arpa",
71  ns_t_ptr, NETDB_SUCCESS, "mx.example.org" },
72  { "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.5.d.a.0.8.0.0.0.2.5.0.f.5.in6.arpa",
73  ns_t_ptr, NETDB_SUCCESS, "mx.example.org" },
74 
75  { "noexist.example.com",
77  { "mx.example.org",
78  ns_t_a, NETDB_SUCCESS, "192.0.2.3" },
79  { "mx.example.org",
80  ns_t_aaaa, NETDB_SUCCESS, "5f05:2000:80ad:5800::1" },
81  { "email.example.com",
82  ns_t_txt, NETDB_SUCCESS, "v=spf1 -all" },
83  { "*.example.com",
85  { "*.example.org",
87  { "*.example.net",
89 #endif
90 
91 #ifdef USE_MAILZONE_ZONE
92  { "01.spf1-test.mailzone.com",
93  ns_t_txt, NETDB_SUCCESS, "v=spf1 " },
94  { "02.spf1-test.mailzone.com",
95  ns_t_txt, NETDB_SUCCESS, "v=spf1 -all " },
96  { "03.spf1-test.mailzone.com",
97  ns_t_txt, NETDB_SUCCESS, "v=spf1 ~all" },
98  { "05.spf1-test.mailzone.com",
99  ns_t_txt, NETDB_SUCCESS, "v=spf1 default=deny " },
100  { "06.spf1-test.mailzone.com",
101  ns_t_txt, NETDB_SUCCESS, "v=spf1 ?all " },
102  { "07.spf1-test.mailzone.com",
103  ns_t_txt, NETDB_SUCCESS, "v=spf2 default=bogus " },
104  { "08.spf1-test.mailzone.com",
105  ns_t_txt, NETDB_SUCCESS, "v=spf1 -all ?all " },
106  { "09.spf1-test.mailzone.com",
107  ns_t_txt, NETDB_SUCCESS, "v=spf1 scope=header-from scope=envelope -all " },
108  { "10.spf1-test.mailzone.com",
109  ns_t_txt, NETDB_SUCCESS, "v=spf1 mx -all" },
110  { "10.spf1-test.mailzone.com",
111  ns_t_mx, NETDB_SUCCESS, "mx02.spf1-test.mailzone.com" },
112  { "10.spf1-test.mailzone.com",
113  ns_t_mx, NETDB_SUCCESS, "mx03.spf1-test.mailzone.com" },
114  { "10.spf1-test.mailzone.com",
115  ns_t_mx, NETDB_SUCCESS, "mx01.spf1-test.mailzone.com" },
116  { "11.spf1-test.mailzone.com",
117  ns_t_txt, NETDB_SUCCESS, "v=spf1 mx:spf1-test.mailzone.com -all" },
118  { "12.spf1-test.mailzone.com",
119  ns_t_txt, NETDB_SUCCESS, "v=spf1 mx mx:spf1-test.mailzone.com -all" },
120  { "12.spf1-test.mailzone.com",
121  ns_t_mx, NETDB_SUCCESS, "mx02.spf1-test.mailzone.com" },
122  { "12.spf1-test.mailzone.com",
123  ns_t_mx, NETDB_SUCCESS, "mx03.spf1-test.mailzone.com" },
124  { "12.spf1-test.mailzone.com",
125  ns_t_mx, NETDB_SUCCESS, "mx01.spf1-test.mailzone.com" },
126  { "13.spf1-test.mailzone.com",
127  ns_t_txt, NETDB_SUCCESS, "v=spf1 mx:spf1-test.mailzone.com mx:fallback-relay.spf1-test.mailzone.com -all" },
128  { "14.spf1-test.mailzone.com",
129  ns_t_txt, NETDB_SUCCESS, "v=spf1 mx mx:spf1-test.mailzone.com mx:fallback-relay.spf1-test.mailzone.com -all" },
130  { "14.spf1-test.mailzone.com",
131  ns_t_mx, NETDB_SUCCESS, "mx03.spf1-test.mailzone.com" },
132  { "14.spf1-test.mailzone.com",
133  ns_t_mx, NETDB_SUCCESS, "mx01.spf1-test.mailzone.com" },
134  { "14.spf1-test.mailzone.com",
135  ns_t_mx, NETDB_SUCCESS, "mx02.spf1-test.mailzone.com" },
136  { "20.spf1-test.mailzone.com",
137  ns_t_a, NETDB_SUCCESS, "192.0.2.120" },
138  { "20.spf1-test.mailzone.com",
139  ns_t_txt, NETDB_SUCCESS, "v=spf1 a -all" },
140  { "21.spf1-test.mailzone.com",
141  ns_t_txt, NETDB_SUCCESS, "v=spf1 a:spf1-test.mailzone.com -all" },
142  { "21.spf1-test.mailzone.com",
143  ns_t_a, NETDB_SUCCESS, "192.0.2.121" },
144  { "22.spf1-test.mailzone.com",
145  ns_t_txt, NETDB_SUCCESS, "v=spf1 a a:spf1-test.mailzone.com -all" },
146  { "22.spf1-test.mailzone.com",
147  ns_t_a, NETDB_SUCCESS, "192.0.2.122" },
148  { "30.spf1-test.mailzone.com",
149  ns_t_txt, NETDB_SUCCESS, "v=spf1 ptr -all" },
150  { "30.spf1-test.mailzone.com",
151  ns_t_a, NETDB_SUCCESS, "208.210.124.130" },
152  { "31.spf1-test.mailzone.com",
153  ns_t_txt, NETDB_SUCCESS, "v=spf1 ptr:spf1-test.mailzone.com -all" },
154  { "31.spf1-test.mailzone.com",
155  ns_t_a, NETDB_SUCCESS, "208.210.124.131" },
156  { "32.spf1-test.mailzone.com",
157  ns_t_txt, NETDB_SUCCESS, "v=spf1 ptr ptr:spf1-test.mailzone.com -all" },
158  { "32.spf1-test.mailzone.com",
159  ns_t_a, NETDB_SUCCESS, "208.210.124.132" },
160  { "40.spf1-test.mailzone.com",
161  ns_t_txt, NETDB_SUCCESS, "v=spf1 exists:%{ir}.%{v}._spf.%{d} -all" },
162  { "41.spf1-test.mailzone.com",
163  ns_t_txt, NETDB_SUCCESS, "v=spf1 exists:%{ir}.%{v}._spf.spf1-test.mailzone.com -all" },
164  { "42.spf1-test.mailzone.com",
165  ns_t_txt, NETDB_SUCCESS, "v=spf1 exists:%{ir}.%{v}._spf.%{d} exists:%{ir}.%{v}._spf.%{d3} -all" },
166  { "45.spf1-test.mailzone.com",
167  ns_t_txt, NETDB_SUCCESS, "v=spf1 -a a:spf1-test.mailzone.com -all" },
168  { "45.spf1-test.mailzone.com",
169  ns_t_a, NETDB_SUCCESS, "192.0.2.147" },
170  { "45.spf1-test.mailzone.com",
171  ns_t_a, NETDB_SUCCESS, "192.0.2.145" },
172  { "45.spf1-test.mailzone.com",
173  ns_t_a, NETDB_SUCCESS, "192.0.2.146" },
174  { "50.spf1-test.mailzone.com",
175  ns_t_txt, NETDB_SUCCESS, "v=spf1 include -all" },
176  { "51.spf1-test.mailzone.com",
177  ns_t_txt, NETDB_SUCCESS, "v=spf1 include:42.spf1-test.mailzone.com -all" },
178  { "52.spf1-test.mailzone.com",
179  ns_t_txt, NETDB_SUCCESS, "v=spf1 include:53.spf1-test.mailzone.com -all" },
180  { "53.spf1-test.mailzone.com",
181  ns_t_txt, NETDB_SUCCESS, "v=spf1 include:42.spf1-test.mailzone.com -all" },
182  { "54.spf1-test.mailzone.com",
183  ns_t_txt, NETDB_SUCCESS, "v=spf1 include:42.spf1-test.mailzone.com -all" },
184  { "55.spf1-test.mailzone.com",
185  ns_t_txt, NETDB_SUCCESS, "v=spf1 include:56.spf1-test.mailzone.com -all" },
186  { "57.spf1-test.mailzone.com",
187  ns_t_txt, NETDB_SUCCESS, "v=spf1 include:spf1-test.mailzone.com -all" },
188  { "58.spf1-test.mailzone.com",
189  ns_t_txt, NETDB_SUCCESS, "v=spf1 include:59.spf1-test.mailzone.com -all" },
190  { "59.spf1-test.mailzone.com",
191  ns_t_txt, NETDB_SUCCESS, "v=spf1 include:58.spf1-test.mailzone.com -all" },
192  { "70.spf1-test.mailzone.com",
193  ns_t_txt, NETDB_SUCCESS, "v=spf1 exists:%{lr+=}.lp._spf.spf1-test.mailzone.com -all" },
194  { "80.spf1-test.mailzone.com",
195  ns_t_txt, NETDB_SUCCESS, "v=spf1 a mx exists:%{ir}.%{v}._spf.80.spf1-test.mailzone.com ptr -all" },
196  { "80.spf1-test.mailzone.com",
197  ns_t_a, NETDB_SUCCESS, "208.210.124.180" },
198  { "90.spf1-test.mailzone.com",
199  ns_t_txt, NETDB_SUCCESS, "v=spf1 ip4:192.0.2.128/25 -all" },
200  { "91.spf1-test.mailzone.com",
201  ns_t_txt, NETDB_SUCCESS, "v=spf1 -ip4:192.0.2.128/25 ip4:192.0.2.0/24 -all" },
202  { "92.spf1-test.mailzone.com",
203  ns_t_txt, NETDB_SUCCESS, "v=spf1 ?ip4:192.0.2.192/26 ip4:192.0.2.128/25 -ip4:192.0.2.0/24 -all" },
204  { "95.spf1-test.mailzone.com",
205  ns_t_txt, NETDB_SUCCESS, "v=spf1 exists:%{p}.whitelist.spf1-test.mailzone.com -all" },
206  { "96.spf1-test.mailzone.com",
207  ns_t_txt, NETDB_SUCCESS, "v=spf1 -exists:%{d}.blacklist.spf1-test.mailzone.com -all" },
208  { "97.spf1-test.mailzone.com",
209  ns_t_txt, NETDB_SUCCESS, "v=spf1 exists:%{p}.whitelist.spf1-test.mailzone.com -exists:%{d}.blacklist.spf1-test.mailzone.com -all" },
210  { "98.spf1-test.mailzone.com",
211  ns_t_txt, NETDB_SUCCESS, "v=spf1 a/26 mx/26 -all" },
212  { "98.spf1-test.mailzone.com",
213  ns_t_mx, NETDB_SUCCESS, "80.spf1-test.mailzone.com" },
214  { "98.spf1-test.mailzone.com",
215  ns_t_a, NETDB_SUCCESS, "192.0.2.98" },
216  { "99.spf1-test.mailzone.com",
217  ns_t_txt, NETDB_SUCCESS, "v=spf1 -all exp=99txt.spf1-test.mailzone.com moo" },
218  { "99txt.spf1-test.mailzone.com",
219  ns_t_txt, NETDB_SUCCESS, "u=%{u} s=%{s} d=%{d} t=%{t} h=%{h} i=%{i} %% U=%{U} S=%{S} D=%{D} T=%{T} H=%{H} I=%{I} %% moo" },
220  { "100.spf1-test.mailzone.com",
221  ns_t_txt, NETDB_SUCCESS, "v=spf1 redirect=98.spf1-test.mailzone.com" },
222  { "101.spf1-test.mailzone.com",
223  ns_t_txt, NETDB_SUCCESS, "v=spf1 -all redirect=98.spf1-test.mailzone.com" },
224  { "102.spf1-test.mailzone.com",
225  ns_t_txt, NETDB_SUCCESS, "v=spf1 ?all redirect=98.spf1-test.mailzone.com" },
226  { "103.spf1-test.mailzone.com",
227  ns_t_txt, NETDB_SUCCESS, "v=spf1 redirect=98.%{d3}" },
228  { "104.spf1-test.mailzone.com",
229  ns_t_txt, NETDB_SUCCESS, "v=spf1 redirect=105.%{d3}" },
230  { "105.spf1-test.mailzone.com",
231  ns_t_txt, NETDB_SUCCESS, "v=spf1 redirect=106.%{d3}" },
232  { "106.spf1-test.mailzone.com",
233  ns_t_txt, NETDB_SUCCESS, "v=spf1 redirect=107.%{d3}" },
234  { "107.spf1-test.mailzone.com",
235  ns_t_txt, NETDB_SUCCESS, "v=spf1 include:104.%{d3}" },
236  { "110.spf1-test.mailzone.com",
237  ns_t_txt, NETDB_SUCCESS, "v=spf1 some:unrecognized=mechanism some=unrecognized:modifier -all" },
238  { "111.spf1-test.mailzone.com",
239  ns_t_txt, NETDB_SUCCESS, "v=spf1 mx -a gpg ~all exp=111txt.spf1-test.mailzone.com" },
240  { "111.spf1-test.mailzone.com",
241  ns_t_mx, NETDB_SUCCESS, "mx01.spf1-test.mailzone.com" },
242  { "111.spf1-test.mailzone.com",
243  ns_t_a, NETDB_SUCCESS, "192.0.2.200" },
244  { "111txt.2.0.192.in-addr._spf.spf1-test.mailzone.com",
245  ns_t_txt, NETDB_SUCCESS, "explanation text" },
246  { "112.spf1-test.mailzone.com",
247  ns_t_txt, NETDB_SUCCESS, "v=spf1 a mp3 ~all" },
248  { "112.spf1-test.mailzone.com",
249  ns_t_a, NETDB_SUCCESS, "192.0.2.200" },
250  { "113.spf1-test.mailzone.com",
251  ns_t_txt, NETDB_SUCCESS, "v=spf1 a mp3: ~all" },
252  { "113.spf1-test.mailzone.com",
253  ns_t_a, NETDB_SUCCESS, "192.0.2.200" },
254  { "114.spf1-test.mailzone.com",
255  ns_t_txt, NETDB_SUCCESS, "v=spf1 mx -a gpg=test ~all exp=114txt.spf1-test.mailzone.com" },
256  { "114.spf1-test.mailzone.com",
257  ns_t_mx, NETDB_SUCCESS, "mx01.spf1-test.mailzone.com" },
258  { "114.spf1-test.mailzone.com",
259  ns_t_a, NETDB_SUCCESS, "192.0.2.200" },
260  { "114txt.spf1-test.mailzone.com",
261  ns_t_txt, NETDB_SUCCESS, "explanation text" },
262  { "115.spf1-test.mailzone.com",
263  ns_t_txt, NETDB_SUCCESS, "v=spf1 a mp3=yes -all" },
264  { "115.spf1-test.mailzone.com",
265  ns_t_a, NETDB_SUCCESS, "192.0.2.200" },
266  { "116.spf1-test.mailzone.com",
267  ns_t_txt, NETDB_SUCCESS, "v=spf1 redirect=116rdr.spf1-test.mailzone.com a" },
268  { "116.spf1-test.mailzone.com",
269  ns_t_a, NETDB_SUCCESS, "192.0.2.200" },
270  { "116rdr.spf1-test.mailzone.com",
271  ns_t_txt, NETDB_SUCCESS, "v=spf1 -all" },
272  { "117.spf1-test.mailzone.com",
273  ns_t_txt, NETDB_SUCCESS, " v=spf1 +all" },
274  { "118.spf1-test.mailzone.com",
275  ns_t_txt, NETDB_SUCCESS, "v=spf1 -all exp=" },
276 
277  { "mx01.spf1-test.mailzone.com",
278  ns_t_a, NETDB_SUCCESS, "192.0.2.10" },
279  { "mx01.spf1-test.mailzone.com",
280  ns_t_a, NETDB_SUCCESS, "192.0.2.11" },
281  { "mx01.spf1-test.mailzone.com",
282  ns_t_a, NETDB_SUCCESS, "192.0.2.12" },
283  { "mx01.spf1-test.mailzone.com",
284  ns_t_a, NETDB_SUCCESS, "192.0.2.13" },
285  { "mx02.spf1-test.mailzone.com",
286  ns_t_a, NETDB_SUCCESS, "192.0.2.20" },
287  { "mx02.spf1-test.mailzone.com",
288  ns_t_a, NETDB_SUCCESS, "192.0.2.21" },
289  { "mx02.spf1-test.mailzone.com",
290  ns_t_a, NETDB_SUCCESS, "192.0.2.22" },
291  { "mx02.spf1-test.mailzone.com",
292  ns_t_a, NETDB_SUCCESS, "192.0.2.23" },
293  { "mx03.spf1-test.mailzone.com",
294  ns_t_a, NETDB_SUCCESS, "192.0.2.30" },
295  { "mx03.spf1-test.mailzone.com",
296  ns_t_a, NETDB_SUCCESS, "192.0.2.31" },
297  { "mx03.spf1-test.mailzone.com",
298  ns_t_a, NETDB_SUCCESS, "192.0.2.32" },
299  { "mx03.spf1-test.mailzone.com",
300  ns_t_a, NETDB_SUCCESS, "192.0.2.33" },
301  { "mx04.spf1-test.mailzone.com",
302  ns_t_a, NETDB_SUCCESS, "192.0.2.40" },
303  { "mx04.spf1-test.mailzone.com",
304  ns_t_a, NETDB_SUCCESS, "192.0.2.41" },
305  { "mx04.spf1-test.mailzone.com",
306  ns_t_a, NETDB_SUCCESS, "192.0.2.42" },
307  { "mx04.spf1-test.mailzone.com",
308  ns_t_a, NETDB_SUCCESS, "192.0.2.43" },
309 
310  { "56.spf1-test.mailzone.com",
311  ns_t_txt, NO_DATA, NULL },
312  { "80.spf1-test.mailzone.com",
313  ns_t_mx, NO_DATA, NULL },
314  { "servfail.spf1-test.mailzone.com",
315  ns_t_txt, TRY_AGAIN, NULL },
316  { "spf1-test.mailzone.com",
317  ns_t_mx, NETDB_SUCCESS, "mx02.spf1-test.mailzone.com" },
318  { "spf1-test.mailzone.com",
319  ns_t_mx, NETDB_SUCCESS, "mx03.spf1-test.mailzone.com" },
320  { "spf1-test.mailzone.com",
321  ns_t_mx, NETDB_SUCCESS, "mx01.spf1-test.mailzone.com" },
322  { "spf1-test.mailzone.com",
323  ns_t_a, NETDB_SUCCESS, "208.210.124.192" },
324  { "spf1-test.mailzone.com",
325  ns_t_a, NETDB_SUCCESS, "192.0.2.200" },
326  { "fallback-relay.spf1-test.mailzone.com",
327  ns_t_mx, NETDB_SUCCESS, "mx04.spf1-test.mailzone.com" },
328 
329  { "www1.cnn.com",
330  ns_t_a, NETDB_SUCCESS, "64.236.24.4" },
331  { "4.24.236.64.in-addr.arpa",
332  ns_t_ptr, NETDB_SUCCESS, "www1.cnn.com" },
333  { "130.124.210.208.in-addr.arpa",
334  ns_t_ptr, NETDB_SUCCESS, "30.spf1-test.mailzone.com" },
335  { "131.124.210.208.in-addr.arpa",
336  ns_t_ptr, NETDB_SUCCESS, "31.spf1-test.mailzone.com" },
337  { "192.124.210.208.in-addr.arpa",
338  ns_t_ptr, NETDB_SUCCESS, "spf1-test.mailzone.com" },
339  { "100.2.0.192.in-addr._spf.40.spf1-test.mailzone.com",
340  ns_t_a, NETDB_SUCCESS, "127.0.0.2" },
341 
342  { "110.2.0.192.in-addr._spf.spf1-test.mailzone.com",
343  ns_t_a, NETDB_SUCCESS, "127.0.0.2" },
344  { "111.2.0.192.in-addr._spf.spf1-test.mailzone.com",
345  ns_t_a, NETDB_SUCCESS, "127.0.0.2" },
346  { "101.2.0.192.in-addr._spf.40.spf1-test.mailzone.com",
347  ns_t_a, NETDB_SUCCESS, "127.0.0.2" },
348  { "130.2.0.192.in-addr._spf.42.spf1-test.mailzone.com",
349  ns_t_a, NETDB_SUCCESS, "127.0.0.2" },
350  { "131.2.0.192.in-addr._spf.42.spf1-test.mailzone.com",
351  ns_t_a, NETDB_SUCCESS, "127.0.0.2" },
352  { "80.2.0.192.in-addr._spf.80.spf1-test.mailzone.com",
353  ns_t_a, NETDB_SUCCESS, "127.0.0.2" },
354  { "96.spf1-test.mailzone.com.blacklist.spf1-test.mailzone.com",
355  ns_t_a, NETDB_SUCCESS, "127.0.0.2" },
356  { "97.spf1-test.mailzone.com.blacklist.spf1-test.mailzone.com",
357  ns_t_a, NETDB_SUCCESS, "127.0.0.2" },
358  { "bob.lp._spf.spf1-test.mailzone.com",
359  ns_t_a, NETDB_SUCCESS, "127.0.0.2" },
360  { "postmaster.lp._spf.spf1-test.mailzone.com",
361  ns_t_a, NETDB_SUCCESS, "127.0.0.2" },
362  { "1.bob.lp._spf.spf1-test.mailzone.com",
363  ns_t_a, NETDB_SUCCESS, "127.0.0.2" },
364  { "2.bob.lp._spf.spf1-test.mailzone.com",
365  ns_t_a, NETDB_SUCCESS, "127.0.0.2" },
366  { "1.joe.lp._spf.spf1-test.mailzone.com",
368  { "100.2.0.192.in-addr._spf.42.spf1-test.mailzone.com",
370  { "100.2.0.192.in-addr._spf.spf1-test.mailzone.com",
372  { "102.2.0.192.in-addr._spf.40.spf1-test.mailzone.com",
374  { "110.2.0.192.in-addr._spf.42.spf1-test.mailzone.com",
376  { "130.2.0.192.in-addr._spf.spf1-test.mailzone.com",
378  { "131.2.0.192.in-addr._spf.spf1-test.mailzone.com",
380  { "4.24.236.64.in-addr._spf.80.spf1-test.mailzone.com",
382  { "droid.lp._spf.spf1-test.mailzone.com",
384  { "joe-2.lp._spf.spf1-test.mailzone.com",
386  { "moe-1.lp._spf.spf1-test.mailzone.com",
388  { "unknown.whitelist.spf1-test.mailzone.com",
390 
391  { "180.124.210.208.in-addr.arpa",
392  ns_t_ptr, NETDB_SUCCESS, "80.spf1-test.mailzone.com" },
393 
394  { "80.spf1-test.mailzone.com.whitelist.spf1-test.mailzone.com",
395  ns_t_a, NETDB_SUCCESS, "127.0.0.2" },
396  { "1.124.210.208.in-addr.arpa",
397  ns_t_ptr, NETDB_SUCCESS, "pobox-gw.icgroup.com" },
398 
399  { "pobox-gw.icgroup.com",
400  ns_t_a, NETDB_SUCCESS, "208.210.124.1" },
401  { "pobox-gw.icgroup.com.whitelist.spf1-test.mailzone.com",
403 
404  { "200.2.0.192.in-addr._spf.51.spf1-test.mailzone.com",
406  { "200.2.0.192.in-addr._spf.spf1-test.mailzone.com",
408  { "130.2.0.192.in-addr._spf.51.spf1-test.mailzone.com",
410  { "200.2.0.192.in-addr._spf.42.spf1-test.mailzone.com",
412  { "spf1-test.mailzone.com",
414  { "spf.trusted-forwarder.org",
415  ns_t_txt, NETDB_SUCCESS, "v=spf1 exists:%{ir}.wl.trusted-forwarder.org exists:%{p}.wl.trusted-forwarder.org" },
416  { "*.spf1-text.mailzone.com",
418 
419  { "cat.com",
420  ns_t_txt, NO_DATA, NULL },
421  { "bar.com",
422  ns_t_txt, NO_DATA, NULL },
423 
424 
425 #endif
426 
427 #ifdef USE_EXT_MAILZONE_ZONE
428  { "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.5.d.a.0.8.0.0.0.2.5.0.f.5.in6.arpa",
429  ns_t_ptr, NETDB_SUCCESS, "mx.example.org" },
430 
431 #endif
432 };
433 
434 
435 
436 SPF_dns_server_t *
437 SPF_dns_test_new(SPF_dns_server_t *layer_below,
438  const char *name, int debug)
439 {
440  SPF_dns_server_t *spf_dns_server;
441  int i;
442 
443  if (name == NULL)
444  name = "test";
445  spf_dns_server = SPF_dns_zone_new(layer_below, name, debug);
446  if (spf_dns_server == NULL)
447  return NULL;
448 
449  for( i = 0; i < array_elem( SPF_dns_db ); i++ ) {
450  if (SPF_dns_zone_add_str(spf_dns_server,
451  SPF_dns_db[i].domain,
452  SPF_dns_db[i].rr_type,
453  SPF_dns_db[i].herrno,
454  SPF_dns_db[i].data) != SPF_E_SUCCESS)
455  SPF_error( "Could not create test zone" );
456  }
457 
458  return spf_dns_server;
459 }
SPF_dns_server_t * SPF_dns_zone_new(SPF_dns_server_t *layer_below, const char *name, int debug)
Definition: spf_dns_zone.c:337
const char * domain
Definition: spf_dns_test.c:50
SPF_errcode_t SPF_dns_zone_add_str(SPF_dns_server_t *spf_dns_server, const char *domain, ns_type rr_type, SPF_dns_stat_t herrno, const char *data)
Definition: spf_dns_zone.c:189
const char * data
Definition: spf_dns_test.c:53
A local DNS zone layer.
SPF_dns_server_t * SPF_dns_test_new(SPF_dns_server_t *layer_below, const char *name, int debug)
Definition: spf_dns_test.c:437
A testing layer for DNS.
#define array_elem(x)
Definition: spf_internal.h:31
#define SPF_error(errmsg)
Definition: spf_log.h:40
#define NULL
Definition: spf_internal.h:28
#define NO_DATA
Definition: spf_dns.h:106
int SPF_dns_stat_t
Definition: spf_dns.h:108
#define NETDB_SUCCESS
Definition: spf_dns.h:102
#define HOST_NOT_FOUND
Definition: spf_dns.h:103
SPF_dns_stat_t herrno
Definition: spf_dns_test.c:52
#define TRY_AGAIN
Definition: spf_dns.h:104
#define debug