[Note that all dates are in English, not American format - i.e. day/month/year]

Release 1.0.3
=============
Tony Meyer        28/01/2005  Distribute mscvr71.dll, as Microsoft recommend.
Tony Meyer        28/01/2005  The 'fix' for escaping subject lines was incorrect; do it correctly.

Release 1.0.2
=============
Tony Meyer        14/01/2005  Try and work around the reasonably common problems with imaplib and OS X.
Tony Meyer        04/01/2005  If we are reloading the options, optionsPathname will already be set, so if we are  a windows user using the default pathname, the object won't be reloaded.  Fix so a reload is always done.
Tony Meyer        02/01/2005  UserInterface.py: cgi.escape the configuration filename
Tony Meyer        22/12/2004  Make Dibbler.py compatible with Python 2.2.1.
Tony Meyer        17/12/2004  message.py: Change the deprecated function to work in Python 2.4.
Tony Meyer        06/12/2004  Fix [ 1078923 ] Unicode support incomplete
Tony Meyer        06/12/2004  Fix the regex that the auth digest used, and handle the auth digest responses tha IE 6.0 and Firefox 1.0 give.
Tony Meyer        29/11/2004  Subject lines are not cgi.escape()d in the web interface, which might cause errors - fixed.

Release 1.0.1
=============
Tony Meyer        15/11/2004  Fix a bug in sb_dbexpimp.py where merging into an existing dbm file might lose training data.
Tony Meyer        15/11/2004  sb_dbexpimp.py: Fail if the csv file doesn't exist that we are trying to import from rather than  keeping going, which made no sense.
Tony Meyer        11/11/2004  The installer wasn't offered to install a startup items shortcut, so fix that.  This is a non-ideal patch, but appears to be the only way Inno will work.
Tony Meyer        03/11/2004  Fix [ 1022848 ] sb_dbexpimp.py crashes while importing into pickle file
Tony Meyer        03/11/2004  Fix [ 831864 ] sb_mboxtrain.py: flock vs. lockf
Tony Meyer        03/11/2004  Fix [ 922063 ] Intermittent sb_filter.py failure with URL pickle
Tony Meyer        29/09/2004  Fix [ 1036601 ] typo on advanced config web page
Tony Meyer        28/10/2004  Add [ 715248 ] Pickle classifier should save to a temp file first
Tony Meyer        21/10/2004  Fix [ 1051081 ] uncaught socket timeoutexception slurping URLs
Tony Meyer        18/10/2004  TestDriver: If show_histograms was False, then the global ham/spam histogram never had the stats computed, but this gets used later, so the script would die with an AtrributeError. Fix that.
Tony Meyer        13/10/2004  Fix mySQL storage option for the case where the server does not support rollbacks.
Sjoerd Mullender  02/10/2004  imapfilter: Quote the search string that tries to find the message again that was just saved.
Tony Meyer        30/09/2004  Fix [ 903905 ] IMAP Configuration Error
Tony Meyer        15/09/2004  sb_upload: Clarify docstring so that it's more clear what this script does. The -n / --null command line option didn't actually do anything; change it so that it does.
Tony Meyer        23/07/2004  For proxy handler for version checking, the proxy port needs to be an integer, not a string.
Tony Meyer        19/07/2004  Fix [ 990700 ] Changes to asyncore in Python 2.4 break ServerLineReader
Kenny Pitt        17/07/2004  Fix [941639] and [986353].  Use a non-standard extension for our py2exe created zip to get around Windows extensions that automatically expand zip files.
Tony Meyer        14/07/2004  Fix [ 790757 ] signal handler created with wrong # of args
Tony Meyer        14/07/2004  Fix [ 944109 ] notate_to/subject option valid values should be dynamic
Tony Meyer        14/07/2004  Fix [ 959937 ] "Invalid server" message not always correct
Skip Montanaro    10/07/2004  tte.py: 2.3 compatibility: add reversed() function
Tony Meyer        09/07/2004  Update test_storage.py test to reflect (current) correct way to call open_storage. Fixes part of [ 981970 ] tests failing.
Tony Meyer        09/07/2004  Using -u with sb_server had been broken.  Fix this.

1.0 Final
=========
(no changes from 1.0rc2)

Release Candidate 2
===================
Tony Meyer        10/06/2004  Install license with binaries.
Mark Hammond      01/06/2004  Fix Tony's fix for [ 943397 ] Cannot choose more than one Inbox folder to filter
Tony Meyer        02/06/2004  Fix [ 961713 ] server error when trying to change Statistics Options
Skip Montanaro    31/05/2004  Compatcsv: Abandon regexes as bad way to parse csv file - add simple unit test as well
Skip Montanaro    31/05/2004  sb_dbexpimp.py: handle case of importing the old object craft csv module.
Skip Montanaro    22/05/2004  sb_dbexpimp.py: Add a fake UnicodeDecodeError for Python 2.2 compatibility.
Skip Montanaro    22/05/2004  Compatcsv: correct a list chomping bug (forgot a slicing ":") and use .readline() instead of .next() for Python 2.2 compatibility
Tony Meyer        18/05/2004  Fix [ 955442 ] default_bayes_customize.ini not handled right
Tony Meyer        14/05/2004  message.py: If we trigger the TypeError problem, try to do our best to put the message together anyway.
Tony Meyer        14/05/2004  Handle people using a storage type that isn't pickle/dbm (like one of the sql ones).
Tony Meyer        13/05/2004  If a user tried to send a bug report before entering in any servers to proxy, this would generate an IndexError.  Fix that.
Tony Meyer        12/05/2004  Fix [ 943397 ] Cannot choose more than one Inbox folder to filter

Release Candidate 1
===================
Skip Montanaro    05/05/2004  sb_filter, sb_bnfilter use new mboxutils as_string().
Skip Montanaro    04/05/2004  mboxutils: Added as_string() - a function which attempts to work around problems flatten()-ing some Message objects in versions of the email package < 2.5.5.
Mark Hammond      04/05/2004  Fix [ 918157 ] "Could not watch the specified folders". msgstore.IsReceiveFolder() would fail on an exchange server.
Tony Meyer        03/05/2004  Temporary fix for [ 941596 ] sb_imapfilter.py not adding headers / moving messages
Tony Meyer        03/05/2004  imapfilter: catch any exceptions, not just email.Errors
Tony Meyer        03/05/2004  NotesFilter: Incorrect (old?) function name for opening a storage object.
Mark Hammond      29/04/2004  Outlook: Change the default pushbutton in the "filter now" dialog to be the start button, and make ESC work as cancel.
Skip Montanaro    28/04/2004  tte.py: add -R/--reverse flag to iterate over the mailboxes in reverse
Tony Meyer        25/04/2004  If the move_trained_[ham|spam]_to_folder options were used, this would wipe out the SpamBayes headers.  Fix that.
Tony Meyer        25/04/2004  Update message.py for the newer way that the persistent_use_database option works.
Tony Meyer        23/04/2004  Fix [ 940155 ] Data Folder location

Beta Release 1
==============
Kenny Pitt        07/04/2004  Fix some problems with the [851785] fix
Toby Dickenson    26/03/2004  New script: sb_bnfilter - like sb_filter but without the startup overhead
Tony Meyer        24/03/2004  When messages expired from the sb_server caches during a USER check (rather than on launch) they would be untrained.  This is not right at all, and so was fixed.
Tony Meyer        23/03/2004  Fix a subtle bug where if one option was selected for notate_to/subject the option would be presented with radio buttons not checkboxes (so only one, and never zero or 2/3 options could be chosen).
Kenny Pitt        18/03/2004  Outlook: Don't record classification in stats unless all_actions is true so that rescoring messages doesn't skew the statistics counters.
Skip Montanaro    16/03/2004  Change sb_dbexpimp.py to use csv as interchange format.
Tony Meyer        16/03/2004  Add [ 797579 ] Disable connections to POP3 and SMTP from remote hosts
Tony Meyer        16/03/2004  Fix [851785] Pop3proxy stores Ham/Spam/Unsure subject line in message cache
Tony Meyer        16/03/2004  Fix [ 906581 ] Assertion failed in search subject
Tony Meyer        16/03/2004  Add a note warning about [915466] Sorting review page loses classifications.
Skip Montanaro    16/03/2004  Add a verbose flag to tte.py
Mark Hammond      07/03/2004  Outlook: Catch all MAPI errors fetching the HTML for a message, and remove the warning about old win32all versions.
Mark Hammond      04/03/2004  Outlook: set pythoncom.frozen along with sys.frozen in our nasty registration hacks
Mark Hammond      27/02/2004  Outlook: Handle the fact that GetParent() may raise an exception, in which case we aren't able to show the item in the tree.
Mark Hammond      27/02/2004  Outlook: GetParent() catches MAPI errors and raises a MsgStoreException
Mark Hammond      27/02/2004  Outlook: Improve speed by calling .SetColumns() before .Restrict()
Skip Montanaro    26/02/2004  Add a -c flag to tte.py
Tony Meyer        22/02/2004  Simplify the auto bug reports via the web interface a bit, and get the user to enter a subject.
Tony Meyer        17/02/2004  Add [ 848311 ] sb_imapfilter.py obeys launch_browser
Tony Meyer        17/02/2004  The service was built, but not included in the installer for 1.0a9.  Fix that.
Tony Meyer        16/02/2004  Fix the line wrapping in autogenerated bug reports via the web interface.
Tony Meyer        16/02/2004  Fix a NameError in smtpproxy.py
Tony Meyer        16/02/2004  imapfilter: Use BODY.PEEK[] instead of RFC822.PEEK.
Tony Meyer        16/02/2004  imapfilter: Report time taken a little less pedantically.
Tony Meyer        16/02/2004  Fix [ 737967 ] Malformed messages break pop3proxy (et al)
Tony Meyer        15/02/2004  Fix half of [ 896366 ] Crashes in the web interface.
Skip Montanaro    13/02/2004  tte.py: record time (in seconds) to execute each round and count the number of leftover hams and spams at the end
Skip Montanaro    13/02/2004  Collect all potential MTA complaints, not just sendmail's "may be forged" (from Tim Peters).
Tony Meyer        13/02/2004  Fix [ 895606 ] 1.0a9 proxy raises an X-Spambayes-Exception
Skip Montanaro    12/02/2004  Big speedup when using sb_filter.py to process an entire mailbox.  Instead of opening the database for each filter operation, cache the open db object and reuse as long as its mode is the same as the last time we used it.
Kenny Pitt        11/02/2004  Fix typo in sb_dbexpimp.py usage statement.

Alpha Release 9
===============
Skip Montanaro    07/02/2004  New script - tte.py: Train to exhaustion based upon my understanding of the technique as described in Gary Robinson's blog.
Tony Meyer        05/02/2004  Web interface: added a third configuration page, which dynamically has all the experimental options (not the deprecated ones).
Tony Meyer        05/02/2004  Make all the scripts consistent in their command line setting of database type/name.  -d is dbm, -p is pickle.  Also setup things nicer for mysql and pgsql.
Tony Meyer        05/02/2004  If the allowed values for an option is a tuple of values, then the type is correct if the value is one of those types. 
Tony Meyer        05/02/2004  Outlook: If the special folders can't be found, then report this to the user.
Tony Meyer        05/02/2004  ProxyUI: Do the save one line earlier, which might mean that if the user has closed the browser, a db error is avoided.
Tony Meyer        05/02/2004  imapfilter has been adding two mailid headers, so stop that.
Tony Meyer        05/02/2004  Fix [ 890645 ] imapfilter: "ValueError: year out of range"
Skip Montanaro    30/01/2004  Recognize "abbreviated" URLs of the form www.xyz.com or ftp.xyz.com as http://www.xyz.com and ftp://ftp.xyz.com, respectively.  This gets rid of some fairly common "skip:w NNN" tokens. Enabled by the new tokenizer option, x-fancy_url_recognition.
Skip Montanaro    29/01/2004  sb_mboxtrain.py: preserve modtimes in Maildir & MH mailboxes
Tony Meyer        27/01/2004  Fix [ 870799 ] imap trying to fetch invalid message UID
Tony Meyer        27/01/2004  Fix [ 881427 ] sb_mboxtrain.py requires -d or -D
Tony Meyer        27/01/2004  Add options to ImapUI that the ProxyUI has, and also belong there.
Kenny Pitt        22/01/2004  Outlook: Fix confusing error log message.  Timer delay values are configured in seconds, not milliseconds.
Skip Montanaro    21/01/2004  added findbest.py to contrib/
Skip Montanaro    15/01/2004  loosecksum.py: allow multiple mailboxes on the command line, not just a single message on stdin or a file containing one message
Skip Montanaro    15/01/2004  Add -o option to allow users to set arbitrary global options from the command line to dbexpimp, imapfilter, mboxtrain, notesfilter, pop3dnd, server, upload, xmlrpcserver.
Tony Meyer        13/01/2004  Fix [ 874784 ] Error in onReview code
Skip Montanaro    13/01/2004  UserInterface: Split digest auth info properly.  Simple split-on-comma fails if the uri contains commas.
Barry A. Warsaw   13/01/2004  imapfilter: Catch and ignore MessageParseErrors when parsing the data['RFC822'] text.
Tony Meyer        12/01/2004  Improve the messageinfo database so that more than two attributes can be saved (it's still backwards compatible with the old type).
Tony Meyer        12/01/2004  Path/file options are no longer relative to the current working directory, they are relative to the last configuration file loaded.
Tony Meyer        12/01/2004  pop3dnd: Store the IMAP flags.
Tony Meyer        12/01/2004  pop3dnd: Fix an incorrectly checked flag (typo).
Anthony Baxter    12/01/2004  New options ham_discard_level and spam_discard_level. These make the interface default to discard hams/spams in the training interface.
Tony Meyer        11/01/2004  mkgraph.py: Add a docstring.
Tony Meyer        11/01/2004  mkgraph.py: Add -f command line arg to pass a filename rather than reading from stdin (which is still the default)
Tony Meyer        11/01/2004  mkgraph.py: Add a training_is_ham line to the error graph which shows the percentage of training data that is ham (i.e. shows the imbalance).
Tony Meyer        11/01/2004  mkgraph.py: Modify the outputing so that it can be in different formats for those of us without plotmtv.  The -c command line option outputs all the lines in the same set of rows, rather than in their own set as is the default.  The -s arg specifies the separator for this sort of output (defaults to a comma, so that csv files are output).
Tony Meyer        11/01/2004  incremental.py: Add a docstring and the ability to print it with -h or --help to incremental.py
Tony Meyer        11/01/2004  regimes.py: Add a docstring that outlines the various regimes in hopefully easy to understand terms. Print this out if regimes.py is executed.
Tony Meyer        11/01/2004  regimes.py: Add a new regime - balanced_corrected.
Tony Meyer        08/01/2004  Fix [ 805852 ] need python-dev package on Debian
Skip Montanaro    08/01/2004  table.py: space the table out a little more.
Skip Montanaro    07/01/2004  mkreversemap.py: New script which generates a pickle file mapping features to mailbox files and message-id's.  Use with extractmessages.py.
Skip Montanaro    07/01/2004  extractmessages.py: New script; use with mkreversemap.py to identify messages in your training database which contain interesting tokens.
Tony Meyer        07/01/2004  Fix [ 872044 ] HTTP review page date problems.
Skip Montanaro    06/01/2004  Add experimental option and code to pick out some semantic bits from URLs
Tony Meyer        05/01/2004  Add extra utility functions to oe_mailbox for dealing with Outlook Express.
Tony Meyer        05/01/2004  Have autoconfigure confirm that configuration has occured.
Tony Meyer        05/01/2004  Do better 'is installed' checks in autoconfigure.
Adam Walker       05/01/2004  Start SMTP proxy in a trainable state.
Tony Meyer        02/01/2003  UserInterface: Fix import error reported.
Richie Hindle     01/01/2004  Default to twenty search results on web interface rather than just one.
Richie Hindle     01/01/2004  Made the search form do a GET rather than a POST.
Richie Hindle     01/01/2004  Fix for 842984: If webbrowser.open_new() fails, print a message saying "Please point your web browser at http://localhost:8880/" rather than bombing out.
Richie Hindle     01/01/2004  New script: utilities/hammer.py: Hammers the core SpamBayes code, repeatedly training and classifying using faked-up messages.
Tony Meyer        31/12/2003  pop3dnd: Fix fetching an envelope.
Tony Meyer        31/12/2003  pop3dnd: Handle storing no flags.
Tony Meyer        31/12/2003  pop3dnd: Update the RETR'ing of messages to reflect what sb_server currently does.
Tony Meyer        31/12/2003  pop3dnd: Clean out some cruft that isn't necessary with the latest version of twisted (1.1)
Tony Meyer        31/12/2003  pop3dnd: Add two new Message classes, one for messages that are stored in memory, and one for messages that are re-generated each time the message is loaded.
Tony Meyer        31/12/2003  pop3dnd: Start our UIDs at 1, not 0, because Eudora likes this more.
Tony Meyer        31/12/2003  pop3dnd: Don't override the imported name "message".
Tony Meyer        31/12/2003  pop3dnd: Add a new folder - INBOX - this holds any messages from SpamBayes to the user. (Having INBOX as an alias for Spam wasn't working well, and being able to communicate within the confines of the mailer is nice, too).
Tony Meyer        31/12/2003  pop3dnd: Don't let the user set so much via the command line.  Use a config file, you lazy person.
Tony Meyer        31/12/2003  pop3proxy_tray: When we stopped sb_server and then restarted, we didn't init the state, so it wouldn't work.  Fix that.
Tony Meyer        31/12/2003  Web interface: As Richie pointed out, the status message was only updated when the state was recreated.  Fix this.
Tony Meyer        31/12/2003  Web interface: Output plurals correctly in stats information.
Tony Meyer        31/12/2003  We printed out false positive numbers in the false negatives section, and vice versa.  Fix.
Tony Meyer        30/12/2003  IMAP interface: Quote folder names when displaying them - otherwise if the folder names contained certain characters it could result in bad html (if the name was ">foo", for example).
Tony Meyer        29/12/2003  Web interface: Improve the 'online' help message for the review page, and add messages for the stats and home pages.
Tim Peters        29/12/2003  Many improvements to the mksets.py testtools script.
Tim Peters        28/12/2003  sort+group.py: Sort msgs by full-precision timestamp (not just by day).  Normalize Received time to UTC first.  Use email.Utils to parse dates instead of hand-rolling our own parser
Tim Peters        28/12/2003  sort+group.py: Preserve files' extensions (if any) during renaming.
Tim Peters        28/12/2003  Outlook: export.py - the -n option now gives the number of Set subdirectories desired, instead of a number of msgs per Set subdir "to shoot for".
Tim Peters        28/12/2003  Added a new -t option to rebal.py, may have broken -s and -r options.
Tim Peters        26/12/2003  Many improvements to the rebal.py testtools script.
Tim Peters        26/12/2003  Many improvements to the export.py script for Outlook.
Skip Montanaro    24/12/2003  storage: make state key a manifest constant
Mark Hammond      23/12/2003  Along with checking Outlook isn't running, check Outlook's mail transport also isn't running, and that an existing sb_server isn't.
Mark Hammond      23/12/2003  Fix uninstall problem - uninstall should be 100% clean, assuming Outlook isn't running.
Mark Hammond      23/12/2003  Tray app: Binary version failed to check for most recent version.
Skip Montanaro    23/12/2003  Sendmail annotates the Received: header with "(may be forged)" if it thinks the sender is forging its identity.  Generate a token for this, if we are mining received headers.
Tony Meyer        22/12/2003  Move OE specific stuff out from UserInterface.py to oe_mailbox.py.
Mark Hammond      22/12/2003  Outlook: Default to background filtering being on for new versions.
Tony Meyer        22/12/2003  Web interface: A beginning at a more userfriendly interface to the testing setup.
Mark Hammond      22/12/2003  Outlook: When a frozen executable, addin.py becomes a mini-installer EXE for the DLL.
Mark Hammond      21/12/2003  Outlook: DWhen doing a "batch train" (eg, selecting multiple messages and saying "Delete as" or "Recover from",) the DB was saved in between each and every message.  Now only saved at the end (which was always the intent)
Mark Hammond      21/12/2003  Outlook: DAs part of checking our configuration is invalid, make sure the user hasn't set us up such that either Spam/Unsure folders isn't also being watched for new messages
Mark Hammond      21/12/2003  Outlook: If the user attempts to close the Manager dialog while there is a problem preventing us being enabled, confirm they really want to close it 
Mark Hammond      20/12/2003  dump_props.py: Add -c option, which writes output to the Windows clipboard.
Mark Hammond      20/12/2003  Outlook: Include the foldername in many messages, so help track down wierd bugs from user logs.  Say what we are watching a folder for.
Mark Hammond      20/12/2003  Outlook: Fix [ 860410 ] SpamBayes allows top-level folders to be selected, and also prevent a single-select dialog from closing with no selection
Skip Montanaro    20/12/2003  Tokenizer: Solved the "backwards breakdown" problem with ip addresses in Received: headers.
Skip Montanaro    20/12/2003  Tokenizer: Tightened up recognition of hostnames and accepted bracketed or parenthesized ip addresses without requiring a leading space.
Mark Hammond      19/12/2003  Outlook: Remove handling of E_OBJECT_CHANGED exception, as it simply did not work.
Mark Hammond      19/12/2003  Fix [ 803798 ] MAPI_E_OBJECT_CHANGED error saving spam score, which is a dupe of [787676], which was incorrectly marked as fixed
Mark Hammond      19/12/2003  Outlook: Don't record in the training database unless we are successful in the filter - otherwise future attempts to filter will get all screwed up, as it will think it already was
Mark Hammond      19/12/2003  Outlook: Move some of our init code from OnConnection to OnStartupComplete
Mark Hammond      19/12/2003  Outlook: Try and tone down the toolbar message in the log to prevent people reporting it as a bug
Mark Hammond      19/12/2003  Outlook: Handle situations where Outlook starts up in a confused state, which then confused us.
Mark Hammond      19/12/2003  Outlook: Ask if you want the slow, non-filter tests run, and add E_OBJECT_CHANGED tests, as per [ 803798 ] MAPI_E_OBJECT_CHANGED error saving spam score
Tony Meyer        18/12/2003  Bring pspam into the modern SpamBayes world.
Mark Hammond      18/12/2003  Outlook: When the 'New Folder' button was used to create a folder, that folder was not used when you closed the dialog, even though it was selected.
Mark Hammond      17/12/2003  Tray app: Better icons and icon loading code.
Tony Meyer        17/12/2003  Add the basis of a new experimental (and highly debatable) option to 'slurp' URLs.
Tim Peters        17/12/2003  Implemented the intended "tiling" version of x-use_bigrams.
Tony Meyer        16/12/2003  Option names are always case insensitive, no matter what.
Tony Meyer        16/12/2003  Fix a bug in the web interface where the probability would be incorrectly calculated on 'show clues'.
Tony Meyer        16/12/2003  New experimental option: x-use_bigrams.
Skip Montanaro    16/12/2003  mboxutils: This change generalizes the DirOfTxtFileMailbox class to assume all non-directory files contain a single message and to recursively descend into subdirectories of the argument directory.
Tony Meyer        15/12/2003  Add a warning as a temporary solution for Python bug #845560.
Tony Meyer        15/12/2003  Add the missing code for the Habeas headers tokenizing (and deprecate).
Mark Hammond      15/12/2003  Fix [ 833439 ] default_bayes_customize.ini is confusing.
Mark Hammond      14/12/2003  Move the option loading code to a function, then call this function as the module loads.
Mark Hammond      14/12/2003  test_programs: When "calling" URLs, check the output for tracebacks, check the exit code of processes we spawn, and add test for "[ 859215 ] "Restore Defaults" causes assertion error at exit".
Tim Peters        14/12/2003  Removed support code for the defunct experimental_ham_spam_imbalance_adjustment option
Mark Hammond      14/12/2003  Fix [ 856628 ] reload(Options) fails in windows binary
Mark Hammond      14/12/2003  Fix [ 859215 ] "Restore Defaults" causes assertion error at exit.
Tony Meyer        14/12/2003  ImapUI: When logging in was done by the UI (to show available folders) we assigned the imap_session object to the wrong name
Skip Montanaro    10/12/2003  Loosen constraints on HEADER_VALUE regular expression.
Skip Montanaro    10/12/2003  Add ability for "x-" options (deprecated, or experimental).
Mark Hammond      10/12/2003  Outlook: Try and add the Spam field to the 'Unsure' folder in the same way we do for the Spam and watch folders.
Mark Hammond      10/12/2003  Fix [ 856141 ] Spam field not added to unsure or empty folders
Mark Hammond      08/12/2003  Outlook: Add/Fix a number of 'unicode file' related comments.
Mark Hammond      08/12/2003  Outlook: Allow multiple manager objects to work in the same process (but not at the same time):
Mark Hammond      08/12/2003  Outlook: A number of changes to better support us existing in the 'COM Addins' list when running the binary version
Tony Meyer        04/12/2003  Tray app: Change the default (double-click) behaviour of the tray to "review messages" rather than "display information".
Tony Meyer        04/12/2003  Tray app: use SetDefaultItem (so the default action is in bold in the menu).
Mark Hammond      03/12/2003  For the unittest scritps avoid sys.path munging.
Mark Hammond      03/12/2003  Add new test_programs unittest script and support file for unittest scripts.
Mark Hammond      02/12/2003  sb_server was ignoring command-line options; fix.
Richie Hindle     27/11/2003  Sjoerd's improved version of patch 831388.
Neale Pickett     27/11/2003  sb_filter now prints each message only once, not once per argument :)
Tony Meyer        26/11/2003  sb_dbexpimp.py: Import/Export data as utf-8.
Richie Hindle     26/11/2003  UserInterface.py More robust code for parsing score headers - copes with the presence of logarithms.
Richie Hindle     26/11/2003  UserInterface.py: More robust code for parsing evidence headers.  Copes with ';' and ': ' being part of a clue.
Richie Hindle     26/11/2003  Patch [ 831388 ]: Make message.py respect the header_score_digits option.
Richie Hindle     26/11/2003  Made sb_filter obey the notate_to and notate_subject options.
Tony Meyer        26/11/2003  As we now use whichdb to figure out what type of file the db is, if we were using windows and python 2.2 we would try and use dbhash instead of db3hash, which is a Bad Thing. Fix this.
Tony Meyer        26/11/2003  message.py: Encode words in the evidence header as utf-8 if they are unicode.
Barry A. Warsaw   25/11/2003  sb_xmlrpcserver.py: Make sure that the socket being bound is reusable.
Barry A. Warsaw   25/11/2003  Change XMLHammie.score() so that the float score is returned directly instead of trying to be wrapped in a Binary object.
Barry A. Warsaw   25/11/2003  New script: sb_evoscore.py - A shim script between sb_xmlrpcserver.py and Ximian Evolution.
Skip Montanaro    25/11/2003  Added a makefile to the testtools directory to make using timcv easier.
Neale Pickett     18/11/2003  Cleanup sb_filter and sb_mboxtrain.
Richie Hindle     16/11/2003  Patch [ 842464 ] Correct installation instructions from "setup.py install" to "python setup.py install"
Skip Montanaro    13/11/2003  sb_filter: add -o/--option command line arg that allows user to set any options value from the command line
Skip Montanaro    13/11/2003  OptionsClass: Add set_from_cmdline()
Skip Montanaro    13/11/2003  sb_filter: Allow multiple types of mailboxes to be processed using mboxutils.getmbox. If any mailbox files are given on the command line, the output is always a Unix-style mailbox containing From_ lines.
Richie Hindle     11/11/2003  notesfilter: The header_x_string options now live in the Headers section, not the Hammie section.
Richie Hindle     07/11/2003  Fixed an infinite loop when you break the browser connection to sb_server when sb_server is busy training.
Anthony Baxter    05/11/2003  Spell-checked all the HTML and txt files <wink>
Tony Meyer        30/10/2003  Implement [ 827138 ] Can't display clues/tokens/source for a trained message
Richie Hindle     15/10/2003  Increased the auth-digest login timeout from one minute to twenty.
Neale Pickett     15/10/2003  Modified muttrc and spambayes.el that actually work with what's being shipped :)
Neale Pickett     15/10/2003  Expanded documentation of sb_filter.py
Skip Montanaro    15/10/2003  which_database: fix bug in dbhash/bsddb[3] distinction and avoid overriding str
Skip Montanaro    15/10/2003  which_database: need to call os.path.expanduser() since paths like ~/hammie.db are valid in the options file
Mark Hammond      10/10/2003  It is no longer necessary to pre-load our default message store, and doing so caused us to fail if this default store was in offline mode.
Tony Meyer        08/10/2003  When training via the web interface record the training in the messageinfo db.
Tony Meyer        07/10/2003  Fix [ 818871 ] sb_server.py calls undefined variable
Tony Meyer        06/10/2003  Add Tim's fix for the stats to the web interface stats as well.  i.e. round the percentages, don't truncate them.
Tony Meyer        06/10/2003  imapfilter: When we mark a message as deleted, mark it as read (seen) as well.
Richie Hindle     04/10/2003  Fix the help icon to look like the rest.
Tony Meyer        03/10/2003  If sb_imapfilter.py is run without any switches, just serve the web interface (but don't launch a browser).
Tim Peters        03/10/2003  Outlook: Stop spam and unsure messages being double-counted in the stats.
Tony Meyer        02/10/2003  Fix a bug where messages wouldn't be trained via the web interface although no error would be reported (introduced after the previous release).
Tony Meyer        02/10/2003  Provide a partially filled-in bug report message via the web interface.
Tim Peters        01/10/2003  Round (not truncate) the stats information in the Outlook plugin.
Tony Meyer        30/09/2003  Improve autoconfigure script to find the location of various config files.
Tony Meyer        30/09/2003  Add basic statistics information to the web interface.
Tony Meyer        29/09/2003  Add a basic help system to the web interface.
Tony Meyer        29/09/2003  Add warning information to the web interface, for example if the user has imbalanced training, or not much training.
Mark Hammond      29/09/2003  Don't start the pop3proxy service if a proxy is already running.
Mark Hammond      29/09/2003  Outlook: Add slightly better stats, and a better framework to extend.
Skip Montanaro    26/09/2003  Dump TRAINED_HDR global.  Reference options[...] instead.
Mark Hammond      25/09/2003  Add patch [ 809008 ] safe start/stop and exclusive execution on windows
Tony Meyer        24/09/2003  sb_filter.py: If the -n switch was before the -d/-p switch, then the name wouldn't be used. This is rather unintuitive, so fix this so that the -d/-p name is used wherever the -n switch is.
Adam Walker       24/09/2003  pop3proxy_tray: Check if the web interface port can be bound as a simple test of if the proxy is running.
Tony Meyer        20/09/2003  smtpproxy is now only a module, not a script.  Use sb_server instead.
Tony Meyer        20/09/2003  Consolidate some of the many message classes - in particular Corpus.Message is removed in favour of message.Message
Tony Meyer        20/09/2003  Improve the 'Find Message' query on the front page of the web UI.
Tony Meyer        20/09/2003  Add an advanced word query to the web UI.
Tony Meyer        20/09/2003  Make the review messages page on the web UI more customizable.

Alpha Release 8
===============
There is no Alpha Release 8.

Alpha Release 7
===============
Skip Montanaro	  28/10/2003  Determine dbm format from the file if it already exists
Tony Meyer        09/10/2003  An old-style option was left in hammiebulk; fix this.
Tony Meyer        08/10/2003  If the (stats) db uses a pickle, then use a pickle for the messageinfo db as well.
Tony Meyer        08/10/2003  Try and close the db when we are no longer using it.
Tony Meyer        08/10/2003  Ensure that we store the messageinfo database when changes are made.
Tony Meyer        07/10/2003  Fix [ 818552 ] Exchange 2000 IMAPserver & imaplib.error: APPEND command er
Tony Meyer        06/10/2003  Trivial fix for IMAP over SSL being offered when it is available.
Tony Meyer        03/10/2003  Fix [ 810342 ] sb_smtpproxy does not work with smtplib.SMTP.sendmail()
Tony Meyer        03/10/2003  Fix [ spambayes-Bugs-816400 ] Crash because of bad date.
Sjoerd Mullender  02/10/2003  imapfilter: if problems occur parsing the date, just use the current date/time.
Tony Meyer        30/09/2003  Fix [ 814322 ] AttributeError: hdrtxt
Tony Meyer        29/09/2003  smtpproxy: If we successfully trained a message from the pop3proxy cache or IMAP server, we still said that we couldn't find it.  Fix.
Tony Meyer        29/09/2003  smtpproxy: Fix a minor printing error that would cause a traceback.
Tony Meyer        29/09/2003  imapfilter: Fix trying to view IMAP folders before restarting and after entering in details.
Tony Meyer        28/09/2003  Don't use 'pragma: no_cache' to try and stop browsers caching the web interface pages.
Skip Montanaro    26/09/2003  Correct sense of include_trained test in mbox_train.
Tony Meyer        26/09/2003  If the user is using Windows, also install pop3proxy_service.py and pop3proxy_tray.py.
Tony Meyer        24/09/2003  Fix sb_xmlrpcserver to work with the renamed options/scripts.
Tony Meyer        24/09/2003  Fix [ 809769 ] TypeError when training 1.0a6

Alpha Release 6
===============
Skip Montanaro    19/09/2003  Worm around a possible email pkg bug.
Skip Montanaro    19/09/2003  hammiebulk & mboxtrain: Minor performance boost when training on lots of mail.
Skip Montanaro    19/09/2003  Place a threshold on the number of items displayed per section in the review page of the UI.
Tony Meyer        18/09/2003  Change the Outlook plug-in to use the general default (currently False) for the experimental_ham_spam_imbalance adjustment.
Tony Meyer        18/09/2003  Change the default for address_headers to include to, cc, reply-to, and sender as per Tim's suggestion.
Tony Meyer        18/09/2003  Store the user's caches and messageinfo.db file in the app data folder as well (by default), if we have everything else there.
Tony Meyer        18/09/2003  If we can't find a config file anywhere but the windows app data directory, then load it.
Tony Meyer        18/09/2003  Use urllib not urllib2 to shut down the proxy.
Tony Meyer        18/09/2003  Create the server strings for the UI *after* reading in the command line parameters.
Tony Meyer        18/09/2003  Move notate_to and notate_subject options to the "Headers" section.
Tony Meyer        18/09/2003  Move all the storage options in the "pop3proxy" section to the "Storage" section.
Tony Meyer        18/09/2003  Remove the hammie debug options, and use the "Headers" evidence options instead.
Tony Meyer        17/09/2003  Fix [ spambayes-Bugs-806632 ] sb_server failure when saving config
Tony Meyer        17/09/2003  Outlook: Add a warning for those with highly (>5 times) imbalanced ham and spam.
Mark Hammond      17/09/2003  pop3proxy_service: Only munge sys.path in source-code versions, and as the service starts, have it report the username and ini file it is using. In binary builds, write a log to %temp%\SpamBayesServicen.log
Mark Hammond      17/09/2003  If we are running Windows, have no valid config file specified, and have the win32all extensions available, default to: \Documents and Settings\[user]\Application Data\SpamBayes\Proxy
Tony Meyer        16/09/2003  Fix [ 795145 ] pop3proxy review page dies with mixed gzip/non messages
Mark Hammond      15/09/2003  Outlook: Load dialog bitmaps directly from the executable in binary builds.
Adam Walker       15/09/2003  Updated pop3proxy_tray to support the service.
Tony Meyer        15/09/2003  Removed the gary_combining option and code.
Tony Meyer        15/09/2003  Add a (basic) check for version option to the pop3proxy tray app.
Tim Peters        15/09/2003  Fix SF bug 806238:  urllib2 fails in Outlook new-version chk.
Tim Peters        15/09/2003  Outlook: ShowClues():  Made the clue report a little prettier, and (I hope) a little easier to follow.
Tony Meyer        13/09/2003  Fix [ 805351 ] If cc: address is not qualified, proxy fails to send message
Mark Hammond      12/09/2003  pop3proxy_tray: Use simple logging strategy similar to the Outlook addin - if we have no console, redirect either to win32traceutil (source-code version) or to a %TEMP\SpamBayesServer1.log (yet to be released binary version).
Mark Hammond      12/09/2003  pop3proxy_tray: When running from binary, don't hack sys.path.  When running from source code, hack sys.path based file path rather than on os.getcwd.
Mark Hammond      12/09/2003  pop3proxy_tray: When running from binary, load the icon from the executable rather than a .ico file.
Tim Peters        12/09/2003  Outlook: ShowClues():  Add lines revealing the # ham and spam trained on.
Tony Meyer        11/09/2003  When running setup.py if the old (named) files exist, offer to delete them.
Tony Meyer        11/09/2003  Add a unittest to check that we correctly fail when no dbm modules are available.
Anthony Baxter    11/09/2003  Add a new file: NEWTRICKS.TXT to record ideas that have and haven't been tried.
Richie Hindle     11/09/2003  Bug 803501: Fix the "No dbm modules available" message to print rather than crash. 
Skip Montanaro    11/09/2003  Implement a better fix for the storage.py pickle/dbm problems.
Mark Hammond      10/09/2003  Outlook: use the classifier's (new) store method rather than an Outlook specific one.
Tony Meyer        10/09/2003  Re-fix storage.py so that hammie works with a pickle or dbm.
Tony Meyer        09/09/2003  Fix for [ 802545 ] crash when logging off imapfilter UI
Tony Meyer        09/09/2003  Fix for [ 802347 ] multiline options saved incorrectly
Tony Meyer        09/09/2003  Implement half of [ 801699 ] migration from hammie to sb_* scripts (although in a different way)
Tony Meyer        09/09/2003  sb_server should store and close the db before reopening it.  gdbm fails if we do not do this.  Fix this.
Tony Meyer        09/09/2003  imapfilter: correctly handle IMAP servers that (wrongly) fail to put folder names in quotation marks
Mark Hammond      09/09/2003  Add a close method to the various storage classes.
Sjoerd Mullender  08/09/2003  Fix for [ 801952 ] Imapfilter appending headers
Sjoerd Mullender  08/09/2003  imapfilter: Count all messages being classified instead of just the ones from the last folder.
Sjoerd Mullender  08/09/2003  Trivial fix for IMAP over SSL.
Tony Meyer        08/09/2003  imapfilter: handle a folder name as a literal when presenting a list to choose from
Tony Meyer        08/09/2003  imapfilter: handle IMAP servers that don't pass a blank result line for an empty search
Mark Hammond      08/09/2003  Outlook: When we fail to add the 'Spam' field to a read-only store (eg, hotmail), complain less loudly.
Mark Hammond      08/09/2003  Fix [ 798362 ] Toolbar becomes unresponsive and must be recreated
Tony Meyer        06/09/2003  Add a missing file that's necessary to try out the sb_pop3dnd.py script, and the version and options necessary.
Tony Meyer        06/09/2003  Fix [ 800555 ] 1.0a5 release missing key outlook files.
Tony Meyer        05/09/2003  Remove backwards compat code for options, and update all (I hope) the remaining code that uses it.
Tony Meyer        05/09/2003  Move and rename all top-level scripts other than setup.py

Alpha Release 5
===============
Tony Meyer     03/09/2003  imapfilter: We would crash if we hadn't set anything up and didn't prompt for password.
Adam Walker    03/09/2003  pop3proxy_tray: Switch icons based on if the proxy is running or not. Provide some info found on the information page in the tooltip of the icon.
Tony Meyer     02/09/2003  Add a rough autoconfigure script, which will set up both spambayes and a mail client to use pop3proxy
Richie Hindle  01/09/2003  Fix [ 797890 ] "assert hamcount <= nham" problem.
Tony Meyer     01/09/2003  Fix [ spambayes-Bugs-796996 ] SMTP server not started until restart.
Richie Hindle  01/09/2003  Integrated [ 791393 ] HTTP Authentication, which closes #791319.
Tony Meyer     01/09/2003  Added [ 796832 ] Word query should show all words starting with certain text 
Tony Meyer     01/09/2003  Fix for [ 797316 ] Extra CRLF to SMTP server causes garbage error.
Richie Hindle  31/08/2003  The web UI's Shutdown command, and stopping the pop3proxy_service, now wait for any open proxy connections to finish before exiting the process.
Richie Hindle  31/08/2003  X-Spambayes-Exception headers now contain a traceback as well as the exception.
Richie Hindle  29/08/2003  Fix the yellow colour of the header boxes in the web interface in strict browsers (i.e. not IE ;)
Tony Meyer     28/08/2003  smtpproxy: try a bit harder to proxy the exact command if we aren't going anything with it, and try to match it more closely even if we are.
Mark Hammond   27/08/2003  Outlook: all menu sub-items are now temporary.
Mark Hammond   27/08/2003  Fix [ 776808 ] Expanding toolbar crashes outlook
Mark Hammond   27/08/2003  Outlook: ensure we only try and use tree items listed as valid by the mask.
Mark Hammond   27/08/2003  Fix [ 795749 ] "Score after training" doesn't in CVS
Mark Hammond   27/08/2003  Outlook: add 'View Log' button to the Diagnostics dialog.
Tony Meyer     26/08/2003  Fix restoring defaults from the web interface.
Tony Meyer     26/08/2003  Implement [ 791254 ] Advanced configuration panel.
Tony Meyer     26/08/2003  smtpproxy: don't convert unknown commands to upper case as this mucks about with passwords, which might be case sensitive.
Richie Hindle  26/08/2003  Fixed [ 787251 ] Problem refreshing message list and [ 790051 ] Can't review messages.
Richie Hindle  26/08/2003  Added a missing line break in the status pane on the Home page when there are no proxies configured.
Richie Hindle  26/08/2003  Fix [ 743131 ] Specifying a POP3 server on the pop3proxy command line but no local port number (ie. no -l) now works again, defaulting to local port 110.
Skip Montanaro 26/08/2003  Change the storage.py print statements to print to stderr, so that using verbose=True is possible using apps that work through stdin.
Mark Hammond   26/08/2003  Fix [ 779319 ] ntpath Unicode error
Mark Hammond   26/08/2003  Outlook: default folder names used by the Wizard are now "Junk E-Mail" and "Junk Suspects"
Mark Hammond   26/08/2003  Outlook: the experimental 'timers' options got upgraded to the 'filter' section.
Adam Walker    26/08/2003  Outlook: added button on advanced tab to display the spambayes data folder.
Adam Walker    26/08/2003  Outlook: move Filter Now to a separate dialog invoked by the drop down menu on the toolbar.
Tony Meyer     25/08/2003  Fix some old option names.
Tony Meyer     25/08/2003  Change the notate_to and notate_subject options to notate for spam, unsure, ham, or any combination (including none) thereof.
Tony Meyer     25/08/2003  Add no_cache_large_messages option.  If messages are bigger than this, don't cache them (to avoid caching messages with massive attachments that are already correctly classified).
Tony Meyer     25/08/2003  Add an open_storage function to centralise opening storage, which also works with the new SQL classifiers.  Used by pop3proxy and hammiefilter at the moment.
Tony Meyer     25/08/2003  smtpproxy should now work as previously, but also training on the exact message sent, rather than looking up via id.  Lookup into the imapfilter folders is also possible.
Mark Hammond   25/08/2003  Fix [ 785389 ] Folders missing in Spambayes manager.
Mark Hammond   25/08/2003  Fix [ 786952 ] Error when profile name has invalid filename characters.
Mark Hammond   25/08/2003  Outlook: We now work with "IPM.Note" and "IPM.Anti-Virus*"
Mark Hammond   25/08/2003  Outlook: Fail when we can't find a default message store.
Mark Hammond   25/08/2003  Fix "[ 788495 ] Filter fails when folder full"
Mark Hammond   25/08/2003  Outlook: remove last win32ui dialog.
Mark Hammond   25/08/2003  Outlook: change default filter action to "move"
Mark Hammond   25/08/2003  Outlook: don't score if the training was canceled.
Mark Hammond   25/08/2003  Outlook: present the wizard when required.
Mark Hammond   25/08/2003  Outlook: allow filtering to be enabled, even if no training information!
Tony Meyer     23/08/2003  Add [ 789916 ].  Outlook Express .dbx files can now be used to train, just like mbox files.
Mark Hammond   23/08/2003  Outlook: we can cancel a train without destroying the DB, and mail that comes in during the training will not use the partial db.
Mark Hammond   23/08/2003  An empty 'allowed values' now allows an empty string.
Mark Hammond   23/08/2003  Outlook: add a "New Folder" button to the folder selector dialog.
Mark Hammond   20/08/2003  Outlook: add wizard dialogs.
Tony Meyer     19/08/2003  Implement [ 790615 ] Allowed remote connections management, which addresses [ 698036 ] pop3proxy security
Tony Meyer     19/08/2003  Allow @ and = in paths.
Adam Walker    19/08/2003  Outlook: add a Wizard framework.
Adam Walker    19/08/2003  Outlook: add a diagnostic dialog.
Adam Walker    18/08/2003  Fix [ 790406 ] Allow the timers to be set in half second increments.
Mark Hammond   18/08/2003  Improve the starting/stopping of the pop3proxy service
Adam Walker    18/08/2003  Outlook: change the manager dialog to a tabbed interface, and add a logo to it.
Tony Meyer     18/08/2003  Allow the pop3proxy_service to start smtpproxy as well
Tony Meyer     18/08/2003  Add version information to the web interface, as requested in [ spambayes-Bugs-790051 ] Can't review messages if probability header is turned on
Tony Meyer     16/08/2003  which_database.py: Make the script a little smarter about checking if bsddb[3] is available.
Tony Meyer     14/08/2003  Fix [ spambayes-Bugs-788008 ] smtpproxy.py assumes too good format for addresses
Tony Meyer     14/08/2003  Implement patches from [ 788001 ] mboxtrain.py Maildir bugfix and feature
Tony Meyer     14/08/2003  Fix [ 787296 ] Local installation problem: hammiefilter_persistent_storage
Tony Meyer     14/08/2003  Fix [ 788002 ] hammiebulk.py uses wrong option name
Tony Meyer     13/08/2003  If you didn't use the -p switch to enter your password interactively, imapfilter would try and get it from the options, but if it wasn't there yet (because you hadn't done the setup yet), it would crash.  Fix this.
Skip Montanaro 13/08/2003  Add a simple n-way classifier using a cascade of binary SpamBayes classifiers
Tony Meyer     12/08/2003  Web interface: At some point (before the 1.0a4 release) selecting both "header" and "body" stopped working.  This fixes that.
Tony Meyer     12/08/2003  Have the review messages page put the unsure messages at the top, because they are the most important to take action on
Mark Hammond   11/08/2003  Outlook: SpamClues shows the percentage as well as the raw score.
Adam Walker    09/08/2003  Outlook: Added website links to the help menu.
Adam Walker    09/08/2003  Use the Tahoma font in the Outlook dialogs.
Mark Hammond   09/08/2003  Fix [ 780612 ] Outlook incorrectly trains on moves messages.
Mark Hammond   08/08/2003  Fix bug [ 784323 ] Plug-in will not initialize/watch in offline mode
Tony Meyer     07/08/2003  Add a mySQLClassifier class
Skip Montanaro 07/08/2003  Add a postgreSQL classifier class, and a base SQLClassifier class
Tony Meyer     07/08/2003  Remove dumbdbm from the config options
Skip Montanaro 07/08/2003  Remove dumbdbm from the possible dbm storage options
Tony Meyer     07/08/2003  Fix [ 784296 ] imapfilter broken with Python 2.3
Adam Walker    06/08/2003  Outlook: move the html menu options to a Help sub-menu.
Mark Hammond   06/08/2003  Fix [ 780819 ] Images pasted to clipboard each startup
Mark Hammond   04/08/2003  Add a get_option method, so an option instance itself can be fetched.
Mark Hammond   04/08/2003  Outlook: new data driven dialogs loaded from Windows .rc scripts.
Mark Hammond   04/08/2003  Outlook: add a resource script parser, by Adam Walker.
Mark Hammond   01/08/2003  Outlook: fix [ 780801 ] IMAP Still Failing - GetField() returns None on MAPI error
Mark Hammond   30/07/2003  Outlook: avoid passing a float to C functions that take an int (the slider pos)
Mark Hammond   29/07/2003  Fix [ 779049 ] email.Errors.HeaderParseError: Continuation line seen ...
Mark Hammond   29/07/2003  Outlook: change the way we detect 'unsent' items - this way catches both unsent items, and copies of sent items.
Mark Hammond   29/07/2003  Outlook: add ability to check for the latest version.
Mark Hammond   29/07/2003  Version.py: indicate the generated output is generated :)  Make work for Python 2.2, but don't trust its config parser for remote data.
Mark Hammond   29/07/2003  Support fetching the "latest" set of version data from the spambayes web site.
Richie Hindle  28/07/2003  Made the pop3proxy work with fetchmail.
Mark Hammond   28/07/2003  Outlook: Add a new experimental 'timer'.
Mark Hammond   26/07/2003  Outlook: Log the binary version in the binary.
Mark Hammond   25/07/2003  Fix locale issues in Outlook - fixes [ 765912 ] AssertionError: Proportions must add to 1.0 ...
Tim Peters     25/07/2003  Fix SF bug 777026: Possible cause for db corruption in DBDictClassifier.
Mark Hammond   25/07/2003  Created a directory & readme for test suites, including a storage.py test.
Tony Meyer     25/07/2003  [ 777165 ] Typo in Options.py causes bogus warning on reading config
Mark Hammond   23/07/2003  Outlook: fix a bug in how attachment properties were fetched - if the body was "large", we attempted to get the "large property" from the mail object itself, rather than the attachment.
Mark Hammond   23/07/2003  Outlook: fix a problem where multipart/signed messages could still screw us.
Mark Hammond   23/07/2003  Fix [ 693387 ] user-composed messages are filtered.
Mark Hammond   23/07/2003  Outlook: Check the message flag for the "unsent" bit.
Richie Hindle  22/07/2003  You can once again specify local addresses as well as ports for the pop3proxy to listen on (was broken in 1.0a3 and 1.0a4).
Mark Hammond   21/07/2003  Outlook: Paul Moore reports that not specifying USER_DEFERRED_ERRORS solves his "unread flag" issue - and we certainly don't need that flag here, so out it goes.
Mark Hammond   21/07/2003  Outlook: While we are printing versions, Python gets a go.
Mark Hammond   21/07/2003  Fix 690418: Non mail items filtered by Outlook
Mark Hammond   21/07/2003  Fix 719586: Cannot View Spam Cues for Undeliverable Reports
Mark Hammond   21/07/2003  Outlook: Add IsFilterCandidate() method to a message object to determine if this is a message we should try and filter.
Mark Hammond   21/07/2003  Outlook: Rationalize code that creates a message object.
Mark Hammond   21/07/2003  Outlook: Ignore errors when enumerating stores.
Mark Hammond   21/07/2003  Outlook: Work better with a unicode data directory.
Mark Hammond   21/07/2003  Outlook: Add a new filter option - "save_spam_info", default=True.
Mark Hammond   20/07/2003  Fix [ 769346 ] Problems after deleting certain spam folder as implemented in [ 769981 ] Outlook plugin: allow user to change spam and unsure.
Mark Hammond   20/07/2003  pop3proxy_service: log exceptions if the server thread dies unexpectedly.
Mark Hammond   20/07/2003  Fix [ 761499 ] pop3proxy_service doesn't stop when shutdown from browser.
Mark Hammond   20/07/2003  Fix [ 769346 ] Problems after deleting certain spam folder as implemented in [ 769981 ] Outlook plugin: allow user to change spam and unsure.
Mark Hammond   19/07/2003  pop3proxy_service: Redirect output to win32traceutil (for want of a better place)
Richie Hindle  19/07/2003  pop3proxy: Print a traceback as well as adding an X-Spambayes-Exception header when there's an exception raised while processing a message.
Tony Meyer     18/07/2003  Fix [ 773452 ] Unable to use fractional number as spam_threshold.
Richie Hindle  18/07/2003  pop3proxy:  "ASCII decoding error" problem fixed.
Skip Montanaro 15/07/2003  dbmstorage: trivial hack to give dumbdbm a sync() method (which Shelve will call) and hopefully reduce database corruption
Mark Hammond   09/07/2003  Outlook: Include the Windows version in the log.
Mark Hammond   09/07/2003  Outlook: Use the passed field name rather than hardcoded "Spam".
Mark Hammond   09/07/2003  Fix 765042: IMAP mail fails to filter
Tony Meyer     09/07/2003  Allow $ in pathnames, which fixes [ 768162 ] UNC path for data_directory?
Tony Meyer     09/07/2003  mboxtrain: Use /tmp/ as the temp directory, not /cur/tmp or /new/tmp.  Fixes [ 768221 ] v1.0a4 dies when training on Maildir
Mark Hammond   08/07/2003  Fix [ 760062 ] Traceback untraining a single message - typo in assert.
Tony Meyer     08/07/2003  hammiebulk: a belated patch to account for the default persistent_storage_file option changing.
Richie Hindle  07/07/2003  Added no_cache_bulk_ham option: suppresses caching of 'Precedence: bulk' ham, to stop mailing list traffic swamping the web UI's training page.
Richie Hindle  07/07/2003  Prevent the "Show clues" links on the web UI's training page from word-wrapping and making all the table rows two lines high.


Alpha Release 4
===============
Tony Meyer  04/07/2003  Fix SF#761677 ("mboxtrain.py's -n option has no effect")
Richie Hindle   03/07/2003  Put the current date and time into the footer of the web interface, rather than always displaying "Mon Dec 30 14:04:32 2002".
Richie Hindle   03/07/2003  Fix a bug in pop3proxy where long attachments would be broken.
Richie Hindle   02/07/2003  If an exception occurs parsing a message in pop3proxy, append an 'exception' header to the message and recover.
Richie Hindle   02/07/2003  Stop the pop3proxy including the trailing . when passing messages to the email package.
Mark Hammond	01/07/2003	Version 003 of the binary.
Mark Hammond    01/07/2003  In outlook plugin, display a message for "Delete as Spam" or "Recover from Spam" when SpamBayes is not enabled.
Skip Montanaro  01/07/2003  Encode unicode objects as utf-8 before using as a key for DBDictClassifier instances. (Fixes [ spambayes-Bugs-761670 ] Unexpected unicode key inbsd db)
Mark Hammond    01/07/2003  In Outlook plugin, toolbar was not initialized when "Outlook Today" was the default view.
Mark Hammond    30/06/2003  In Outlook plugin, don't (try to) do OnStartupComplete work if OnConnection failed.
Mark Hammond    30/06/2003  In Outlook plugin, log the repr() of messages displayed in a dialog, as they often have embedded \r\n chars - repr() keeps the whole thing to a single line.
Tim Peters  28/06/2003  A new stripper to squash yet another way of hiding content in HTML spam, like Ere<frame><noframes>ywl55</noframes></frame>ctions to hide Erections.
Tim Peters  27/06/2003  In storage.py store():  If a Shelf db doesn't have a key, then "del db[key]" should raise KeyError.
Tim Peters  27/06/2003  In storage.py store():  Use iteritems() instead of items() to materialize the changed_words guts.
Tim Peters  27/06/2003  In storage.py, check WORD_CHANGED and WORD_DELETED with is not ==.
Tim Peters  27/06/2003  Remove a superstitious check for None in storage.py (_wordinfoset()).
Tim Peters  27/06/2003  Fix a bug in storage.py (_wordinfoget()) which could cause incorrect token counts.
Tony Meyer	23/06/2003	In imapfilter, try to append without flags if appending fails.
Tony Meyer	23/06/2003	Implement SF#755098 - "Progress Indicator in imapfilter"
Tony Meyer	23/06/2003	Fix the -i switch in imapfilter.
Barry Warsaw	22/06/2003	Don't try and get password from options if -p is specified in imapfilter.
Barry Warsaw	22/06/2003	Fix an import error in imapfilter.

Alpha Release 3
===============
Tony Meyer	22/06/2003	Fix RFC822.PEEK error in imapfilter.
Neale Pickett	21/06/2003	"In hammiefilter,  make untrain mode work."
Mark Hammond	20/06/2003	"In Outlook plugin, add a 'verbose' option to the options."
Mark Hammond	19/06/2003	"In Outlook plugin, change ""Anti-Spam Manager"" -> ""SpamBayes Manager"""
Mark Hammond	18/06/2003	"In Outlook plugin, allow either spam or unsure messages to be marked as read as they are filtered."
Mark Hammond	18/06/2003	"In Outlook plugin, more work on the toolbar."
Mark Hammond	17/06/2003	2 new [General] options for Outlook plugin - delete_as_spam_message_state and recover_from_spam_message_state.
Mark Hammond	17/06/2003	"In Outlook plugin, prevent ""Deleted items"", Outbox and Sent Items from appearing in the folder list.  Fixes: [ 749277 ] Should prevent ""Deleted Items"" being target folder."
Mark Hammond	17/06/2003	"In Outlook plugin, catch the assertion error in the classifier, and warn the user their database is corrupt."
Mark Hammond	17/06/2003	"In Outlook plugin, introduce ReportErrorOnce, useful for errors on event handlers that you don't want to bombard the user with."
Mark Hammond	17/06/2003	"In Outlook plugin, an error on a single sub-folder need not be fatal.  Hopefully fixes [ 743515 ] Unable to expand folders in folder selection dialog."
Mark Hammond	17/06/2003	"In Outlook plugin, DeleteAsSpam didn't detect ""no folder"" correctly."
Anthony Baxter	17/06/2003	"In IMAPFilter interface, fix parm_map code."
Mark Hammond	16/06/2003	Split OptionsClass into a separate file.
Mark Hammond	16/06/2003	Allow lists to be used for multi-valued options.
Mark Hammond	16/06/2003	"Allow the first entry in the ""defaults"" table to be a sub-class of Option."
Mark Hammond	16/06/2003	"In Outlook plugin, when training, instead of suggesting the inbox, suggest folders we watch."
Mark Hammond	16/06/2003	"In Outlook plugin, change ""Anti-Spam"" on the dropdown to ""SpamBayes"""
Mark Hammond	16/06/2003	"In Outlook plugin, huge changes to configuration.  No longer use a pickle, but instead a series of .INI files."
Tony Meyer	12/06/2003	Update pop3proxy and imapfilter to print out version information.
Skip Montanaro	10/06/2003	Correction to VM mailer addition to spambayes.el
Tony Meyer	8/06/2003	"Add pop3proxy, hammie, smtpproxy & imapfilter version information."
Neale Pickett	6/06/2003	Integrated code for the VM mailer into spambayes.el
Mark Hammond	5/06/2003	Add a version information repository.
Mark Hammond	5/06/2003	Change Outlook plugin to use new version information repository.
Mark Hammond	4/06/2003	"In Outlook plugin, no longer default to the ""Inbox"" (see also SF#741797 ('Does not filter incoming mail'))."
Mark Hammond	4/06/2003	"In Outlook plugin, when filtering, saving the spam score is no longer fatal."
Tony Meyer	4/06/2003	"In muttrc, fix incorrect Spambayes header name."
Mark Hammond	3/06/2003	Handle malformed messages better in the Outlook plugin.
Mark Hammond	3/06/2003	"In Outlook plugin, create our own toolbar, rather than using the standard one."
Mark Hammond	3/06/2003	Fix an Outlook plugin error that would try to save the database when classifying.
Mark Hammond	3/06/2003	"Make Outlook plugin log refer to ""Spambayes"" rather than ""SpamAddin"""
Mark Hammond	3/06/2003	Use 'wait' cursor when incremental training in Outlook plugin.
Mark Hammond	3/06/2003	"In Outlook plugin, save config when dialog closes and not at shutdown."
Mark Hammond	3/06/2003	Clean up toolbar images.
Tony Meyer	30/05/2003	Added URL slurper.
Mark Hammond	29/05/2003	"DB classifier keeps a list of ""changed words"" to prevent saves from updating *all* words."
Mark Hammond	29/05/2003	DB classifier doesn't cache hapaxes.
Tony Meyer	26/05/2003	Fix SF#737986 ('Message.as_string() fails.').
Tony Meyer	26/05/2003	Restore notate_to and notate_subject functionality to pop3proxy.
Tony Meyer	25/05/2003	Expose experimental ham/spam imbalance option to pop3proxy/imapfilter users
Tim Peters	25/05/2003	Restore __slots__ declaration to WordInfo object in classifier.py
Tim Peters	25/05/2003	PickledClassifier.load():  use getstate/setstate to copy the state. 
Tony Meyer	21/05/2003	Cosmetic changes to pop3proxy and imapfilter interface.
Tony Meyer	21/05/2003	"Remove the ""account for string nham/nspam"" code in classifier."
Tim Peters	19/05/2003	Catch BoundaryError when parsing messages.
Tim Peters	19/05/2003	Improve tokenisation for messages that have text that looks like Wr<!$FS|i|R3$s80sA >inkle Reduc<!$FS|i|R3$s80sA >tion
Tim Peters	19/05/2003	Decode numeric character entities in html.
Tim Peters	19/05/2003	Replace <p> and <br> tags with single blanks.
Mark Hammond	15/05/2003	The training dialog now shows a correct progress bar for the *complete* operation - training *and* scoring
Mark Hammond	15/05/2003	Fix SF#706170 ('Execute test suite fails in Outlook').
Mark Hammond	15/05/2003	Save bsddb databases after a training operation (should prevent Outlook ever saving at shutdown).
Mark Hammond	15/05/2003	Print how long each save takes (so people can complain).
Mark Hammond	15/05/2003	Keep and print some stats about how many items SpamBayes saw.
Mark Hammond	14/05/2003	Various changes to urlslurper.py
Mark Hammond	14/05/2003	Fix SF#737956 ('No hourglass when building folder lists').
Mark Hammond	14/05/2003	Fix SF#737955 ('Transient connection error disables plugin').
Tony Meyer	14/05/2003	Added missing import to UserInterface.py
Tony Meyer	14/05/2003	Increased efforts to stop browsers caching the interface pages.
Tony Meyer	13/05/2003	Added refresh button to review messages page in pop3proxy ui.
Tony Meyer	13/05/2003	"Added ""check again"" link on 'no more untrained messages page' in pop3proxy ui."
Tony Meyer	13/05/2003	"Added ""html_ui"":""display_to"" option."
Tony Meyer	11/05/2003	Fixed KeyError bug in message.py.
Tony Meyer	11/05/2003	Added SSL support to imapfilter (untested).
Tony Meyer	6/05/2003	Added getattr backwards compatibility for renamed options.
Tony Meyer	6/05/2003	IMAP Filter now deletes existing spambayes headers before training.
Tony Meyer	6/05/2003	"Added ""Storage"":""messageinfo_storage_file"" option."
Tony Meyer	6/05/2003	Fix for SF#733247 ('crash when using merged-in options').
Tim Stone	4/05/2003	Catch exception when a file in the pop3proxy cache mysteriously disappears.
Tony Meyer	4/05/2003	Fix bug stopping some messages loading into pop3proxy cache.
Tony Meyer	3/05/2003	Removed OptionConfig.py
Mark Hammond	3/05/2003	Correct usage doc with respect to default directory.
Mark Hammond	3/05/2003	Fix SF#715248 ('Pickle classifier should save to a temp file first').
Mark Hammond	3/05/2003	Formalized error reporting in Outlook plugin.
Mark Hammond	3/05/2003	"Created special handling for ""startup errors"" in Outlook plugin"
Mark Hammond	3/05/2003	Allow test suite to work with bsddb3 or bsddb.
Tony Meyer	3/05/2003	Fix invalid options names in IMAP and POP3 user interface.
Tony Meyer	3/05/2003	Fix incorrect state information displaying after configuration.
Tony Meyer	2/05/2003	Fix temp file problem with web interface on linux.
Tony Meyer	2/05/2003	Update configuration file reading so that writing uses same delimiters.
Tony Meyer	2/05/2003	Fix temp file problem with web interface on linux.
Mark Hammond	1/05/2003	Ignore the pywin.dialogs package in the Outlook plugin install.
Mark Hammond	1/05/2003	Save the database after an explicit train.
Mark Hammond	1/05/2003	Fix globals statements in URL slurper.
Mark Hammond	1/05/2003	Fix testtools import in URL slurper.
Mark Hammond	1/05/2003	Print URL slurper status to stderr.
Mark Hammond	1/05/2003	Added socket.error catching in URL slurper.
Mark Hammond	1/05/2003	Avoid slurping non html content.
Tony Meyer	1/05/2003	Fix bug where URL cache would not be in the current working directory by default.
Tony Meyer	28/04/2003	Stop using IMAP uids as our ids.
Tony Meyer	28/04/2003	Fix SelectFolder bug in IMAP Filter.
Tim Stone	28/04/2003	Create IMAP session object for each login.
Tony Meyer	28/04/2003	Fix for SF#728886 ('In the pop3 UI not able to pass more than 1 server').
Tony Meyer	28/04/2003	Fix for incorrect is_boolean code in Options.py
Tony Meyer	28/04/2003	"IMAP Filter now only retrieves RFC822 headers when iterating, not whole message."
Tim Stone	28/04/2003	Moved CRLF replacement from IMAP to generic message class.
Tony Meyer	27/04/2003	Minor bug fixes to Options.py
Tony Meyer	27/04/2003	Fixed configuration file reading bug forcing single space separators instead of any whitespace.
Tony Meyer	27/04/2003	Fixed Options.py bug reported by Tim Stone.
Tony Meyer	27/04/2003	Fix hammiefilter calling mergefiles instead of merge_files.
Tony Meyer	25/04/2003	Added message_from_string functions to message.py and imapfilter.py
Tony Meyer	25/04/2003	Extra error checking in IMAP Filter.
Tony Meyer	24/04/2003	"Fix SF#725307 (""Outlook plugin won't load (anymore)"")."
Tony Meyer	24/04/2003	Fix SF#725466 ('Include a proper locale fix in Options.py').
Tony Meyer	24/04/2003	Fix SF#726255 ('Problem if bayescustomize.ini not there').
Tony Meyer	24/04/2003	Moved the CRLF fixing from generic message class to IMAP filter.
Tony Meyer	24/04/2003	Major rewrite of Options.py
Tony Meyer	24/04/2003	Changed options with multiple values to tuples.
Tony Meyer	24/04/2003	Fixed bug where the IMAP user interface would try to display a folder before logging in.
Tony Meyer	24/04/2003	Added convert_config_file script.
Tim Stone	24/04/2003	Fix message.py incorrectly persisting/restoring state.
Tony Meyer	24/04/2003	Fix Options.py convert and unconvert functions.
Tony Meyer	24/04/2003	Fix valid characters for IMAP username and password.
Tony Meyer	24/04/2003	Improve behaviour of convert_config_file script.
Tony Meyer	24/04/2003	Check that spam/unsure/filter folders exist in IMAP before filtering/training.
Tony Meyer	24/04/2003	Removed CompatConfigParser.py
Tony Meyer	24/04/2003	Removed UpdatableConfigParser.py
Tony Meyer	22/04/2003	Fixed is_valid method for sets.
Tim Stone	22/04/2003	Added extra verbose output in IMAP Filter.
Tim Stone	22/04/2003	Corrected counting error in IMAP Filter.
Tony Meyer	22/04/2003	Fix SF#725616 ('Options.py mergefiles crashes (+ fix)').
Tony Meyer	22/04/2003	Improved processing of fetch response in IMAP filter.
Tim Stone	21/04/2003	Cosmetic changes to the web configuration page.
Skip Montanaro	21/04/2003	Fix CRLF regex in message.py
Tony Meyer	21/04/2003	Fix SF#725307 ('Outlook plugin won't load (anymore)').
Tim Stone	21/04/2003	Rewrote is_valid method in Options.py
Tony Meyer	20/04/2003	Moved pop3proxy test code into separate module.
Tony Meyer	20/04/2003	"Allow """" as a valid option if the valid values are defined by a regex and multiple values are allowed."
Tony Meyer	20/04/2003	Change imapfilter server option to pop3proxy style (i.e. server[:port])
Tony Meyer	20/04/2003	Set web interface pages to not cache.
Tony Meyer	20/04/2003	Fixed imapfilter and pop3proxy web configuration.
Tony Meyer	20/04/2003	Change the select folder config for imapfilter to two pages.
Tony Meyer	20/04/2003	Added check for parsedate failing in imapfilter.
Tony Meyer	20/04/2003	Fix the regex for the date in imapfilter.
Tim Stone	20/04/2003	Removed unnecessary imports/comments in pop3proxy.
Tim Stone	20/04/2003	Changed pop3proxy's STAT handling to return a guess at new message size.
Tony Meyer	19/04/2003	Fixed updating of configuration files.
Tim Stone	19/04/2003	Correction to regex for smtpproxy servers validation.
Tony Meyer	19/04/2003	Stop IMAP filter filtering messages marked as deleted.
Tony Meyer	19/04/2003	Copy IMAP flags along with message.
Tony Meyer	19/04/2003	Use IMAP date instead of the local one.
Tony Meyer	19/04/2003	Added utility functions to Options.py to assist people to figure out what is available.
Tony Meyer	18/04/2003	"Remove support for pop3proxy_port, pop3proxy_server_name and pop3proxy_server_port options (long deprecated)."
Tony Meyer	18/04/2003	Remove option to launch smtpproxy and always do this from pop3proxy (if servers are specified).
Tony Meyer	18/04/2003	Fix smtpproxy bug that would prevent mail sent in the same session as training mail being delivered.
Tony Meyer	18/04/2003	Major rework of configuration file reading/options.  Section names no longer ignored.
Tony Meyer	18/04/2003	"Moved interface code out of pop3proxy into ImapUI, ProxyUI and UserInterface.py"
Tim Stone	18/04/2003	Added web interface support to imapfilter.
Tim Stone	18/04/2003	Only start browser if required in imapfilter.
Tony Meyer	18/04/2003	Fix for time retrieval in imapfilter when the date header is missing.
Tony Meyer	18/04/2003	Change the line endings fix (pop3proxy/imapfilter) to a more robust one (from smtplib).
Tim Stone	18/04/2003	Converted pop3proxy to use message.py.  (notate-body is no longer working)
Mark Hammond	18/04/2003	Fixed Outlook plugin to work in non-English locales.
Tim Stone	17/04/2003	Corrected newline mangling in imapfilter.
Tim Stone	17/04/2003	Corrected folder comparison operator in imapfilter.
Tim Stone	17/04/2003	Refactored functionality into an IMAPSession class.
Tim Stone	17/04/2003	Added -p option for password prompt in imapfilter.
Tim Stone	17/04/2003	Corrected imapfilter training error which would result in no training being done.
Tim Stone	17/04/2003	Corrected an error in the timed loop that unnecessarily kept IMAP sessions open.
Tim Stone	17/04/2003	Moved the header repaid regex into the message class.
Tony Meyer	17/04/2003	Added ConfigParser from Python 2.3 which solves many problems in the 2.2 version.
Tony Meyer	17/04/2003	Updated UpdatableConfigParser to use new 2.3 ConfigParser.
Tony Meyer	16/04/2003	Fix an imapfilter invalid date problem.
Tim Stone	14/04/2003	Fixed the imapfilter docstring not printing.
Tim Stone	14/04/2003	Changed imapfilter -e argument to y/n.
Tim Stone	14/04/2003	Added -l argument to imapfilter allowing looping.
Tim Stone	14/04/2003	Correctly extract timestamp for new messages in imapfilter.
Tim Stone	13/04/2003	Raise an error if message.py is asked to remember an unknown classification.
Tim Stone	13/04/2003	General cleanup of imapfilter.
Tim Stone	13/04/2003	Remove old message ids from the message info db when using imapfilter.
Skip Montanaro	13/04/2003	Fix train() in mboxtrain.
Tony Meyer	13/04/2003	Fix for user interface showing incorrect server strings when using pop3proxy_service.
Tony Meyer	13/04/2003	Various speed improvements to imapfilter.
Tim Stone	12/04/2003	Functional version of the imapfilter.
Tim Stone	10/04/2003	Made base message class more abstract and added a SBHeaderMessage class.
Tim Stone	10/04/2003	Made imapfilter use the new message class.
Tony Meyer	9/04/2003	Update imapfilter to reflect message class changes.
Tony Meyer	8/04/2003	Introduce a IMAPMessage class based on the spambayes Message class.
Tony Meyer	8/04/2003	Introduce an iterable IMAPFolder class.
Tony Meyer	8/04/2003	Allow filtering of multiple folders in IMAP filter.
Tim Stone	8/04/2003	Added methods to message.py to support copying one message to another.
Tim Stone	8/04/2003	Added logic to imapfilter to ensure that classification and training memory is preserved.
Tony Meyer	7/04/2003	First check-in of IMAP filter.
Tim Stone	7/04/2003	First check-in of message.py
Tim Stone	7/04/2003	Changed imapfilter to use the message class.
Tony Meyer	3/04/2003	Expire messages from the unknown pop3proxy cache as well as ham/spam caches.
Tony Meyer	3/04/2003	"Kick off expiry check each time a client connects to the proxy rather than on startup, for those who have the proxy stable!"
Tony Meyer	3/04/2003	"Add ""show clues"" button to the review message page in pop3proxy ui."
Tim Stone	28/03/2003	Unicode print error fix in notesfilter.
Mark Hammond	23/03/2003	Fix SF#707491 ('Pop3 proxy service code for Windows doesn't work...').
Mark Hammond	20/03/2003	Ensure database is saved before testing outlook plugin.
Mark Hammond	20/03/2003	Fix error in testing outlook plugin (getting wrong end of sorted list).
Tim Stone	20/03/2003	Added SF#703283 ('mboxtrain only trains on cur in maildir').
Mark Hammond	18/03/2003	Ensure all buttons are greyed during filter process in Outlook plugin.
Mark Hammond	18/03/2003	When running Outlook plugin from a binary redirect output to a log.
Mark Hammond	18/03/2003	Version 002 of the binary.
Mark Hammond	17/03/2003	"Warn, but ignore errors walking the folder tree in Outlook plugin."
Mark Hammond	17/03/2003	"Fix SF#704921 ('""Train now"" (outlook) fails ')."
Mark Hammond	17/03/2003	Prevent a single error filtering a message from stopping the whole filter process in Outlook plugin.
Mark Hammond	16/03/2003	Allow messages to be scored after training in Outlook plugin.
Mark Hammond	16/03/2003	Fix bug in Outlook plugin where filter operation report was reporting incorrect total.
Tony Meyer	13/03/2003	Revert Options.py to ConfigParser from UpdatableConfigParser.
Mark Hammond	12/03/2003	Added pop3proxy_service.py
Tony Meyer	12/03/2003	"Update web ui so that boolean options are radio buttons rather than text boxes, and multiple choice options are checkboxes."
Tony Meyer	12/03/2003	Separated out pop3proxy options and header options in pop3proxy web ui.
Tony Meyer	12/03/2003	Adds UpdatableConfigParser.
Tony Meyer	12/03/2003	Changes Options.py to use UpdatableConfigParser rather than ConfigParser.
Tony Meyer	11/03/2003	Fixes a bug in pop3proxy/smtpproxy where headers will appear in the message body.
Tony Meyer	10/03/2003	Added level & evidence headers in pop3proxy.
Mark Hammond	9/03/2003	"Correct ""data"" directory location in export.py."
Tony Meyer	9/03/2003	Added pop3proxy include_prob option to (optionally) note the score/prob in the classification header.
Tim Stone	9/03/2003	"Added configuration for pop3proxy include_prob option, add_mailid_to and strip_incoming mailIds options."
Tim Stone	8/03/2003	Fix SF#700165 ('MoveFileEx doesn't exist on Win98').
Tim Peters	8/03/2003	List unique tokens one per line in Outlook plugin's ShowClues.
Mark Hammond	7/03/2003	Handle MAPI exceptions better in Outlook plugin.
Mark Hammond	7/03/2003	"Centralise detection of ""not found"" exceptions in Outlook plugin."
Mark Hammond	7/03/2003	Suppress errors in outlook plugin when hotmail connector can't save the message.
T. Alexander Popiel	7/03/2003	Added another regime to regimes.py.
Tim Stone	6/03/2003	Added SF#690928 ('turn off saving messages in popproxy').
Skip Montanaro	6/03/2003	Catch extra exception in header parse errors.
Tim Stone	6/03/2003	"Fix SF#698852 (""can't classify messages"")."
Mark Hammond	4/03/2003	Fix a Outlook plugin bug that could cause incorrect word scores to be used/saved when a bsddb database is used.
Mark Hammond	4/03/2003	Remove unused 'wordcache' instance variable in storage.py.
Mark Hammond	4/03/2003	Show all tokens in message when showing clues in Outlook plugin.
Mark Hammond	4/03/2003	"Fix a bug in the Outlook plugin test code that used *all* ham/spam words, not just top 50."
Mark Hammond	4/03/2003	"Only remember source folder when filtering, not just scoring in Outlook plugin."
Mark Hammond	4/03/2003	"Only attempt to create ""Spam"" field on a mail item in Outlook plugin."
Mark Hammond	4/03/2003	If no items are found in Outlook plugin don't attempt to recurse folders.
Mark Hammond	4/03/2003	Fix SF#696476 ('Manual filtering in outlook fails').
Mark Hammond	4/03/2003	Fix SF#697120 ('Manual filtering in Outlook (still) fails').
Jeremy Hylton	4/03/2003	Band-aid decode_header() in pop3proxy.py
Mark Hammond	3/03/2003	Fix manager.py calling shutil.move (does not exist pre Python 2.3).
Mark Hammond	3/03/2003	Fix SF#696995 ('Invalid HTML comments are not ignored').
Skip Montanaro	3/03/2003	Note when subject charset is invalid (rather than raising an exception).
Tony Meyer	2/03/2003	Added support to smtpproxy for extracting an id in a Mozilla style forwarded message (HTML table).
T. Alexander Popiel	1/03/2003	"Add option to mkgraph to spit out counts *or* error rates, and n-day averages *or* cumulative."
Tony Meyer	1/03/2003	Small modifications to smtpproxy related pop3proxy options.
Tony Meyer	1/03/2003	Expose options for adding an id to incoming mail in pop3proxy.
Tony Meyer	1/03/2003	Expose options for using smtpproxy.
T. Alexander Popiel	28/02/2003	Put all regimes into regimes.py.  Define fpfnunsure and fnunsure regimes.
T. Alexander Popiel	28/02/2003	Fix name conflict between regimes list and regimes source file in incremental.py
T. Alexander Popiel	28/02/2003	Reduce the amount of progress output in incremental.py
Tony Meyer	27/02/2003	"Add options to add an id (as a header or in the body), strip such ids from incoming mail, find a message via the id, train messages by forwarding/bouncing to smtpproxy."
Tony Meyer	27/02/2003	First check in of smtpproxy.
T. Alexander Popiel	27/02/2003	"Added various files relating to incremental training (or ""self training"") regimes."
Tim Stone	27/02/2003	Fix SF#693423 ('email message generates error in pop3proxy.py').
Mark Hammond	26/02/2003	"Fix bug in dbmstorage.py for Python 2.2, which tried bsddb3 twice if it failed."
Tim Stone	25/02/2003	First check in of Lotus Notes filter.
Tim Stone	25/02/2003	Add option for pop3proxy to notate Subject: header.
Tony Meyer	25/02/2003	Fix bug in Corpus.get() which would never return the default value.
Mark Hammond	18/02/2003	"Store Outlook plugin files in the ""correct"" Windows directory."
Neil Schemenauer	16/02/2003	Add -c and -d options to mailsort.py.
Neil Schemenauer	16/02/2003	First check-in of dump_cdb.py
Mark Hammond	13/02/2003	Add SF#685746 ('Outlook plugin folder list sorted alphabetically').
Mark Hammond	13/02/2003	Handle exceptions when opening folders in Outlook plugin better.
Skip Montanaro	13/02/2003	Split BAYESCUSTOMIZE environment variable using os.pathsep.
Mark Hammond	12/02/2003	Check for correct exception when removing file in Outlook addin.
Mark Hammond	12/02/2003	Check for bsddb3 before bsddb (previously bsddb3 would never be found).
Tim Stone	10/02/2003	Changed BAYESCUSTOMIZE environment variable parsing from a split to a regex to fix filenames with embedded spaces.
Tim Stone	8/02/2003	Ensure that nham and nspam are instances of integer in dbExpImp.py
Tim Stone	8/02/2003	Ensure that nham and nspam becoming strings doesn't break classification.
Tim Stone	8/02/2003	Added ability to put classification in subject or to headers (for OE).
Mark Hammond	7/02/2003	Fix some errors using bsddb3 in Outlook plugin.
Mark Hammond	4/02/2003	"Fix SF#642740 ('""Recover from Spam"" wrong folder')."
Mark Hammond	3/02/2003	Change train.py to be able to work with a bsddb database.
Mark Hammond	3/02/2003	If a new bsddb or bsddb3 module is available use this instead of a pickle in the Outlook plugin.
Mark Hammond	3/02/2003	Add tick-marks to the filter dialog.
Mark Hammond	3/02/2003	Fix SF#677804 ('Untouched filter command error').
