SMTP Preprocessor Enhancement for corporate SMTP server Freeware!

Latest version: 1.11
Released: 10-Nov-13
Questions and suggestions

SMTP Preprocessor is a tool, which enhances functionality of corporate mail server. It receives SMTP messages before the server, changes or rejects them, and retransmits result to the corporate SMTP server. SMTP Preprocessor doesn't buffer messages, it works with messages on-the-fly. The program supports some advanced technologies of mail filtering including Greylisting and Tarpitting.

Screen shot 1
Screen shot 2

Note SMTP Preprocessor is advanced tool for mail server administrators. Never use it without good knowledge of SMTP protocol (RFC 2821).

SMTP Preprocessor can:

reject connection based on remote host IP address and DNS name (Black List), presence of reverse DNS PTR record, validity of HELO or EHLO command and connections limit;

delay initial greeting and reject responses (so-called Tarpitting);

reject MAIL command based on sender address (Black List), message size and transactions limit;

reject RCPT command based on recipient address (Private Recipients List), recipient domain name (Anti-Relaying), sender address (Restricted Senders List), recipients limit or based on Greylisting technology;

reject out-of-order SMTP command;

flexibly replace corporate SMTP server response or any SMTP Preprocessor generated response;

replace sender in SMTP envelope (MAIL command);

replace recipient in SMTP envelope (RCPT command).

The program keeps detailed and adjustable log of all SMTP events.

System requirements: Windows 95, 98, Me, NT 4.0, 2000, XP, 2003, Vista, 2008, 7, 2008R2, 8, 2012, 8.1, 2012R2.
For Windows NT 4.0 Service Pack 3 or later required.
For Windows 95 Windows Socket 2 update required.
For Windows 95, 98, Me, NT 4.0, 2000 updating of VB6 Runtime library required.

Greylisting Database Viewer (GLDBView.exe) additionally requires for Windows 95 and NT 4.0 installation of Internet Explorer 3.0 or later.

Versions history:

1.11 (10-November-13)
- fixed ability to use DNS name in ServerIP setting;
- fixed command line parsing: trailing space was interpreted as wrong parameter;
- fixed grid header display in Greylisting Database Viewer, Greylisting Database Viewer version changed to 1.01;
- improved syntax checking of IP addresses in initialization file and command line;
- added ability to start several instances of the program listening different IP addresses but the same port;
- added new command line switch /ADDRESS (/A);
- changed filename template for log files, now it includes listening IP address;

1.10 (24-August-09)
- fixed random crashes occurred on computers with some modern processors;
- fixed crashes when many connections were simultaneously rejected;
- fixed no response on first QUIT command after rejecting connection;
- improved syntax checking of MAIL, SEND, SOML, SAML and RCPT commands;
- added logging of domain name of connecting host and duration of the connection;
- added checking for commands received before initial greeting: now SMTP Preprocessor breaks connection after receiving such command;
- added configurable delay for appearance of initial greeting (new settings in [Common] section: GreetingDelay, DisableGreetingDelayForWhitelisted);
- added configurable delay for reject response (new settings in [Common] section: TarpittingDelay, DisableTarpittingForWhitelisted);
- added Recommended settings and examples section and Table of contents to documentation.

1.09 (26-August-07)
- added possibility to skip some checks for authorized sessions, added WhitelistAuthorized setting to [Common] and [Greylisting] sections of initialization file;
- minor changes in default responses;
- to improve compatibility with some SMTP servers, if MaxSize setting is set and corporate SMTP server doesn't declare SIZE SMTP extension, now SMTP Preprocessor removes SIZE parameter from MAIL command;
- fixed compatibility with Data Execution Prevention feature in Windows XP SP2, Windows 2003 Server SP1 and later supported operating systems;
- fixed processing of expired records in Greylisting database.

1.08 (29-July-07)
- added support for XEXCH50 SMTP extension;
- added new settings: RemoveSMTPExtensionsLocal, RemoveSMTPExtensionsRemote, AddSMTPExtensionsLocal, AddSMTPExtensionsRemote;
- added ability to replace CRLF sequence in multiline response;
- added Greylisting feature, corresponding section in initialization file and corresponding keys in [ResponseChanges] section;
- added separate executable file - Greylisting Database Viewer 1.00 (GLDBView.exe).

1.07 (01-March-07)
- fixed bug in parsing of multiline response on EHLO command;
- fixed handling of errors in [ResponseChanges] section of initialization file;
- minor changes in formatting of log file.

1.06 (31-December-06)
- fixed repeated response on EHLO command, which appeared sometimes on slow channel between SMTP Preprocessor and corporate server;
- fixed updating of Server address and port on UI window after automatic settings reloading;
- fixed DNS resolution for ServerIP;
- added new setting: ProcessAddressesWithoutBrackets, added MAIL.AddressSyntax and RCPT.AddressSyntax response change keys;
- extended syntax of MaxSize setting: now it may be specified also in kilobytes, megabytes and gigabytes.

1.05 (26-November-06)
- added new settings: RecipientsWhiteListRemote, RecipientsAllowListRemote, RecipientsBlackListRemote, RecipientsWhiteListLocal, RecipientsAllowListLocal, RecipientsBlackListLocal; added RCPT.BlackList.Remote and RCPT.BlackList.Local response change keys;
- extended syntax of Regular Expressions: now it is possible to combine several regular expressions with logic "AND" operation;
- added syntax checking of Regular Expressions;
- extended syntax of [SenderReplacements.Remote], [SenderReplacements.Local], [RecipientReplacements.Remote] and [RecipientReplacements.Local] sections: now key name may be comma-delimited list; fixed bug which didn't allow to use [] at the beginning of Regular Expressions in these sections;
- fixed bug, which rarely resulted in disconnection with appearance of Error 9 in Log file;
- tweaks in program code;
- fixes and additions in documentation.

1.04 (02-July-06)
- added new settings: AutoReload, IgnoreIniErrors, Timeout, MaxBadSeq;
- added automatic reloading of configuration settings after changing of initialization file;
- added loop detection feature;
- rewritten initialization file support: eliminated size restrictions, added support for multiline settings;
- improved formatting of current configuration in log file based on changes of initialization file format;
- default location of log files moved to Log subdirectory;
- minor tweaks in program code;
- some fixes in documentation.

1.03 (16-June-06)
- fixed bug in message size obtaining (first digit was lost);
- fixed routing problem for computers with several IP interfaces;
- changed syntax for LocalIPs, IPBlackList and IPWhiteList settings: Regular Expressions replaced by IP Ranges, changed default value for LocalIPs;
- changed logic for IPWhiteList: now addresses from this list don't check by IPBlackList and IPAllowList;
- added new settings: IPAllowList, SendersWhiteList, HostsWhiteList, HostsAllowList, HostsBlackList, HELOBlackList;
- added HostsBlacklist, HELO.Blacklist, HELO.NoDomain and HELO.DNSError response change keys;
- improved enhanced status codes support, added EnhancedStatusCodes setting;
- changed logic for ValidateRDNS, ValidateHELO and MaxSize;
- added support for SMTP extensions CHUNKING and BINARYMIME, added BadSeq.BDAT response change key;
- changed default response code from 554 to 454 and text advice for connections from hosts without RDNS PTR record;
- improved HELO/EHLO validation logic: now if DNS lookup for host specified in HELO or EHLO command fails, returned status code is 450 instead 550;
- added support for automatic disabling of incompatible SMTP extensions;
- added new feature to Regular Expressions which allows to match strings not matching specified Regular Expression;
- added possibility to log current settings.

1.02 (06-June-06)
- fixed bug, which led to program crash (error 5) when SMTP client sent invalid HELO command (without domain name);
- improved syntax checking of contents of initialization file;
- added SendersAllowList setting;
- added MaxSize setting, {%size%} and {%maxsize%} subsitution aliases, MAIL.Size response change key.

1.01 (16-May-05)
- fixed compatibility issues with Windows 2000 and earlier;
- minor tweaks.

1.00 (09-May-05)
- first public release.

SMTP Preprocessor distributes without installation program. Distributive package in form of self-extracting archive contains four files: PreSMTP.exe, GLDBView, readme.htm and License.txt. Detailed installation and configuration guide provided in the file readme.htm.

© Copyright 2005-2013 Sergey Merzlikin