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, 6 months ago) by root
Branch: MAIN
CVS Tags: HEAD
Log Message:
initial import of libspf-1.0.0-p5 from freebsd ports

File Contents

# User Rev Content
1 root 1.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