Spam Filter ISP Release Notes

// New to VersionNumber = '4.5.0.1-beta';

{TODO -cNew beta version for the new SpamFilter 5.0. Features a completely redesigned internal SMTP engine that uses fibers instead of threads to improve performance. Features support for more features, as TLS and IPv6 (not complete yet). Support for a separate GUI to better manage SpamFilter's service under Windows 2008 and RDP will be available in SpamFilter 5.0}


// New to VersionNumber = '4.2.4.851';

{TODO -cFix : When setting the MaxMsgSizeForKeywordScan (indicated in KB) parameter in the SpamFilter.ini file, the Bayesian filter was reading it as bytes rather than KB, thus often causing the Bayesian filter to skip checking the incoming email if larger that a smaller size than intended}


// New to VersionNumber = '4.2.4.850';

{TODO -cFix : When sending NDR emails, the FQDN used in the HELO command when forwarding emails is not set to the same one used in the FQDN Welcome banner}


// New to VersionNumber = '4.2.4.849';

{TODO -cFix If the GreyListAllowed.txt is manually modified and wildcarded subnets are added, if a wildcard entry is added and one or more IPs within that subnet already existed in the file, the wildcard entry may be ignored}


// New to VersionNumber = '4.2.4.848';

{TODO -cFix If a sender in the same SMTP session (1) authenticates against SpamFilter using SMTP AUTH, then (2) sends emails to some users not being unfiltered, and then (3) sends another email which triggered one of the filters to a whitelisted user who was configured with a "tag and deliver" option - when all of the above scenarios occurred, SpamFilter "forgot" the user was authenticated and tagged the email as spam}

{TODO -cFix Updated the Setup.exe installer and default SpamFilter.ini file in Win32 directory by removing the now defunct dnsrbl.net MAPS server }


// New to VersionNumber = '4.2.4.846';

{TODO -cFix If not using the new default VerifyRCPTTOForCleanEmails=1, SpamFilter could in some cases return a 250 OK successful reply to the remote sender server even if the destination SMTP server returned a 5xx or a 4xx message when forwarding an email to it}


// New to VersionNumber = '4.2.4.845';

{TODO -cFix An out-of-memory error prevented the processing of emails over about 300MB in size}

{TODO -cNew With SpamFilter Enterprise, even if the database is offline/unavailable, we are now able to save all the settings that are stored in the SpamFilter.ini file }


// New to VersionNumber = '4.2.4.844';

{TODO -cFix Changed the internal process to insert quarantined emails into database to better handle low-memory situations"}

{TODO -cNew On startup, if running as a service, SpamFilter modifies the service properties to enable the automatic built-inWindows service recovery options so that they restart the SpamFilter service upon crash after 60 seconds"}

{TODO -cNew Modified built-in crash detector so that, in case of exceptions, SpamFilter does not continue on errors, but rather causes SpamFilter to "crash" and automatically restart. If SpamFilter is running as a service, the above service recovery options will cause the SpamFilter service to automatically restart. This should help in having SpamFilter self-recover from serious exceptions "}


// New to VersionNumber = '4.2.4.843';

{TODO -cFix Moved the connection stats from the SpamFilter.ini file to a separate SpamFilterStats.ini file in an attempt to solve an issue that can cause the SpamFilter.ini file to become 0 bytes in size"}


// New to VersionNumber = '4.2.4.842';

{TODO -cFix Solved issues that caused these errors to be logged: "Exception occurred during RECEIVEMESSAGE GetCompletedRCPTTO - continuing processing"}

{TODO -cFix The filterBase64html filter fails to stop base64 text and html attachments if the Content-Type header with the base64 indicator also contains a charset indicator on the same line}

{TODO -cNew Added support for a new parameter in the SpamFilter.ini file - VerifyRCPTTOForCleanEmails=1}


// New to VersionNumber = '4.2.4.840';

{TODO -cNew Added support for a new parameter in the SpamFilter.ini file to control if the NDR will contain the entire original email or only its headers: IncludeOriginalMessageOnNDR=1}


// New to VersionNumber = '4.2.4.839';

{TODO -cFix SpamFilter sent a line with STARTTLS in the EHLO response, even though TLS is not supported, causing some remote SMTP server to attempt a TLS connection which could eventually result in a disconnect without the messgage being received}


// New to VersionNumber = '4.2.4.838';

{TODO -cFix SpamFilter Enterprise would not recognize the "SQL Native Client" (SQLNCLI.1) provider for Microsoft SQL Server}


// New to VersionNumber = '4.2.4.837';

{TODO -cFix If a DNS server reports the error "Query Server Error" during the MX filter test, this would cause the MX test to fail even if the MX record was valid}


// New to VersionNumber = '4.2.4.836';

{TODO -cNew Added support for improperly formatted SPF records that contain multiple v=spf1 mechanisms (such records were trated as malformed and the SPF check was skipped before)}

{TODO -cFix SpamFilter Enterprise, when using a MySQL database, would needlessly reload all blacklists/whitelists settings for a domain when only a single blacklist/whitelist was changed. MSSQL was (correctly) only reloading the settings for the list that was modified}

{TODO -cNew Enabled SSL v3 when downloading antivirus definition updates}

{TODO -cNew Added entry XServerBanner in SpamFilter.ini file to customize the X-Server header}

{TODO -cNew Added entry HideXSFBlockedKeywordsReasonHeader in SpamFilter.ini file to prevent display of triggered blacklist keywords in headers}


// New to VersionNumber = '4.2.4.834';

{TODO -cNew Changed the file path (but not the server name) used by SpamFilter to download updated antiviru definition files}

{TODO -cFix In SpamFilter Enterprise, fixed an issue with the MySQL triggers that prevented domains having customized settings from seeing changes made to the default black/white lists, if the domain was configured to have one of its black/whitelists inherit the settings from the "ALL DOMAINS"}


// New to VersionNumber = '4.2.4.832';

{TODO -cFix Fixed errors introduced in 4.2.4.831: Exception occurred during RECEIVEMESSAGE: ( 1 2 2b 3 3a 4 5 6 7 8 9 11 12 13 15 16 17 18 18b 20b 20c 29 30 31 32 33 53 55 56 62 63 64 65 66 671 68 69 70 71 72 73 74 75 76a 76b 111) Access violation at address 0065542C in module 'SpamFilterSvc.exe'. Read of address 00000128}


// New to VersionNumber = '4.2.4.831';

{TODO -cFix Changed the SMTP error code sent for the "Too many connections" from 221 to 421}

{TODO -cFix Added more safeguards to prevent issues within the process that checks the tblReloadTable, which could cause SpamFilter Enterprise to stop seing changes made to other tables while it's running}

{TODO -cNew Added new parameter in SpamFilter.ini file for SpamFilter Enterprise: ChecktblReloadTableMaxRunTimeMinutes}


// New to VersionNumber = '4.2.4.830';

{TODO -cNew To avoid backscatter, if an incoming email passes all filtering rules, but cannot be forwarded (ex. mailbox full, non-existent user), SpamFilter maintains open the incoming remote connection until it can verify with the destination server that the email can be delivered. If not, a 5xx error is output forcing the remote server to generate the NDR, rather than having SpamFilter send an NDR notification email}

{TODO -cFix If the DoNotSendNDROnQuarantine=1 is set, an NDR could still incorrectly be generated if (1) the email had multipe recipients and (2) at least one of the recipients is whitelisted}

{TODO -cFix The "Settings" dialog in SpamFilter Enterprise would occasionally loose the database connectivity and would display empty domains when the SpamFilter.ini file is updated in the background}


// New to VersionNumber = '4.1.3.827';

{TODO -cFix Solved issue that could cause Access Violations in cases of emails containing a specific malformed header}

{TODO -cFix Added new option "TerminateIdleThreadsFrequency" in SpamFilter.ini file to control the frequency used to terminate lingering idle threads. Used to increase this parameter in installations where this causes SpamFilter to stop processing incoming emails}

{TODO -cFix The new feature to handle default values for specific whitelists/blacklists in domains that are configured to be customized without inheriting default values would not propagate changes to the "ALL DOMAINS" lists unless SpamFilter was restarted}

{TODO -cNew Allowed redirects to be followed for future new handling of the antivirus updates}


// New to VersionNumber = '4.1.3.824';

{TODO -cFix If a spam email was whitelisted by the AutoWhiteListForceDelivery filter, and SpamFilter was configured with any of the TAG and deliver options, the email would still be tagged even if whitelisted}


// New to VersionNumber = '4.1.3.823';

{TODO -cFix Reducing the number of times the background TerminateIdleThreads process executes from once a minute to once an hour}


// New to VersionNumber = '4.1.3.822';

{TODO -cNew Added ability in SpamFilter Enterprise to have, for domains with customized settings, the ability to configure each blacklist/whitelist so that it inherits the default values for ALL DOMAINS}

{TODO -cFix Fixed issue that would cause SpamFilterto crash when scanning for viruses emails with specific malformed headers}


// New to VersionNumber = '4.1.2.820';

{TODO -cFix Fixed issue where (invalid) NULL characters in the email's body or headers where transformed by SpamFilter (violating RFC) into "." (0x2E) characters causing emails/headers to be truncated }


// New to VersionNumber = '4.1.2.819';

{TODO -cNew Increased the priority for the "not in Authorized TO" filter moving it up in the list of applied filters}


// New to VersionNumber = '4.1.2.818';

{TODO -cNew The keyword searches are now performed also against all MIME headers, allowing to search for example the Content-Type, charset, Content-Transfer-Encoding, Content-Disposition and filename}

{TODO -cNew Added option to import list of domains into SpamFilter Enterprise from a text list}

{TODO -cNew Added the destination SMTP port when logging information about forwarded emails}


// New to VersionNumber = '4.1.2.816';

{TODO -cFix : In SpamFilter Enterprise, blacklist/whitelist keywords were being trimmed of trailing/leading spaces, preventing users from searching words prefixed/suffixed by a space}


// New to VersionNumber = '4.1.2.815';

{TODO -cFix : better handling of exceptions of the kind "Exception occurred during RECEIVEMESSAGE" to try to deliver the messages anyways even if they are malformed}

{TODO -cFix : SpamFilter Enterprise could crash when duplicate domains are added via the Settings GUI}

{TODO -cNew : Added ability to specify wildcards in GreyListAllowed.txt file to exlcude large number of subnets from greylisting}


// New to VersionNumber = '4.1.2.813';

{TODO -cNew : Added entries in activity logfile to log startup mode (service/application) and to log the remote IP before country lookups are performed}


// New to VersionNumber = '4.1.2.812';

{TODO -cFix : Fixed Errors similar to: Exception occurred during DoIPtoCountry (82.112.146.131): Access violation at address 00405514 in module 'SpamFilterSvc.exe'. Read of address 000FFFF8 caused by recent updates in the GeoIP.dat database format}


// New to VersionNumber = '4.1.2.811';

{TODO -cFix : Regression error present in build 4.1.2.810 only - sometimes the trailing tags in the various whitelists/blacklists could cause incorrect tags to be applied to other filter's blacklist/whitelists}


// New to VersionNumber = '4.1.2.810';

{TODO -cNew : Added support to specify multiple RegEx expressions separated by commas, just as regular keywords can be separated by commas - has the effect of specifying "AND" rules for RegEx. Note that a "Standard non-RegEx keyword must be specified first for SpamFilter to recognize this syntax. For example: X-SF,([a-z]), ([0-9])    }

{TODO -cNew : Added support ::NEGATE suffix in blacklist keywords - causes a MATCH if the keyword is NOT present, or causes a MISMATCH if the keyword IS present}

{TODO -cFix : Removed ability to scan for text and images in PDFs files due to instability of PDF library}

{TODO -cFix : Replaced memory manager used by compiler as the old one could cause (very rarely) crashes in SpamFilter without any errors being logged in the activity logs}


// New to VersionNumber = '4.1.2.808';

{TODO -cFix : Loops in the "redirect" mechanism of an SPF record could cause SpamFilter to crash}


// New to VersionNumber = '4.1.2.807';

{TODO -cFix : A documentation bug in the new PDF library caused a "Trial Expired" popup to appear when scanning PDF files due to incorrect licensing activation procedure}


// New to VersionNumber = '4.1.2.806';

{TODO -cFix : Prevented the MX record filter form failing when the DNS server replies with an error with the following event being logged: Invalid MX record - DNS Server Reports Query Server Error}


// New to VersionNumber = '4.1.2.805';

{TODO -cFix : Fixed Access Violation errors when handling certain types of PDF files. Updated PDF library used by compiler which now uses external DLLs for PDF functionality}


// New to VersionNumber = '4.1.2.804';

{TODO -cFix : The IPCacheBlacklist was incorrectly blocking IPs that were a substring of an existing entry - ex if the cache contained 192.168.123.234, the IP 192.168.123.2 was being incorrectly blocked as well}


// New to VersionNumber = '4.1.2.803';

{TODO -cFix : The antivirus plugin is not blocking emails for whitelisted recipients (via autowhitelistforce-delivery or "Whitelisted Email TO")}

{TODO -cFix : Drastically improved SpamFilter ISP "standard" load time by a factor of x1000 when first importing large list of local domain names (10,000+ entries) }

{TODO -cNew : Skipping the addition to the AutoWhiteListForceDelivery of entries where the mail_from = rcpt_to emails to reduce the chance of inadvertently whielisting all emails with a fake "from" address matching the recipient}


// New to VersionNumber = '4.1.2.796';

{TODO -cNew : Added support for SMTP Authentication for Apple iPhone and Mac Mail.app}

{TODO -cNew : created new filter that resolves to IPs all URLs embedded in emails, and then performs a lookup of those IPs in the MAPS RBL blacklists}

{TODO -cFix : Attempt to solve customer-reported issue that in very rare cases could cause high CPU when attempting and failing to download antivirus def file: NvcMacro.def}


// New to VersionNumber = '4.0.1.786';

{TODO -cFix : When a remote IP exceeded maximum number of RCPT TO, the additional email would be quarantined but the sender was not being forcefully disconnected}


// New to VersionNumber = '4.0.1.785';

{TODO -cFix : The "Do not quarantine" option for the SFDC filter was not functioning - emails were quarantined even if the setting was configured for "do not quarantine"}

{TODO -cNew : Added the option to install the web-based quarantine website directly from the SpamFilter Installer}


// New to VersionNumber = '4.0.1.784';

{TODO -cFix : The X-Rejection-Reason header was not added to spam emails when there was only recipient, and this address was in the Whitelisted EmailTO whitelist}


// New to VersionNumber = '4.0.1.783';

{TODO -cFix : The SPF settings for neutral, softfail and fail had the opposite values instead of the recommended defaults for new installations of SpamFilter in empty directories}

{TODO -cFix : During new installations, in SpamFilter ISP the "Custom Domain Filters" was not available due to an empty value in the "LocalDomainsFilterMatrixFileName" entry in the SpamFilter.ini file}


// New to VersionNumber = '4.0.1.782';

{TODO -cNew : There was a limit of 65535 emails that could be queued in the quarantine and the queue directories in case the DB or the destination SMTP servers were offline. Stopped using the Windows API to create temp files and are now using GUIDs to eliminate this limitation}


// New to VersionNumber = '4.0.1.780';

{TODO -cNew : Added the ability to specify additional failover destination SMTP servers for each domain}


// New to VersionNumber = '4.0.0.775';

{TODO -cFix : Eliminated the extra "--" when logging the event "Bypassed all rules for: user@domain.com --" in the activity log}

{TODO -cNew : Use Windows Messages to update the real-time activity log in GUI rather than creating a new thread to update each line in the GUI memo control. Done to improve performance in high traffic sites and to reduce number of threads used}


// New to VersionNumber = '4.0.0.774';

{TODO -cFix : When sending an NDR notification for a non-deliverable email, if the NDR also has delivery problems, these problems were note being logged, making it appear in the logs as if the NDR was successful}

{TODO -cFix : SpamFilter could, in very rare occasions, freeze when processing the cleanup of the IP Blacklist Cache Limbo blacklist and the GreyList blacklist}

{TODO -cNew : Removed the logging of specific IPs being removed from the IP blacklist and limbo caches to improve performance and reduce risk of delays}


// New to VersionNumber = '4.0.0.773';

{TODO -cNew : Allowed to specify future dates in the GreyListAllowed.txt files so that IPs can be stored in the list for years without expiring}


// New to VersionNumber = '4.0.0.772';

{TODO -cFix : "Invalid  Header Id nnnn" DNS errors could cause valid MX record lookups to fail}

{TODO -cFix : Exception occurred during AddToQuarantineThreadDone: Access violation at address 0042396A}


// New to VersionNumber = '4.0.0.770';

{TODO -cFix : When a "tag and deliver" option is seleced, and the recipient is whitelisted (or the email is delivered because of the AutoWhiteListForceDelivery list) the email is still tagged as spam when forwarding it}

{TODO -cFix : The ResponseGreyList parameter in the SpamFilter.ini is not being honored to provide a customized response}

{TODO -cFix : Fixed various minor bugs in the handling of spam emails when various tag and deliver options are activated and recipients are whitelisted/AutoWhiteListed}

{TODO -cNew : The greylist filter is now disabled by default when upgrading from SpamFilter v3.5, or from a versions where the greylist settings were not present in the SpamFilter.ini file}

{TODO -cNew : Modified the tblbl_IPs table in SpamFilter Enterprise - increased IP filed's length from 15 to 18 to accomodate CDIR suffix}

{TODO -cNew : Added the option to use CDIR notation in the IP blacklist}


// New to VersionNumber = '4.0.0.768';

{TODO -cFix : Bug introduced in SFE build 767 (loads 20x - 40x faster...) caused incorrect destination SMTP servers and ports to be entered instead of NULL values in the _LocalDomains.txt file, causing incorrect destination SMTP servers }


// New to VersionNumber = '4.0.0.767';

{TODO -cNew : New filter/feature is now available - Greylisting}

{TODO -cNew : New filter is available - SFDC - SpamFilter Distributed Content}

{TODO -cNew : SpamFilter Enterprise loads 20x - 40x faster when tables contain 100,000+ rows }

{TODO -cFix : The MaxMsgSizeForSpamFiltering option is sometimes ignored if an email fails the IP-based tests}

{TODO -cFix : In SpamFilter Enterprise - added fields: SFDC_NetworkReliability and SFDCForceDelete to tbl_filtersettings table}


// New to VersionNumber = '3.5.4.730';

{TODO -cFix : The keyword filter (along with the Bayesian/Image/SURBL filters) is not being checked when there is a single whitelisted recipient in an email, and the recipient has one of the :tag options set}

{TODO -cFix : When using the "Customized Filter Settings" to disable the keyword filter for a domain, it's possible that the " Detected blank HTML email with specified attachment" filter could be triggered incorrectly}

{TODO -cFix : When emails have multiple html parts, and the last one in the email is blank, it's possible that the " Detected blank HTML email with specified attachment" filter could be triggered incorrectly}


// New to VersionNumber = '3.5.4.728';

{TODO -cNew : Added header 'X-SF-Originating-IP' in emails to additionally log the peer IP address}

{TODO -cNew : Added option MaxMsgSizeForSpamFiltering in SpamFilter.ini file to whitelist emails that are larger than a specific size}

{TODO -cNew : Added option ForwardAllSPAMtoEmailAddress in SpamFilter.ini file to forward all spam emails to an alternate email address}

{TODO -cFix : The IPCacheLimboTimeTrigger paramter in the SpamFilter.ini file was not being honored, and IPs were removed from the limbo cache after 1 minute}


// New to VersionNumber = '3.5.4.726';

{TODO -cFix : Exception occurred during TTerminateIdleThreads.Execute: Access violation at address 004A6BA6 in module 'SpamFilterSvc.exe'. Read of address FFFFFFB4}

{TODO -cNew : Changed the interval on which the quarantine queue is retried form 1 minute to 5 minutes}


// New to VersionNumber = '3.5.4.725'; {TODO -cNew : Implemented a queue for quarantined emails in case the database is offline. The archival process is queued and will resume when the DB is back online}


// New to VersionNumber = '3.5.4.718'; {TODO -cNew : Downgraded the HTTP protocol used for SFDB lookup requests from 1.1 to 1.0 to actually increase thruput, and removed unnecessary http client headers}


// New to VersionNumber = '3.5.4.716';

{TODO -cNew : Added SPAMTagHeader option in SpamFilter.ini file to allow customization of the X-SF-SPAM:Y header that is optionally added to spam emails}

{TODO -cFix : Scenario: (1) a valid email with multiple recipients, (2) where a recipient-sender combination is in the AutoWhiteListForceDelivery whitelist. Results - (1) email would be delivered to whitelisted recipient only, and (2) SpamFilter would not prefix the SMTP error with a 5xx error code, thus causing the remote server to send several retries}


// New to VersionNumber = '3.5.4.714';

{TODO -cFix : "Exception occurred during TCleanupIPCachesThread.Execute: '39337.7094639699' is not a valid floating point value" and "Exception occurred during AddIPToIPCacheLimbo: '39342,4181879861' is not a valid floating point value"}


// New to VersionNumber = '3.5.4.713';

{TODO -cFix : If DoNotSendNDROnQuarantine=0, and a spam email with multiple recipients arrives, and a recipient is whitelisted, SpamFilter would not prefix the SMTP error with a 5xx error code, thus causing the remote server to sende several retries}

{TODO -cFix : Errors: Blacklist cache - starting cleanup -- Exception occurred during TCleanupIPCachesThread.Execute: '39332.5030980671' is not a valid floating point value}


// New to VersionNumber = '3.5.4.711';

{TODO -cFix : Another issue with the “tag” option that prevents the “splitting” of an email so that it is only delivered to the tagged recipient, and instead causes the email to be tagged for some of the other users}

{TODO -cNew : Added to logfile entries for the MAIL FROM and RCPT TO commands as soon as they are received via SMTP}


// New to VersionNumber = '3.5.4.710';

{TODO -cFix : When a recipient was whitelisted, in some cases SpamFilter would also whitelist additional, separate emails that could have been sent during the same SMTP session}

{TODO -cFix : If a recipient was whitelisted, additional "regular" recipients would be correctly rejected, but an incorrect logfile entry was added stating that they were being also whitelisted (which in fact they were not) }


// New to VersionNumber = '3.5.4.709';

{TODO -cFix : Reduced the number of memory leaks in PDF scans if documents use Cross-reference-Streams}

{TODO -cFix : When forwarding emails to the destination SMTP server, if such server rejected the emails due to a mailbox full error, SpamFilter would instead send an NDR with the incorrect bounce message "The following recipients are unknown"}

{TODO -cFix : Introduced bug in build 700 - If any filter is configured to "tag spam and deliver", SpamFilter was not processing spam with the following filters: keywords, Bayesian, images/PDF, SURBL. All other filters were applied correctly}

{TODO -cFix : Exception occurred during TestForReject: Access violation at address 0063F52E}


// New to VersionNumber = '3.5.4.707';

{TODO -cNew : Added option in SpamFilter.ini file: HideXSFWhiteListedReasonHeader}

{TODO -cNew : In SFE, SpamFilter is able to now startup even if the database server is unavailable}

{TODO -cFix : If a spam email is split so that it is delivered for whitelisted recipients but blocked for the rest, it was still being stored in the quarantine database for all receipients, including the whitelisted ones}

{TODO -cFix : The HTML parser used to detect blank html emails was expecting legitimate opening and closing html tags to define text, and was ignoring any text outside these tags. This could cause very short html emails to appear blank if they were not following correct html syntax. We are now auto-fixing the invalid html code to be less restrictive}


// New to VersionNumber = '3.5.4.705';

{TODO -cNew : "Exception occurred during FindMatchInStringList: Invalid pointer operation" errors could cause problems with the reloading of some black / white lists}

{TODO -cNew : Added the logging of the filesize when reloading the black / white list files}

{TODO -cNew : The SURBL blacklist is not being automatically sorted to allow user-defined order}

{TODO -cNew : Added options in [authentication settings] of SpamFilter.ini: ActiveDirectoryAuthAppendDefaultDomain, ActiveDirectoryAuthPrefixDefaultDomain to automatically append or prefix the default domain when authenticating users via SMTP AUTH}


// New to VersionNumber = '3.5.4.704';

{TODO -cNew : Added the capability to stop blank HTML emails, in addition to blank plain text emails, with specified attachments}

{TODO -cNew : The "Exceeded Max spaces in Subject" filter now has its own separate RejectID in the tblMsgs table (ID=25) }

{TODO -cNew : Added new parameter in SpamFilter.ini to specify the threshold that defines what a blank email is : MaxLettersToConsiderEmailBlank}


// New to VersionNumber = '3.5.4.702';

{TODO -cNew : Due to memory leak issues and Access Violations in the PDF library used, by default SpamFilter will not scan for images within PDF files by setting the value SpamPDFMaxPagesToScan=0 in the SpamFilter.ini file. If this setting was enabled in a previous version however, it will remain enabled after upgrading to this version}

{TODO -cFix : Due to memory leak issues and Access Violations in the PDF library used, we have been forced to remove the ability to scan keywords within PDF files. We may re-add this functionality at a later time when a more stable PDF library is available}

{TODO -cNew : Added new option DisconnectOnNonAuthorizedTO in SpamFilter.ini file to change the default behavior that forces a disconnect when a recipient is specified that is not in the AuthorizedTO list}

{TODO -cNew : Added new option DoNotDeleteExpiredEmailsFromQuarantine in SpamFilter.ini to prevent SpamFilter to perform the routine cleanup of the quarantine database by deleting old archived emails. Useful if admins want to perform their own cleanup}


// New to VersionNumber = '3.5.4.701';

{TODO -cNew : Replaced the option "BlockBlankEmailsWithPDFAttachments" added to build 3.5.4.700 with the more generic "BlockBlankEmailsWithAttachments". This allows admins to block blank emails containing any one of a list of unwanted attachments}


// New to VersionNumber = '3.5.4.700';

{TODO -cNew : PDF image filter now scans, in addition to previous content types, also "application/octet-stream"}

{TODO -cNew : SpamFilter will now block emails that contain an empty, blank body and also a PDF attachment, the new setting in the .ini file is on by default: BlockBlankEmailsWithPDFAttachments=true}

{TODO -cFix : If an email session was whitelisted due to a whitelist keyword match, if further emails were sent during the same SMTP session, they could be blacklisted due to a falase keyword match}

{TODO -cFix : If any filter is configured to "tag spam and deliver", SpamFilter was not processing spam with the following filters: keywords, Bayesian, images/PDF, SURBL. All other filters were applied correctly}

{TODO -cFix : In SFE, when importing the file-based settings to a domain, or when copying the settings from one domain to another, the SPF settings pass/fail were being inverted}

{TODO -cNew : If SpamFilter was installed over an evaluation version, sometimes the "Received" header in the retail version could still contain the words "Unlicensed Evaluation Copy" leftover from the eval version in the SpamFilter.ini file}

{TODO -cNew : If SpamPDFMaxPagesToScan is zero, PDF attachments are now skipped without even attempting to open them. This allows to completely disable the PDF filtering functionality}

{TODO -cFix : In SFE, sometimes new entries were not being added to the autowhitelist table}


// New to VersionNumber = '3.5.4.697';

{TODO -cNew : PDF image filter now scans, in addition to content type "application/pdf", also "application/x-pdf"}

{TODO -cNew : The keywords filter now also scans for text contained within PDF attachments}

{TODO -cNew : In SFE, a new table "tbl_logindomains" is added and a new field is added to the tbl_logins to prepare for the new ASP-based web interface for SFE}

{TODO -cFix : Exception occurred during DumpLog: Cannot open file "nnnnnnn.log". The process cannot access the file because it is being used by another process}

{TODO -cFix : Spam emails with multiple recipients, where one of them caused a match in the AutoWhiteListedForceDelivery, were not split correctly and were delivered to every recipient instead of just the whitelisted one}

{TODO -cFix : Warning: error (1) scanning PDF for spam - Access violation at address 005BEEED in module 'SpamFilterSvc.exe'}

{TODO -cFix : Exception occurred during TTerminateIdleThreads.Execute: Invalid floating point operation}

{TODO -cFix : Exception occurred during TTerminateIdleThreads.Execute: Access violation at address 0040A753 in module 'SpamFilterSvc.exe'}


// New to VersionNumber = '3.5.4.692';

{TODO -cNew : Added new filter to scan images within PDF attachments for spam}

{TODO -cFix : In SFE, triggers in the database were not identifying multiple updates to the same tables, if they occurred within 5 seconds of each other. A DB patch SQL script will be automatically downloaded and executed once by SpamFilter upon startup. The script will delete all triggers and recreate them}

{TODO -cFix : In installations with multiple SpamFilter Enterprise, changes made directly against the database may not be visible by other servers}

{TODO -cFix : A specific set of circusmtances involving "unfiltered Emails" with the "tag" or "tagsubject" modifiers, and multiple, separate emails within the same SMTP session, could cause emails to be delivered to some unfiltered users if a recipient is in the unfiltered list}

{TODO -cFix : Exception occurred during TFilterObject.ReadFilterFromFile (2): Access violation at address 00401981 in module 'SpamFilterSvc.exe'.}

{TODO -cFix : SpamFilter Enteprise GUI *appeared* frozen during startup when processing several customized domain. The ativity windows now scrolls to show current status during startup}

{TODO -cNew : When adding duplicate entries in the blacklist/whitelists, SpamFilter will automatically remove the duplicate from the database as well, not just in the GUI as before (except for MAPS and Keywords blacklists)}


// New to VersionNumber = '3.5.3.679';

{TODO -cFix : The :tag and :tagsubject were incorrectly tagging emails with multiple recipients}

{TODO -cFix : Emails blocked by the attachment filter were stored in the quarantine DB with a rejectID of 13 instead of 23}

{TODO -cFix : Added 100ms delay when saving corpus database files to try avoiding error "corpus.db copy of files not exist - exiting"}

{TODO -cNew : Added customized response item for emails rejected by the Honeypot filters}


// New to VersionNumber = '3.5.3.678';

{TODO -cNew : Added options in SpamFilter.ini file to specify a proxy setting for all of SpamFilter's HTTP / HTTPS web requests}

{TODO -cFix : The "Manual SFDB check button was not retrieving correct SFDB results}

{TODO -cFix : Fixed a regression error introduced in 3.5.3.674 that prevented the "Import File Settings" in SpamFilter Enteprise from working}


// New to VersionNumber = '3.5.3.677';

{TODO -cNew : SpamFilter Enterprise was deleting and re-inserting the entire AutoWhiteListForceDelivery list in the database when appending a new entry, possibly causing data loss in high traffic scenarios. This process was rewritten to append the new individual records only}


// New to VersionNumber = '3.5.3.676';

{TODO -cFix : Portions of the customizable response ResponseBlacklistedMAPS could become embedded in the ResponseBlacklistedSURBL response}

{TODO -cFix : A special combination of tagged/untagged addresses in the "Unfiltered Emails" and "AuthorizedTO" lists could cause emails stuck in the outgoing queue folder}

{TODO -cNew : Upgraded SMTP AUTH to use SSLv3 - Allows Mozilla Thunderbird v2.0 to use SSL without errors regarding older/unsecure versions of SSL}


// New to VersionNumber = '3.5.3.674';

{TODO -cFix : Very rare memory leak when scanning jpeg images for spam occurring when scanning multiple thousands of simultaneous images}

{TODO -cFix : Browse button does not work the "Path to password file" under Unix User Authentication tab}

{TODO -cFix : Discovered more regional locale settings that prevented the SpamFilter Enterprise Activation code to be validated}


// New to VersionNumber = '3.5.3.672';

{TODO -cFix : Regression error introduced in v3.5.3.662 - during the MAIL FROM when forwarding emails, SpamFilter was not enclosing the email address in brackets "<" and ">"}

{TODO -cNew : The Eval version of SpamFilter now delivers emails via the quarantine web interface}

{TODO -cFix : Sometimes adding a new domain in SFE could cause the filter settings to be reloaded in memory for no reason every minute}

{TODO -cFix : Certain regional locale settings prevented the SpamFilter Enterprise Activation code to be validated}

{TODO -cFix : Redesigned internal operations to attempt avoiding GUI freezes and lockups}

{TODO -cNew : Spam Emails with multiple recipients, where one is in the "Unfiltered Emails" with the :TAG option, will now be split so they get delivered to the unfiltered address}

{TODO -cNew : In SFE, entering duplicate domains in the local domains via the GUI could cause SpamFilter to crash}

{TODO -cNew : In SFI, duplicate entries are now automatically removed from the blacklist/whitelists files}

{TODO -cFix : Exception occurred during PerformPostStartupTasks_TrayIconVisible: Cannot create shell notification icon}

{TODO -cNew : The MAPS and keywords blacklist entries are not automatically sorted anymore, allowing users to specify the lookup order}

{TODO -cNew : Added new customizable error response if recipient is not in AuthorizedTO whitelist - ResponseNotInAuthorizedTO}


// New to VersionNumber = '3.5.3.665';

{TODO -cFix : If a recipient is in the WhiteListedTO list, and, during the same SMTP session, the sender remains connected and sends further emails to other recipients, they were also incorrectly whitelisted}

{TODO -cFix : In SFE, using MySQL, if the connection to the DB was terminated (timeouts and/or MySQL going down), the SFE Domain List could be blank and require a restart to be visible again}

{TODO -cNew : SpamFilter performs stricter checking on MAPS RBL results to ensure a valid positive only if the response address via DNS is in the 127.0.x.x network}

{TODO -cFix : In SFE, the "Custom Domain Filters" tab should have been hidden}

{TODO -cFix : Occasional "freezes" of SpamFilter's GUI that would also halt the processing of incoming messages}

{TODO -cFix : Emails in the "Unfiltered Email" list would be delivered correctly, but the email was also being stored, by mistake, in the quarantine database}

{TODO -cFix : The event of an email whitelisted because of the "Unfiltered Email" list was not logged in the logfile}


// New to VersionNumber = '3.5.3.662';

{TODO -cFix : MAIL FROM COMMAND like the following can cause MX filter failures: MAIL FROM:<user@domain.com> SIZE=3521 AUTH=user@domain.com}

{TODO -cNew : Updated documentation and manual to indicate problems with MySQL ODBC Connector v3.51.14}


// New to VersionNumber = '3.5.3.661';

{TODO -cFix : In SFI the Blacklist IPs GUI control is not keeping the text file that has been selected via the dialog box}

{TODO -cFix : If the SFI configuration blacklist/whitelist files contained the ' (quote) illegal character in domains/emails, this would cause the SFE "Import File Settings" functionality to fail}

{TODO -cFix : The country list view control did not allow to sort the data by clicking on the columns}

{TODO -cNew : Added more tests to detect DNS failures when checking SPF, SURBL and MAPS servers, and rotate DNS servers accordingly}


// New to VersionNumber = '3.5.3.660';

{TODO -cFix : In SFI the Whitelist EmailsTO GUI control is not keeping the text file that has been selected via the dialog box}

{TODO -cFix : In SFI there "Customized Filters" option is not working correctly}

{TODO -cFix : Exception occurred during TTerminateIdleThreads.Execute: '4/17/2007 4:03:34 PM' is not a valid date and time}


// New to VersionNumber = '3.5.3.659';

{TODO -cFix : Rare bug caused: Exception occurred during TDlgThread.Execute: Invalid floating point operation}


// New to VersionNumber = '3.5.3.658';

{TODO -cFix : Country blacklist was not working properly in both SFE and SFI}


// New to VersionNumber = '3.5.3.657';

{TODO -cFix : SpamFilter could send duplicate emails when executing the process that runs every 60 minutes that reprocesses emails in the queue, as it could re-send emails that were being delivered at that exact moment}

{TODO -cNew : Added support for AUTH PLAIN in addition to AUTH LOGIN}

{TODO -cFix : Solved issues with the quarantine grid display that prevented the quarantine list form being displayed with MS Access and Access Violations with MySQL }

{TODO -cNew : Added "ScanAllHeaders" option in SpamFilter.ini file to also scan all headers for keywords}

{TODO -cFix : Emails with multiple recipients on multiple domains - if different domains have different destination SMTP servers, the email is split and delivered to each server correctly}

{TODO -cFix : Converted all queries in lowercase to fix issues with Unix-based MySQL databases}

{TODO -cNew : Emails with multiple recipients - When a recipient is in the "Unfiltered Emails", now a spam email is only delivered to them, and not everyone else}

{TODO -cNew : Added the X-SF-WhiteListedReason header for emails that are force-delivered from quarantine}

{TODO -cFix : SFE Only - Added option to DROP Enterprise tables before creating them via the database scripts}

{TODO -cNew : SpamFilter Enteprise - major changes in how filter settings for individual domains can be customized}

{TODO -cNew : SpamFilter Enteprise - Most filter settings are stored in a database for easier remote administration}

{TODO -cNew : Added XServerHeader option in SpamFilter.ini to customize the product name inserted in the "Received:" header added by SpamFilter}

{TODO -cNew : The FQDN used in the HELO command when forwarding emails is not set to the same one used in the FQDN Welcome banner}

{TODO -cNew : Added option to customize error response in case of empty MAIL FROM}


// New to VersionNumber = '3.1.3.618';

{TODO -cFix : "server error - Read Timeout" errors could cause duplicate emails to be forwarded to the destination SMTP server}

{TODO -cNew : Added DoNotQueueIfReadTimeout option in SpamFilter.ini file}


// New to VersionNumber = '3.1.3.616';

{TODO -cFix : Exception occurred during TDeliverQuarantineThread.Execute: [MySQL][ODBC 3.51 Driver][mysqld-4.1.12-nt]Lost connection to MySQL server during query}

{TODO -cFix : Exception occurred during TDeliverQuarantineThread.Execute: [MySQL][ODBC 3.51 Driver][mysqld-4.1.12-nt]MySQL server has gone away}

{TODO -cFix : Better error handling on SURBL lookup errors}


// New to VersionNumber = '3.1.3.615';

{TODO -cFix : When disabling MaxIncomingMsgSize by setting it to 0, SpamFilter would reject emails that specify a valid SIZE parameter in the RCPT TO}

{TODO -cNew : Changed the antivirus definition file download URL to optimize performance}


// New to VersionNumber = '3.1.3.614';

{TODO -cFix : Certain RegEx keyword could cause CPU to peak for several seconds, and result in a large number of incoming connections}


// New to VersionNumber = '3.1.3.613';

{TODO -cFix : Database errors were not being logged if they occurred during the process that forces the delivery of emails from the quarantine database}

{TODO -cFix : Fixed errors: Exception occurred during KillPeerThread: Access violation}

{TODO -cFix : Removed a small memory leak occurring during the execution of the "TerminateIdleThread" tasks}


// New to VersionNumber = '3.1.3.611';

{TODO -cFix : Fixed errors: Exception occurred during TDeleteExpiredQuarantineThread.Execute: [MySQL][ODBC 3.51 Driver][mysqld-4.1.12-nt]Lost connection to MySQL server during query}

{TODO -cNew : Added parameter in SpamFilter.ini file: MiscSQLTimeout=1}


// New to VersionNumber = '3.1.3.608'; {TODO -cFix : In the SFDB tab, a control for an SFDB Activation code was visible by mistake}


// New to VersionNumber = '3.1.3.607';

{TODO -cFix : In specific, rare cases, SpamFilter could not restore the connection to MySQL if the DB became unavailable for a short while}


// New to VersionNumber = '3.1.3.605';

{TODO -cFix : Keyword in the form of: "Subject:,somekeyword" would cause an Access Violation and cause th emessage to be lost}


// New to VersionNumber = '3.1.3.604';

{TODO -cFix : Once more modified code to reduce risk of Connection count not decreasing}

{TODO -cNew : The antivirus plugin now attempts to crack zip passwords to detect password-protected viruses. Updated dwnse.dll is required.


// New to VersionNumber = '3.1.3.601';

{TODO -cNew : Modified logging. Appended "(Exceeded max Connections per IP)" to "Too many connections" log line when this specific limit is reached.

{TODO -cFix : Once more modified code to reduce risk of Connection count not decreasing}


// New to VersionNumber = '3.1.3.600';

{TODO -cFix : Added 100ms delay on disconnect to help reduce risk of Connection count not decreasing}


// New to VersionNumber = '3.1.3.599';

{TODO -cNew : Keyword containing only "Subject:" would cause an Access Violation Exception}


// New to VersionNumber = '3.1.3.598';

{TODO -cNew : Added AddIncorrectAUTHLOGINEHLOEntry option in SpamFilter.ini file to for older email clients that have AUTH=LOGIN bug}


// New to VersionNumber = '3.1.3.597';

{TODO -cFix : In rare cases, Exception occurred during TTerminateIdleThreads.Execute : '7/28/2006 10:21:50 AM' is not a valid date and time}

{TODO -cFix : In rare cases, Exception occurred during TCleanupIPCachesThread.Execute: '38926.4309941551' is not a valid floating point value}

{TODO -cFix : In rare cases, Exception occurred during AddIPToIPCacheLimbo: '38926.4321352662' is not a valid floating point value}

{TODO -cFix : Sometimes the address specified inthe "From" header was being used in the logfile and in the "X-SF-Return-Path" headers in place of the address specified in the MAIL FROM envelope}

{TODO -cNew : Added ReadTimeoutOutgoing option in SpamFilter.ini file}


// New to VersionNumber = '3.1.3.594';

{TODO -cFix : For Linux-based MySQL quarantine databases - fixed upper case/lower case issues with SpamFilter table names}

{TODO -cFix : The AllowedDomainFilterMatrix.txt contained an extra "1" in the list of filter options}


// New to VersionNumber = '3.1.3.592';

{TODO -cFix : If result from MAPS DNS lookup contained line breaks, and SpamFilter is config to use a min of 2 MAPS tests, quarantined emails may have corrupted headers}


// New to VersionNumber = '3.1.3.590';

{TODO -cFix : Exception occurred during TestForReject: Access violation at address.....}

{TODO -cFix : Exception occurred during AddIPToIPCacheLimbo: List index out of bounds}

{TODO -cFix : Exception occurred during GetConnectionsFromIP: Access violation at address }

{TODO -cNew : If destination SMTP server does not respond causing a "Read Timeout" error, SpamFilter will now queue the message rather than attempting to send an NDR right away}


// New to VersionNumber = '3.1.3.585';

{TODO -cNew : Added support for AUTH LOGIN - authenticating users with a Unix-style password file, Active Directory and LDAP servers}

{TODO -cNew : Changed share mode when saving activity logfile, allowing more read-access to external apps}

{TODO -cNew : Embedded spam-images with invalid characters in filename are now scanned properly}

{TODO -cNew : SpamFilter looks at image header to determine file type, does not rely on extension anymore}

{TODO -cNew : Added X-Rejection-Reason header in blocked and spam-tagged emails}

{TODO -cFix : Exception occurred during TSendMailThread.Run: Access violation at address.....}

{TODO -cFix : Fixed "Exception occurred during ReloadSMTPServer: List index out of bounds (0)" when these occur: "Listen Exception occurred". Would cause SpamFilter to stop accepting new incoming connections}

{TODO -cNew : Added option to immediately disconnect sender when recipient not in AuthorizedTO whitelist, even if bayesian filter is enabled}


// New to VersionNumber = '3.0.2.580';

{TODO -cNew : Added support for .PNG image format in spam-image detection filter}

{TODO -cFix : Some emails with multi-image spam graphics were not detected as spam }


// New to VersionNumber = '3.0.2.579';

{TODO -cFix : Received headers were not RFC compliant - they were missing a ";" before the date, }


// New to VersionNumber = '3.0.2.578';

{TODO -cFix : Once more, tried to improve reliability for disconnecting servers after idle timeout expires}

{TODO -cFix : Improve reliability for TSyncSendResult2 exceptions sometimes logged in the activity log}


// New to VersionNumber = '3.0.1.577';

{TODO -cFix : SPF "redirect" modifier was not being recognized properly, causing the SPF filter to pass emails that could otherwise be blocked}

{TODO -cNew : Added support to use SSL with SMTP}


// New to VersionNumber = '3.0.1.575';

{TODO -cFix : Builds 572 and 573 could cause SpamFilter to freeze after a few minutes.}


// New to VersionNumber = '3.0.1.573';

{TODO -cFix : Again improved reliability for disconnecting servers after idle timeout expires}


// New to VersionNumber = '3.0.1.572';

{TODO -cFix : Memory leak of about 400 bytes for every email that was forwarded}


// New to VersionNumber = '3.0.1.571';

{TODO -cFix : Redesigned how emails are added to quarantine DB - now this is handled by a separate thread, eliminating issues where MySQL database locks caused connections to queue up}

{TODO -cNew : logging for quarantined events has changed as follows:}

{ the entry "EMail from a@a.com to b@b.com was received and quarantined" has a different threadID than the thread that processes the connection }

{ added log entry "Created thread (nnnnn) to add email to quarantine" to track which quarantine thread was created in the connection thread}

{TODO -cFix : To attempt avoiding "Read Timeout" server errors when forwarding emails, we attempt to transfer emails in memory to the delivery thread, in addition to using queue spool files as a backup method}

{ -NOTE- this will prevent antiviruses that scan the FileSystem to detect and stop emails}

{TODO -cNew : Added SpoolQueueFilesToMemory SpamFilter.ini option to force emails to be spooled to disk}

{TODO -cNew : Added SpamFilter.ini option to scan multiple images for spam}

{TODO -cNew : The whitelist keyword filter now scans thru all the email's headers}


// New to VersionNumber = '3.0.1.567';

{TODO -cNew : Improved reliability for disconnecting servers after idle timeout expires}

{TODO -cFix : If database is busy deleting expired quarantined email, we are temporarily suspending the archiving of new spam emails to avoid table locks and bad SQL performance}


// New to VersionNumber = '3.0.1.565';

{TODO -cFix : Whitelisted IPs where still limited by the MAXRCPT TO when sending emails with large number of recipients}

{TODO -cNew : Optimized some filter tests by eliminating redundant checks when emails with multiple recipients are received}

{TODO -cNew : Increased the logging limit from 256 to 65535 chars per line when logging "Sending email from" and "EMail from nnn to nnn was forwarded to" events}

{TODO -cNew : Changed the SQL queries that delete expired quarantined emails to better reduce the number of orphaned records}


// New to VersionNumber = '3.0.1.561';

{TODO -cFix : Quarantined emails with multiple recipients where deleted from database if one of them was force-delivered by a user}

{TODO -cNew : Support for %EMAILFROM% and %EMAILTO% tags has been added to practically all customized responses}


// New to VersionNumber = '3.0.1.560';

{TODO -cFix : Antivirus plugin is now also updating ncl.dll to handle newer compression formats}

{TODO -cNew : Added Do Not Quarantine option for the SFDB filter}


// New to VersionNumber = '3.0.1.559';

{TODO -cFix : Customer specific error when starting service from terminal services connection: "Exception occurred during FormShow: Cannot create shell notification icon" prevented A/V plugin from initializing}


// New to VersionNumber = '3.0.1.558';

{TODO -cFix : IPs that send viruses caused the IP to be added to the blacklist cache. As blacklist cache has precedence over whitelisted IPs, whitelisted senders could be blocked}


// New to VersionNumber = '3.0.1.557';

{TODO -cFix : Fixed sporadic access violations after Idle Disconnects: - IdleDisconnectMinutesTimeout reached. Removing threadID}

{TODO -cFix : SFDB was not pausing queries when the centralized SFDB database/website was not available}

{TODO -cNew : SFDB is not considering anymore Filter type 4 (Empty MAIL FROM) due to the abnormal false positives it provides}


// New to VersionNumber = '3.0.1.555';

{TODO -cNew : Replaced the SFDB_URL in the SpamFilter.ini with http://sfdb.logsat.com/SFDBUpload/}

{TODO -cNew : The SFDB filter does not attempt to remove IP from the SFDB database anymore as this is done automatically by our servers}

{TODO -cFix : SFDB now stops attempting to upload blocked IP information for filter type 21 (the SFDB filter itself)}

{TODO -cNew : The SFDB does not log HTTP errors as "Exceptions" anymore}

{TODO -cFix : We were updating the "Current IPs listed in the SFDB" field even if the SFDB was disabled}

{TODO -cFix : The SFDB stats and other SFDB controls were not positioned correctly on screen when resizing GUI}

{TODO -cNew : Limited the web interface to listen on 127.0.0.1 only for free version of SpamFilter}


// New to VersionNumber = '3.0.1.552';

{TODO -cNew : Added a new Web Interface for SpamFilter's administration}

{TODO -cFix : We are now able to scan images for spam even if they have invalid filenames}

{TODO -cNew : The SFDB filter can now check for IPs blocked by specific filters}

{TODO -cNew : The SFDB filter now also adds IPs added to the limbo}

{TODO -cFix : Added more exception handling code to help prevent the service's GUI from terminating when interacting with it from the console}

{TODO -cFix : The customized response for the new SFDB filter would not be saved to the ini file}


// New to VersionNumber = '3.0.0.547';

{TODO -cNew : Added a new filter to detect spam in images embedded inside emails}

{TODO -cNew : Added new SpamFilter Distributed Blacklist filter}

{TODO -cNew : Cosmetic touchups to the Configuration tab GUI}

{TODO -cNew : Added safety code to remove duplicates added by external apps to AllowedDomains.txt local domains}

{TODO -cNew : Removed annoying "Exception occurred during OnConnect" exceptions in logs}

{TODO -cFix : Sometimes Socket Errors on MX test could cause rejects (catches even more cases than in build 535)}

{TODO -cFix : Regression error in build 541 caused SURBL and attachment filter to stop working}


// New to VersionNumber = '2.7.1.541';

{TODO -cNew : Redesigned the database quarantine display in SpamFilter's GUI. It's now faster, less RAM intensive}

{TODO -cNew : Added QueueIfDestinationError400 and QueueIfDestinationError500 options in SpamFilter.ini}


// New to VersionNumber = '2.7.1.535';

{TODO -cFix : Sometimes Socket Errors on MX test could cause rejects (catches more cases than in build 531)}

{TODO -cNew : Changed the precedence for the :tag and :tagsubject modifiers for the Unfiltered Emails}

{TODO -cFix : DoNotStartWithoutAV option in SpamFilter.ini file not working correctly}


// New to VersionNumber = '2.7.1.532';

{TODO -cNew : Added an X-SF header in the emails if SpamFilter whitelisted an email with explanation of why}

{TODO -cNew : Prevented problems if the "AllowedDomainFilterMatrix.txt" contained domains that were manually added with uppercase letters}


// New to VersionNumber = '2.7.1.531';

{TODO -cNew : Prevented problems if the "Allowed Domains" list mistakenly contained duplicate domains}

{TODO -cNew : Added the destination SMTP server used when logging errors occurring while forwarding emails to dest. SMTP server}

{TODO -cNew : Further reduced the CPU usage When flushing the outgoing queue to the destination SMTP server. Does not affect "regular" real-time outgoing traffic}

{TODO -cFix : Sometimes Socket Errors on MX test could cause rejects}

{TODO -cNew : Option to disable activity log monitor, helps reducing CPU}


// New to VersionNumber = '2.7.1.526';

{TODO -cNew : Added DoNotStartWithoutAV option in SpamFilter.ini file to prevent SpamFilter from running unless the antivirus is working}

{TODO -cFix : Greatly improved Bayesian filter accuracy}


// New to VersionNumber = '2.7.1.525';

{TODO -cNew : Greatly reduced the CPU usage When flushing the outgoing queue to the destination SMTP server. Does not affect "regular" realtime outgoing traffic}


// New to VersionNumber = '2.7.1.523';

{TODO -cNew : Added RotateLogsEveryNNhours option in SpamFilter.ini file to rotate logfiles more frequently}

{TODO -cNew : The "Display Reverse DNS for cache" checkbox in the IP Blacklist Cache tab retains its status when clicking on "Save Settings"}

{TODO -cFix : Manually testing an email's source in the Bayesian filter tab causes an access violation error to be logged}


// New to VersionNumber = '2.7.1.522';

{TODO -cFix : Filtering for invalid MX records was not being performed}

{TODO -cFix : When performing reverse DNS lookups, the event was not logged in case of DNS Timeouts}

{TODO -cNew : The MX record filter now checks for the whole 127.x.x.x invalid IP range rather than only 127.0.0.x}


// New to VersionNumber = '2.7.1.520';

{TODO -cNew : Virus definitions are checked for size when downloaded to avoid using corrupted files. Their download is re-attempted in case of problems}


// New to VersionNumber = '2.7.1.519';

{TODO -cFix : If Max Recipients filter is set to 0 (disabled), emails with multiple recipients were only sent to the first one}

{TODO -cNew : Added BlockArchivesWithPassword ini option to block password protected archives with antivirus plugin}

{TODO -cNew : Added AlwaysDoReverseDNSLookups ini option to block password protected archives with antivirus plugin}


// New to VersionNumber = '2.7.1.517';

{TODO -cFix : Customer-reported problem. High CPU for messages with large number of "To:" or "CC" headers}


// New to VersionNumber = '2.7.1.516';

{TODO -cFix : SURBL filter could take several minutes to be process emails with hundreds of URLs if DNS server is down, possibly causing re-sends of the email. Improved lookups by removing duplicate TLDs and added global timeout to avoid problem}

{TODO -cFix : SpamFilter version number and blacklist/whitelist loading indicators are missing in logs when SpamFilter service is started}

{TODO -cNew : Added "Notice - IdleDisconnectMinutesTimeout reached. Removing threadID" log entry when disconnecting idle threads}


// New to VersionNumber = '2.7.1.515';

{TODO -cNew : Changed the display controls for the IP cache blacklist, added option to skip reverse DNS lookups}


// New to VersionNumber = '2.7.1.514';

{TODO -cFix : Certain SPF record with 3 ip4 octets rather than 4 (ex. aaa.bbb.ccc/24) where not checked properly and caused incorrect Exception errors in logs}

{TODO -cFix : Access Violation and/or GUI freezes with certain SPF records}


// New to VersionNumber = '2.7.1.513';

{TODO -cFix : Emails with a NULL sender and a SIZE parameter were being rejected. Ex: MAIL FROM:<> SIZE=652}


// New to VersionNumber = '2.7.1.512';

{TODO -cNew : Added the display of the reverse DNS lookups for the screen dump of cached blacklisted IPs}

{TODO -cFix : "neutral" result was not output in the logfile when an SPF record was missing the "all" or "redirect" modifiers}


// New to VersionNumber = '2.7.1.511';

{TODO -cNew : Changed the priority of the IP blacklist filter, it is now placed before the local domains blacklist}

{TODO -cNew : Changed the logfile entry if the IP address is blacklisted to: "IP is in local blacklist file..."}

{TODO -cNew : Performing reverse DNS queries only if the ReverseDNS filter is enabled, thus improving performance when it's off}


// New to VersionNumber = '2.7.1.510';

{TODO -cFix : Improved the forced disconnects of the cache filter to prevent the current connections to add up}

{TODO -cFix : Regression error in v2.6.3.495 cause the MX record test to not detect all errors}


// New to VersionNumber = '2.7.1.508';

{TODO -cNew : Implemented an IP cache to temporarily deny further connections to IPs that sent multiple spams recently. This can greatly reduce the load on the server}

{TODO -cNew : Improved "Connections" tab, showing in real-time what commands the remote IPs are sending}

{TODO -cFix : Sometimes the "Current Connections" counter could not decrease when a remote connection is dropped, thus displaying a number higher than reality}


// New to VersionNumber = '2.6.3.502';

{TODO -cFix : Duplicate entries were being created in the logfiles}

{TODO -cFix : Bug introduced in v2.6.3.491. When forwarding emails to the destination SMTP server, sometimes the leading "<" and trailing ">" where missing in the MAIL FROM}


// New to VersionNumber = '2.6.3.495';

{TODO -cNew : Added options to not quarantine or send to NULL virus-infected emails}


// New to VersionNumber = '2.6.3.493';

{TODO -cNew : Added DNSTimeout option in SpamFilter.ini to customize the DNS timeout for all of SpamFilter's DNS queries}

{TODO -cNew : Added EnableDbgLogs SpamFilter.ini option to enable separate detailed logging for troubleshooting purposes}

{TODO -cNew : Added to SpamFilter.ini several of the optional entries with their default values for users to see}

{TODO -cFix : Clicking on "Check if IP in ORBS" button in GUI could result in Access Violations being logged}


// New to VersionNumber = '2.6.3.491';

{TODO -cNew : Added support for maximum message size in reply to EHLO and MAIL FROM, as per RFC1870}


// New to VersionNumber = '2.6.3.490';

{TODO -cNew : Changed the control used to display logging in the GUI}

{TODO -cFix : Added *lots* of exception handling code to prevent sporadic problems with the GUI locking up at random}

{TODO -cNew : Added optional EnableDBGLogs ini option for additional debugging}

{TODO -cNew : Greatly improved startup and "Save Settings" response's time for installs with thousands of local domains}


// Spam Filter ISP - New to VersionNumber = '2.6.3.488';

{TODO -cFix : Improved error trapping for the way the quarantine grid is displayed on screen}

{TODO -cNew : Increased the amount of information being logged in case of crashes in the quarantine grid refresh}


// Spam Filter ISP - New to VersionNumber = '2.6.3.487';

{TODO -cFix : Again still, when emails were over the MaxMsgSize limit, the sender was sometimes disconnected without outputting a numeric error code, causing them to retry }


// Spam Filter ISP - New to VersionNumber = '2.6.3.485';

{TODO -cFix : When emails were over the MaxMsgSize limit, the sender was sometimes disconnected without outputting a numeric error code, causing them to retry }

{TODO -cNew : Added more logging for the IP-to-Country lookup exception error handling routines}



// Spam Filter ISP - New to VersionNumber = '2.6.3.483';

{TODO -cFix : SPF bug introduced by build 482 was allowing SPF filter to pass emails which were supposed to fail "a" directive test}


// Spam Filter ISP - New to VersionNumber = '2.6.3.482';

{TODO -cFix : Crash when a honepot recipient is encountered under some circumstances. The last log entry was "EMail To is in honeypot emails"}

{TODO -cFix : SPF queries for certain "a" directives were failing if the email domain did not match the DNS A record}


// Spam Filter ISP - New to VersionNumber = '2.6.3.481';

{TODO -cFix : Added more exception handling code to try preventing crashes being reported}

{TODO -cFix : Fixed problem with SPF retrieving the HELO domain when the MAIL FROM is empty}

{TODO -cNew : Added the HELO host name to the email X-SF-HELO-Domain email header}


// Spam Filter ISP - New to VersionNumber = '2.6.3.478';

{TODO -cNew : More user-friendly functionality for the "Custom Domain Filters" grid when saving the current entry}

{TODO -cNew : DoNotAddIPToHoneypot list now works with :Honeypot tags as well}

{TODO -cFix : The "Do not quarantine" option was not disconnecting the remote server immediately before receiving the email body, but was waiting till the end of message}

{TODO -cFix : Logfiles were missing entries from SPF logs and a few other events that were showing on activity screen. Bug introduced from build 461}


// Spam Filter ISP - New to VersionNumber = '2.6.3.476';

{TODO -cNew : Added support for ::null, ::nondr and ::honeypot tag options in the keyword filter}


// Spam Filter ISP - New to VersionNumber = '2.6.3.475';

{TODO -cFix : SPF bug introduced by build 474 on certain domains with SPF records spanning multiple lines}

{TODO -cNew : Added SpamFilter.ini option to use an alternate SMTP server to send out NDR (non-delivery) email notifications}


// Spam Filter ISP - New to VersionNumber = '2.6.3.474';

{TODO -cFix : SPF queries on domains with TXT records spanning multiple label strings could be incorrect}


// Spam Filter ISP - New to VersionNumber = '2.6.3.473';

{TODO -cFix : 100% CPU usage with certain RegEx keywords caused by certain malformed MIME messages}

{TODO -cFix : SPF bug - mx tests where A records have multiple IPs would sometimes incorrectly fail }

{TODO -cFix : SPF bug introduced in build 456 caused some SPF test to pass even though the "A" identifier should have caused them to fail }

{TODO -cFix : New per-domain filter GUI grid was being reloaded while the user was interactively making changes to it}

{TODO -cFix : New per-domain filter can get out-of-sync with the local domains list}


// Spam Filter ISP - New to VersionNumber = '2.6.3.467';

{TODO -cNew : New tab allows to enable/disable any filter on a per-domain basis, allowing further customizations for your local domains}


// Spam Filter ISP - New to VersionNumber = '2.5.2.462';

{TODO -cFix : Logfile was not flushed to disk until SpamFilter terminated or the log rotated}


// Spam Filter ISP - New to VersionNumber = '2.5.2.461';

{TODO -cNew : Added RealtimeDiskLogging option in SpamFilter.ini file to have log being flushed to disk with every entry}

{TODO -cNew : Added DoNotAddIPToHoneypot option to SpamFilter.ini file to prevent certain trusted IPs from being blacklisted by the honeypot filter}

{TODO -cNew : Changed the logging on screen performance to increase reliability and have a smoother scroll}


// Spam Filter ISP - New to VersionNumber = '2.5.2.459';

{TODO -cFix : SURBL Do Not Quarantine setting was saving, but the mail was still not being quarantined}


// Spam Filter ISP - New to VersionNumber = '2.5.2.458';

{TODO -cFix : Could save the SURBL Do Not Quarantine setting}

{TODO -cFix : Could not empty the SURBL list, the default multi.surbl.org list was re-added automatically}

{TODO -cFix : AutoWhiteList was not always case-insensitive}


// Spam Filter ISP - New to VersionNumber = '2.5.2.457';

{TODO -cNew : Automatically adding "multi.surbl.org" to SURBL servers if the SURBL section is not present in SpamFilter.ini file. Used to provide default in upgrades...}


// Spam Filter ISP - New to VersionNumber = '2.5.2.456';

{TODO -cFix : EMail forwarded/blocked/attempts counters were resetting themselves}

{TODO -cFix : SPF test incorrectly handled "exists" directive for A record tests}

{TODO -cFix : SPF test incorrectly handled l,s,o,d,i macro directive arguments}


// Spam Filter ISP - New to VersionNumber = '2.5.2.454';

{TODO -cNew : Added support for the :Honeypot tag in some blacklists to automatically blacklist sender's IP if it triggers the blacklist entry}

{TODO -cNew : Added option to add to honeypot blacklist the sender's IP if the email contains a virus}

{TODO -cNew : Implement SURBL filtering}

{TODO -cNew : Require a valid email address in the "MAIL FROM" SMTP command (NULL - <> is still allowed per RFC) }


// Spam Filter ISP - New to VersionNumber = '2.5.1.450';

{TODO -cNew : Added "Honeypot" feature to automatically block IPs that send emails to specified honeypot addresses}


// Spam Filter ISP - New to VersionNumber = '2.5.1.448';

{TODO -cFix : SPF record incorrectly flagged a fails tests where the -a mechanism specified a host name instead of an IP and the name in the DNS A record was different}

{TODO -cNew : When MX record test fails, additional information about the error details is logged}


// Spam Filter ISP - New to VersionNumber = '2.5.1.446';

{TODO -cFix : Local blacklist/whitelist files were not immediately reloaded when clicking on the "Save Settings" button - they were reloaded within 3 minutes of the event}

{TODO -cNew : automatic reload of blacklist/whitelist and SpamFilter.ini files reduced to 1 minute instead of 3}

{TODO -cNew : Added to logfile the reason of why an email is being whitelisted, indicating which whitelist triggered the event}


// Spam Filter ISP - New to VersionNumber = '2.5.1.443';

{TODO -cFix : virus emails were not being blocked if any of the "Tag and deliver" options were checked}

{TODO -cNew : SpamFilter.ini is automatically reloaded if modified by external application}

{TODO -cNew : When automatic reload of blacklist/whitelist and SpamFilter.ini files, the event is now logged}


// Spam Filter ISP - New to VersionNumber = '2.5.1.441';

{TODO -cFix : Antivirus plugin-related dates were not decoded correctly in non-US locale date formats}

{TODO -cNew : Trial activation codes are requested via a built-in browser control within SpamFilter's GUI}


// Spam Filter ISP - New to VersionNumber = '2.5.0.435';

{TODO -cFix : Access Violations in "aa.bb.cc.dd - No Data Received" log entry. IP address was removed from logline}


// Spam Filter ISP - New to VersionNumber = '2.5.0.434';

{TODO -cNew : A current antivirus Activation Code is required to enable antivirus plugin}

{TODO -cNew : Added automatic hourly virus definition updates}

{TODO -cNew : Added custom response for SPF filter}

{TODO -cNew : Added custom response for antivirus filter}

{TODO -cNew : Added "aa.bb.cc.dd - No Data Received" log entry if remote server is disconnected without receiving any data from it (probes, port scanners, etc)}


// Spam Filter ISP - New to VersionNumber = '2.5.0.431';

{TODO -cFix : Removed trailing spaces in the "Found SPF Record" logfile entry }

{TODO -cNew : Implemented the antivirus plugin}


// Spam Filter ISP - New to VersionNumber = '2.1.2.410';

{TODO -cFix : Force-delivery of quarantined emails with a NULL "Mail From" or "Mail To" would cause repeated exception entries in the log and creation of tmp files in queue directory}

{TODO -cNew : Added "SPF Test" button to SPF settings page to manually test user-defined criteria}

{TODO -cNew : Moved the retrieval of data in the quarantine view to a separate thread to improve performance for slow database links}


// Spam Filter ISP - New to VersionNumber = '2.1.2.406';

{TODO -cFix : When a recipient in an email with multiple recipients is whitelisted, the email is not supposed to be blocked. This was not working as expected in all cases}


// Spam Filter ISP - New to VersionNumber = '2.1.2.405';

{TODO -cFix : Changed the way hostnames and domains are checked for SPF records to better respect the SPF guidelines}


// Spam Filter ISP - New to VersionNumber = '2.1.2.404';

{TODO -cFix : The "Received by" header added by SpamFilter was not RFC compliant. Added the FQDN (host name) to the "by" section}


// Spam Filter ISP - New to VersionNumber = '2.1.2.403';

{TODO -cFix : DNS requests to a ping-able IP that is not running DNS were not causing SpamFilter to rotate DNS's to next available DNS server}


// Spam Filter ISP - New to VersionNumber = '2.1.2.402';

{TODO -cNew : Added Force Delete option to SPF filter}

{TODO -cNew : Added capability to change the full Welcome greeting banner, including product name/version}

{TODO -cNew : Added QuarantineToDeliverCheckInterval SpamFilter.ini parameter to customize interval to check quarantine database for delivey of emails}


// Spam Filter ISP - New to VersionNumber = '2.1.2.401';

{TODO -cFix : Improved stability when experiencing high SMTP traffic over the Max Incoming Connections limit}

{TODO -cFix : Eliminated occasional <CR> or <LF> in logged DNS responses that caused the logfile to have line breaks in them}


// Spam Filter ISP - New to VersionNumber = '2.1.2.397';

{TODO -cFix : If Reject Same To From Domain Force Delete was selected, emails would still be quarantined}


// Spam Filter ISP - New to VersionNumber = '2.1.2.396';

{TODO -cFix : Fixed regression error that could have prevented a forceful disconnect for email over the max email size limit}


// Spam Filter ISP - New to VersionNumber = '2.1.2.395';

{TODO -cNew : Added graph in Statistics tab to show emails blocked by filter type}


// Spam Filter ISP - New to VersionNumber = '2.1.2.394';

{TODO -cFix : Exceptions on RECEIVEMESSAGE can appear if quarantine database becomes unavailable, and remote server receives error response rather than customized error depending on filter}


// Spam Filter ISP - New to VersionNumber = '2.1.2.393';

{TODO -cFix : "Do not quarantine" option is enabled for a filter, a generic "500 Address Error" is returned instead of the customized response}


// Spam Filter ISP - New to VersionNumber = '2.1.2.392';

{TODO -cFix : If SPF filter returns a softfail or a pass, the MAPS and local IP blacklist filters are ignored}

{TODO -cFix : New MX filter caused emails with empty MAIL FROM to be rejected}


// Spam Filter ISP - New to VersionNumber = '2.1.2.391';

{TODO -cNew : Check valid MX record on receive}

{TODO -cNew : Add option for max connections per remote IP address}


// Spam Filter ISP - New to VersionNumber = '2.1.1.388';

{TODO -cFix : Fixed SPF bug introduced in build 386 - SPF queries had incorrect "none" results}

{TODO -cFix : whitelisted emails were forwarded to alternate dest SMTP server if using option new in build 387}


// Spam Filter ISP - New to VersionNumber = '2.1.1.387';

{TODO -cNew : Added SpamFilter.ini option to forward email tagged as SPAM to an alternate destination SMTP server}


// Spam Filter ISP - New to VersionNumber = '2.1.1.386';

{TODO -cNew : Modified SPF lookups to search for SPF TXT record even if hostname is not a domain}


// Spam Filter ISP - New to VersionNumber = '2.1.1.385';

{TODO -cNew : Add label to indicate "Bayesian Probability results show up in Corpus Database tab"}

{TODO -cFix : if more than 3 RCPT TO's were specified, spam emails may have not been filtered}

{TODO -cNew : Add option in INI file to specify directory path for logfiles}


// Spam Filter ISP - New to VersionNumber = '2.1.1.384';

{TODO -cNew : Fixed "Exception occurred during RECEIVEMESSAGE: Cannot create file...." errors}

{TODO -cFix : FQDN was missing from Welcome banner}


// Spam Filter ISP - New to VersionNumber = '2.1.1.380';

{TODO -cNew : Removed changes to activity window introduced in build 379 as they caused performance issues}


// Spam Filter ISP - New to VersionNumber = '2.1.1.379';

{TODO -cFix : SPF queries that matched the MX mechanism would fail the 1st time a domain was queried. Once in the DNS cache, queries were fine}

{TODO -cFix : SPF queries check parent domain is right-hand side of email address is not a domain but a host name}

{TODO -cNew : Modified behavior of activity window - does not autoscroll unless cursor is placed at end of text}


// Spam Filter ISP - New to VersionNumber = '2.1.1.378';

{TODO -cNew : Added filename blocked by attachment filter in activity log}


// Spam Filter ISP - New to VersionNumber = '2.1.1.376';

{TODO -cFix : Incoming connections were dropped immediately when the DATA stream exceeds the max message size, sometimes before receiving the 55x error code}


// Spam Filter ISP - New to VersionNumber = '2.1.1.375';

{TODO -cFix : Subject keyword searches were case sensitive, not anymore}

{TODO -cFix : Faster SPF queries when exceeding max include loops, better handling of default value}

{TODO -cFix : Fix "Check if in ORBS" button access violations}

{TODO -cNew : Changed log syntax from "Will be quarantined" to more generic "Will be rejected" as the label also applied to emails being disconnected without being quarantined}


// Spam Filter ISP - New to VersionNumber = '2.1.1.373';

{TODO -cFix : SPF - Again fixed neutral behavior due to regression error with previous build}


// Spam Filter ISP - New to VersionNumber = '2.1.1.372';

{TODO -cFix : SPF - fixed issue with logfile becoming huge due to loops in SPF include directive}


// Spam Filter ISP - New to VersionNumber = '2.1.1.371';

{TODO -cFix : SPF neutral records were being rejected}

{TODO -cNew : Added ExpireRetryQueueHours SpamFilter.ini parameter to optionally limit retries to destination SMTP server if it is unavailable}


// Spam Filter ISP - New to VersionNumber = '2.1.1.370';

{TODO -cFix : Default AutoWhiteList file path now correctly defaults to SpamFilter directory}


// Spam Filter ISP - New to VersionNumber = '2.1.1.369';

{TODO -cFix : Unusual messages that contain <CRLF>.<CRLF> sequence in email headers are now received correctly}

{TODO -cNew : Added better support in subject keyword searches - keywords will be searched for in entire subject, not just at start}

{TODO -cNew : Blank addresses are not added to the AutoWhiteList anymore}


// Spam Filter ISP - New to VersionNumber = '2.1.1.367';

{TODO -cNew : Added option so that any quarantined (false positives) emails that the end user force-delivers will cause the sender to be automatically whitelisted}


// Spam Filter ISP - New to VersionNumber = '2.1.1.365';

{TODO -cNew : Added macro mechanism support for SPF}

{TODO -cFix : Outgoing MAIL FROM command was missing surrounding < and > brackets}

{TODO -cNew : A remote server on the IP whitelist is now able to relay to the internet even if the recipient domain is not a local domain}


// Spam Filter ISP - New to VersionNumber = '2.1.1.362';

{TODO -cNew : Add support for SPF - http://spf.pobox.com}

{TODO -cFix : Access violation during SecondTimer while writing activity log}


// Spam Filter ISP - New to VersionNumber = '2.0.1.359';

{TODO -cFix : occasional delivery of truncated emails even though they exceed max message size}


// Spam Filter ISP - New to VersionNumber = '2.0.1.358';

{TODO -cNew : Added ReadTimeout ini parameter to allow user control of timeout when waiting for remote SMTP commands}


// Spam Filter ISP - New to VersionNumber = '2.0.1.357';

{TODO -cFix : whitelisted domains were able to use SpamFilter as an open relay}

{TODO -cFix : Out of Memory when sync corpus}

{TODO -cFix : Corrected spelling of word unknown}


// Spam Filter ISP - New to VersionNumber = '2.0.1.352';

{TODO -cFix : temp tokens still added to coprus\queue directory even if Bayes disabled when end-users force delivery of quarantine emails}

{TODO -cNew : Added ScanReceivedHeaders ini parameter to enable/disable scanning of Received: headers}


// Spam Filter ISP - New to VersionNumber = '2.0.1.349';

{TODO -cFix : Button behavior that opens Unfiltered Emails whitelist fixed}

{TODO -cFix : TAG spam in unfiltered list was not always being forwarded}

{TODO -cNew : Added TAGSUBJECT suffix in unfiltered list to add prefix to spam when delivering to recipient}

{TODO -cNew : modified TAG suffix in unfiltered list to only add spam headerto spam when delivering to recipient}


// Spam Filter ISP - New to VersionNumber = '2.0.1.348';

{TODO -cFix : Deliver emails to multiple recipients even if one or more of them are rejected by destination smtp server}


// Spam Filter ISP - New to VersionNumber = '2.0.1.347';

{TODO -cFix : Bayesian corpus database was not updating correctly every 30 minutes as scheduled}


// Spam Filter ISP - New to VersionNumber = '2.0.1.346';

{TODO -cNew : Added safety check for mail loops, if more than 100 "Received:" headers are found mail is rejected}

{TODO -cNew : Removed references to SpamFilter's IP address when adding our own "Received:" header}


// Spam Filter ISP - New to VersionNumber = '2.0.1.345';

{TODO -cNew : Messages with a "From:" header in the form <someguy@domain.example> some-text @ some-text with some-text blank are no longer being rejected by causing exceptions}

{TODO -cNew : The Bayesian filter now also searches in the Received: headers}


// Spam Filter ISP - New to VersionNumber = '2.0.1.344';

{TODO -cFix : Fixed some "Out of Memory" exception errors and other Access Violations}


// Spam Filter ISP - New to VersionNumber = '2.0.1.339';

{TODO -cFix : Exception adding a database connection and then clicking the quarantine Refresh button w/o closing SpamFilter}


// Spam Filter ISP - New to VersionNumber = '2.0.1.333';

{TODO -cFix : Fixed high CPU / RAM during corpus syncs for some users}

{TODO -cNew : Increased speed for corpus syncs and corpus load by more than 500%}

{TODO -cNew : Add "running SpamFilter since" in status bar}

{TODO -cFix : Fix handling of NULL and other suffixes for RegEx expressions}

{TODO -cNew : The keyword filter now also searches in the Received: headers}


// Spam Filter ISP - New to VersionNumber = '2.0.1.325';

{TODO -cFix : Attempts to fix a problem with RAM and concurrent connections suddently increasing - problem is with only one user}


// Spam Filter ISP - New to VersionNumber = '2.0.1.321';

{TODO -cNew : Added the option to disable "learning" feature of Bayesian filter (not updating the corpus db.dat file), but still continuing to filter incoming emails with Bayesian filter. }

{TODO -cNew : When an email matches the keyword or Bayes filter SpamFilter will now forcefully terminate the connection rather than wait for the remote disconnect}


// Spam Filter ISP - New to VersionNumber = '2.0.1.312';

{TODO -cNew : Added the :NoNDR (same effect as DoNotSendNDROnQuarantine in ini file) option to: Domains, EMailFrom, EmailTO, Attachment blacklists}

{TODO -cFix : Exception occurred during TimerSecondTimer: Access violation errors occurring every 5 seconds}

{TODO -cFix : Optimized Bayesian filtering to help avoid high CPU and RAM spikes}


// Spam Filter ISP - New to VersionNumber = '2.0.1.309';

{TODO -cNew : When the SpamFilter.ini is updated the event is logged}

{TODO -cNew : Added the :TAG option to the AuthorizedTO whitelist to tag emails classified as spam}

{TODO -cNew : Updated documentation and GUI to show blacklists that support the :NULL tag}

{TODO -cNew : Added the TagAndQuarantine option to SpamFilter.ini file}

{TODO -cNew : Added the SPAMTagPrefix option to SpamFilter.ini file to customize spam tag prefix in subject}

{TODO -cNew : We are now writing in the activity log when a quarantined email is forced-delivered}

{TODO -cFix : The Do not quarantine and :NULL option for the attachment blacklist is now working correctly}

{TODO -cNew : Added ini option for DoNotSendNDROnQuarantine - this will cause all emails to be accepted from the sender (but not forwarded to the recipient) without returning an error code to the remote server, thus preventing NDR's to be sent to the sender}


// Spam Filter ISP - New to VersionNumber = '2.0.1.306';

{TODO -cFix : Improved performance of Bayesian filter under heavy load}

{TODO -cFix : Attachment filtering was not working if keyword list was empty}

{TODO -cFix : Bayesian "learning" was not working if keyword list was empty}


// Spam Filter ISP - New to VersionNumber = '2.0.1.302';

{TODO -cNew : Added Bayesian statistical filter}

{TODO -cNew : Added attachment blacklist}

{TODO -cNew : Added DoNotTrustSelfByDefault INI setting to stop allowing relay (whitelisting) emails from own local IPs}

{TODO -cNew : Added header and subject line tagging and delivery of emails classified as spam}

{TODO -cNew : If destination server responds with RFC code indicating temporary error condition (RFC error code reply < 500), msg is queued by SpamFilter for later retry}

{TODO -cFix : Fix tag spam and deliver}

{TODO -cFix : Fix do not quarantine for keywords}


// Spam Filter ISP - New to VersionNumber = '1.2.0.212';

{TODO -cNew : Add ini option to allow MAIL FROM command without 1st HELO command}

{TODO -cNew : Incoming connections are dropped immediately when the DATA stream exceeds the max message size, before the entire email was received before being rejected}

{TODO -cNew : Subject lines are now prefixed with the words "Subject:", allowing RegEx searches to be more specific by limiting them to the subject line only}


// Spam Filter ISP - New to VersionNumber = '1.2.0.207';

{TODO -cFix : Violation when clicking on quarantine field title when hiding quarantine}

{TODO -cFix : Timeout occur on certain messages by QMail}


// Spam Filter ISP - New to VersionNumber = '1.2.0.206';

{TODO -cNew : Add filter for Max spaces in subject line}

{TODO -cNew : option for SPAM tagging in headers}

{TODO -cFix : Messages matching the FilterBase64html filter were mistakenly whitelisted}


// Spam Filter ISP - New to VersionNumber = '1.2.0.205';

{DONE -cFix : Fix Max Msg Size label in GUI from MB to KB}

{DONE -cNew : Added optional ini file parameter to omit trailing semicolon in SQL statements (for Oracle issues)}

{DONE -cNew : Added checks from invalid MAIL FROM addresses - now SpamFilter ignores anything outside < and > brackets, if they are present}


// Spam Filter ISP - New to VersionNumber = '1.2.0.203';

{DONE -cNew : Added option to check the country an IP belongs to with the GUI}

{DONE -cNew : Added option to block emails over a certain size}

{TODO -cNew : Added Keyword whitelist}

{TODO -cNew : Ignore invalid encodings that cause DecodeToStream exceptions and continue decoding message anyway}

{DONE -cFix : Removed extra trailing colons on some SQL statements to help solve Oracle issues}

{DONE -cFix : Hint for the Custom banner edit field in the GUI}

{DONE -cFix : When delivering quarantined emails, "<" and ">" brackets whe missing in the From: header}


// Spam Filter ISP - New to VersionNumber = '1.2.0.201';

{DONE -cFix : In some setups the keywords filter does not work


// Spam Filter ISP - New to VersionNumber = '1.2.0.199';

{DONE -cNew : Emails over a certain size (MaxMsgSizeForKeywordScan=64 kb) were not scanned for keywords. We now exclude binary attachments in calculating size - done mainly to detect sobig worm keywords


// Spam Filter ISP - New to VersionNumber = '1.2.0.198';

{DONE -cFix : Fixed incorrect handling of Return-Path when sending non-deliverable bounce emails to senders, they were being sent to the From header instead}

{DONE -cFix : Fixed incorret setting of Return-Path when sending non-deliverable emails to senders, the Return-Path is now set to null}


// Spam Filter ISP - New to VersionNumber = '1.2.0.197';

{DONE -cFix : Memory leak issue with certain malformed subject headers}

{DONE -cNew : Better handling of non-RFC emails from FedEx robots}

{DONE -cFix : Fixed extra "dot" command at end of transmission}

{DONE -cNew : NT4 without MDAC is now able to run SpamFilter (without quarantine option)}

{DONE -cFix : Fix for the deliver and delete quarantine buttons remaining grayed out}

{DONE -cFix : Returned non-deliverable emails to sender now sent to "Reply-To" header rather than "Mail from"}


// Spam Filter ISP - New to VersionNumber = '1.2.0.190';

{DONE -cFix : Emails from Blacklisted IP were not quarantined}

{DONE -cNew : Moved the local domains list to an external file}

{DONE -cNew : Added option to customize part of welcome banner}

{DONE -cNew : Made the keyword list horizontal-scrollable }

{DONE -cNew : Added support for additional DNS servers}

{DONE -cNew : Added :NULL option for individual entries on following blacklists: Domains, FROM Emails, TO Emails}

{DONE -cFix : Blacklisted IP matches are not done anymore with substrings. i.e now local blacklisted ip of 1.2.3.4 does not trigger match on remote 1.2.3.45}

{DONE -cFix : Stack overflows using RegEx against Very long (100KB+) and only if containing emails with specific content }

{DONE -cFix : Spelling mistakes on some GUI labels}

{DONE -cNew : Changed order of filters to:}

{ AllowedDomains, LocalDomainBlackList, LocalEmailsBlacklist, LocalEmailsTOBlacklist, Not in AuthorizedTOEmails, CountryBlacklist, }

{ RejectNoReverse, RejectEmptyMailFrom, RejectSameToFrom, RejectSameToFromDomain, RecipientCount > MaxRCPTTO, MAPS check, Keywords}


// Spam Filter ISP - New to VersionNumber = '1.2.0.178';

{DONE -cFix : Access Violations processing outgoing queue and incoming messages}

{DONE -cFix : Memory leak when checking emails against huge keyword listings}

{DONE -cNew : Added FilterBase64html option in ini file to block emails with Content-Transfer-Encoding=base64 and Content-Type=text/html or text/plain }


// Spam Filter ISP - New to VersionNumber = '1.2.0.174';

{DONE -cFix : even if clear quarantine list was clicked, the grid would occasionally refresh anyways}


// Spam Filter ISP - New to VersionNumber = '1.2.0.173';

{DONE -cFix : Setting to 0 the delete expired quarantine interval cause e DivisionByZero error}


// Spam Filter ISP - New to VersionNumber = '1.2.0.172';

{DONE -cNew : Added button to clear quarantine grid to conserve memory, saving 100's of MEGS in case of large databases}

{DONE -cNew : Setting to 0 the delete expired quarantine interval diables such interval}


// Spam Filter ISP - New to VersionNumber = '1.2.0.169';

{DONE -cFix : RegEx searches in black/white lists incorrect}

{DONE -cFix : Possibly solved issues with SpamFilter settings being cleared}

{DONE -cNew : IP Blacklist now allows .0.0 and .0.0.0 matches for class B & class A address matches}


// Spam Filter ISP - New to VersionNumber = '1.2.0.167';

{DONE -cFix : Quarantine Refresh, Deliver, Delete buttons may remain grayed out when using MS Access}


// Spam Filter ISP - New to VersionNumber = '1.2.0.164';

{DONE -cFix : Corrupt atachemnts - Emails that had a <CRLF>. sequence were not replaced by <CRLF>.. following RFC rules}


// Spam Filter ISP - New to VersionNumber = '1.2.0.163';

{DONE -cFix : Access Violations when multiple msgs left in queue are re-delivered}

{DONE -cFix : Improved speed in recalculating country stats}

{DONE -cNew : Added option to customize interval for deleting expired email from database}


// Spam Filter ISP - New to VersionNumber = '1.2.0.162';

{DONE -cNew : Added tab to test if a RegEx (Regular Expression) triggers a match}

{DONE -cNew : Added tab to debug/view SMTP transactions between us and a remote host}

{DONE -cNew : Keyword search in Email headers now only works with Subject, all other headers are excluded to reduce false positives}

{DONE -cFix : "TO Emails" Blacklist Open File button was not working}

{DONE -cFix : Stopping SpamFilter service while servicing multiple incoming connections fails}

{DONE -cFix : Exception MarkQuarantineItemsForDelivery when manually deleting some items in quarantine}


// Spam Filter ISP - New to VersionNumber = '1.2.0.153';

{DONE -cFix : Different Access Violations when receiving email}

{DONE -cFix : Invalid date error when starting SpamFilter wih non-US date formats}

{DONE -cNew : Stats are now erased from ini file when option to save them is unchecked}


// Spam Filter ISP - New to VersionNumber = '1.2.0.152';

{DONE -cFix : "Path couldn't be found..." error when starting SpamFilter}


// Spam Filter ISP - New to VersionNumber = '1.2.0.151';

{DONE -cNew : Added RegEx support in keyword for body and headers in emails}

{DONE -cNew : Added Delete button and DEL key support to delete items in quarantine grid in GUI}

{DONE -cFix : In some databases the registration password was not delivered}

{DONE -cFix : Access Violation when re-delivering several emails in queue directory}

{DONE -cFix : Access Violations when interacting with the quarantine grid}

{DONE -cFix : Access Violations when receiving email}

{DONE -cFix : The quarantine Refresh button in Access remain disabled}


// Spam Filter ISP - New to VersionNumber = '1.2.0.148';

{DONE -cFix : Registration email notices to users who self-registered for web access were not being delivered}


// Spam Filter ISP - New to VersionNumber = '1.2.0.147';

{DONE -cNew : Changed the local white/black list reload interval from 1 minute to 3 minutes}

{DONE -cNew : Changed the country stats reload interval from 1 minute to 2 minutes}

{DONE -cNew : Added option to autoconfigure databases}

{DONE -cNew : Added startup check to ensure database structure is correct}

{DONE -cFix : various minor fixes to enable/disable archive spin-edit control and test if DB available/unavailable}

{DONE -cNew : Added ini parameter for max msg size above which no keyword scan is done - improve performance}

{DONE -cFix : CPU glued at 100% if email subject has incorrect encoding}

{DONE -cFix : if defined, Local Domains redirect not sorted and not redirecting to correct destination}


// Spam Filter ISP - New to VersionNumber = '1.2.0.133';

{DONE -cNew : Local Domain list is displayed sorted by domain}

{DONE -cFix : Blocked email counter not increasing when reject for keyword match}

{DONE -cNew : The local black/white/keyword file lists are reloaded only if their content is modified}

{DONE -cNew : Joe-Jobbing - added filter to reject if "Mail From" domain = "Mail To" domain}

{DONE -cNew : Added customized queue-reprocess interval}

{DONE -cNew : Added Flush NOW button}

{DONE -cNew : Quarantine is now stored in a Database}


// Spam Filter ISP - New to VersionNumber = '1.1.2.124';

{DONE -cFix : Whitelisted emails blocked if keyword match}

{DONE -cFix : The FQDN was not written in the welcome banner}

{DONE -cFix : Emails forwarded to default smtp rather than secondary fwding assigned to individual domains if multiple recipients}


// Spam Filter ISP - New to VersionNumber = '1.1.2.122';

{DONE -cFix : "Path couldn't be found..." error when starting SpamFilter}


// Spam Filter ISP - New to VersionNumber = '1.1.2.121';

{DONE -cFix : "Unfiltered emails" whitelist was not being saved}

{DONE -cFix : Again modified address recognition for emails in format "name"@domain.com }

{DONE -cFix : Queue directory was not being processed every 60 minutes }

{DONE -cDone : Added option to save stats }


// Spam Filter ISP - New to VersionNumber = '1.1.2.117';

{DONE -cFix : If local domains were entered in uppercase, a case-sensitive match was mistakenly performed}

{DONE -cFix : Changed EHLO response since mail servers running MailSite were not able to send us email}

{DONE -cNew : Added option to diable ESMTP (EHLO) by adding entry DisableEHLO=1 in section [server settings] in spamfilter.ini file}


// Spam Filter ISP - New to VersionNumber = '1.1.2.114';

{DONE -cDone : Added REGEX (Regular Expressions) support for any list that also allows wildcards}

{DONE -cFix : Emails with a line containing a single "." by itself were truncated}

{DONE -cDone : Placed LocalEMailsBlacklists and LocalEMailsTOBlacklists entries in separate file rather than in spamfilter.ini file }

{DONE -cDone : Modified address recognition for emails in format "name"@domain.com }

{DONE -cDone : Added limited ESMTP support}

{DONE -cFix : Violations when starting SpamFilter if thousands of messages present in queue folder}

{DONE -cFix : Some local black/white lists triggered a match if they contained blank lines}

{DONE -cFix : Exceptions and "list index out of bounds" occurred during RECEIVEMESSAGE if high traffic and large local balck/white lists}

{DONE -cFix : Fixed "List Index out of bounds" error while sorting items in the quarantine while it was still refreshing}


// Spam Filter ISP - New to VersionNumber = '1.1.0.91';

{DONE -cDone : Add option to quarantine/delete for each rejection filter}

{DONE -cDone : Email with RCPT TO domain not in allowed domains list is rejected immediately even if quarantine enabled}


// Spam Filter ISP - New to VersionNumber = '1.1.0.90';

{DONE -cDone : Add optional list of RCPT TO authorized emails - email will only be delivered if in list}

{DONE -cDone : Add whitelist of FROM emails in addition to domains}

{DONE -cDone : Disable Max RCPT TO by entering 0}

{DONE -cDone : Block emails with empty FROM field}

{DONE -cDone : Block emails when Email To is the same as Email From}

{DONE -cDone : Added customization response for blacklisted "Mail To" in addition to "Mail From"}

{DONE -cDone : Moved "Excluded Domains/IP entries from INI file to standalone file}

{DONE -cFix : Attempted to fix incorrect subject headers with non-ISO characters}

{DONE -cFix : Again - Exception occurred during RECEIVEMESSAGE and Exception occurred during TimerSecondTimer}

{DONE -cFix : Spelling mistakes}

{DONE -cFix : Invalid Packet Size exceptions on invalid reverse lookups}


// Spam Filter ISP - New to VersionNumber = '1.1.0.80';

{DONE -cFix : When in Service mode, edit fields in the Settings tab now accept keyboard input}

{DONE -cFix : changed all default error codes of 550 to 557 as some mail servers were not sending our rejection messages to users}

{DONE -cNew : Placed keywords in separate file, same as domain blacklist file}

{DONE -cNew : Added Blacklist of local TO emails}

{DONE -cNew : Wildcards are now allowed in most domain/email black/white lists}

{DONE -cNew : Quarantine tab - Select range of emails with shift-click}


// Spam Filter ISP - New to VersionNumber = '1.1.0.73';

{DONE -cNew : Removed the X-Library header since it was causing MessageWall to reject our emails considering them spam}

{DONE -cNew : Double-clicking on an item in the quarantine will display the email message in a window for convenience}

{DONE -cNew : Added a "Size" indication in the logs to show the received message size}

{DONE -cFix : Improved the quarantine refresh speed}

{DONE -cFix : Exception occurred during RECEIVEMESSAGE and Exception occurred during TimerSecondTimer}


// Spam Filter ISP - New to VersionNumber = '1.1.0.72';

{DONE -cFix : if email rejected by keyword match not sending correct error response to remote server}

{DONE -cFix : cannot edit custom responses}

{DONE -cFix : items quarantined even if quarantine days set to 0 if there is keyword filter match}


// Spam Filter ISP - New to VersionNumber = '1.1.0.71';

{DONE -cNew : Added option to permanently delete emails in quarantine}

{DONE -cFix : Keyword match was mistakenly case-sensitive}

{DONE -cFix : Email rejected due to content filter not quarantined}

{DONE -cFix : Ind temp files left in the TEMP directory}

{DONE -cFix : Emails are accepted again after 1st RCPT TO is rejected}



// Spam Filter ISP - New to VersionNumber = '1.1.0.70';

{DONE -cFix : Exception occurred during RECEIVEMESSAGE: Unknown Message Part Type}

{DONE -cFix : Exception - List Index out of bounds - issue when Content-Transfer-Encoding: quoted-printable and email contained only 4 dashes on a signle line}

{DONE -cFix : Keyword match was skipped if the email format was Plain Text}

{DONE -cNew : You can customize destination SMTP servers for each one of your local domains}

{DONE -cNew : Added another blacklist to block specific email addresses}

{DONE -cNew : Almost all reject responses to remote server can now be customized}

{DONE -cNew : You can now quarantine emails rather than rejecting them, allowing you to resend to users legitimate email classified as spam}


// Spam Filter ISP - New to VersionNumber = '1.0.3.63';

{DONE -cFix : Text-only email messages have several X-nnnn headers appear in the body of the email message}


// Spam Filter ISP - New to VersionNumber = '1.0.3.62';

{DONE -cNew : Always display in logs both the sender and the recipients email addresses for tracking}

{DONE -cNew : Block only if a user-selectable number of blacklists entries are found}

{DONE -cNew : Improved user interface}


// Spam Filter ISP - New to VersionNumber = '1.0.3.61';

{DONE -cNew : Filter based on country of origin.}

{DONE -cNew : Bypass keyword checking on uuencoded or base64 encoded attachments (mentioned previously).}

{DONE -cNew : Added option to whitelist IPs in addition to domains and specific emails}

{DONE -cFix : Only one attachement could be received if multiple were sent in a specific format}

{DONE -cFix : Certain emails with specific format could be left in the queue directory}


// Spam Filter ISP - New to VersionNumber = '1.0.3.54';

{DONE -cNew : Added the option to terminate connecitons if they issue more than nn number of RCPT TOs in a single session}

{DONE -cFix : Acess Violation logged right after starting SpamFilter service on NT4}

{DONE -cFix : "Excluded Domains" would still be filtered if there was a keyword match}

{DONE -cFix : SpamFilter could stop accepting all connections after they reach the maximum limit}

{DONE -cFix : Fixed several issues with SpamFilter not responding or Access Violations during shutdown}


// Spam Filter ISP - New to VersionNumber = '1.0.3.49';

{DONE -cNew : Added the option to add destination local email addresses that bypass SpamFilter's checks}

{DONE -cNew : Most settings can now be changed without stopping the SMTP listener}

{DONE -cFix : Fixed memory leaks evident after a few dozen thousand emails}


// Spam Filter ISP - New to VersionNumber = '1.0.3.40';

{DONE -cFix : Several changes to improve stability}

{DONE -cNew : Added option to disable monitoring of connections}


// Spam Filter ISP - New to VersionNumber = '1.0.3.21';

{DONE -cFix : SpamFilter Service GUI could freeze during reboot}

{DONE -cFix : Fixed EInvalidPointer crash on sites with extremely high traffic}

{DONE -cNew : Added vertical scrollbars to settings memo boxes}

{DONE -cNew : Added tray icon to show hidden service window}


// Spam Filter ISP - New to VersionNumber = '1.0.3.15';

{DONE -cFix : Missing file GeoIP.dat from distribution}


// Spam Filter ISP - New to VersionNumber = '1.0.3.14';

{DONE -cNew : We are detecting the Country of origin based on IP address and graphing email country stats}

{DONE -cNew : Settings edit boxes are no longer read-only when running as a service}

{DONE -cFix : Domains that were "whitelisted" but did not have a reverse DNS record were rejected}

{DONE -cFix : When starting SpamFilter (only occurred as service), existing msgs in queue were not processed}

{DONE -cFix : Fixed issues when stopping SpamFilter service}

{DONE -cFix : Fixed issues when logging off / loging on with SpamFilter service}

{DONE -cFix : Fixed access violations with high traffic i.e. > 200/300 concurrent connections}


// Spam Filter ISP - New to VersionNumber = '1.0.3.7';

{DONE -cFix : DNS servers running Windows' port of Bind DNS sometimes caused Invalid Packet Size exceptions on invalid reverse lookups}

{DONE -cFix : Range Check Exceptions on reverse lookup that return a NULL}


// Spam Filter ISP - New to VersionNumber = '1.0.3.1';

{DONE -cNew : We can now listen on specific IPs, just list them separated by commas, ex.: 209.26.140.2,209.26.140.3}

{DONE -cNew : Changed timeout to destination SMTP server from 5 to 60 seconds}

{DONE -cNew : Added option to filter based on domain in MAIL FROM}

{DONE -cNew : Added option to reject connections if they do not have a reverse DNS entry}

{DONE -cFix : Fixed failing to block "rcpt to" relay attempts with addresses containing a "!" if user mistakenly insert blank lines in the "Allowed Domains"}


// Spam Filter ISP - New to VersionNumber = '1.0.2.2';

{DONE -cFix : Senders were not notified if recipient email does not exist or is rejected by the destination (our own) SMTP server}


// Spam Filter ISP - New to VersionNumber = '1.0.2.1';

{DONE -cFix : Temp files in temp directory are not deleted - SpamFilter hangs after 65K files created and not deleted}

{DONE -cNew : Connections to SpamFilter are forcibly disconnected after 4 hours. Done to avoid stale idle connections}

{DONE -cNew : Added option to disable automatic online check of latest available version}

{DONE -cFix : Content Keywords with spaces are treated as if separated by commas}

{DONE -cFix : Removed "Beep" sound on exit...}


// Spam Filter ISP - New to VersionNumber = '1.0.1.77';

{DONE -cFix : Added option to log keyword rejections}

{DONE -cFix : The FQDN was being duplicated every time the settings were saved }


// Spam Filter ISP - New to VersionNumber = '1.0.1.74';

{DONE -cFix : Allow percent in address - this checkbox worked opposite as stated... }

{if checked now correctly rejects emails with % }


// Spam Filter ISP - New to VersionNumber = '1.0.1.72';

{DONE -cFix : Keyword Content Filtering - an empty line in the list would cause ALL emails to be rejected }


// Spam Filter ISP - New to VersionNumber = '1.0.1.70';

{DONE -cNew : Keyword Content Filtering - reject emails based on keywords and phrases }

{DONE -cNew : Moved logging in "logfiles" directory }


// Spam Filter ISP - New to VersionNumber = '1.0.1.58';

{DONE -cNew : Enforced minimum size for main window }

{DONE -cNew : Added more help hints }

{DONE -cNew : Added installation app. for Win32 version }


// Spam Filter ISP - New to VersionNumber = '1.0.1.57';

{DONE -cNew : Disable the Close button in service to avoid accidental closing of admin console }

{DONE -cFix : Possibly Fixed cases where duplicates emails are created by SpamFilter when fwding to smtp }


// Spam Filter ISP - New to VersionNumber = '1.0.1.54';

{DONE -cNew : Added Connections tab to view/disconnect current sessions }

{DONE -cFix : Activity log auto-returned to 1st line after 10,000 entries in log }


// Spam Filter ISP - New to VersionNumber = '1.0.1.53';

{DONE -cNew : Application teminates if access violation with listener rather than stops accepting requests }

{DONE -cFix : Emails received counter now reports correct number }

{DONE -cNew : Removed "Forward-Path" header before forwarding msg to dest smtp server }


// Spam Filter ISP - New to VersionNumber = '1.0.1.51';

{DONE -cFix : Fix Exception occurred during OnConnect on Windows98 machines }

{DONE -cFix : Changed error msg for "Closed Gracefully" - remote server disconnected us }


// Spam Filter ISP - New to VersionNumber = '1.0.1.44';

{DONE -cFix : Try to restart the SMTP threads after Access Violations }

{DONE -cFix : Added more meaningful descritptions for Error Exceptions }


// Spam Filter ISP - New to VersionNumber = '1.0.1.43';

{DONE -cFix : Again Attempted to Fix Access violation at address NNNNNNNN in module 'SpamFilterSvc.exe'. Read of address 00000000 }

{DONE -cFix : Temporarily Removed buggy Connections tab }


// Spam Filter ISP - New to VersionNumber = '1.0.1.41';

{DONE -cFix : Attempted to Fix Access violation at address NNNNNNNN in module 'SpamFilterSvc.exe'. Read of address 00000000 }


// Spam Filter ISP - New to VersionNumber = '1.0.1.40';

{DONE -cNew : Added option to run as an NT servcice (Win32 platform only) }

{DONE -cNew : Changed working library from CLX to VCL, removing need for qtinf.dll }

{DONE -cNew : Added feature to retry processing undeliverables in queue every hour }

{DONE -cFix : Added several Access Violation traps }

{DONE -cFix : Fixed problem failing to check build number online }

{DONE -cFix : Possibly Fixed a problem in processing mail with multiple "RCPT TO" headers }


// Spam Filter ISP - New to VersionNumber = '1.0.1.33';

{DONE -cFix : Fixed Socket error on checking build number online }

{DONE -cNew : Added check in local BlackList file for "Check if IP in ORBS" button }


// Spam Filter ISP - New to VersionNumber = '1.0.1.31';

{DONE -cNew : Added Max incoming SMTP connection option }

{DONE -cNew : Added Local Blacklist file in addition to DNS MAPS }

{DONE -cFix : Fixed duplicate entries in logfile }

{DONE -cNew : Check for latest build available online }

Spam Filter ISP - Copyright © 2002-2011 LogSat Software LLC - PO BOX 916340 Longwood, FL 32791 USA

Sales: sales@LogSat.com - Support: support@LogSat.com - Tel. (sales only): +1 407-650-3008