			DKIM-MILTER RELEASE NOTES


This listing shows the versions of the dkim-milter package, the date of
release, and a summary of the changes in that release.

Bug and feature request (RFE) numbers that start with "SF" were logged
via Sourceforge (http://www.sourceforge.net) trackers.  Those not so labeled
were logged internally at Sendmail, Inc.


2.8.3		2009/05/31
	Close the configuration file after reading it, plugging a
		descriptor leak.
	Release memory associated with old configuration nodes (i.e. strings)
		as well as the nodes themselves.
	Connect the configuration handle to its allocated data so cleanup can
		actually be thorough.
	Fix an error message reported inside _FFR_REPLACE_RULES.
	Plug a memory leak in mlfi_header() tripped when errors occur.
	Since ADSP has not yet been registered by IANA, adjust its method
		label in Authentication-Results accordingly.
	Include selector, domain and other text if possible when logging
		key retrieval failures.
	Add _FFR_SENDER_HEADERS, allowing user control over which header
		fields are used to make the sign/verify decision and
		perform key selection.
	LIBDKIM: Initialize canon_lastchar in dkim_add_canon().
	LIBDKIM: Clean up any compiled regular expressions in dkim_close().
	LIBDKIM: Fix some type-related compiler warnings.

2.8.2		2009/02/17
	Request a signature with an "i=" tag if signing for subdomains and
		a keylist entry matches.  Previously this only occurred when
		using an explicit domain list.  Problem noted by
		S. Moonesamy of Eland Systems.
	Fixes in and around dkim_socket_cleanup().  Problem noted by
		S. Moonesamy of Eland Systems.
	LIBDKIM: When logging a d2i_PUBKEY_bio() or EVP_PKEY_get1_RSA()
		failure, also log the selector and domain involved so manual
		diagnostics are possible.
	LIBDKIM/LIBAR: Feature request #SF2380508: Add new test for
		WITHOUT_LIBSM which removes references to libsm's sm_strl*()
		functions, so that libdkim and libar can stand on their own
		on systems which provide the strl*() functions.  Requested by
		Frederik Pettai.
	LIBDKIM: Report DKIM_STAT_NOSIG if the caller commands that all
		signatures should be ignored.
	LIBDKIM: Plug a memory leak caused when responding to a malloc()
		failure.
	LIBDKIM: New signature error code DKIM_SIGERROR_KEYDECODE, used if
		 d2i_PUBKEY_BIO() or EVP_PKEY_get1_RSA fails in
		dkim_sig_process().
	LIBAR: Make reference to the "_res" structure more thread-safe.
	BUILD: Make use of conf_dkim_filter_ENVDEF since site.config.m4.dist
		refers to it.  Problem noted by S. Moonesamy of Eland Systems.

2.8.1		2009/01/16
	LIBDKIM: Fix bug #SF2508602: Add a translation string for
		DKIM_SIGERROR_KEYREVOKED and fix dkim_eom_verify() so it
		returns DKIM_STAT_REVOKED when appropriate.  Problem noted
		by Mike Markley of Bank of America.

2.8.0		2009/01/08
	Add configuration option "EnableCoredumps" which makes an explicit
		kernel request for cores on crashes.  Currently only meaningful
		on Linux.
	Add configuration option "AuthServID" which sets the "authserv-id"
		token to use when generating Authentication-Results header
		fields.
	Report "fail" instead of "hardfail" on authentication failures,
		in compliance with the Authentication-Results: draft.
	Add _FFR_REPORT_INTERVALS, experimental support for the "ri" tag
		extension to DKIM policy and key records for specifying
		reporting intervals.
	Feature request #SF1985886: Add _FFR_MULTIPLE_SIGNATURES, allowing
		one instance of the filter to add multiple signatures.
		Suggested by Dave Crocker.
	Add "TemporaryDirectory" configuration file option for requesting that
		libdkim use an alternate directory for creating temporary
		files, and "KeepTemporaryFiles" for requesting that libdkim
		not delete those files for debugging purposes.
	Add optional support for the "unbound" asynchronous resolver
		library as it is DNSSEC-aware.  Adds four new configuration
		file items: "BogusKey", "BogusPolicy", "InsecureKey" and
		"InsecurePolicy".  Also add dkim_sig_getdnssec()
		and dkim_policy_getdnssec() to libdkim so callers can tell
		what the DNSSEC evaluation result was for each query.
		Based on a patch from John Dickinson.
	Add "BaseDirectory" configuration file option for specifying
		the desired current directory of the process.
	Make use of the key and policy "rs" tag, if present, when doing
		SMTP rejections.
	Use MTA macro "$j" as the hostname in generated reports instead of
		the output of gethostname() since on some systems the latter
		may not be fully-qualified.
	Remove ANTICIPATE_SENDMAIL_MUNGE, replacing it with a runtime check
		for the milter v2 feature which suppresses the addition of
		spaces in headers.
	Add _FFR_COMMAIZE which attempts to predict the reformatting
		the MTA will do to certain header fields to reduce verification
		failures.
	Add _FFR_DKIM_REPUTATION enabling a function used to query
		an open DKIM reputation service regarding the signing user
		and signing domain.  The service's URL is
		http://www.dkim-reputation.org. (EXPERIMENTAL)
	Fix preloading of configuration defaults.
	Fix bug #SF2236040: Quote all of the POSIX regular expression special
		characters, not just some of them.  Reported by Mark Martinec.
	When possible, log the selector and domain of the signature evaluated
		along with any errors in the libcrypto stack.
	LIBDKIM: Add "smtpbuf", "smtplen" and "interval" parameters to
		dkim_sig_getreportinfo() and dkim_policy_getreportinfo().
		Also, remove the assertion that "addr" be non-NULL.
	LIBDKIM: Add DKIM_LIBFLAGS_ACCEPTDK which enables compatibility
		with DomainKeys-formatted key records.
	LIBDKIM: Adjust signature formatting for legibility.
	LIBDKIM: Check return status from dkim_canon_getfinal() to avoid
		bad dereferences.  Problem noted by Chris Behrens of
		Concentric Network Corporation.
	LIBDKIM: Render the DKIM handle unusable in dkim_eoh_sign() if a
		required header was absent.
	Activate _FFR_REQUIRED_HEADERS.

2.7.2		2008/09/02
	Avoid memory leaks and infinite loops when releasing thread-specific
		memory.  Reported by Jeff Earickson.

2.7.1		2008/08/27
	Set up required callbacks for OpenSSL thread-safety.  Problem
		noted by Zbigniew Szalbot.
	Disallow empty "t=" and "x=" tags.
	Return DKIM_STAT_KEYFAIL for various DNS key retrieval failures
		instead of DKIM_STAT_INTERNAL.

2.7.0		2008/07/23
	Update to draft-ietf-dkim-ssp-04.  In doing so, rename "ASPDiscard"
		to "ADSPDiscard", "ASPNoSuchDomain" to "ADSPNoSuchDomain"
		and "SendASPReports" to "SendADSPReports" in the configuration
		file.
	Feature request #29738: Add "TrustSignaturesFrom" configuration
		file item allowing fine-grained control over third-party
		signature handling.
	Feature request #SF2018848: Add "LocalADSP" feature allowing
		policy assertions from domains known to have specific policies
		but which don't publish ADSP records.  Suggested by
		Bruno Kraychete da Costa.
	LIBDKIM: Fix an off-by-one overrun check in key and policy record
		decoding.  Problem noted by John Dickinson.
	
2.6.0		2008/06/11
	Remove "signaturemissing" as an old-style configuration action
		as it has been superseded by "ASPDiscard" and related
		functions.
	Add "SendASPReports" configuration option which generates ASP failure
		reports if requested by the sending domain.
	Update report generation for verification failures to use the
		new Abuse Reporting Format (ARF) and DKIM Reporting
		draft proposals.
	Add "MustBeSigned" configuration option, requiring signatures to
		cover specific headers if present.
	Rename "UseASPDiscard" to "ASPDiscard".
	Add "ASPNoSuchDomain" configuration option which rejects mail that
		appears to come from nonexistent domains as reported by the
		Author Signing Practises check.
	Add "ReportAddress" configuration option, used for defining the
		From: header of reports mailed out.
	Yet another compatibility fix with respect to Sleepycat DB.
	Fix processing of "LogWhy" configuration parameter.  Problem noted
		by Erik Lotspeich.
	Add "-n" command line flag which parses the command line arguments
		and configuration file(s), then exits with an appropriate
		status code.
	Report DKIM and ASP results separately via the same
		Authentication-Results header field.  Previous versions would
		alter the DKIM result based on ASP.
	Fix bug #SF1976931: Restore function of "nosignature" old-style
		action configuration, connected to "AlwaysAddARHeader".
		Problem noted by Lucas Brasilino.
	Feature request #SF1940233: Add "DontSignMailTo" configuration option,
		allowing a list of recipient patterns whose mail should not
		be signed.  Requested by Don Hughes.
	LIBDKIM: Rename dkim_reportinfo() to dkim_sig_getreportinfo(),
		and add dkim_policy_getreportinfo().
	LIBDKIM: Add several more signature error codes covering various
		key-related errors.
	LIBDKIM: Add dkim_sig_hdrsigned() utility, DKIM_OPTS_MUSTBESIGNED
		option, and DKIM_SIGERROR_MBSFAILED error code.
	LIBDKIM: Fix a bug in the computation of the result for
		dkim_canon_minbody().
	LIBDKIM: Report corrupted base64 chunks instead of quietly
		tolerating them.
	LIBDKIM: Tidy up the cleanup code in dkim-canon.c.
	LIBDKIM: Properly handle "tag=" at the end of a data set (i.e.
		the tag exists and has an empty value).
	LIBDKIM: Use larger unsigned data types in dkim_sig_future() as
		was done elsewhere.
	LIBDKIM: Always populate a DKIM_SIGINFO with domain and selector
		before there's an opportunity for other parsing
		short-circuits.
	LIBDKIM: Fix bug #SF1984685: Remove the "margin" parameter from
		dkim_getsighdr(); make it controlled by a new function,
		dkim_set_margin(), so that the signed copy and the
		user-requested copy are identical.
	Activate _FFR_AUTHSERV_JOBID.

2.5.5		2008/04/25
	Fix bug #SF1947301: Close up a logic problem in "UseASPDiscard"
		handling which could cause false rejections of mail from
		domains advertising "discardable" policies.  Problem noted
		by Doug Kingston.
	LIBDKIM: Another compatibility fix with respect to Sleepycat DB.

2.5.4		2008/04/17
	Skip signatures with errors in dkimf_authorsigok().
	Avoid a NULL dereference in dkimf_config_reload() when starting
		without a configuration file.
	Fix an alignment problem in dkimf_checkip().  Problem reported
		by Jeff A. Earickson.
	LIBDKIM: Fix bug #SF1942387: Per RFC4871, disallow "l=" values
		that exceed the size of the canonicalized message body.

2.5.3		2008/04/14
	Add "AllowSHA1Only" configuration option which permits operation
		of verifiers that only know about SHA1.  Without this, a
		filter compiled with only SHA1 support will refuse to start
		in verifier mode.
	Add "LogWhy" configuration parameter and "-W" command line flag
		to request detailed logging about why a message was not
		signed by the filter.  Intended for debugging; not intended
		for normal operation.
	Another tweak to parameters passed to db->open().  Based on patches
		from Jukka Salmi and S. Moonesamy.
	Fixes in ares_parse() to match the current syntax.  In particular,
		deal with the fact that some of our tokens can legally appear
		in e-mail addresses.  Problem noted by S. Moonesamy of
		Eland Systems.
	LIBDKIM: Evaluate key granularity against the "i=" value rather than
		the value of the From: header per RFC4871.  Problem noted by
		Jason Long.
	LIBDKIM: Remove the chartable stuff from dkim-tables.c as it is
		not used anywhere.
	LIBDKIM: Fix bug #SF1940302: Perform stronger validation of the value
		of the "h=" tag.

2.5.2		2008/03/28
	Preserve the sender's domain name outside of mlfi_eoh() as it's
		now needed in mlfi_eom().  Problem noted by Andy Fiddaman.
	Fix bug #SF1921873: Pass "-K" command line switch into the new
		configuration handling code.  Problem noted by Al Smith.
	TOOLS: Fix flags portion of the TXT record output by dkim-genkey.
		Problem noted by Michael Carland.
	BUILD: Fix bug #SF1922422: Fix linker problems when POPAUTH is
		defined.

2.5.1		2008/03/20
	Update for draft-kucherawy-sender-auth-header-14.
	Fix bug #SF1911328: Restore proper behaviour of SignHeaders and
		OmitHeaders, broken in the prior release's configuration
		overhaul.  Problem reported by Jason Molzen.
	Fix bug #SF1912332: Fix parameters passed to db->open().  Problem
		reported by Tony Earnshaw.
	Fix bug #SF1912569: Initialize mutexes before entering test mode.
		Patch from Kaspar Brand.
	LIBDKIM: Add "subject" to "should_signhdrs" per RFC4871 section 5.5.
	LIBDKIM: More boundary checking fixes in dkim_canon_selecthdrs().
		Problem noted by Warren Horvath.
	LIBDKIM: Fix bug #SF1820084: Return DKIM_STAT_MULTIDNSREPLY
		if a DNS query returns multiple records.

2.5.0		2008/03/06
	Add "AutoRestartCount" and "AutoRestartRate" configuration
		parameters to limit runaway restart loops.
	Feature request #SF1735573: Add "AlwaysAddARHeader" option, which
		will add an Authentication-Results of "none" for unsigned
		messages from domains without a "strict" policy.
	Feature request #SF1807748: Reload the configuration file on
		receipt of SIGUSR1.  Requested by Florian Sager.
	Feature request #SF1811969: Add _FFR_BODYLENGTH_DB which adds a
		"BodyLengthDBFile" feature, allowing a per-recipient decision
		on whether or not to use an "l=" tag when signing.  Patch
		contributed by Daniel Black.
	Feature request #SF1841955: Add an "Include" facility to the
		configuration file.
	Feature request #SF1876941: Make the syslog facility selectable.
		Based on a patch from Jose-Marcio Martins da Cruz of Ecole
		des Mines de Paris.
	Feature request #SF1876943: Add _FFR_AUTHSERV_JOBID allowing the
		job ID to be included as part of the "authserv-id" in
		Authentication-Results: headers.  Based on a patch from
		Jose-Marcio Martins da Cruz of Ecole des Mines de Paris.
	Feature request #SF1890581: Attempt to clean up a UNIX domain
		socket in the non-AutoRestart case as well.  Requested
		by Daniel Black.
	Add "MilterDebug" configuration file option for requesting debugging
		output from the filter.
	Add "FixCRLF" configuration file option which activates the
		DKIM_LIBFLAGS_FIXCRLF flag (see below).
	Update to draft-ietf-dkim-ssp-03.  In doing so, rename the
		"UseSSPDeny" configuration option to "UseASPDiscard".
	Handle an error from dkim_getsighdr() properly in mlfi_eom().
	When VERIFY_DOMAINKEYS is active, don't short-circuit mlfi_eoh()
		between dk_verify() and dk_eoh() or a segmentation fault below
		dk_body() could result.
	LIBDKIM: Feature request #SF1823059: Export key, signature and
		policy syntax checking capability via the API.  Based on
		a patch from Chris Behrens of Concentric Network Corporation.
	LIBDKIM: Assert defaults for "c" and "q" tags when parsing
		signature headers.  Patch from Chris Behrens of Concentric
		Network Corporation.
	LIBDKIM: Better handling of truncated DNS replies; instead of
		just giving up if the "tc" (truncated) bit is set in the
		reply, see if there was enough of a reply returned to be able
		to complete the request.
	LIBDKIM: Fix recycling bug in header canonicalizations which was
		causing signatures other than the first one to fail in most
		cases.
	LIBDKIM: Add new dkim_chunk() interface.
	LIBDKIM: Enforce DKIM_OPTS_QUERYMETHOD library option even if there
		were no valid signatures.
	LIBDKIM: New DKIM_LIBFLAGS_FIXCRLF which requests that "naked"
		CRs and LFs be converted to CRLFs during canonicalization
		when signing.
	LIBDKIM: Fix bounds checking in dkim_canon_selecthdrs().
	LIBAR: Eliminate a possible race condition in ar_dispatcher().
	LIBAR: Timeouts passed to select() can't be bigger than 10^8.
		Problem noted by S. Moonesamy of Eland Systems.
	BUILD: Feature request #SF1876242: Install the filter in EBINDIR
		and everything else in UBINDIR.

2.4.4		2008/01/25
	In mlfi_close(), don't assume the libmilter private context pointer
		is not NULL.
	Fail to start up if told to load a key list which resulted in no
		keys being loaded.
	When "AutoRestart" is in use, the parent will now wait for the
		child to terminate before exiting.  Thus, something that
		signals the process ID in the pid file can also wait on that
		process to be gone before being sure that the service has
		actually shut down.
	Include the job ID when logging about Authentication-Results: headers
		that can't be parsed.  Problem noted by S. Moonesamy.
	LIBDKIM: In dkim_policy(), skip invalid signatures during evaluation
		of step 1 of SSP as the signature handle may not have been
		fully populated.

2.4.3		2008/01/18
	Request addition of an "i=" tag in the signature when signing for
		subdomains.  Patch from Alin Nastac.
	TOOLS: Fix bug #SF1867259: "echo -n" is not portable.  Problem
		noted by Gary Mills.
	TOOLS: Fix bug #SF1867869: Output of the "t=" value was incorrect
		with respect to the "s" flag.  Reported by Geoff Adams.
	LIBAR: Further handling of the absence of "nameserver" lines in
		resolv.conf, this time in the manual processing code.
	LIBDKIM: Fix bug #SF1867839: 64-bit portability in rfc2822.c.
		Patch from Geoff Adams.
	LIBDKIM: Tighten up correctness of the first SSP test ("valid
		originator signature") in dkim_policy().  Problem noted
		by Alin Nastac.
	LIBDKIM: DKIM_SIGINFO handles are now initialized with an error
		code of DKIM_SIGERROR_UNKNOWN.  The code only becomes
		DKIM_SIGERROR_OK after the cryptographic verification
		code returns a success result.
	BUILD: Fix bug #SF1818906: Update site.config.m4 to include a flag
		for installing libdkim when compiling static libraries,
		and installing dkim.h in either case.  Requested by
		Chris Behrens of Concentric Network Corporation.

2.4.2		2008/01/02
	Remove "-H" from the usage message.  It was meant to be a command
		line interface to "AlwaysSignHeaders" but was never
		implemented.  Problem noted by Jeff Anton.
	LIBDKIM: Make dkim_islwsp() into a macro to drastically reduce the
		number of function calls made during canonicalization.
	LIBDKIM: Fix bug #SF1857484: Fix logic problem in dkim_policy() with
		the new pstate checks.  Problem noted by Werner Wiethege;
		patch from Chris Behrens of Concentric Network Corporation.

2.4.1		2007/12/20
	Update for latest Authentication-Results: header draft.
	Avoid a NULL dereference in dkim_get_key().  Problem noted by Chris
		Behrens of Concentric Network Corporation.
	Fix bug #SF1842970: Make the overall header byte count check
		configurable, and increase the default.  Also, add
		"On-Security" (configuration file) and "security" (command
		line) options for controlling the default reaction to such
		conditions.  While we're at it, add an "On-Default" and
		"default" option for making a global action setting.
		Requested by Mark Martinec.
	LIBAR: Fix bug #SF1852618: Handle default case of no "nameserver"
		lines in /etc/resolv.conf.  Problem noted by Mike Markley
		of Bank of America.
	LIBDKIM: Fix bug #SF1824876: Add "dkim_pstate" and make dkim_policy()
		re-entrant.  Requested by Chris Behrens of Concentric
		Network Corporation.
	LIBDKIM: Fix bug #SF1843733, SF1843782: Tighten up header name
		matching in dkim_get_header() and dkim_get_sender().  Patches
		from Chris Behrens of Concentric Network Corporation.
	LIBDKIM: Fix bug #SF1843788: Fix an off-by-one length bug in
		dkim_header().  Patch from Chris Behrens of Concentric
		Network Corporation.
	LIBDKIM: Fix bug #SF1850973: Remove MAXHDRCNT; make the arrays it
		previously defined dynamic.  Reported by Mike Markley of
		Bank of America.
	LIBDKIM: Feature request #SF1841974: Numerous performance enhancements
		from Chris Behrens of Concentric Network Corporation.

2.4.0		2007/11/30
	Take advantage of some more features that were introduced with
		milter v2 in sendmail 8.14.0:
		o If all canonicalizations are satisfied in terms of
			length limits, advise the MTA to stop sending the
			message body to reduce unneeded I/O.
		o Turn off as many unnecessary SMTP protocol steps as
			possible.
		o Fail option negotiation if any of the milter features
			required are not available.
		o If specific MTA macros are to be used for making the
			sign vs. verify decision, explicitly request them.
	Prevent corruption in Authentication-Results: headers caused
		by signatures that have explicit "i=" values.
	Report "hardfail" instead of "fail" on authentication failures,
		in compliance with the Authentication-Results: draft.
	Amend the "-M" command line option and "MacroList" configuration
		options to allow a list of possible values for each
		macro.
	Add _FFR_SELECTOR_HEADER, adding the means to choose which selector
		(and thus which key) is used to sign based on the value
		found in a particular header.  Requested by Steve Jones
		of Bank of America.
	Add dkimf_dstring*() (dynamic string) functions and clean up some
		code by making use of it.
	Skip all the userid and group changes when either "-u" or "UserID"
		is in use if the requested user is the same as the
		executing user.
	Fix use of "UseSSPDeny" to include handling of unsigned messages.
	Fix bug #SF1834701: Log a warning and temp-fail the message if
		a key list is in use that didn't match the sender for a
		message which should be signed.  Problem noted by Jim
		Hermann.
	Patch #SF1796697: Add _FFR_REPLACE_RULES, adding the facility to do
		substring replacement before signing to anticipate things
		like the MTA "masquerade" and "genericstable" functions.
		Requires further development.
	Replace "gentxt.csh" with more robust "dkim-genkey" utility.
	Feature request #SF1811962: Add new utilities "dkim-testkey" which
		verifies that a public key is readable and properly formatted
		and matches the locally-provided private key, and
		"dkim-testssp" which retrieves a domain's sender signing
		practises record and prints it in a human-readable form.
		Based on code contributed by Daniel Black.
	Feature request #SF1817253: Add "UMask" configuration file option.
		Suggested by Daniel Black.
	Feature request #SF1818863: Add a section to site.config.m4.dist
		to request a build of the shared object version of libdkim.
		Requested by Chris Behrens of Concentric Network Corporation.
	Feature request #SF1834748: Use a more meaningful SMTP reply when
		rejecting a message at the SMTP level due to SSP.  Suggested
		by S. Moonesamy of Eland Systems.
	LIBDKIM: Return DKIM_STAT_NOKEY from dkim_get_key_dns() if the answer
		count comes back zero, rather than DKIM_STAT_CANTVRFY.
		Problem noted by Chris Behrens of Concentric Network
		Corporation.
	LIBDKIM: Plug a memory leak in dkim_get_key().  Problem noted by
		Chris Behrens of Concentric Network Corporation.
	LIBDKIM: Replace a dicey memcpy() call with memmove().  Problem
		noted by Chris Behrens of Concentric Network Corporation.
	LIBDKIM: Add DKIM_CBSTAT_NOTFOUND and DKIM_CBSTAT_ERROR callback
		return codes, and DKIM_STAT_CBERROR return code.  Suggested
		by Chris Behrens of Concentric Network Corporation.
	LIBDKIM: Add dkim_minbody() to determine how much more body text
		is required to satisfy canonicalizations.
	LIBDKIM: Add dkim_gethandlingstr() and dkim_getpolicystr() for
		translation of SSP handling and policy codes into printable
		strings.
	LIBDKIM: Add _FFR_PARSE_TIME, adding a utility function that can
		be used to detect that the timestamp on a signature and the
		value of the Date: header wildly differ.  Incomplete.
	LIBDKIM: If a message comes in with no properly-formed sender headers,
		dkim_eoh() now renders the DKIM handle unusable by later
		data processing calls.
	LIBDKIM: Fix arithmetic in dkim_sig_expired().
	LIBDKIM: In dkim_eoh_verify(), check for a NULL user pointer return
		from rfc2822_mailbox_split() (was previously only checking
		for an error code or NULL domain).  Problem noted by Chris
		Behrens of Concentric Network Corporation.
	LIBDKIM: Fix bug #SF1819489: Fix signature header name check in
		dkim_header().  Patch from Chris Behrens of Concentric
		Network Corporation.
	LIBDKIM: Fix bug #SF1819559: Fix key granularity processing.
	LIBDKIM: Fix bug #SF1819571: More robust processing of "s=" in keys.
	LIBDKIM: Fix bug #SF1819607: Allow "t=" and "x=" values up to 64 bits
		since RFC4871 requires at least 40.
	LIBDKIM: Fix bug #SF1820017: Don't accept signatures with no "v=" tag.
	LIBDKIM: Fix bug #SF1820060: The value of "q=" may be a colon-separated
		list of values to parse.
	LIBDKIM: Fix bug #SF1820080: The value of "i=" may be quoted-printable
		so do appropriate decoding.
	LIBDKIM: Fix bug #SF1820123: "simple" body canonicalization must
		contain at least CRLF.
	LIBDKIM: Fix bug #SF1820370: More graceful handling of grossly
		malformed signature headers.  Problem noted by Chris Behrens
		of Concentric Network Corporation.
	LIBDKIM: Fix bug #SF1822287 and SF1822295: Update policy check code
		to use the draft-ietf-dkim-ssp-01 algorithm.  Problem noted
		by Chris Behrens of Concentric Network Corporation.
	LIBDKIM: Fix bug #SF1822329: In dkim_get_policy(), check for and handle
		error returns from the subordinate lookup functions.  Problem
		noted by Chris Behrens of Concentric Network Corporation.
	LIBDKIM: Fix bug #SF1822331: Use consistent return codes in
		dkim_get_policy_dns().  Problem noted by Chris Behrens of
		Concentric Network Corporation.
	LIBDKIM: Fix bug #SF1832703: When looking for headers to canonicalize
		during verification, disregard spaces between the header name
		and the colon (":") character.  Problem noted by James
		Sargent of AOL.
	LIBDKIM: Fix bug #SF1838826: Several fixes with respect to processing
		key and policy flags.  Problems noted by Marc Martinec.
	LIBDKIM: Feature request #SF1821005: Add dkim_getdomain(), an accessor
		function for dkim_domain.  Requested by Chris Behrens of
		Concentric Network Corporation.
	Activate _FFR_QUERY_CACHE (Feature request #SF1675359) and
		_FFR_SELECT_SIGN_HEADERS.

2.3.2		2007/10/19
	Fix bug #25896: Fix a bug in parsing of "RemoveARFrom".
	LIBDKIM: Fix a bug in the key reuse block of dkim_get_key() which
		assumed that a domain and selector match guaranteed a copied
		key and key tag list.
	LIBDKIM: Fix bug #SF1812687: Fix handling check in dkim_get_policy().
		Patch from Daniel Black.

2.3.1		2007/10/12
	Fix header loss problem in test mode.
	Fix bug #SF1808886: Handle missing or empty test inputs more
		gracefully.  Based on a patch from Kaspar Brand.
	Fix bug #SF1808881: Check various integer conversions for
		negative, overflow or inappropriate values.  Suggested
		by Kaspar Brand.
	Feature request #SF1809239: Restore performance of test mode on
		large messages.  Requested by Kaspar Brand.
	Patch #SF1811132: Include <stdlib.h> in test.c for malloc()
		prototype.  Patch from Daniel Black.
	BUILD: Patch #SF1810712: Correct default location for the Tre
		regular expression library.  Suggested by Daniel Black.

2.3.0		2007/10/06
	Add "UseSSPDeny" configuration option which causes the filter
		to reject messages which are determined to be suspicious
		according to the new draft-ietf-dkim-ssp-01, and whose
		sending domains advertise a recommended handling of "deny",
		and whose SSP records are not in "test" mode.
	Add "MaximumSignedBytes" configuration option limiting the number
		of bytes of the message body to be signed.
	Add "-t" command line option for reading an RFC2822-formatted
		message from a named file and attempting to evaluate it,
		"-F" command line option for using a fixed signing
		time, and "-v" command line option for requesting verbose
		output.  Finally, new configuration option "StrictTestMode"
		asserts that all lines of input must be CRLF-terminated.
		Based on patches from Kaspar Brand.
	Add "TestPublicKeys" setting for instructing libdkim to read public
		keys from a file, for use during automated testing.
		Based on a patch from Jeff Barry.
	When using _FFR_QUERY_CACHE, periodically report cache activity
		statistics.
	Don't arbitrarily suppress signing of already-signed messages.
	Fix bug #25728: When "AutoRestart" is in use, try to remove the
		socket (if it's a UNIX domain socket) prior to trying to
		start the child.
	LIBDKIM: Add dkim_getmode() function.
	LIBDKIM: Fixes to policy evaluation in dkim_policy().  Based on a
		patch from Jeff Barry.
	LIBDKIM: Patch #SF1796687: Add DKIM_LIBFLAGS_ACCEPTV05 which causes
		the library to accept signatures with version strings of
		"0.5", i.e. those based on later versions of the DKIM draft
		specification.  This does not change any other part of
		signature validation or canonicalization, only the version
		string test.  Suggested by Jim Fenton of Cisco.
	LIBDKIM: When closing canonicalizations, flush the temporary files
		rather than closing them so that things like dkim_reportinfo()
		return useful descriptors.  Close the temporary files in
		dkim_canon_free() only.  Problem noted by Jeff Barry.
	LIBDKIM: Fix variable argument processing by merging dkim_error()
		and dkim_verror().  The previous code was causing
		segmentation faults on selected operating systems.
	Activate the following FFRs:
		_FFR_KEY_REUSE
		_FFR_SET_REPLY

2.2.1		2007/09/07
	Insert VBR headers at the top rather than appending them to be
		sensitive to legacy DomainKeys operations.  Patch from
		S. Moonesamy of Eland Systems.
	Discontinue use of MAXHOSTNAMELEN as the maximum size of a hostname
		since some vendors set it to 64 (maximum size of a DNS label)
		and some to 256 (maximum size of an FQDN).  Instead, define
		and use DKIM_MAXHOSTNAMELEN (256).  Problem noted by
		Jeff Barry.
	LIBDKIM: Rename and update the default_signhdrs and default_skiphdrs
		arrays to match what's in RFC4871 section 5.5 SHOULD and
		SHOULD NOT lists.
	LIBDKIM: Apply DKIM_OPTS_SKIPHDRS only when signing.
	LIBDKIM: Add missing entries to prv_results, and add a
		dkim_getresultstr() function for translating DKIM_STAT
		result codes.  Patch from Kaspar Brand.
	Fix bug #SF1785624: Resolve build problem introduced in previous
		version when NETINET6 is in use.  Reported by Andrew Benham.
	Fix bug #SF1786033: Resolve build problem introduced in previous
		version affecting later versions of Solaris.  Reported by
		Andy Fiddaman.
	Fix bug #SF1787473: Initialize the default "-i" list properly (given
		changes made in the previous version) so that mail from
		localhost still gets signed.  Reported by Graham Murray.

2.2.0		2007/08/30
	Change format of the peerfile, internal and external host lists, etc.
		to allow exclusion entries.  See the man page for additional
		details.
	Amend "-u" to include the ability to name a group into which the
		filter process should be placed.
	Feature request #SF1783155: Make keylist pattern matching
		case-insensitive.
	LIBDKIM: Handle CNAMEs properly when using the standard resolver.
		Problem noted by Jim Fenton of Cisco.
	LIBDKIM: Fix bug #SF1782076: Adjust signature header wrapping logic
		so that a "b=" against the margin gets wrapped consistently
		when signing and verifying.  Reported by Kaspar Brand.

2.1.2		2007/08/22
	LIBDKIM: At the end of dkim_eoh_verify(), don't overwrite any existing
		descriptive error text before returning on verification
		errors.  Problem noted by Andy Fiddaman.
	LIBDKIM: Remove redundant assertion of length limits in
		dkim_canon_bodychunk().  The code in dkim_canon_write() has it
		correct, so use that instead.  Problem noted by Mark Martinec.
	LIBDKIM: Fix bug #SF1777332: Fix "relaxed" body canonicalization.
		Some code from the older implementation was still present
		conflicting with the newer code.  Reported by Andrey Chernov.

2.1.1		2007/08/13
	Fix bug #SF1743896 (reopened): Don't crash if a From: header with no
		domain is found.  Patch from Andy Fiddaman.
	LIBDKIM: Fix type mismatches regarding restricted lengths.  Problems
		noted by Jukka Salmi.
	LIBDKIM: Fix bug #SF1771520: Return an error from dkim_policy() if
		the sender's domain name could not be determined.  Patch from
		Andy Fiddaman.

2.1.0		2007/08/10
	Update to new (draft version 06) Authentication-Results: header format.
	Do an SSP query for any message that didn't either succeed verification
		or cause some kind of internal error, not just those that
		failed to verify.
	Tighten up the logic used when checking header space allocation.
	LIBDKIM: Heavy cleanup of dkim_eoh() and dkim_eom() via patches from
		Chris Behrens of Concentric Network Corporation.
	LIBDKIM: Add more fine-grained state control enforcing the order in
		which the message processing functions are called.  There was
		previously a hole which would allow, for example, more headers
		to be submitted after a call to dkim_eoh() if a prescreen
		callback returned a "tryagain" result.
	LIBDKIM: Add dkim_sig_getidentity().
	LIBDKIM: Fix bug #SF1769270: Use the default query type to retrieve
		signing policy for unsigned messages.
	LIBDKIM: Fix bug #SF1769445: Return the correct policy result from
		dkim_get_policy_dns() rather than always returning an empty
		string.  Patch by Andy Fiddaman.
	LIBDKIM: Amend dkim_sig_getcanonlen() to include a parameter which
		receives the signature length limit, if any.
	LIBDKIM: Restore proper value to dkim_bodylen.  Problem noted by
		Jukka Salmi.
	LIBDKIM: Don't inexplicably clear sig_signalg.  Problem noted by
		Jukka Salmi.
	Feature request #SF1761475: Add "ClockDrift" configuration option
		for tolerating out-of-synch clocks.  Suggested by Kaspar Brand.
	Feature request #SF1761481: Add "SyslogSuccess" configuration option
		for logging successful operations rather than just errors
		or other informational messages.  Suggested by Kaspar Brand.
	Feature request #SF1769888: Amend dkim_policy() to be able to return
		the policy type retrieved from the sending domain.  Also
		add dkim_getpresult() and associated other code to get
		additional policy evaluation information.  Requested
		by Andy Fiddaman.

2.0.2		2007/08/03
	Fix bug #SF1766313: Make configuration handling 64-bit friendly.
		Other 64-bit portability issues also addressed.  Problems
		noted by Chris Box.
	Add _FFR_DNS_UPGRADE which establishes a second libar instance
		in TCP mode for handling truncated UDP replies.  Also make
		some minor fixes in the key and policy DNS lookup functions
		to provide more consistent handling of such responses.
		Problems noted by Kaspar Brand; code is still experimental.

2.0.1		2007/08/02
	Fix bug #SF1760481: Make header space allocations fully dynamic rather
		that establishing compile-time per-header limits.  There
		is still an overall cap, however.  Suggested by Ralf
		Hildebrandt.
	LIBDKIM: Fixes inside _FFR_KEY_REUSE.

2.0.0		2007/07/27
	Remove all support for versions older than RFC4871.  Older
		statistics databases will not be incompatible with the
		new code since version information is no longer included
		in the record format.
	Add "Resent-Sender" and "Resent-From" to the list of headers
		checked to determine whether or not the message should
		be signed or verified.
	Report an authentication result of "permerror" when the message
		can't be verified for syntax or other non-crypto reasons.
	New configuration file item "RemoveARFrom" allows specification
		of hostnames/domains whose existing Authentication-Results:
		headers should be removed.  Also add "RemoveARAll" which
		allows selection of whether all such headers should be removed
		or only those containing a DKIM result.
	New configuration file item "RemoveOldSignatures" deletes existing
		signatures when signing.
	Fix bug #SF1743896: Don't crash if a From: header with no domain
		is found.  Patch from Andy Fiddaman.
	Fix bug #SF1743964: Remove the pid file on shutdown or startup
		failure.  Patch from Mike Markley.
	LIBAR: Plug descriptor and memory leaks in ar_shutdown().
	LIBDKIM: Rework _FFR_VBR code to prepare it for extraction into
		an independent library.
	LIBDKIM: The key and policy lookup callbacks must now return
		a DKIM_CBSTAT constant so that they can have their
		corresponding libdkim functions return DKIM_STAT_CBTRYAGAIN
		if desired.  Suggested by Chris Behrens of Concentric
		Network Corporation.
	LIBDKIM: Add _FFR_DIFFHEADERS which adds dkim_diffheaders() to enable
		the caller to search for headers that may have been munged
		in transit thus causing a verification failure.
	LIBDKIM: Feature request #SF1473131: Overhaul data structures,
		functions and documentation to allow fine-grained handling
		of messages bearing multiple signatures.  This included the
		following changes:
		o Extend draft-ietf-dkim-ssp-00 support to cover
			multiply-signed messags.
		o Introduce DKIM_SIGERROR type/constants for associating
			an error code with each individual signature.
		o New libary flag DKIM_LIBFLAG_DELAYSIGPROC delays all
			signature processing until dkim_eom().
		o New libary flag DKIM_LIBFLAG_EOHCHECK causes dkim_eoh()
			to return an error if it was unable to find any
			valid signatures when verifying.
		o Add new DKIM_CANON data type, referring to a
			parallel canonicalization required for signature
			generation or verification.
		o New function dkim_getsiglist() retrieves an array of
			DKIM_SIGINFO handles referring to all of the
			signatures discovered on a message.
		o New function dkim_getsignature() retrieves a single
			DKIM_SIGINFO handle which is the one libdkim will
			use to return its final result.
		o New function dkim_sig_getflags() to retrieve flags
			attached to a signature handle after processing.
		o New function dkim_sig_geterror() to retrieve the error
			code associated with a signature handle after
			processing.
		o New function dkim_sig_getbh() to retrieve the body
			hash test result on a signature after processing.
		o New function dkim_set_final() sets a user-provided
			callback called by dkim_eom() to do any final
			processing the caller may desire.
		o New function dkim_sig_process() manually executes
			verification of a signature, for use from within the
			prescreen or final callbacks.
		o Rename dkim_getcanonlen() to dkim_sig_getcanonlen(),
			dkim_getsigntime() to dkim_sig_getsigntime(),
			dkim_getselector() to dkim_sig_getselector(),
			dkim_getsigndomain() to dkim_sig_getdomain(),
			dkim_getsignalg() to dkim_sig_getsignalg() and
			dkim_getkeysize() to dkim_sig_getkeysize()
			as they now act on a specific signature rather than
			on an entire message.
		o The user-provided key and policy lookup functions must
			now accept a DKIM_SIGINFO handle as an additional
			parameter.
		o dkim_reportinfo() and dkim_ohdrs() now also require a
			DKIM_SIGINFO handle as an additional parameter.
	LIBDKIM: Fix signal logic in dkim_cache_read_unlock().  Patch from
		Chris Behrens of Concentric Network Corporation.
	LIBDKIM: Add _FFR_KEY_REUSE which avoids doing duplicate key
		lookups if the same key is used on two signatures in the
		same message.  Suggested by Chris Behrens of Concentric
		Network Corporation.
	LIBDKIM: Changed prototype for dkim_policy() to reflect the new code.
	Remove _FFR_FLUSH_HEADERS.  The functionality it provided is now
		accessed via the new configuration options described above.
	Activate _FFR_HASH_BUFFERING.
	BUILD: More unit tests.

1.2.0		2007/06/26
	Update sender signing policy (SSP) code to match the new
		draft-ietf-dkim-ssp-00 specification syntax.  In doing
		so, remove _FFR_ALLMAN_SSP_02.
	If "-u" is specified, call initgroups() and setgid() as well.
		Reported by Mike Markley; based on a patch from S. Moonesamy
		of Eland Systems.
	Fix bug #SF1738354: Add "L" data to CMDLINEOPTS.  Reported by
		Andrey Chernov.

1.1.0		2007/06/15
	Add a new option to "-L" and "Minimum" allowing a specific maximum
		number of bytes of appended, unsigned text.  Suggested by
		Philip Guenther.
	Documentation and build patches from Gregory Shapiro, and
		documentation patches from Steve Jones of Bank of America.
	Under _FFR_VBR, if dkim_vbr_query() returns an error, report the
		error and then don't add the header.  Reported by
		S. Moonesamy of Eland Systems.
	Fix bug #24586: Allow "-?" just to get the usage message; also
		hint at such if the filter is invoked with no arguments.
	LIBDKIM: Define DKIM_STAT_CBTRYAGAIN and DKIM_CBSTAT_TRYAGAIN.
	BUILD: More unit tests.

1.0.0		2007/05/23
	First release after DKIM issued as a standard (RFC4871).
	Remove the "-v" command line option and "Version" configuration file
		item, which permitted selection of the signing version.
	Remove "nowsp" canonicalization option.
	LIBDKIM: Define DKIM_VERSION_RFC4871 and make it the default signing
		version.
	LIBDKIM: Remove DKIM_CANON_NOWSP and DKIM_VERSION_ALLMAN_BASE_00 which
		defined it.  Gradually, support for old versions will be
		phased out.

0.8.1		2007/05/22
	Portability fixes for Solaris.
	LIBDKIM: Define DKIM_CBSTAT_* constants which are to be used as
		return values from callbacks.  Also define new status
		values DKIM_STAT_CBREJECT and DKIM_STAT_CBINVALID
		indicating results from callbacks back to the calling
		applications.  Suggested by James Sargent of AOL.
	LIBDKIM: Slightly nicer wrapping of "b=", "bh=" and "z=" in
		dkim_getsighdr().
	LIBDKIM: Define callbacks with respect to the DKIM library
		handle rather than each signing/verifying instance.
		Suggested by James Sargent of AOL.
	BUILD: Reference libssl and libcrypto in dkim-filter/Makefile.m4
		rather than in the template site.config.m4 file since
		it's always required anyway.
	BUILD: Fix man page entry in dkim-filter/Makefile.m4.

0.8.0		2007/05/17
	Add a dkim-stats(8) man page.  Contributed by Mike Markley.
	Add "SignatureTTL", "Diagnostics" and "AlwaysSignHeaders" options to
		the configuration file and man page.
	Add _FFR_ZTAGS for optionally saving diagonstic information when a
		signature fails if the signature contained a "z=" tag.
	Still more minor fixes in _FFR_STATS related to DB versions.
	Feature request #SF1473129: Split configuration file details
		into their own man page.
	LIBDKIM: Still more minor fixes in _FFR_QUERY_CACHE related to DB
		versions.  Reported by Ben Lentz.
	LIBDKIM: Remove dkim_getidentity(), as the function it provides
		isn't part of DKIM.  Instead, provide that functionality
		in dkim-filter.
	LIBDKIM: Add a new option DKIM_OPTS_ALWAYSHDRS which allows
		specification of a list of header names which should always
		be included in signature header lists whether or not
		the headers were actually present, preventing them from
		being added downstream before verification.
	LIBDKIM: Add a new option DKIM_OPTS_SIGNATURETTL which allows
		the caller to assert a time-to-live on signatures generated.
		This causes the "x=" tag to appear in signatures.
	LIBDKIM: Add a new library flag DKIM_LIBFLAGS_ZTAGS which causes
		signatures generated to include the original header set
		encoded for transport so the verifier can use it to
		diagnose verification failures.  This causes the "z=" tag to
		appear in signatures.
	LIBDKIM: Add dkim_ohdrs() which extracts the sender's set of headers
		if a "z=" tag was present in the signature.  This can then
		be used by the caller to diagnose verification failures
		for signatures which contain them.
	LIBDKIM: Add the first large (and yet not the smallest) change to
		support multiple signatures.  There's now a method via
		a few callbacks to give the caller access to the
		signatures discovered by the end-of-headers callback.
		The caller can analyze the signatures, reorder them,
		or flag some to be ignored.  After reordering, the library
		still simply runs with the first that appears to be
		syntactically valid; actual processing of multiple
		signatures after the re-ordering will be in an upcoming
		release.
	LIBDKIM: _FFR_QUERY_CACHE now only covers DNS key lookups, not all
		key lookups.
	LIBDKIM: Move the method-specific policy lookup functions into
		their own new files, dkim-policy.c and dkim-policy.h.
	LIBDKIM: Slightly nicer wrapping of "h=" in dkim_getsighdr().
	LIBDKIM: Add dkim_set_signer() for specifying the message's
		signer for signature generation.
	BUILD: More unit tests.
	Activate the following FFRs:
		_FFR_QUARANTINE
		_FFR_REPORTINFO

0.7.1		2007/05/09
	More minor fixes in _FFR_STATS related to DB versions.  Based on
		a patch by Graham Murray.
	LIBDKIM: More minor fixes in _FFR_QUERY_CACHE related to DB versions.
	LIBDKIM: Use read-write locks instead of a mutex in _FFR_QUERY_CACHE
		when appropriate.
	LIBDKIM: When using _FFR_QUERY_CACHE with recent enough versions of
		the DB library, tell the library to use the same temporary
		directory as libdkim is using.
	BUILD: Fix bug #SF1715265: Correct a typo which caused libdkim to
		fail to build against the asynchronous resolver library.
		Reported by Andy Fiddaman.

0.7.0		2007/05/03
	Several more fixes in _FFR_STATS related to DB versions.
	LIBDKIM: Add support for optional callbacks to do key and policy
		lookups using an API provided by the caller rather than using
		DNS directly.  New functions dkim_set_key_lookup() and
		dkim_set_policy_lookup() set these callbacks.  Also add
		dkim_getdomain() and dkim_getselector() utility functions so
		those callbacks can extract the data required to make the
		queries.  Note that these will probably change slightly when
		support for multiple signatures is finally added.  Suggested
		by James Sargent of AOL.
	LIBDKIM: Fix bug #SF1708756: Set dkim_partial earlier during signing
		so that the "l=" portion is included in the canonicalized
		signature header.  Reported by Andrey Chernov.
	LIBDKIM: Algorithm and initialization fixes in policy retrieval found
		by the new unit tests.
	LIBDKIM: Several more fixes in _FFR_QUERY_CACHE related to DB
		versions.
	LIBDKIM: Fix bug #SF1706248: Rewrite dkim_getidentity() so it returns
		a more sane value for the sender in all cases.  Another
		utility function will be added later for obtaining the
		signer's identity.  Reported by Andrey Chernov.
	BUILD: Overhaul the build scripts so that all the user editing is
		done in devtools/Site/site.config.m4 rather than in each
		individual directory's Makefile.m4.  Include a template for
		this purpose.
	BUILD: Begin a collection of automated unit tests.
	Activate the following FFRs:
		_FFR_LOG_SSL_ERRORS
		_FFR_MULTIPLE_KEYS
		_FFR_OMIT_HEADERS
		_FFR_QUERY_FILE
		_FFR_SET_DNS_CALLBACK (Feature request #SF1473171)

0.6.6		2007/04/25
	Update _FFR_SELECT_CANONICALIZATION for split canonicalization
		methods.
	Add _FFR_STATS, creating an optional database for storing pass/fail
		statistics per domain over time, and a command-line tool
		for querying the database contents.  Requires Sleepycat DB.
	LIBDKIM: Patch #SF1705155: Fixes in "relaxed" header canonicalization
		code.  Problem noted by Ben Lentz.
	LIBDKIM: Add _FFR_HASH_BUFFERING, experimental code that adds a layer
		of buffering in front of dkim_canonwrite() so the SHA hashing
		functions are called less often.
	LIBDKIM: Only call dkim_flush_blanks() when it will actually do
		something.
	LIBDKIM: Fix bug #SF1706530: Call EVP_cleanup() in dkim_close().
		Suggested by Andy Fiddaman.
	LIBDKIM: Inside _FFR_QUERY_CACHE, fix cursor operations when compiled
		against very old versions of Sleepycat DB.
	LIBDKIM: When opening the database with _FFR_QUERY_CACHE, make sure
		the library is allowed to create the database.

0.6.5		2007/04/20
	Further fixes in POPAUTH code for backward-compatibility with
		older versions of Sleepycat DB.
	Memory corruption fixes inside _FFR_MULTIPLE_KEYS.  Reported
		by S. Moonesamy of Eland Systems.
	Re-implement _FFR_OMIT_HEADERS using the new libdkim option
		(see below).
	Return DKIM_STAT_SYNTAX from dkim_eoh() if an empty "d", "s" or "b"
		tag is discovered on a signature.
	Export most internal header lists so callers can use them.
	Fix bug #SF1702708: Don't start in signing mode without at least
		one key and selector specified.  Reported by Andrey Chernov.
	Feature request #SF1675359: Add _FFR_QUERY_CACHE, allowing optional
		caching on-disk of key and policy records retrieved via DNS
		to reduce the number of round trips to the nameserver.
		Requires Sleepycat DB.  Requested by Jim Popovitch.
	Portability fixes for Solaris.
	LIBDKIM: Enforce mandatory headers in dkim_eoh().
	LIBDKIM: Add dkim_close() for library shutdown.
	LIBDKIM: Add option DKIM_OPTS_SKIPHDRS to skip headers that should
		not be signed or verified.
	LIBDKIM: Initialize dkiml_fixedtime.

0.6.4		2007/04/16
	Further fixes in POPAUTH code.  Based on patches from John Merriam.
	Modify the output of "-V" further so it also includes active code
		options (as opposed to just FFRs).
	When linked against libdk, get additional forensic data from
		dk_geterror() whenever possible.
	Changes to _FFR_MULTIPLE_KEYS: Add a domain field in the file,
		and try a couple of filename extensions before giving up
		when reading private keys.
	Add more calls to dkim_error() for additional diagnostic information
		around the DNS queries.
	Fix bug #SF1700333: Remove the dkim_sig_signerok() check as it
		actually detects (and rejects) third-party signatures.
		The code is still there, just disabled, in case we want
		to use it after SSP addresses that question.  Reported
		by James Sargent of AOL.
	Add _FFR_CAPTURE_UNKNOWN_ERRORS which quarantines jobs that
		cause unexpected results from dkim_eom() to allow more
		detailed analysis.
	LIBAR: Fix bug #SF1537476: Update to support IPv6 nameservers.

0.6.3		2007/04/06
	Avoid deadlock errors in the POPAUTH code by protecting that code
		with a mutex as well.  Also, "l_end" should be "l_len".
		Problems noted by John Merriam.
	Fix bug #SF1693248: Add support for sendmail 8.14.x and its
		"preserve leading spaces" option.  Based on a patch from
		Andy Fiddaman.
	Fix bug #SF1693249: If dkim_eoh() returns DKIM_STAT_NOSIG and then
		the caller calls dkim_eom() to get policy (which the
		documentation says is acceptable), assertion failures were
		tripped because the SHA hash(es) weren't initialized
		and dkim_domain wasn't set.  Reported by Andy Fiddaman.
	LIBDKIM: Add _FFR_QUERY_FILE for getting keys and policies from
		a flat text file rather than DNS for offline or automated
		testing.  Based on a patch from Jeff Barry.
	LIBDKIM: New option DKIM_OPTS_FIXEDTIME to use a specific time
		when generating signatures, to be used for offline or
		automated testing.  Based on a patch from Jeff Barry.
	LIBDKIM: Fix bug #SF1691659: Fix a type mismatch so that RSA_sign()
		returns reasonable results on 64-bit platforms.  Reported
		by Andy Fiddaman.
	LIBAR: Fix bug #SF1694130: Block signals that should be caught and
		handled elsewhere, such as in libmilter.  Patch by Andy
		Fiddaman.

0.6.2		2007/03/30
	Don't start if you're in signing mode and no selector was chosen
		on the command line or in the configuration file.
	Don't start if the version of OpenSSL used to compile libdkim
		is not the same as the one used to compile the filter.
	Print the version of OpenSSL in use when "-V" is used on the command
		line.
	Add _FFR_VBR, enabling optional support for the Vouch By Reference
		domain reputation proposal.
	Add "BodyLengths" configuration file option which adds the "l="
		parameter when signing messages so re-mailers (e.g. MLMs)
		which append text to the message won't interfere with
		successful verification.
	Fix bug #SF1689101: Fix a minor error in argv processing when
		_FFR_OMIT_HEADERS was in use.
	LIBDKIM: Change DKIM_SIGN_DEFAULT to point to "rsa-sha256" if
		it's available.
	LIBDKIM: Add dkim_ssl_version().
	LIBDKIM: Fix bug #SF1681632: Fix a bug in header selection when
		signing.  Messages verified just fine, but some headers
		could accidentally be omitted during signing.  From a patch
		for bug #SF1541490 for dk-milter, reported by Mark Martinec;
		essentially the same bug existed in libdkim.

0.6.1		2007/03/07
	Load the -C values from the configuration file if -C wasn't present
		on the command line.  Previously, they were ignored.
	Fix bug #SF1477211: Add an appropriate Authentication-Results:
		header when a signature uses a hash which the matching
		key does not authorize.
	Feature request #SF1497802: Add _FFR_QUARANTINE, allowing optional
		quarantining of messages which fail verification or policy
		checks.
	Feature request #SF1605766: To reduce spurious logging, don't set
		mctx_status to DKIMF_STATUS_NOSIGNATURE unless the signature
		was missing on a message from a domain that claims it signs
		everything.
	LIBDKIM: Fix a verification version auto-detection bug that was
		causing some false negatives.
	LIBDKIM: Fix bug #SF1672787: Fix an additional corruption bug in
		dkim_getsighdr().
	LIBDKIM: Select the correct signature to replay into canonicalization,
		rather than always using the first one.  Problem noted by
		James Sargent of AOL.

0.6.0		2007/03/01
	Bring up to currency with "ietf-base-10" which is probably the
		version that the IETF will issue as an RFC.  This includes:
		- signature "q=" option delimiter is now "/", and the default
		  value is now "dns/txt"
		- if both "t=" and "x=" are present in a signature, make
		  sure the former is less than the latter
		- disregard signatures that appear to have been generated in
		  the future
		- support for draft and final versions of "v=" tags in both
		  keys and signatures
	Activate _FFR_VERIFY_DOMAINKEYS.
	Complete support for DKIM_QUERY_FILE for use in debugging and testing.
	Fix a number of minor bugs in signature header generation which
		could cause corruption and thus validation and/or syntax
		errors.
	Fix bug #SF1507535: Fix an FFR-related build issue.  Reported by
		Frederik Pettai.
	Patch #SF1505401: Add _FFR_OMIT_HEADERS, copied from dk-milter.
		This will probably be replaced later by an extension to
		dkim_options().  Patch provided by Ben Lentz.
	LIBDKIM: Fix bug #SF1512860: Before returning DKIM_STAT_NOSIG from
		dkim_eom(), try to retrieve the sending domain's policy.
	LIBDKIM: Fix bug #SF1608314: Fix processing of config file items
		"Userid" and "Mode".  Patch from John Villalovos.
	LIBDKIM: Add dkim_geterror() to retrieve additional diagnostic
		data from the API when a function call returns
		DKIM_STAT_INTERNAL or something else whose cause isn't
		readily apparent.
	LIBDKIM: Remove an extraneous pointer type in the parameter list
		for dkim_sign().  Reported by Jeff Barry.

0.5.2		2006/09/18
	Fix bug #SF1537905: If necessary, try again to get the job ID in
		mlfi_eom() in case it came down later than expected (e.g.
		postfix).  Suggested by Mark Martinec.
	Fix a couple of minor build problems.
	Fix bug #SF1559406: Change MAXHEADER to 4096.
	LIBDKIM: Fix bug #SF1544301: Fix an issue with processing a message
		which has trailing spaces on its last line.  Reported by
		Mark Martinec.
	LIBDKIM: Fix bug #SF1558014: Confirm the body hash in the signature
		matches the actual body hash when verifying.  Reported by
		Mark Martinec.
	LIBDKIM: Add preliminary support for the draft-allman-dkim-ssp-02
		specification as _FFR_ALLMAN_SSP_02.
	LIBAR: Adapt to the post-bind4 resolver API.  Problem reported by
		S. Moonesamy of Eland Systems.

0.5.1		2006/06/14
	Add compile-time option _FFR_ANTICIPATE_SENDMAIL_MUNGE which attempts
		to replicate some header rewriting the sendmail MTA will
		do, which otherwise prevents signature validation from
		succeeding.  Problem noted by Ken Jones.
	Add support for "ietf-base-02" signing mode (which is really
		synonymous with "ietf-base-01").
	LIBDKIM: Report a syntax error when a signature header arrives with
		any required fields missing.

0.5.0		2006/05/19
	Fix an assertion failure under _FFR_SELECT_SIGN_HEADERS.  Reported
		by S. Moonesamy of Eland Systems.
	Under _FFR_REPORTINFO, only send reports when verification failed.
		There are other failure modes, but that's the only one for
		which reports are useful.  Problem noted by Michael
		Thomas of Cisco.
	RFC2822 doesn't require any recipient headers, so remove those checks
		inside _FFR_REQUIRED_HEADERS.
	Fix bug #SF1481303: Don't verify DomainKeys signatures while in
		signing mode.  Reported by S. Moonesamy of Eland Systems.
	Activate _FFR_MACRO_LIST (adds the "-M" command line option) and
		_FFR_EXTERNAL_IGNORE_LIST (adds the "-I" command line option).

0.4.1		2006/05/02
	Include the list of supported DKIM versions in the output of "-V".
	Feature request #SF1238442: Add _FFR_VERIFY_DOMAINKEYS which
		will verify DomainKey signatures, if present.  Requires
		libdk, which is available in the dk-milter package.
	Feature request #SF1453565: Add _FFR_SELECT_SIGN_HEADERS which permits
		specification of which headers to sign.
	Add _FFR_SET_DNS_CALLBACK which allows registration of a callback
		per-handle which is called periodically while waiting for
		DNS responses.
	LIBDKIM: Return an error if the signing function returned success but
		also reported a zero-length signature.  Reported by
		S. Moonesamy of Eland Systems.

0.4.0		2006/04/18
	Add preliminary support for IETF DKIM draft 01.  "rsa-sha256" support
		was already added, but this also adds support for the
		"bh" (body hash) tag in signatures.
	Add "-v" command line switch to select DKIM version to use when
		signing.
	Add "-x" command line switch to specify a configuration file to read
		and parse.
	LIBAR: Fixes regarding retransmissions.

0.3.2		2006/04/05
	Don't remove the wrong "b=" when canonicalizing the signature header
		during verification.  Problem noted by Michael Thomas
		of Cisco.
	Properly process empty values in parameter sets.  Problem noted by
		Michael Thomas of Cisco.

0.3.1		2006/03/19
	Report the size of the key on successful verifications in the
		Authentication-Results: header.
	Fix bug #SF1453591: Tolerate empty strings in dkim_process_set(),
		and just apply defaults.
	LIBDKIM: Add dkim_getkeysize(), dkim_getsignalg(), dkim_getsigntime().

0.3.0		2006/03/15
	Add preliminary support for "rsa-sha256" signatures.
	Rearrange command line arguments somewhat.
	Include the list of supported canonicalization and signing algorithms
		in the output when "-V" is specified.
	Fix an intermittent crash condition caused by an uninitialized
		variable.
	Add _FFR_LOG_SSL_ERRORS to log any queued SSL error messages
		before releasing a message from the filter.

0.2.3		2006/03/03
	Add a "testing" comment when the key or policy used to verify a
		message is marked with a test flag.
	Flush the base64 output stream before sending the reports under
		_FFR_REPORTINFO so that the reports don't contain truncated
		data.  Discovered by Tony Hansen of AT&T.
	Fixes in processing of signature headers that contained extraneous
		spaces.  Reported by Tony Hansen of AT&T.
	Fix bug #SF1442606: Clone the configuration string before parsing
		it so that "ps" doesn't show weird output.

0.2.2		2006/01/24
	Evaluate the key granularity honouring "*" as a wildcard.
	Add _FFR_SET_REPLY which requests a more useful SMTP reply code
		when instructing the MTA to temp-fail or reject messages.

0.2.1		2005/12/09
	Further fixes to dkim_getsighdr().  Problem reported by Sung-hoon
		Choi of Dreamwiz.
	Plug a few small but definite memory leaks.
	Fix bug #SF1373746: Repair a _FFR_SELECT_CANONICALIZATION build
		problem introduced in the previous release.  Reported by
		S. Moonesamy of Eland Systems.

0.2.0		2005/12/02
	Update for revised ESTG draft.  Mainly this involved changing
		the "nowsp" canonicalization to "relaxed", and allowing
		specification of different canonicalizations for header
		and body.
	Don't allow the header to end with "\n\t" in dkim_getsighdr().
		Problem reported by Sung-hoon Choi of Dreamwiz.
	Report "neutral" instead of "fail" for failed verifications
		when they key was marked as being in test mode.  Patch from
		Sung-hoon Choi of Dreamwiz.
	Allow "-d" to specify a file from which domain names should be read,
		and allow domain names to contain wildcards.
	Fix bug #SF1243980: An empty key granularity matches nobody.  Reported
		by Jim Fenton of Cisco.
	LIBAR: Fix bug #SF1282755: Fix a build issue introduced in the
		last release.  Reported by Fredrik Pettai.

0.1.1		2005/07/21
	Prevent a garbage pointer free() in dkim_free().  Reported by
		S. Moonesamy of Eland Systems.
	Fix bug #SF1241118: Don't add an Authentication-Results: header for
		messages which are unsigned and come from a domain that
		doesn't advertise a signs-all policy.  Reported by
		S. Moonesamy of Eland Systems.
	Report "neutral" instead of "fail" for domains advertising test
		mode in their policies.
	Feature request #SF1238617: Add a compile-time option to map
		smfi_insheader() to smfi_addheader() on machines with older
		MTA and libmilter versions.

0.1.0		2005/07/13
	Initial open source release.
