--- pyspf-2.0.4.orig/debian/pyspf-type99.1 +++ pyspf-2.0.4/debian/pyspf-type99.1 @@ -0,0 +1,170 @@ +\" +.\" Standard preamble: +.\" ======================================================================== +.de Sh \" Subsection heading +.br +.if t .Sp +.ne 5 +.PP +\fB\\$1\fR +.PP +.. +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +'br\} +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. nr % 0 +. rr F +.\} +.\" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.hy 0 +.if n .na +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "pyspf-type99 1" +.TH pyspf-type99 1 "2007-01-16" +.SH "NAME" +type99 \- Python Type TXT to Type 99/SPF conversion script +.SH "VERSION" +.IX Header "VERSION" +2\.0\.4 + +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" + +The type99script will convert DNS TXT strings to a binary +equivalent suitable for use in a BIND zone file. + +.SH "USAGE" +.IX Header "USAGE" + +The type99 script is called from the command line as follows: + +python type99 "v=spf1 -all" {Note: Use your desired SPF record instead.} + +\\# 12 0b763d73706631202d616c6c {This is the correct result for "v=spf1 -all"} + +or + +python type99 - {File name} + +The input file format is a standard BIND Zone file. The type99 script will add +a Type99 record for each TXT record found in the file. + +.SH "SEE ALSO" +.IX Header "SEE ALSO" + +RFC 4408, + +.SH "AUTHORS" +.IX Header "AUTHORS" +This version of \fBtype99\fR was written by Stuart Gathman and +updated by Scott Kitterman . +.PP +This man-page was created by Scott Kitterman . --- pyspf-2.0.4.orig/debian/rules +++ pyspf-2.0.4/debian/rules @@ -0,0 +1,20 @@ +#!/usr/bin/make -f +# -*- mode: makefile; coding: utf-8 -*- + +DEB_PYTHON_SYSTEM=pysupport + +include /usr/share/cdbs/1/rules/debhelper.mk +include /usr/share/cdbs/1/rules/simple-patchsys.mk +include /usr/share/cdbs/1/class/python-distutils.mk + +install/python-spf:: + # Rename the `spfquery` tool for the alternatives system + # (omitting the ".py" language extension): + mv debian/python-spf/usr/bin/spfquery.py debian/python-spf/usr/bin/spfquery.$(DEB_SOURCE_PACKAGE) + # Give the `type99` tool a more specific name + # (omitting the ".py" language extension): + mv debian/python-spf/usr/bin/type99.py debian/python-spf/usr/bin/$(DEB_SOURCE_PACKAGE)-type99 + # Install man pages + dh_installman debian/pyspf.1 debian/spfquery.pyspf.1 debian/pyspf-type99.1 + # Install test suite + dh_install test usr/share/python-support/python-spf --- pyspf-2.0.4.orig/debian/python-spf.prerm +++ pyspf-2.0.4/debian/python-spf.prerm @@ -0,0 +1,13 @@ +#!/bin/sh -e + +mode=$1 + +source_package=pyspf + +case "$mode" in + remove ) + update-alternatives --remove spfquery /usr/bin/spfquery.$source_package + ;; +esac + +#DEBHELPER# --- pyspf-2.0.4.orig/debian/test +++ pyspf-2.0.4/debian/test @@ -0,0 +1,2 @@ +test/* + --- pyspf-2.0.4.orig/debian/spfquery.pyspf.1 +++ pyspf-2.0.4/debian/spfquery.pyspf.1 @@ -0,0 +1,189 @@ +\" +.\" Standard preamble: +.\" ======================================================================== +.de Sh \" Subsection heading +.br +.if t .Sp +.ne 5 +.PP +\fB\\$1\fR +.PP +.. +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +'br\} +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. nr % 0 +. rr F +.\} +.\" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.hy 0 +.if n .na +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "spfquery.pyspf 1" +.TH spfquery.pyspf 1 "2007-01-16" +.SH "NAME" +spfquery.pyspf \- pure-Python spfquery script +.SH "VERSION" +.IX Header "VERSION" +2\.0\.4 + +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" + +The spfquery script is a Python reimplementination of Wayne Schlitt's spfquery +command line tool. + +.SH "USAGE" +.IX Header "USAGE" + +The spfquery script is called with a number of possible options. Options can +either use standard '-' prefix or be PERL style long options, '--'. Supported +options are: + +"--file" or "-file" {filename}: Read the query (or queries) from the designated + file. If {filename} is '0', then query inputs are read from STDIN. + + "--ip" or "-ip" {address}: Client IP address to use for SPF check. + + +"--sender" or "-sender" {Mail From address}: Envelope sender from which mail was + received. + +"--helo" or "-helo" {client hostname}: HELO/EHLO name used by SMTP client. + +"--local" or "-local" {local policy SPF string}: Additional SPF mechanisms to be + checked on the basis of local policy. Note that local policy matches are + not strictly SPF results. Local policy processing is not defined in RFC + 4408. Result may vary among SPF implementations. + +"--rcpt-to" or "rcpt-to" {rcpt-to address - if available}: Receipt to address is + not used for actual SPF processing, but if available it can be useful for + logging, spf-received header construction, and providing useful rejection + messages when messages are rejected due to SPF. + +--default-explanation" or "-default-explanation" {explanation string}: Default + Fail explanation string to be used. + +"--sanitize" or "-sanitize" and "--debug" or "-debug": These options are no-op + in the Python implementation, but are valid inputs to provide compatibliity + with input files developed to work with the original PERL and C spfquery + implementations. + +.SH "SEE ALSO" +.IX Header "SEE ALSO" + +RFC 4408, + +.SH "AUTHORS" +.IX Header "AUTHORS" +This version of \fBspfquery\fR was written by Stuart Gathman . +.PP +This man-page was created by Scott Kitterman . --- pyspf-2.0.4.orig/debian/pyspf.1 +++ pyspf-2.0.4/debian/pyspf.1 @@ -0,0 +1,250 @@ +\" +.\" Standard preamble: +.\" ======================================================================== +.de Sh \" Subsection heading +.br +.if t .Sp +.ne 5 +.PP +\fB\\$1\fR +.PP +.. +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +'br\} +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. nr % 0 +. rr F +.\} +.\" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.hy 0 +.if n .na +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "python-spf 1" +.TH python-spf 1 "2007-01-16" +.SH "NAME" +pyspf \- pure-Python SPF library +.SH "VERSION" +.IX Header "VERSION" +2\.0\.4 + +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" + +SPF does email sender validation. For more information about SPF, +please see http://www.openspf.org/ + +One incompatible change was introduced in version 1.7. Prior to version 1.7, +connections from a local IP address (127...) would always return a Pass +result. The special case was eliminated. Programs calling pySPF should not +do SPF checks on locally submitted mail. + +This SPF client is intended to be installed on the border MTA, checking +if incoming SMTP clients are permitted to forward mail. The SPF check +should be done during the MAIL FROM:<...> command. + +.SH "USAGE" +.IX Header "USAGE" + +There are two ways to use this package. The first is from the command +line:: + % python spf.py {ip-addr} {mail-from} {helo} + +For instance, during an SMTP exchange from client 69.55.226.139:: + S: 220 mail.example.com ESMTP Postfix + C: EHLO mx1.wayforward.net + S: 250-mail.example.com + S: ... + S: 250 8BITMIME + C: MAIL FROM: + +Then the following command line would check if this is a valid sender: + % ./spf.py 69.55.226.139 terry@wayforward.net mx1.wayforward.net + ('pass', 250, 'sender SPF authorized') + +Command line calls return RFC 4408 result codes, i.e. 'pass', 'fail', 'neutral', +\'softfail, 'permerror', or 'temperror'. + +The second way is via the module's APIs. + +The legacy (pySPF 1.6) API: + >>> import spf + >>> spf.check(i='69.55.226.139', + ... s='terry@wayforward.net', + ... h='mx1.wayforward.net') + ('pass', 250, 'sender SPF authorized') + +The first element in the tuple is one of 'pass', 'fail', 'netural', 'softfail', +'unknown', or 'error'. The second is the SMTP response status code: 550 for +'fail', 450 for 'error' and 250 for all else. The third is an explanation. + +Note: SPF results alone are never sufficient to decide that a message should be +accepted. Accept, reject, or defer decisions are a function of local reciever +policy. + +The RFC 4408 compliant API: + >>> import spf + >>> spf.check2(i='69.55.226.139', + ... s='terry@wayforward.net', + ... h='mx1.wayforward.net') + ('pass', 'sender SPF verified') + +The first element in the tuple is one of 'pass', 'fail', 'neutral', 'softfail, +'permerror', or 'temperror'. The second is an explanation. + +.SH "RFC 4408 TEST SUITE" +.IX Header "RFC 4408 TEST SUITE" + +The package also installs the python-spf test driver and the current (as of the +release date) YAML (Yet Another Markup Language) RFC 4408 test definitions. As +errors or improvements in the test definitions are approved, they are available +from: + + + +To run the test suite, change the directory the test suite is installed in: + +$ cd /usr/share/python-support/python-spf/test + +and then run testspf.py: + +$ python testspf.py + +The test suite supports multiple allowed results with a warning for a +non-preferred result. For the current version, the expected results are: + +WARN: invalid-domain-long in rfc4408-tests.yml, ['8.1/2', '5/10']: fail +preferred to temperror +WARN: txttimeout in rfc4408-tests.yml, 4.4/1: fail preferred to temperror +WARN: spfoverride in rfc4408-tests.yml, 4.5/5: pass preferred to fail +WARN: multitxt1 in rfc4408-tests.yml, 4.5/5: pass preferred to permerror +WARN: multispf2 in rfc4408-tests.yml, 4.5/6: permerror preferred to pass + +.SH "OTHER PROGRAMS" +.IX Header "OTHER PROGRAMS" + +This package also provides two additional helper scripts; type99.py and +spfquery.py. The type99.py script will convert DNS TXT strings to a binary +equivalent suitable for use in a BIND zone file. The spfquery.py script is a +Python reimplementination of Wayne Schlitt's spfquery command line tool. These +scripts are described in pyspf-type99(1) and spfquery.pyspf(1) man pages. + +.SH "SEE ALSO" +.IX Header "SEE ALSO" + +RFC 4408, + +.SH "AUTHORS" +.IX Header "AUTHORS" +This version of \fBpyspf\fR was written by Terence Way +and updated by Stuart Gathman and Scott Kitterman +. +.PP +This man-page was created by Scott Kitterman . --- pyspf-2.0.4.orig/debian/docs +++ pyspf-2.0.4/debian/docs @@ -0,0 +1,2 @@ +README +debian/README.Debian --- pyspf-2.0.4.orig/debian/pycompat +++ pyspf-2.0.4/debian/pycompat @@ -0,0 +1 @@ +2 --- pyspf-2.0.4.orig/debian/compat +++ pyspf-2.0.4/debian/compat @@ -0,0 +1 @@ +5 --- pyspf-2.0.4.orig/debian/copyright +++ pyspf-2.0.4/debian/copyright @@ -0,0 +1,29 @@ +This package was debianized by Gustavo Franco on +Thu, 23 Jun 2005 11:04:29 -0300. + +The current Debian maintainer is Gustavo Franco . + +This version was downloaded from http://downloads.sourceforge.net/pymilter/ + +Copyright Holder: (c) 2003 Terence Way +Portions Copyright (c) 2004,2005,2006,2007 Stuart Gathman +Portions Copyright (c) 2005,2006,2007 Scott Kitterman + +This software is licensed under the Python Software Foundation License. + +License: + +This module is free software, and you may redistribute it and/or modify +it under the same terms as Python itself, so long as this copyright message +and disclaimer are retained in their original form. + +IN NO EVENT SHALL THE AUTHOR BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, +SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF +THIS CODE, EVEN IF THE AUTHOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGE. + +THE AUTHOR SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +PARTICULAR PURPOSE. THE CODE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, +AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE, +SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. --- pyspf-2.0.4.orig/debian/python-spf.postinst +++ pyspf-2.0.4/debian/python-spf.postinst @@ -0,0 +1,15 @@ +#!/bin/sh -e + +mode=$1 + +source_package=pyspf + +case "$mode" in + configure ) + prev_version=$2 + + update-alternatives --install /usr/bin/spfquery spfquery /usr/bin/spfquery.$source_package 75 + ;; +esac + +#DEBHELPER# --- pyspf-2.0.4.orig/debian/README.Debian +++ pyspf-2.0.4/debian/README.Debian @@ -0,0 +1,11 @@ +README.Debian + +In addition to the Python SPF library, the python-spf package installs a python +version of the spfquery script and a DNS Resource Record Type 99 (Type SPF) +conversion helper script. + +Use of the Python SPF library is documented in the pyspf(1) man page. + +Use of the Python spfquery is documented in the spfquery.pyspf(1) man page. + +Use of the Type 99 helper script is documented in the pyspf-type99(1) man page. --- pyspf-2.0.4.orig/debian/watch +++ pyspf-2.0.4/debian/watch @@ -0,0 +1,2 @@ +version=2 +http://qa.debian.org/watch/sf.php?project=pymilter/pyspf-(.*).tar.gz debian uupdate --- pyspf-2.0.4.orig/debian/pyversions +++ pyspf-2.0.4/debian/pyversions @@ -0,0 +1 @@ +2.2- --- pyspf-2.0.4.orig/debian/control +++ pyspf-2.0.4/debian/control @@ -0,0 +1,20 @@ +Source: pyspf +Section: python +Priority: extra +Maintainer: Gustavo Franco +Uploaders: Debian Python Modules Team , Guilherme de S. Pastore , Scott Kitterman +Build-Depends: cdbs (>= 0.4.34), debhelper (>= 5.0.7), python-all-dev, python-support +XS-Vcs-Svn: svn://svn.debian.org/python-modules/packages/pyspf/trunk/ +Standards-Version: 3.7.2 + +Package: python-spf +Architecture: all +Depends: ${python:Depends}, python-dns +Conflicts: spfquery (<= 1.2.5-4), libmail-spf-query-perl (<< 1:1.999.1-3), python2.4-spf, python2.3-spf +Replaces: python2.4-spf, python2.3-spf +Description: sender policy framework (SPF) module for Python + This module provides SPF (Sender Policy Framework). It is RFC 4408 compliant. + . + For more information about SPF look at http://www.openspf.org/ + . + Homepage: http://cheeseshop.python.org/pypi/pyspf/ --- pyspf-2.0.4.orig/debian/changelog +++ pyspf-2.0.4/debian/changelog @@ -0,0 +1,136 @@ +pyspf (2.0.4-1~dapper1) dapper-backports; urgency=low + + * Source backport from Gutsy to Dapper + * In debian/control: + - Remove version dependency on python-support + - Drop cdbs version dependency to 4.34 + - Drop debhelper version dependency to 5.0.7 + - Conflict/Replace python2.4-spf, python2.3-spf + - Remove Recommends: python-yaml (package doesn't exist in Dapper) + + -- Scott Kitterman Tue, 16 Oct 2007 08:43:06 -0400 + +pyspf (2.0.4-1) unstable; urgency=low + + * New upstream release + - Upstream changelog date is in error - released 30 Jul 2007 + * Update debian/watch to version 3 + * Update version numbers in /debian supplied man pages. + + -- Scott Kitterman Wed, 01 Aug 2007 11:54:13 -0400 + +pyspf (2.0.3-2) unstable; urgency=low + + * debian/control + - Add python-yaml as recommends for test suite support now that it's + packaged + * debian/rules + - Install test directory for test suite + - Delete obsolete (and commented out) rule for renaming spf.py + * debian/pyspf.1 + - Add instructions for using the pyspf test suite + + -- Scott Kitterman Tue, 15 May 2007 13:01:19 -0400 + +pyspf (2.0.3-1) unstable; urgency=low + + [ Scott Kitterman ] + + * Update package from source for new development to support RFC 4408 + (Closes: #403860) + * debian/copyright: + - Updated for new upstream maintainers. + - Corrected download location + - Added additional detail + * debian/docs + - Added README.Debian + * Added debian/README.Debian + * Added man pages + - debian/pyspf.1 + - debian/spfquery.pyspf.1 + - debian/pyspf-type99.1 + * debian/python-spf.postinst: + - Created for spfquery update alternatives + * debian/python-spf.prerm: + - Created for spfquery update alternatives + * debian/rules: + - Added dh_installman rules to install man pages + - Rename spfquery and type99 scripts + * debian/watch: + - Corrected for new upstream location + * Added debian/pyversions + * debian/control: + - Updated web site for both SPF and pyspf. + - Updated conflicts to account for new python policy and spfquery script + - Removed provides and replaces - not required (Closes: #399938) + - Updated Python build dependencies and changed to Build-Depends + + [ Piotr Ozarowski ] + + * debian/control: + - Added XS-Vcs-Svn field + + -- Scott Kitterman Wed, 4 Apr 2007 15:16:36 -0400 + +pyspf (1.6-4) unstable; urgency=low + + * debian/control: + - Remove pabs from Uploaders field as requested. + - Move architecture indep dependencies from Build-Depends + to Build-Depends-Indep. + * debian/rules: + - Add simple-patchsys support without patches. + - Remove unneded clean target. + + * New Python Policy Changes: (Closes: #373504) + + debian/control: + - Bump up cdbs dependency to >= 0.4.41. + - Bump up debhelper compatibility to 5. + - Add python-support >= 0.2.3 dependency. + - Add XS-Python-Version field. + - Depends on ${python:Depends} and not on python2.3. + - Add XB-Python-Version field. + + debian/rules: + - Add DEB_PYTHON_SYSTEM=pysupport + - Remove echo call since cdbs take care about this. + - Call python-distutils class after debhelper now. + + debian/postinst && debian/prerm: + - Remove "hand made" python-support stuff, cdbs does this. + + -- Gustavo Franco Thu, 15 Jun 2006 11:46:19 -0300 + +pyspf (1.6-3) unstable; urgency=low + + * debian/rules: + - move from debhelper to cdbs (Closes: #357023) + * debian/control: + - Standards-Version bumped up to 3.7.2 + - Remove python2.3-spf and python2.4-spf binaries, + but adds Replaces, Provides and Conflicts fields for + a transition using python-spf package. + + -- Gustavo Franco Sun, 30 Apr 2006 23:26:20 -0300 + +pyspf (1.6-2) unstable; urgency=low + + [ Guilherme de S. Pastore ] + * debian/control.in: + - Add @PYTHON_MODULES_TEAM@ to Uploaders: + - Updated Standards-Version to 3.6.2 with no changes + * debian/rules: + - Added code to automatically generate the list of uploaders based + on information available on the team's SVN repository + + [ Gustavo Franco ] + * debian/control: + - Stops shipping python2.2-spf binary + * debian/rules: + - python2.4-spf build added (Closes: #351134) + + -- Gustavo Franco Sun, 12 Feb 2006 19:27:42 -0200 + +pyspf (1.6-1) unstable; urgency=low + + * Initial Release. (Closes: #315679) + + -- Gustavo Franco Thu, 23 Jun 2005 11:04:29 -0300 --- pyspf-2.0.4.orig/spf.py +++ pyspf-2.0.4/spf.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python + """SPF (Sender Policy Framework) implementation. Copyright (c) 2003, Terence Way