ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/libspf/README
Revision: 1.1
Committed: Tue Nov 13 00:51:23 2007 UTC (16 years, 5 months ago) by root
Branch: MAIN
CVS Tags: HEAD
Log Message:
initial import of libspf-1.0.0-p5 from freebsd ports

File Contents

# Content
1
2 oooo o8o .o8 .oooooo..o ooooooooo. oooooooooooo
3 `888 `"' "888 d8P' `Y8 `888 `Y88. `888' `8
4 888 oooo 888oooo. Y88bo. 888 .d88' 888
5 888 `888 d88' `88b `"Y8888o. 888ooo88P' 888oooo8
6 888 888 888 888 `"Y88b 888 888 "
7 888 888 888 888 oo .d8P 888 888
8 o888o o888o `Y8bod8P' 8""88888P' o888o o888o
9
10 --------------------------------------------------------------------------------
11 An ANSI C Implementation of the Sender Policy Framework
12 --------------------------------------------------------------------------------
13
14
15 Table of Contents
16 -----------------
17
18 1.0 ............. Installation
19 2.0 ............. Patches
20 3.0 ............. Examples
21 4.0 ............. Documentation
22 4.1 ............ MTA specific
23 4.2 ............ API specific
24 4.3 ............ Resources
25 5.0 ............. Source Code
26 6.0 ............. License
27 7.0 ............. Portability
28 8.0 ............. Resources
29 8.1 ............ Email
30 8.2 ............ Developer Forums
31 8.3 ............ Mailinglist
32 9.0 ............. Contact
33 10.0 ............ Donating
34
35
36 1. Installation:
37 ----------------
38
39 ./configure && make
40
41 You will find the static and dynamic libraries in the directory libtool
42 will have created off of the libspf src dir.:
43
44 Example: ./libspf-1_0_0/src/libpf/.libs/
45
46 You will find the libSPF Query Tool binaries (both static and dynamic) in
47 a directory created by make in the libSPF root directory called 'bin'.
48
49 Example: ./libspf-1_0_0/bin/
50
51 Outside of the generic available configure options you have the following
52 at your disposal:
53
54
55 --enable-pthreads - Default = disabled
56
57 Enable linux posix threading support which in turn switches from gethostbyname
58 to gethostbyname_r (if available, if not a custom reentrant wrapper is used)
59 and several mutexes are employed to facilitate a thread-safe environment.
60
61
62 --enable-spfmilter - Default = disabled
63
64 Enable the libSPF fork of Jef Poskanzer's Sendmail spfmilter. The milter was
65 forked at version 0.90. Problems with the milter are NOT to be directed to
66 Jef as its not fair to ask him to support a fork when he is plenty busy with
67 his own. Please forward bugs, questions, etc.. to myself (James).
68
69
70 --enable-spfqtool - Default = enabled
71
72 Enable the libSPF Query Tool. spfqtool is a fully functional binary SPF
73 parser which you can call from userland or even call from a CGI or your
74 MTA if you so wished. Since its written in the same language as libSPF
75 its very lightweight and inexpensive to call repeatedly.
76
77 The above switches also work in reverse, so if for example you wished
78 to disable to building of the query tool you would do:
79
80 ./configure --disable-spfqtool
81
82
83 --enable-debug - Default = disabled
84
85 Enable debugging output. For a detailed document on how debugging works
86 within libSPF please see the internal documenation or the online document
87 available at http://libSPF.org/debugging_libspf.pdf/html By default
88 debug output is pushed to /var/log/spf.log. If you wish to change this see
89 the AutoConf configuration handle '--enable-debug-logfile' and disable it.
90
91
92 --enable-debug-logfile - Default = enabled
93
94 Enables logging debug output to /var/log/spf.log
95
96
97 --enable-logfile-stats - Default = disabled
98
99 Enables logfile stats to /var/log/spflog.txt which look like this:
100
101 [2005-04-18 14:24:48] result: unknown :: NievNeal3864@jlist.com [82.120.84.13], ver: 10, depth: 1, error: (policy result: (unknown) from rule (-all))
102 [2005-04-18 14:24:48] result: unknown :: NievNeal3864@jlist.com [82.120.84.13], ver: 10, depth: 1, error: (policy result: (unknown) from rule (-all))
103 [2005-04-18 17:10:49] result: softfail :: emgdxfwavxzwhk@hotmail.com [201.15.156.75], ver: 5, depth: 1, error: (policy result: (softfail) from rule (~all))
104 [2005-04-18 21:14:00] result: neutral :: test@spftools.infinitepenguins.net [220.117.245.29], ver: 2, depth: 1, error: (policy result: (neutral) from rule (?all))
105 [2005-04-18 21:14:07] result: neutral :: test@spftools.infinitepenguins.net [220.117.245.29], ver: 2, depth: 1, error: (policy result: (neutral) from rule (?all))
106
107 I've got code to do this to MySQL if anyone is interested.. I'll try to
108 include it in subsequent releases to 1.0 final.
109
110
111 --enable-rfc-recursion - Default = disabled
112
113 Change SPF recursion to 20 (as per RFC). This level has been deemed by members
114 of the SPF-DISCUSS mailing list to be excessively high, although as far as I
115 know Meng still believes it to be reasonable. I personally believe that its
116 excessive, at least for now, which is why I've added this option to re-enable
117 RFC recursion limits.
118
119
120 --enable-res_search - Default = disasbled
121
122 Enables DNS queries to follow default and search rules. This turned out to cause
123 all sorts of problems for people who were employing default and search fules in
124 their resolv.conf and was causing SPF queries to return improper results. Its
125 honestly a bit of a feature if you are aware of it, and since most people never
126 seem to read documentation or be aware of their surroundings, this is disabled
127 by default.
128
129
130 --enable-paranoid-malloc - Default = enabled
131
132 Enable memsetting of every malloc called through the wrapper functions
133 through wrapper functions that handle memory allocation.
134
135
136 --enable-libbind - Default = disabled
137
138 Link libbind instead of libresolv
139
140
141 --enable-full-optimizations - Default = disabled [DEPRECATED]
142
143 Enables building of an optimized library through the employment of various GCC
144 compile time macros. I currently advise against this as they are architecture
145 specific but in the future it is intended that they will be intelligent and
146 will result in the right set of macros to result in the most optimized code
147 generated for whatever architecture it is compiled on. [DEPRECATED]
148
149
150 2. Patches:
151 -----------
152
153 Patches for each respective supported MTA are found within the patches
154 directory, followed by the name of the MTA, and then optionally should
155 there have been support long enough, there will be where applicable
156 additional directories per MAJOR.MINOR.INCREMENTAL.
157
158 Example: ./libspf-1_0_0/patches/Sendmail/8.13.x/
159
160 The above example contains patches against Sendmail 8.13.x (the x is literal)
161 and infers that a patch against any 8.13 version will be located there.
162
163
164 3. Examples:
165 ------------
166
167 Examples follow the same layout as Patches. The examples directory contains
168 example configuration files for the various MTA's supported by libSPF.
169
170 Example: ./libspf-1_0_0/examples/Sendmail/8.13.x/sendmail.cf.example
171
172
173 4. Documentation:
174 -----------------
175
176 Documentation also follows the same layout as Patches and examples. The
177 Documentation directory is called 'docs' and is also found in the root of the
178 unpack libspf archive. Documentation is split up into two categories.
179
180
181 4.1 MTA specific documentation:
182 -------------------------------
183
184 There is a basic HOWTO document which details step-by-step how to patch and
185 install a copy of the respective MTA's supported by libSPF. The documents
186 follow the following naming convention:
187
188 <mta>-<mta_version>-libspf-<libspf_version>-HOWTO.[html|txt|pdf]
189
190 Example: ./libspf-1_0_0/docs/qmail/net-1.05/netqmail-1.05-libspf-1.0-HOWTO.txt
191
192
193 4.2 API specific documentation:
194 -------------------------------
195
196 API specific documentation is found in the 'API' directory inside of the
197 'docs' directory. You can point your favorite web browser to this folder
198 or simply use your favorite shell or file explorer to traverse through the
199 content.
200
201 The primary support for learning the API can be had through the HTML doxygen
202 content available within each release of libSPF starting with libSPF-1.0-RC3,
203 and the most up to date version will always be available from the libSPF.org
204 website.
205
206 Secondary documentation is available from within this directory structure also
207 and consists of papers that will go into specific detail on a particular
208 topic.
209
210 Example: ./libspf-1_0_0/docs/API/debugging_libspf.pdf
211
212
213 4.3 Resources:
214 --------------
215
216 Please see the section entitled "libSPF Resources"
217
218
219 5.0 Source code:
220 ----------------
221
222 All source code can be found from within the 'src' directory off the root of
223 the unpacked libspf 1.0 archive. From there each individual library or
224 binary will be located in its own directory.
225
226 Example: ./libspf-1_0_0/src/libspf
227
228
229 6.0 License:
230 ------------
231
232 libSPF is released under our own license, which is a modified version of the
233 Apache Software Foundation's license. This license was chosen because we* wanted
234 SPF implemented as fast and as easily as possible, and it was felt that licensing
235 under the GPL would inhibit use by commertial entities wishing to support
236 something like SPF but being unable to do so due to a restrictive license such
237 as the GPL.
238
239 *we (Sean Comeau and myself)
240
241 License: ./libspf-1_0_0/LICENSE
242
243
244 7.0 Portability:
245 ----------------
246
247 libSPF is coded in accordance with the ANSI C/89 and ANSI C/99 Standards. The
248 library entirely complies with C/89, and I had to move to employ standards
249 from C/99 to facilitate the debugging and standard function replacements that
250 are implemented. For more information please read "Debugging libSPF" which can
251 be found within the archive this README was enclosed in, inside of the 'docs'
252 directory off its root.
253
254 libSPF is easily portable to win32 although because windows has not been the
255 focus of interest its lagged behind more important things such as API
256 documentation and getting near a stable release. If win32 portability
257 interests you feel free to contact me, all thats necessary is to finish off
258 a patch altering the DNS functionality.
259
260 libSPF is known to 'configure', 'compile' and work on the following
261 architectures and the distributions associated with them:
262
263 [+--------------------------------------------------------------------------+]
264 | Architecture | Distro | Version | Kernel | Compiler Version |
265 [+-------------+----------------+----------+-----------+------------------+]
266 | x86 | Fedora Core | 1 | 2.6.3 | GCC 3.3.2 |
267 | x86_64 | Fedora Core | 1 | 2.6.7 | GCC 3.3.4 #$ |
268 | x86 | Fedora Core | 2 | 2.6.7 | GCC 3.3.3/4 |
269 | x86_64 | Fedora Core | 2 | 2.6.7 | GCC 3.3.3/4 #$ |
270 | x86_64 | Fedora Core | 3 | 2.6.11 | GCC 3.4.3 #$ |
271 | x86 | Gentoo | 1.4 | 2.6.7 | GCC 3.3.3/4 @#$ |
272 | x86_64 | Gentoo | 2004.1 | 2.6.7-r11 | GCC 3.3.3/4 @#$ |
273 | x86_64 | Gentoo | 2005.1 | 2.6.10-g6 | GCC 3.4.3 @#$ |
274 | x86 | Mandrake | 9.2 | ? | GCC 3.3.1 |
275 | x86 | Slackware | 8.0 | 2.6.7 | GCC 2.95.3 |
276 | x86 | Slackware | 8.1 | 2.6.7 | GCC 2.95.3 |
277 | x86 | Slackware | 9.0 | 2.6.7 | GCC 3.2.2 |
278 | x86 | Slackware | 9.1 | 2.6.7 | GCC 3.3.1 |
279 | x86 | Slackware | 10.0 | 2.6.7 | GCC 3.3.4 |
280 | x86 | Red Hat Linux | 3.2.3-34 | 2.4.21-15 | GCC 3.2.3 030502 |
281 [+-------------+----------------+----------+-----------+------------------+]
282 | x86 | OpenBSD | 3.5 | 3.5 | GCC 2.95.3 @ |
283 | x86_64 | OpenBSD | 3.5 | 3.5 | GCC 2.95.3 @ |
284 | x86 | FreeBSD | 4.4 | 4.4 | GCC 2.95.3 |
285 | x86 | FreeBSD | 4.10-PRE | 4.10-PRE | GCC 2.95.4 |
286 | x86 | FreeBSD | 4.11-STA | 4.11-STAB | GCC 2.95.4 |
287 | x86 | FreeBSD | 5.3 | 5.3 | GCC ?????? |
288 [+-------------+----------------+----------+-----------+------------------+]
289 | PPC | OSX/Darwin | 10.3 | 10.3 | GCC 3.3 |
290 [+-------------+----------------+----------+-----------+------------------+]
291 | SPARC | SunOS/Solaris | 5.8/8.0 | 5.8/8.0 | GCC/SC 3.0.1/5.3 |
292 | x86 | SunOS/Solaris | 5.8/8.0 | 5.8/8.0 | GCC 2.95.3 |
293 | SPARC | SunOS/Solaris | 5.9/9.0 | 5.9/9.0 | GCC 3.3 |
294 | x86 | SunOS/Solaris | 5.9/9.0 | 5.9/9.0 | GCC/SC 3.3.2/5.5 |
295 [+-------------+----------------+----------+-----------+------------------+]
296 | @ = Propolice # = ssp $ = pie | Submit: <libspf-support@codeshare.ca> |
297 [+--------------------------------------------------------------------------+]
298
299
300 8.0 Resources:
301 --------------
302
303 I've tried to provide as much support as I can through the means at my disposal.
304 This being said you have access to the following:
305
306 8.1 Email:
307 ----------
308
309 I'm readily available via E-Mail both on and off the list to help answer
310 any questions that are not blatantly answered through a little reading.
311
312 If you are a developer looking to implement and have a question, bug,
313 feature, idea, etc.. DO NOT HESITATE to contact me!
314
315 If you are an Administrator and you are trying to implement libSPF on
316 your network, and you have exhausted the available help, DO NOT
317 HESITATE to contact me!
318
319 Contact E-Mail: jcouzens@codeshare.ca
320
321
322 8.2 Developer Forums:
323 ---------------------
324
325 The developer forums are aimed to promoting further patch work implementing
326 libSPF in other MTA's and in other ways. Its also a venue of bug-fix
327 releases and feature-testing.
328
329 Developers will find this site most useful, but this doesn't exclude any
330 particular party from participating, all are welcome to be involved.
331
332 Developer Foruyms: http://forums.codeshare.ca
333
334 8.3 Mailing List:
335 -----------------
336
337 As of August 1, 2004 there is now a mailing list hosted by codeshare.ca
338 entitled 'libspf'. You can subscribe to this mailginglist quite easily
339 by submitting an email to 'libspf-subscribe@codeshare.ca' with an empty
340 body and the subject: 'libspf subscribe'.
341
342 There is also an announcesments list which is 'receive only' in that
343 only libSPF developers will post to it in announcement of a new
344 release or bugfix. To subscriber to this list submit and email to
345 'libspf-announce-subscribe@codeshare.ca' with an empty body and the
346 subject: 'libspf announce subscribe'.
347
348
349 9.0 Contact:
350 ------------
351
352 Forums ....................... http://forums.codeshare.ca
353 WWW .......................... http://libspf.org
354 Bugs ......................... James Couzens <jcouzens@codeshare.ca>
355
356
357 10.0 Donations:
358 ---------------
359
360 Honestly the best donation you can give is to provide feedback,
361 patches, or aide the project in one fashion or another. If you
362 do wish to show your appreciation in a more tangible form, I
363 personally enjoy books and small electronic devices which you
364 can find on my Amazon wishlist.
365
366 http://libspf.org/wishlist.html
367
368 Link seems to break from time to time, so if it does you could
369 search for my name if you were so motivated, or drop me a line :)
370
371 UPDATED: Mon Apr 18 21:32:45 PDT 2005
372
373 EOF