libspf2 1.2.11
README
Go to the documentation of this file.
1/**
2 * @file
3 * @brief Description of libspf2
4 * The contents of this file is extracted by the documentation
5 * generator, and forms the front matter and introductory text to this
6 * manual. The documentation for this file is, therefore, apparently
7 * empty.
8 */
9
10/**
11 * @mainpage Introduction to libspf2
12
13 * @par Recipes
14
15An example client implementation is in spf_example.c with a little
16more error checking. The basic cases are as follows:
17
18The SPF server is reusable, and thread-safe. It must be freed using
19SPF_server_free.
20
21@code
22 SPF_server_t *spf_server = SPF_server_new(SPF_DNS_CACHE, 0);
23@endcode
24
25Create a request, and set the relevant fields in it. Each setter
26method returns an SPF_errcode_t, which will inform you of error
27conditions, such as out-of-memory or invalid argument.
28
29@code
30 SPF_request_t *spf_request = SPF_request_new(spf_server);
31 SPF_request_set_ipv4_str(spf_request, "123.45.6.7");
32 SPF_request_set_env_from(spf_request, "clientdomain.com");
33@endcode
34
35Now that we have built a query, we may execute it. It will use the
36SPF_server_t which was passed to the query constructor. As usual, the
37SPF_request_query_mailfrom method returns an error code, although
38much richer errors are returned inside the SPF_response_t - see
39spf_response.h for more details of that API.
40
41@code
42 SPF_response_t *spf_response = NULL;
43 SPF_request_query_mailfrom(spf_request, &spf_response);
44 printf("Result is %s\n",
45 SPF_strresult(SPF_response_result(spf_response)));
46@endcode
47
48When we have finished with the response, we must free it and the
49request.
50
51@code
52 SPF_response_free(spf_response);
53 SPF_request_free(spf_request);
54@endcode
55
56We can execute many requests in parallel threads on the same server,
57but before the program exits, we must free the server.
58
59@code
60 SPF_server_free(spf_server);
61@endcode
62
63 * @par Authors
64
65 - Current maintainer: Shevek <libspf2@anarres.org>
66 - Contributors: Magnus Holmgren, Julian Mehnle, Scott Kitterman
67 - Contributors: Dan Kaminsky, Ben Chelf, Hannah Schroeter
68 - Contributors: Martin Braine, Manish Raje, Stuart Gathman
69 - Original author, 1.0 series: Wayne Schlitt <wayne@midwestcs.com>
70
71 * @par License
72
73This program is free software; you can redistribute it and/or modify
74it under the terms of either:
75
76 a) the GNU Lesser General Public License as published by the Free
77 Software Foundation; either version 2.1, or (at your option) any
78 later version, or
79
80 OR
81
82 b) The two-clause BSD license.
83
84Some code in the 'replace' subdirectory was obtained form other sources
85and have different, but compatible, licenses. These routines are
86used only when the native libraries for the OS do not contain these
87functions. You should review the licenses and copyright statments
88in these functions if you are using an OS that needs these functions.
89
90 * @par Original README from Wayne Schlitt
91
92Libspf2 is an implementation of the SPF specification as found at
93http://www.ietf.org/internet-drafts/draft-mengwong-spf-00.txt
94or doc/draft-mengwong-spf-00.txt
95
96Libspf2 is in beta testing and should only be used in production
97systems with caution. It has not been widely compiled and tested on
98machines with different operating systems, CPU architectures, or
99network configurations. It has not been audited for security errors.
100
101While libspf2 is beta code, a lot of effort has been put into
102making it secure by design, and a great deal of effort has been put
103into the regression tests. Functions such as sprintf() are never
104used, things like snprintf() are used instead. There are few fixed
105sized buffers/arrays, instead, most data structures are dynamically
106allocated with the allocation sized recorded so I can check to make
107sure the buffer isn't overflowed. The return values from malloc() and
108other system calls are checked and handled as gracefully as I can.
109The valgrind program is regularly run to make sure that there are no
110memory leaks and reads/writes to invalid memory.
111
112
113This code has been compiled and passed its regression tests on Debian
114Linux (sid/testing) on the x86, FreeBSD 4.3 (x86), FreeBSD 4.9
115(x86??), NetBSD 1.62 (x86?), SunOS 5.8 on the ultrasparc, and a few
116others. It uses the autotools (autoconfig, libtools, automake, etc.)
117to try and make things more portable, so it will likely work on other
118systems also.
119
120
121-wayne
122
123 */