MgSMTP v0.9s - 2014.12.15. -------------------------- - Internal errors are now reported as temporary failure. - Fixed race condition bug which occurred when multiple threads were delivering messages through a forwarder mailbox. - Fixed bug with mishandling local spool objects as relay and vica versa, which could occur when the configuration changed the route from local to relay (or vica versa) when the spool object was already in queue. - Fixed incorrect parsing of MX precedence values larger than 100. - Fixed crash which occurred when compiled with FPC 2.6.2 and started in service mode. - When started in service mode, output is redirected to mgsmtp_stdout.log (in %SYSTEMROOT%\System32 or %SYSTEMROOT%\SysWOW64). - Fixed bug regarding Policies/Hosts table not being parsed case-insensitive. - Fixed PRESHUTDOWN not taking effect on Windows Vista and higher. - Improved Wine compatibility. - Implemented Win64 support. - Reject commands with non-printable ASCII characters (and disconnect client). - Domain-scope mailbox settings (valid for domain-specific domains, [Mailbox\@domain.tld] sections). - Support for alternate mailbox names using + signs ("plus aliases", e.g. "megabrutal+games@domain"). - Improved command-line parsing: not only the first argument gets parsed, and accepting '-', '--' prefixes as well (e.g. "--install"). - Added developer comment for test/debug builds. (Not seen in final release, but will turn up in Git builds.) - Changed "Client disconnected, and thread exited successfully." string to "Client disconnected.". MgSMTP v0.9r - 2012.01.15. -------------------------- - MgSMTP now supports recipient address rewriting, forwarding and remailing. These features can be enabled on local mailboxes. - The "Message-ID" headers of incoming e-mails are now logged. - If multiple recipients fail on a single e-mail, only one DSN is sent which lists all failed recipients. (Previously, individual DSNs were sent concerning each failed recipient.) - The timezone offset is now added to "Received" headers as well. - An "X-Original-To" header is added to e-mails upon being delivered to mailboxes. This records the recipient address in its original form, while "Delivered-To" only shows the primary name of the mailbox. (If the mailbox was addressed by an alias, the two headers will differ.) MgSMTP v0.9q - 2011.10.03. -------------------------- - Support for FCrDNS verification of connecting hosts. There are 4 strictness levels that can be set, on how to treat non-compliant hosts. - Support for domain-specific mailboxes, which enables a limited form of virtual hosting. - Like GET HTTP requests, now HEAD and POST requests also trigger a disconnection. - The "TimeCorrection" key is replaced with "TimeOffset", which allows to set timezones those aren't offset by a whole number of hours. - Fixed a bug in the spool's iterator loop which prevented some spool objects to be touched at all when a large number of temporarily undeliverable e-mails were queued. - The numbers and IDs of delivery threads are now recorded in the spool .DAT files as "ThreadInfo". This serves debug purposes. - A "Return-Path" header is added to e-mails upon being delivered to local mailboxes. MgSMTP v0.9p - 2011.07.17. -------------------------- - Reading from a socket times out after 5 minutes. It helps to prune down dead connections, which the process hasn't been notified of for some reason. It increases the server's reliability, because delivery threads won't stuck because of a dead connection. - Status codes are now logged in more human-readable format in the SMTP log. SMTP reply codes are now clearly viewable (previously they were incorporated in the internal status code, it required some binary math to extract them). - MgSMTP now logs the reply messages of remote servers. - MgSMTP now accepts SMTP commands in lowercase (and mixed-case) as well, as the RFC requires it anyway. - The function that handled DNS MX queries had a serious bug that came forward when the domain name to resolve was a CNAME. Now it is corrected. - Added the "NoRelayTo" value, which is the exact opposite of the "RelayTo" list: even hosts with RELAY right aren't allowed to relay to a domain that is listed in "NoRelayTo". - MgSMTP now doesn't remember the status codes of previous delivery attempts. MgSMTP v0.9o - 2011.04.07. -------------------------- - Added support for strange AUTH LOGIN attempts, when the client puts the Base64-encoded username in one line with the "AUTH LOGIN" command. This is added to support the command-line "email" client of CleanCode.org. - Made efforts to ensure WINE compatibility. Now you are able to run MgSMTP under Linux, if you really want to. Note that it's a bit of tricky to get a Windows service running with WINE, but it's possible. - Added the "TimeCorrection" key to enable setting the timezone of the SMTP server. It only affects the "Date" headers appended by MgSMTP, they'll have corrections like "+0200". "Date" headers are used by e-mail clients to show the correct send time of e-mails. Note however that MgSMTP only adds a "Date" header to an e-mail if it doesn't already have one upon receipt. - MgSMTP now disconnects HTTP agents with an error message. This is added against abuse. - Made efforts to drastically reduce the number of wasted Windows handles that could be observable after prolonged run of MgSMTP. MgSMTP v0.9n - 2010.12.20. -------------------------- - Added support for alternate port numbers. Use the "ListenPort" value to specify a list of port numbers to listen on, and set the "Port" value for a relay route to specify an alternate port for relaying. - Added support for the "PRESHUTDOWN" notification introduced in Windows Vista. Backward compatibility with older Windows versions was preserved. - EHLO is now always sent before AUTH to relay servers (if AUTH is necessary at all). MgSMTP v0.9m - 2010.12.01. -------------------------- - Introduced a feature I call "careful threading". Now all threads will work on messages those name starts with specific letters, thus they will never interfere each other. I implemented this feature, because the previously used lockfile technique wasn't safe enough with low "ThreadWait" values. Note, this new technique limits the possible number of delivery threads to 36. - Enforced the effect of "Policies\Users" (key!) setting to control user authentication. If the option is disabled, MgSMTP will ignore the "Policies\Users" section in the config file. Moreover, if there are no users listed in the config file, user authentication will be disabled anyway. If user authentication is completely disabled, MgSMTP won't even report the AUTH SMTP extension in responses to EHLO commands. - Added protection against mail relay loops. MgSMTP now counts the "Received" headers of e-mails to detect messages those are trapped in a mail relay loop. See the "MaxReceivedHeaders" setting. - The "Relay\Routes" table is now interpreted case-insensitively. MgSMTP v0.9l - 2010.11.22. -------------------------- - Added a short help text to the executable (issued by the "/?" parameter). - Added full support for the SIZE SMTP extension. (Check databytes limit when a client sends a MAIL command with SIZE parameter; check quota on RCPT command; send MAIL SIZE parameter to other servers those support.) - Added better support for 8BITMIME. (Note when received a message with 8BITMIME, then relay with 8BITMIME declaration to other servers. But still attempt to relay 8BITMIME messages in 8 bits to other servers, without any conversion, and it is considered illegal.) MgSMTP v0.9k - 2010.11.20. -------------------------- - Added a configuration option, "MaxAuthAttempts" to limit the number of AUTH attempts a client may make in one session. - The server now reports 8BITMIME support, even though it won't translate 8bit e-mails to 7bit for servers those don't support 8BITMIME. MgSMTP always relays e-mails as it receives them. - Added support for the PIPELINING extension. MgSMTP pipelines RCPT commands if the other server supports pipelining. MgSMTP v0.9j - 2010.11.18. -------------------------- - FIXED SERIOUS BUG: Upon delivery to multiple addresses through a single remote SMTP server, if the multiple RCPT commands had mixed results (some successes and some fails), MgSMTP incorrectly administered all addresses as succeded, if the DATA transaction was also successful. - A minor grammar mistake has been fixed.