Version 2.0.5 - March 8, 2008
  * Add TCP fallback if DNS UDP reply is truncated
    - Fixes inconsistent results from trying to use partial UDP replies
  * Correct Received-SPF formatting
  * Minor updates to reflect RFC 4408 errata
  * Added License file for RFC 4408 test suite
  * Update RFC 4408 test suite from svn
  * Fix Type99 conversion script to work with multi-string TXT records

Version 2.0.4 - January 24, 2007
  * Correct unofficial 'best guess' processing.
  * PTR validation processing cleanup
  * Improved detection of exp= errors
  * Keyword parameters on get_header()

Version 2.0.3 - January 15, 2007
  * IPv6 compatibility test fix to support Python 2.2
  * Change DNS queries to only check Type SPF in Harsh mode
  * pyspf requires pydns, python-pyspf requires python-pydns
  * Record matching mechanism and add to Received-SPF header.
  * Test for RFC4408 6.2/4, and fix spf.py to comply.
  * Permerror for more than one exp or redirect modifier.
  * Parse op= modifier

Version 2.0.2 - January 4, 2007
  * Update openspf URLs
  * Update Readme to better describe available pyspf interfaces
  * Add basic description of type99.py and spfquery.py scripts
  * Add usage instructions for type99.py DNS RR type conversion script
  * Add spfquery.py usage instructions
  * Incorporate downstream feedback from Debian packager
  * Fix key-value quoting in get_header

Version 2.0.1 - December 08, 2006 
  * Prevent cache poisoning attack
  * Prevent malformed RR attack
  * Update license on a few files we missed last time

Version 2.0 - November 20, 2006
  * Completed RFC 4408 compliance
  * Added spf.check2 for RFC 4408 compatible result codes
  * Full IP6 support
  * Fedora Core compatible RPM spec file
  * Update README, licenses

Version 1.8 - July 26, 2006
  * YAML test suite syntax
  * trailing dot support (RFC4408 8.1)

Version 1.7 - July 21, 2005
  * Strict processing limits per newly official SPF RFC
  * Fixed several parsing bugs under RFC 
  * Support official IANA SPF record (type99)
  * Extended SPF processing results beyond strict RFC limits
  * Validate spf.py against test suite, and add Received-SPF support to spf.py
  * Support best_guess for SPF
  * Support SPF delegation

Version 1.6 - December 18, 2003
  * Arik Baratz pointed out endian problems using socket.inet_ntoa() and
    socket.inet_aton().  Use struct.pack("!L", struct.unpack("!L") to fix.

Version 1.5 - December 17, 2003
  * Replace DNS.addr2bin() and DNS.bin2addr() with socket.inet_ntoa() and
    socket.inet_aton().  New code supports n, n.n, and n.n.n formats for IPv4
    addresses, and gets rid of annoying Python 2.4 future warnings

Version 1.4 - December 16, 2003
  * Greg Connor discovered that SPF queries to altavista.com were broken. 
    This was testing to see if a mechanism needs to be macro expanded _before_
    leading ? + - characters were removed.
  * Fixed include handling to be a real mechanism: -include must work.

Version 1.3.1 - December 14, 2003
  * Forgot to include new test file in distribution.
  * Forgot CHANGELOG in distribution.

Version 1.3 - December 13, 2003
  * Add %{o} (original sender domain) macro
  * The ./spf.py {spf} {ipaddr} {sender} {helo} command line didn't print
    out the results.  Oops.
  * Support default= so Meng's test #6 'v=spf1 default=deny' works
  * Any IP address '127.*.*.*' automatically pass, so all Meng's tests work
  * Follow DNS CNAMES
  * Cache DNS results, including additional info, reducing DNS query load
  * Support Python 2.2 (doesn't have bool, True, False: those are
    added in Python 2.2.1)

Version 1.2 - December 11, 2003
  * Added exp= (explanation) and redirect= modifiers
  * Added macros

Version 1.1 - December 9, 2003
  * Meng Weng Wong added PTR code, THANK YOU

Version 1.0 - December 9, 2003
  * Initial Version
