K9 - Development History

  • Added support for customization of K9 resources (i.e. partial alternate language support). See Customizing K9
  • Fixed a problem where if you kept the Escape key held down while attempting to open a message K9 would crash.
  • Fixed a problem when canceling out of resetting statistics would reset the date/time shown at the column head.
  • Added "View Folder" button to Statistics tab to open up a Windows Explorer window on the K9 database directory.
  • Added date display to the email reader window.
  • Modified system tray tooltip for Win9x systems since it seems those OS'es don't support line breaks in the text.
  • Added/updated the following keyboard accelerator keys:
CTRL-G = Good
CTRL-S = Spam
CTRL-B = Blacklist
CTRL-W = Whitelist
CTRL-1 = Recent Emails tab
CTRL-2 = Storage Area tab
CTRL-3 = Server Check tab
CTRL-4 = Configuration tab
CTRL-5 = Advanced tab
CTRL-6 = Statistics tab
CTRL-7 = Log tab
Enter = Read selected email
F1 = Help/Go to K9 website
F5 = Refresh
CTRL-O = Organize
  • Copy to clipboard right-click menu option wasn't working in the Storage Area or Server Check sections.
  • Debug log windows are now limited to the last 512 K of text to help reduce memory usage.
  • Modified update behavior on the Advanced page when editing or creating a new account.
  • Added Advanced page option to reduce CPU priority when K9 is minimized.
  • Added option to always score emails after the Storage Area emails have loaded.
  • Increased maximum line length for filter lists from 256 to 1024 characters.
  • DNSBL lookups are disabled for the remainder of a session if they are taking too long (cached values are still used).
  • Changed statistics percentage values to show 2 decimal places.
  • Server Check log results are now shown in a similar format to the Proxy log.
  • Added Recent Emails "new", "good" and "spam" counts to system tray icon tooltip.
  • Improved ability to detect message size for use with "Don't filter messages larger than..." option.

  • Recent Emails page dog icon wasn't going to K9 website when clicked.
  • Wasn't saving word databases if rebuilding new ones and no new emails had arrived or no emails had been classified before exiting.
  • If "Only score new emails..." advanced option was set and no new emails arrived in a checking session, K9 would score all emails in the Recent Emails list.
  • Wasn't disabling the "X-Timeout" timeout prevention mechanism in a timely fashion leading to some potential problems.
  • Fixed a problem with deleting emails from server in Server Check window.
  • Fixed a problem where the initial remote email server banner response was split over more than one reply packet.

  • Added Copy to clipboard right-click menu to copy headers/email.
  • Was only going to K9 website if Recent Emails page was last page shown.
  • Added new token to mark non 7 bit messages when the encoding type suggested it was 7 bit.
  • Fixed "hang" problem with emails that contained no body text.
  • Fixed a problem with the "translate TOP to RETR" option.
  • Fixed a problem with timing out on large emails + slow connections.
  • K9 no longer attempts to manipulate non-standard line endings in the email body section.
  • Using the filter lists and the "Any" keyword, K9 will now concatenate the header and the body and search it in one operation as opposed to previously searching the headers then searching the body.

  • Added detailed communications debug logging option to Configuration page.
  • If a sound has been set to play upon Good email arriving, it won't be played again unless at least 30 seconds have elapsed since it was last played.

  • Added color selection customizer for list windows.
  • Added a "K9 Website" item to system tray menu.
  • Added simple session statistics logging to the file "sessions.txt" in the K9 directory.
  • Increased "From" line to 80 characters from 40 in the whitelist/blacklist right-click menu.
  • Changed default DNSBL server again, this time to sbl-xbl.spamhaus.org.
  • K9 no longer monitors for changes in the filter list files if the options are not selected on the Configuration page.
  • Found a problem in the whitelist/blacklist code that may have prevented certain matches being made.
  • Fixed a minor memory leak when using regular expressions.
  • DNSBL cache wasn't properly expiring entries.
  • Wasn't creating the Emails directory on first installation on Windows 9x systems.

  • K9 now saves a copy of the existing good.dat and spam.dat database files whenever these are saved to disk. The backup files will have a ".old" file extension.
  • Changed default DNSBL server from cbl.abuseat.org to xbl.spamhaus.org (which now incorporates cbl.abuseat.org). Note that this is only for new installations - your existing server will not be changed.
  • Hopefully fixed a problem when running on Windows 9x/Me systems that would cause K9 to become confused as to the location of the Emails directory.

  • Implemented right-click list menu "Organize" functionality for the Storage Area and Server Check pages. The menu item was present in version 1.20 but not functional.
  • The whitelist and blacklist files are now monitored for changes so there's no need to hit the "Reload" buttons after making manual changes and thus the buttons have been removed.

  • DNSBL IP filter now uses the complete "Bogon" list to help reduce the lookups of IPs that are known to not be usable over the Internet (most likely forged).
  • Deleting email accounts from the Advanced page wasn't properly removing registry entries in all cases.
  • Protected against saving offscreen window positions.
  • Average emails per day statistics display will use current total if number of days is less than 1.
  • Wasn't disabling whitelist/blacklist header and body right-click menu items when whitelist/blacklist processing was disabled.
  • Added "Organize" item to right-click list menu. This only acts upon selected emails. The regular "Organize" toolbar button always operates on all emails in the list.
  • Added "Change data storage location..." button to the statistics page. This will move any existing data (emails, databases etc.) and cause K9 to use this directory to store all future data.

  • Fixed bug in APOP handling.
  • Added more information to the statistics page.
  • Added support for regular expressions to the whitelist/blacklist. Go here for details.
  • Added regular expression tester to the Advanced page.
  • Added "Header" and "Body" whitelist/blacklist options to the right-click list menu.

  • Wasn't saving window size/position under certain circumstances.
  • Wasn't properly determining the Content-Type of certain emails lacking whitespace after the ":".
  • Fixed bug in APOP handling.
  • Properly handles emails with improperly formed line ending characters (e.g. lines with missing carriage-returns).
  • DNSBL IP addresses are now aged individually as opposed to the entire cache.
  • Fixed hang on "PASS" bug.
  • Added new keyword "[MultiBlank]" to flag the presence of multiple blank lines within an email.
  • Updated online documentation for Advanced and Statistics pages.

  • Added DNSBL support.
  • Fixed problem decoding MIME headers with some emails.
  • Enhanced the right-click filter context menu.
  • Rules added from right-click context menu are checked for duplicates before being added to lists.
  • Shows overall accuracy statistic in the status bar.

  • Added database "trim" feature to Statistics tab. This can help reduce the size of the databases, improve load times and reduce memory usage.
  • Added extra code to detect and ignore "junk" words hidden in HTML.
  • Databases are again saved to disk at exit. Reclassifying emails and exiting K9 before an email session occurred would not have recorded changes in the DBs.
  • Fixed some problems with reading emails on the Server Check tab.
  • Improved list display update speed for Organize.

  • Corrected display of time/date on Statistics and Logs page.
  • Improved handling on POP3 authentication failure on Server Check page..
  • Recent Emails display scores weren't properly refreshing after pressing the Refresh button..
  • Prevented unnecessary loading of Good Emails list when performing background cleanup tasks..
  • Fixed bug in code used to identify non-existent HTML tags..
  • Fixed memory corruption bug in whitelist/blacklist handling code..
  • After editing the Advanced page email account settings sometimes the values weren't saved.

  • Reduced memory usage when using the "Close" window button to minimize to a system tray icon.
  • Fixed toolbar button not being re-enabled if keyboard shortcut was used.
  • Added option to enable or disable the tray icon flashing when email is being processed.
  • K9 no longer writes the database files out to disk on exit. This was redundant since it was done after each email session.
  • If Explorer crashes and the task bar disappears K9 should now restore the tray icon when the taskbar is recreated.
  • Fixed situation where K9 would report a huge number of email accounts that could be configured on first startup.

  • Fixed problem with reclassifying emails when Advanced option "Only add reclassified emails..." was selected.
  • Fixed POP3 authentication problem when multiple unsupported methods were tried.
  • Added option to "encrypt" emails stored on disk.

  • Fixed a problem with decoding Base 64 encoded "encoded words" (e.g. "=?...?=")
  • Minor changes to reclassification code.

  • Made showing "Good" tray icon when "good" email arrives an option.
  • "Good" tray icon reverts to normal icon after 5 minutes (in addition to when K9 is opened or closed).
  • Proxy has better support for Norton Antivirus format usernames.
  • If the Advanced option for only adding reclassified emails to the DB is selected, words are not removed from the opposite DBs when reclassified since they would never have been placed there in the first instance.
  • Fixed graphics glitch where Recent Emails window sometimes appeared greyed out.
  • Minor GUI changes to better support Windows XP manifests.

  • Word parsing now includes ASCII characters 192 - 255 as valid word characters.
  • Words are not removed from the opposite database and stats are not updated if the email being reclassified is already of the desired state.
  • Added option for only adding words to DB when reclassifying.
  • Improved saving of column widths.
  • Fixed problem with manual scoring of emails when "...only score new emails" Advanced option was selected.
  • Added ability to specify "[Spam]" tag text.
  • Spam percentage can now also be added to the custom header when marking as spam.
  • Added buttons on the Advanced page for configuring and restoring email program account settings.
  • Tray icon changes when Good email has arrived.
  • Definable location for "Good" email sound file.
  • The program now interprets "encoded" header items (e.g. =?iso-2022-jp?q?=96=A2=8F=B3?=).

  • Invalid HTML tags are now removed before scoring and a new keyword tag added if they are found.
  • New re-classification process removes words from wrong database before adding to correct database.
  • Added option to only score new (bold) email when new email arrives.
  • Copying stats to the clipboard now also copies the dates.

  • Added option to allow spam emails retrieved with a fake "TOP" to be added to the word database.
  • Added option to allow spam emails retrieved with a fake "TOP" to be added to the Recent Emails window.
  • Added option to prevent whitelisted emails from being added to the database.
  • Added extra "hours" field for Configuration page Cleanup section.
  • Added ability to add subject and recipient to the whitelist/blacklist from the right-click context menu.
  • Improved handling of malformed date headers.
  • Date and time formats should now properly adhere to Control Panel regional settings.
  • Corrected placement of "(No subject)" and spam percentage as per configuration settings when no subject line is present.
  • Possible fix for problems with large emails when using the "Don't filter messages larger than" option.
  • Email reader window can now be dismissed from all sub-windows by hitting the Escape key.

  • Added APOP support (basic MD5 - RFC 1939).
  • Fixed communications problems when using the "Don't filter messages larger than" option.
  • Removed "Apply" buttons from Configuration and Advanced tabs. All fields are now updated "live".
  • Fixed large fonts 125% problems.
  • Added new date format option (long or short system format) and fixed(?) date display problems.
  • New system tray icon.

  • Fixed updating of word database statistics after a rebuild.
  • If no filter list is selected to be used, K9 will not load it at startup.
  • Adds CRLF at end of filter lists if none present.
  • Translating "TOP" commands to "RETR" shouldn't have been adding messages to Recent Emails list.
  • Added installer option to open http://keir.net to check for latest version.
  • Added option to play a sound ("good.wav" in the same directory as k9.exe) when Good email has arrived.

  • Created a new "Advanced" tab and moved some configuration options over to it.
  • Added checkbox option to allow/prevent statistics updating.
  • Added checkbox option for adding spam percentage to Subject line.
  • Added simple detection of single character "words" (e.g. "S P A M") and created a keyword "[SingleWords]" for it.
  • Added experimental faked "TOP" processing option to accommodate some unconventional email applications.
  • Fixed parsing of attachment name when there was a space before/after the '=' character and the attachment name.
  • Fixed bug in status window display of percentage complete when scoring.
  • Provided option to not filter messages larger than a given size.

  • Added "Bcc" keyword to filter list rules.
  • Fixed problem with dates without a "seconds" field.
  • Fixed problem with Storage Area refresh showing items from wrong folder.
  • Modified Statistics tab to show date/time of last reset.

  • Re-classifying an item that was a whitelist/blacklist hit will not affect the statistics.
  • Fixed thread handle leak.
  • Added "Cc" keyword to filter list rules.
  • New toolbar icons courtesy of Lim Chee Aun from Phoenity
  • Various small bug fixes.

  • Proxy now correctly ignores some Winsock 10035 (blocking) errors when reading data due to certain email clients and A/V proxies.
  • Date parsing uses file creation time when unable to get it from email.
  • Fixed Delete key being interpreted to delete emails when editing Quick Find text.

  • Raised the maximum Server Check account password length to 63.
  • Fixed date parsing on "folded" header lines.
  • Fixed problem handling remote POP3 server error conditions when first connecting (e.g. an "-ERR" as the very first response).

  • K9 now delays loading Good folder contents until first viewing for faster startup time.
  • Added option to prompt or not when deleting emails.
  • Auto-configures Outlook/Outlook Express accounts on first run.
  • Server Check now deletes "header only" emails from disk as well as from the viewable list.
  • Improved "nonsense" word detection and rejection.
  • Addressed issues with timeouts, large emails and potentially missed emails when sending emails back to the client.
  • Updated the web site.

  • Added "Properties" item to right-click menu.
  • Added ability to limit the Good and/or Spam folders to a given maximum number of messages.
  • Added Organize button to Inbox section.
  • Added Quick Find to Storage Area.
  • Added Refresh button to Server Check and Recent Emails.
  • Changed Date list entries to be based on first "Received" header item rather than "Received: from" headers since some emails may not have the latter.
  • Fixed bug on some systems where under certain circumstances a single character would go missing from emails passing through the proxy.
  • Fixed problem with emails showing in email application but missing from K9's lists.
  • New Statistics list display when reading emails.
  • Removed Recent Emails and Inbox folders from the Storage Area.
  • Swapped descriptions of false positive/negative on Statistics page.

  • Fixed inability to alter statistics by re-classifying messages.
  • Fixed display problems with Statistics tab in Large Fonts mode.
  • Added "Not" keyword to b/w filter syntax to negate the action of the rule.
  • Added percentage complete indicator when loading list of email messages.
  • Added some word database statistics to the Statistics page.
  • Moved "Rebuild databases" button to the statistics page.

  • Server Check: All "header only" messages in the list are removed prior to checking the server.
  • The registry string value "ProxyListenIP" can be set to enable the proxy to listen on IPs other than (restricted to RFC 1918 addresses).
  • Added "To" field to all list views.
  • Trimmed email "From" and "To" fields to only show first name.
  • Fixed "feature" where proxy would use previous successful IP address if a POP3 server hostname failed to resolve.
  • Fixed bug in string search function that may have caused some false filter matches.
  • Re-classifying emails now only affects the statistics when performed in the Recent Emails window.

Beta 21
  • Changed email parser to accommodate some malformed emails.
  • Better parsing of malformed HTML when viewing emails with the HTML removal button selected.
  • Made alternate lines in listviews slightly different colors to aid view-ability.
  • Added right-click context menu for "Add sender to Whitelist/Blacklist"
  • Added new statistics page.
  • Added "quick search" edit box to Recent Emails.

Beta 20
  • Fixed a bug in the display of scored email when the list ended up empty after deleting emails.

Beta 19
  • Fixed a bug in the multipart MIME parser.
  • Possible fix for client-side proxy timeout.

Beta 18
  • Wasn't loading the whitelist correctly.
  • Fixed saving maximize state of main window on exit.

Beta 17
  • Reduced memory usage when K9 is "minimized" by the "Close" button.
  • Fixed Date parsing problem and added support for all RFC date timezones.
  • Fixed problem with emails containing invalid characters that caused the proxy to eventually timeout.
  • Fixed bug with K9 not seeing an attachment under certain circumstances.
  • Re-architected the whitelist/blacklist processing with new keyword syntax.
  • Fixed several bugs in the Server Check area. Headers are now properly scored without having downloaded the email body.
  • Fixed problem with proxy timeout values.
  • Server Check email deletion wasn't using the port number specified in the configuration.
  • Fixed problem with email spam tag scores being different from scores shown in other parts of the application.
  • Stats window (when reading an email) shows the reason a whitelist/blacklist filter matched.
  • Added basic "nonsense" word detector.
  • Fixed showing incorrect database word counts in Stats section.
  • Now shows percentage completeness when scoring the list.
  • Fixed not properly saving window size and placement on exit.

Beta 16
  • Added option for always restoring the window to the Recent Emails tab or not.
  • Minor changes to internal word extraction routines resulting in slightly better spam/good differentiation and reduced word DB file size.
  • Enables/disables whitelist and blacklist controls when their checkboxes are enabled or disabled and auto-Apply's their settings.
  • Changed the whitelist/blacklist keyword syntax to accommodate case-insensitive matching.
  • All filter list entries must now have an associated keyword. The default (matching any location in a message) must now have the "Any:" (or "=Any") keyword specified.
  • Changes made in the Storage Area will be automatically reflected in the Recent Emails and Server Check windows.

Beta 15
  • Added option to use the system date/time format.
  • Fixed infinite loop problem when re-classifying emails identified using the whitelist/blacklist.
  • Brings up warning message if you try to re-classify an email that was identified using the whitelist/blacklist.
  • Ignores blank whitelist/blacklist rules.

Beta 14
  • Fixed remembering the state of the window being maximized or not when minimized to the tray.
  • Added sending "keep-alive" fake headers back to the email app when retrieving emails takes a long time.
  • Added Whitelist and Blacklist support.

Beta 13
  • Added checkbox to enable/disable saving proxy log to file.
  • Fixed bad date display.

Beta 12
  • All shown dates are now taken from the first "Received: from" header line instead of the "Date:" header.
  • Fixed enabling/disabling of "Mark emails as spam by..." edit box in the Configuration window.
  • Server Check "Get" wasn't using the port number specified in the Configuration settings for each account.
  • Server Check was attempting to download messages from all accounts even if they were disabled.

Beta 11
  • Fixed timeout problem!

Beta 10
  • Removed Email Classification configuration values from the Configuration area.
  • Added configurable Proxy and POP3 Server Check connection timeout values.
  • Hopefully fixed occasional bug when reading emails through the proxy when the Recent Emails cleanup timer kicked in at the same time.
  • Added spam percentage to the Subject/header line indicator (e.g. "[Spam][96.2%]").
  • Renamed the "Training Area" tab to "Storage Area".
  • Rename "Process" buttons to "Organize".

Beta 9
  • Removed redundant debug messages from the Proxy Log window.
  • Added "[Amps]" pseudo keyword for HTML emails containing large numbers of encoded characters used to disguise words.

Beta 8
  • Added "Size" column to all views.
  • Added "Process" button to Recent Emails tab.
  • Improved the POP3 Server Accounts interface section of the Configuration window and fixed saving and restoring of account details.
  • Increased max POP3 Server Check accounts from 8 to 16.
  • Fixed Server Check accounts not being saved to the registry on WinMe machines.
  • Added ability to automatically "Process" Recent Emails when they reach a certain age.
  • Recent Emails are only un-highlighted if it has been at least 5 minutes since the previous session.
  • Fixed bug with tray icon not flashing if a certain state was produced with more than 1 account being active in the proxy server.

Beta 7
  • More adjustments to the flashing system tray icon code.
  • Added code to disconnect sessions after an inactivity timeout period (not normally a problem but some 3rd party proxies were seen to not disconnect after a QUIT).
  • Fixed Cleanup "Days" field being inaccessible in the Configuration window.
  • Added "[Comments]" pseudo keyword for HTML emails containing large numbers of comment tags used to disguise words.

Beta 6
  • Added multiple account support to POP3 Server Check. You can manage accounts in the Configuration area.
  • Fixed problem with shortcut keys not being applied when certain windows were in focus.
  • Fixed "AUTH" POP3 command problem. K9 now properly rejects the AUTH command to force the email app to use USER/PASS authentication.
  • Fixed problem with Server Check not obeying the port number specified.
  • Fixed problem with Server Check when used with Hotmail Popper.
  • Fixed problems with some POP3 server configuration settings not being saved/restored.
  • Fixed problems with animated tray icons.

Beta 5
  • Restored missing main program icon.
  • Fixed problem with some emails marked as Spam but not being seen by email app (long Subject lines and Unicode character sets).
  • Added animated tray icon at program startup when loading DB.
  • Proxy now doesn't start listening until DB is loaded.
  • Added animated tray icon when proxy is processing messages.
  • Shortcut keys for make Good and make Spam are now F5 and F6 respectively.

Beta 4
  • Added "Delete" keyboard shortcut for deleting emails.
  • Added "CTRL-S" and "CTRL-Q" keyboard shortcuts for "Make Spam" and "Make Good".
  • Fixed bug with emails and missing Subject lines.

Beta 3
  • Added ability to add "[Spam]" to start of subject line.
  • Disabled interpretation of "&" characters in the listviews that would result in the next character being underlined.
  • Added "CTRL-A" support to select all items in a list.
  • Saves and restores list column sizes in all windows.

Beta 2
  • Improved handling and error reporting of incorrect proxy requests.
  • Fixed un-highlighting of messages during multi-session retrieval (again!).

Beta 1
  • Fix for POP3 usernames greater than 32 characters in length. Limit is now 64.
  • Fix for always showing today's date in all lists.
  • Fix for un-highlighting new emails received via the proxy when more than one session was in operation.

Alpha Build 14
  • Fix for emails marked as spam but not being filtered by email app. (bug in Subject header parsing)
  • Fix for Unable to retrieve header for email x error in Server Check.

Alpha Build 13
  • Fixed bug in proxy when unexpected input was received.
  • Added proxy support for Hotmail Popper
  • Added button to main window (Recent Emails) to take you to this page.

Alpha Build 12
  • Changed font for log windows.
  • Added session number to each entry line in the logs.
  • Internal optimizations.

Alpha Build 11
  • Added buttons to log display to clear the window contents.
  • Fixed log window displays to always display next line at end of window as opposed to the current caret position.
  • Fixed bug in proxy. It was issuing the USER command before receiving the initial banner reply line.
  • Updated proxy in an attempt to support multiple concurrent sessions.
  • Rearranged Configuration window.

Alpha Build 9, 10
  • Not released.

Alpha Build 8
  • Preliminary attempt at supporting parallel POP3 server requests.

Alpha Build 7
  • Changed proxy configuration to use "server/port/user" instead of "user/server/port".

Alpha Build 6
  • Fixed email classifying bug in the email reader window when viewing emails from the Server Check window.
  • Prior to checking email in the Server Check area, all emails that hadn't been downloaded are removed from the list.
  • When an email session passes through the proxy all emails that hadn't been downloaded are removed from the Server Check list.
  • Proxy now supports multiple accounts via username encoding of user/server/port.
  • Tweaked some internal numbers in the classification algorithm.

Alpha Build 5
  • Fixed "Good" and "Bad" right-click menu problems.
  • Added "Good" and "Bad" classify buttons to email reader window.
  • Added "Good" and "Bad" classify buttons to Server Check tab window.
  • Added Score display to email reader window.
  • When restoring the window from the tray icon (double-clicking) K9 will always display the "Recent" tab.

Alpha Build 4
  • Fixed handling of emails with invalid content (bytes with value zero present in message body)
  • Possible fix for "unexpectedly terminated the connection" problem in OE
  • Better handling of email reader window toolbar when reading from POP3 server

Alpha Build 3
  • Fixed truncated toolbars in Large Fonts mode
  • Fixed missing header string in the Configuration section
  • If more than one instance of K9 is attempted to run it simply makes the original copy visible
  • Minor change to processing of certain HTML tags

Alpha Build 2
  • Added automatic removal of Recent emails after a configurable number of days age.
  • If minimized to system tray, double-clicking toggles restoring/minimizing and the icon stays in place.
  • Auto saves databases after each proxy email session.
  • Proxy log is saved to file ProxyLog.txt in Emails\DB.
  • Fixed crash bug when POP3 Server Check password was above a certain size.

Alpha Build 1
  • Initial limited public release.