-----------------------------------------------------------------------------
                     MDaemon Server v2.1 Release Notes
-----------------------------------------------------------------------------

Later releases have higher release letters such that Rel-C came before Rel-D
and contains some bug or problem that was addressed and fixed in Rel-D.  You
can review this page to determine all of the problems that were addressed
between releases.  This page is organized with the most recent release listed
first and gets added to whenever new bugs are found and removed.

Release C incorporates a very large number of changes (again)!

REGISTERED USERS TAKE NOTE:

DUE TO THE EXTREME NUMBER OF CHANGES IN THIS VERSION AND THE COMPARITIVELY
SHORT TESTING TIME YOU HAD BETTER BACKUP YOUR EXISTING INSTALLATION *BEFORE*
INSTALLING THIS ONE IN CASE THERE ARE ANY PROBLEMS!

Release C Build 1

  o  MD will strip "SMTP:" from the front of any address that it parses
     from downloaded mail.

  o  There's a new timeout setting in the Miscellaneous Options screen
     called "Wait XX Seconds For Protocol To Begin".  This setting allows
     you to specify the amount of time in seconds MD will wait for the
     SMTP or POP protocol dialogue to begin once a connection has been
     established.  If the protocol doesn't begin within this amount of
     time MD will give up and pass the message off to the mail gateway.
     The default setting for this new feature is 15 seconds.

  o  MD will remember the windows placement and size across sessions.

  o  To aid third party development efforts related to the USERLIST.DAT
     file MD has been altered to perform the following function when
     processing the user file.  When MD loads the user file and finds
     a blank space (decimal 32) in position 279 and a Y (decimal 89) in
     position 280 it will assume that the record's pop password field
     contains unencrypted text.  MD will then encrypt the text using it's
     internal encryption method.  This will allow third party programs
     to enter records into MD's USERLIST.DAT file and not have to worry
     about encrypting the POP password field.  MD will do it automatically.

  o  There's a new option in the Miscellaneous screen entitled "Force
     Message-ID Header In All Messages".  If a message arrives which doesn't
     already have a Message-ID value then MD will insert one.

  o  The mailing list editor has a new option associated with cracked mail.
     The option is called "Generate A Unique Message ID For Each Copy".  If
     selected MD will make sure that each copy of the list message gets a
     unique Message-ID value.

  o  READ CAREFULLY:

     The behavior of the scheduler has been altered slightly which will make
     it much more powerful.  If you use the simple scheduling method to
     script your dialup's MD will require at least one entry PER DAY in the
     scheduled time listbox in order for that day to be eligible for simple
     scheduling.

     For example:

     Suppose you want to script 45 minutes between dialup sessions but only
     on Monday thru Friday.  You would need to enable the Simple Scheduling
     option and enter 45 minutes into the control and then enter at least
     one scheduled time for each day (Monday, Tuesday, Wednesday, Thursday,
     and Friday).  Since there wouldn't be a scheduled time for Saturday
     or Sunday those days would be exempt and would not trigger a remote
     mail session.

     The time you use when you setup your trigger days doesn't matter.  The
     simple scheduling algorithm doesn't care what time you use for a day -
     it just checks if an entry is present for that day or not.  The simple
     scheduling countdown always starts immediately when the option is
     activated.

  o  When MD computes UIDL numbers for messages in response to an incoming
     POP session MD will include a hash of the message so that there is
     no chance that the same UIDL will be used more than once in the mailbox.
     Previously, a very slim chance existed for duplicate UIDL's.

     NOTE:  Due to the change in the UIDL algorithm users who are storing
     mail on the server based upon the value of the UIDL string will receive
     the stored messages again since the UIDL computed by MD will not match
     the previous one stored in the mail client.

  o  The "Maximize Use Of This Connection Profile" has been altered again.
     Previously this feature would trigger itself even if MDaemon owned
     the RAS session.  This feature is supposed to make use of RAS sessions
     which are started by programs other than MDaemon, so the code has been
     modified such that only sessions created outside MDaemon will trigger
     the maximized use algorithm.

  o  The RAS sub-system in MDaemon has been enhanced as follows:

     After MDaemon starts a RAS session it will begin monitoring the state
     of the session (imagine that <g>).  If another program (or a user at
     the keyboard) shuts down the session MDaemon will detect this and reset
     it's state buffers accordingly.  Previously MD did not monitor the state
     of the connection once it had been established and thus if another
     program shut down the connection MD would not detect it.

  o  A new option was added to the Suppression File dialog.  It reads "Refuse
     To Accept Mail During SMTP Session".  If you enable this switch then the
     addresses listed in the suppression file will be checked during the
     SMTP session when the MAIL FROM <user@domain.com> SMTP instruction is
     passed.  This way the message will be stopped cold right there and will
     not be accepted at all.  Usually, messages from suppressed users are
     accepted but MD will refuse to deliver them.  Now you can force MD to
     not even accept the message in the first place.  This option is not
     compatible with the "Inform Sender Of Message Rejection" option.  That
     option requires that the message file be accepted by MD in order to
     operate.

  o  If you want to get a listing of the files present on a catalog you
     can send a message to "mdaemon@altn.com" and place "dir catalog_name"
     in the message body.

  o  A message requesting a non-existant magic name from a catalog will
     result in a listing of the valid files from the catalog being sent
     to back to the requesing address.

  o  A problem was fixed which was causing the list editor to fail to report
     the "Read Only" and "Private" settings correctly.

  o  A bug in the system tray popup menu was removed.  It was causing the
     menu to track itself improperly.

  o  A bug was removed that was causing MDaemon to count itself toward the
     maximum account limit.  

  o  A bug was removed in the IP Caching code that was causing MD to fail
     to cache some unknown domains to the gateway IP (if you have that
     switch set).

  o  A bug was removed which was causing MD to not append footer text to
     list mail if the list mail was pulled from a remote POP source.

  o  The "Maximize Use Of This Connection Profile" switch wasn't displaying
     the timeout value previously set but was always showing the default
     1 minute.  It remembered and used the correct setting but never displayed
     it on the screen.  This has been fixed.
  
Release B Build 1

  o  Ok, in the Miscellaneous Options screen there has been for a long time
     an option called "Force Reply-To:".  If this switch is set MD will
     place a Reply-To field in messages that don't have one.  The value MD
     uses is taken from the FROM: field.  This option wasn't working
     properly when mail was downloaded from POP ISP mailboxes.  It's always
     worked right with live SMTP.  It works right with both now.

  o  The "Honor Requests For Userlist Information" switch is working now
     in the Miscellaneous Options screen.  I can't believe I put this in
     there but forgot to write any code to make it work!  Sorry!

  o  If for some reason you want MDaemon to startup full screen you can
     set the following switch in the INI file:

     [Special]
     StartMaximized=Yes (the default is No)

  o  There's a new set of controls in the POP3 Mail Source screen under the
     Parsing/Routing tab.  The controls allow you to specify a header which
     MDaemon will use to de-duplicate the download queue.  The obvious
     header to use is the MESSAGE-ID but you can use any header you want.

     Sometimes mail is delivered to an ISP and multiple copies are generated
     by the ISP and placed in the POP mailbox (this usually happens when
     someone sends mail using carbon copies to multiple people at your
     domain).  Thus when MD connects and downloads these messages unwanted
     duplicates are sent to your users.  Now MD will remember the value of
     the MESSAGE-ID header (or whatever other header you might care to use)
     and remove duplicates across the entire download session based on the
     values found in this header.  Currently, there's no way you can control
     what happens to these duplicate messages; they are simply deleted
     immediately after they are downloaded; however, MD doesn't check for
     duplication until AFTER the "Place A Copy Of All Downloaded Mail Here"
     switch is checked and honored.  So, if you use this safety feature you
     will be able to inspect these duplicate messages.
         
     This should finally put to rest the duplicate message problems which
     several POP download based users have been frustrated over.  Thanks
     for your patience.

  o  The "Resent-To:" header has been added to the list of headers which
     MD will parse when it downloads mail from a POP mail source.

  o  An error was fixed which was causing some settings in the account
     editor to not save to disk when the account was first created.

  o  A screen will popup which will ask you for a timer interval if you
     click the "Maximize Use Of This Connection Profile" switch in the
     RAS editor.  This will allow you to set whatever timer value you
     want MD to use when monitoring a RAS profile for maximized use.
     
  o  The edit control in the TCP Connection screen has been replaced with
     a listbox control.

  o  An error was found wherein MDaemon would not lock files which it was
     transferring via MultiPOP.  If a user tried to POP in and collect
     a message which was still being transferred via MultiPOP they would
     get multiple copies of a message which said something to the effect
     of "Entire Message Not Transferred".  Now MDaemon will properly
     lock MultiPOP messages while they are in transit - sorry.

  o  A new way of scheduling connections has been added to the Send/Receive
     Scheduler screen.  Using the "Simple Scheduling" control you can
     define an interval in minutes which MDaemon will use between remote
     mail processing events.  This may seem redundant at first since the
     slider gauge on the Router window can do the same thing but the
     difference here is that the slider gauge event is rigidly fixed at
     the intervals you specify.  This new control will reset it's timer
     event anytime remote processing is triggered regardless of the source
     of the trigger.

  o  Mailing list welcome files are now parsed and handled similar to the
     auto-response scripts.  This means that your mailing list welcome
     files can now incorporate any of the macros that auto-response
     messages might contain - including the special %macro% ones!
  
  o  An error was fixed which was causing MDaemon to sometimes pick the
     wrong RAS profile when the RAS editor screen was constructed.

  o  The Router display window which shows you what MDaemon is doing has
     been changed from an Edit control to a plain ListBox control.  This
     should result in a larger volume of text being displayed before MD
     must clear the control.  It also seems to be much faster when session
     windows update the display.  You can control the amount of memory
     MDaemon will use for this control by setting the following parameter
     in MDAEMON.INI:

     [Special]
     MaxRouterLines=5000 (the default is 5000 lines between clearings)

  o  Previously, it was possible to enter a value of "0" in the "Make
     This Many Attempts To Establish A Session" switch in the RAS editor.
     This resulted in MDaemon not dialing the ISP.  I know I've fixed this
     before but additions to the program have resulted in rewriting alot
     of this code in the past months.  Anyway, a minimum value of "1"
     will now be imposed.

  o  Support for 3 new semaphores has been incorporated to aid third party
     development efforts:

     HANGUPR.SEM - a "rude" hangup of any session that MDaemon may have
       initiated with an ISP.  This is an immediate and unconditional
       hangup without regard to mail sessions which may be in progress
       across the connection so watch out!

     HANGUPG.SEM - a "graceful" hangup request.  This semaphore will cause
       MDaemon to drop the connection at the earliest opportunity (the
       instant there are no longer any mail sessions using the connection).

     QUEUERUN.SEM - MDaemon makes this semaphore just before it processes
       the mail queue.  The semaphore file will contain a single line of
       information - the datestamp of when the queue run began.  MDaemon
       does not remove this file but it will overwrite it at each queue
       run.  This provides a crude mechanism which other processes can
       use to insure that MDaemon is up and running properly.

  o  MDaemon will no longer perform an exhaustive domain alias translation
     when a message arrives at the server.  By this I mean the following:
     suppose you have domain aliases set up like these (the LOCAL and REMOTE
     settings don't matter for this small example).

     frank.com = bill.com
     bill.com = mart.com
     mart.com = arvel.com

     Formerly, "user@frank.com" would end-up as "user@arvel.com".  Now it
     will end-up as "user@bill.com" which is what is expected.  Please note
     that a further translation from "user@bill.com" to "user@mart.com"
     will still occur when MDaemon DELIVERS the message in the next queue
     run but when the message is delivered TO MDaemon such an exhaustive
     translation will not occur.  The best thing to do is avoid recursive
     or multi-layered aliases whenever possible.

  o  A problem in the expander engine was preventing MDaemon from expanding
     out messages that were to multiple mailing lists.  The second mailing
     list to which the message was addressed consistently generated an
     "unknown user" message to the postmaster.  This problem has (finally)
     been fixed.  I'd like to thank Steve Worden of BizTech (www.biztech.net)
     for his patience in this area - he's been waiting half a year for me
     to get around to this one.

  o  MDaemon was running the Post Connection Process each time the process-
     ing interval expired rather than just once after the RAS connection
     was established.  Use the Pre-Post Process controls in the Setup->
     Primary Domain screen if you need to execute a process before each
     queue run.

  o  When the USERLIST.SEM semaphore file is detected MDaemon will rebuild
     the EVERYONE mailing list as well as reload the user database.

  o  The POP3 Mail Source parsing engine has been totally re-written in
     an attempt to both speed up the processing time involved and to
     make more efficient use of the many options available with this
     feature.

  o  A problem was found and removed which was causing Mdaemon to ignore
     the PROCNOW.SEM semaphore file.  This file is used internally when
     Mdaemon needs to initiate it's own mail processing events.  This
     was the cause of the priority mail feature not working.

  o  The Domain Alias screen has a new button called "Advanced".  Clicking
     this button brings up a new screen where you can specify your
     Outbound Domain Translation settings.  If you turn this feature on
     and specify a domain name then any mail which arrives at the server
     FROM a local user *AND* TO a remote user will have the domain name
     of the FROM, REPLY-TO, and RETURN-RECEIPT-TO headers changed to the
     one specified.

     For example, if your local domain name (the one in Setup->Primary
     Domain) is "home.com" but on the Internet and on your ISP people send
     mail to you by using "real-domain.com" then you will want to use this
     feature.  It will allow you to use "home.com" on your local LAN but
     will change all references to "home.com" to "real-domain.com" when
     a message needs to leave your domain to get delivered.  It will not
     change the domain name if the message is TO: someone at "home.com".
     This way, local traffic will not be altered.

     Use of this feature in combination with the "Replace All Domain Names
     With This One" control in the POP3 Mail Source screen can greatly
     simplify the use of POP3 ISP hosts for mail collection.

Release A Build 1

  o  Newly created mailing lists must contain at least two members.

  o  The UNSUBSCRIBE command can, like the SUBSCRIBE command, accept an
     optional address on the command line.

     Ex:  UNSUBSCRIBE groupname me@mydomain.com

  o  MDaemon has a setting in the RAS editor called "Maximize Use Of This
     Connection Profile".  Formerly, when this switch was set MDaemon would
     check for and use the specified connection (if it was active) once every
     minute.  Now you can control this via a setting in the INI file.  I
     didn't have time to work it into the interface but the setting for this
     is:

     [Timeouts]
     MaximizeConnection=xx

     You can use this setting to override MDaemon's default of 1 minute
     between checks for this profile.  The value specified here is in
     minutes.  If you change this value you *will* have to restart MDaemon
     for the change to take effect.

  o  There's a new switch in the Miscellaneous Options screen that allows
     you to configure your server for private use.  You can switch on the
     "Refuse To Accept Mail For Non-Local Addresses" if you don't want your
     system to be used as a pass-thru.  Of course, domain and account
     aliases and sub-domain names are considered when determining if an
     address is local or not.  Additionally, this feature has no effect
     if the message originates FROM a local user or any valid alias thereof
     (they can send to anybody).

  o  A new set of controls has been added to the NT System Service screen.
     These controls allow you to specify a heirarchy of services which
     must start before the MDaemon service does.  These services are
     called dependancy services.   One dependancy service that must start
     before MDaemon is the RAS service.  Typically this service is called
     "RasAuto" however some installations have reported it under a variety
     of other names.  Using these new controls you can specify whatever
     services you want started before MDaemon.

  o  A spelling mistake was reported and corrected in which "Feb" was
     spelled "Fed" (must've been agonizing over tax time again).

  o  The POP3 Mail Source screen has been converted to a tabbed-dialog.

  o  The "Parsing/Routing" tab on the POP3 Mail Source screen has a
     new set of controls:

     The "Replace All Domain Names With This One" switch allows you to
     specify a domain name that *ALL* recipients parsed from downloaded
     mail will be instantly converted to.  This will save you the trouble
     of, for example, having to create dozens of domain name aliases
     to handle mailing list traffic downloaded from an ISP POP source -
     just set this switch and have all domain names parsed from every
     message transformed into whatever domain name you want (your primary
     one for example).

  o  The maximum password length in the POP3 Mail Source screen has been
     increased to 50 characters after we were made aware of some ISP's
     which impose very long password strings.

  o  It's possible to set the "Keep Session Alive For" setting to 0 minutes
     in the RAS Dialup/Dialdown screen.  Setting the connect time to 0 will
     force the server to hangup as soon as possible after processing mail
     collected from a remote source.

  o  Some additional diagnostic messages will be included in each session
     log to help trouble-shoot any problem connections.

  o  The controls which allow you to set defaults for the EVERYONE mailing
     list have been removed from the Miscellaneous Options screen.  They
     were incomplete anyway.  Now all the settings for this mailing list
     are remembered from session to session.  You need only setup the
     EVERYONE mailing list the way you want it using the mailing list editor
     (like you would any other mailing list) and MDaemon will remember the
     settings from session to session.

  o  When downloading mail from a POP mail source on your ISP a parsing
     problem with addresses that have comments *and* comma's inside those
     comments was causing errors.  This has been fixed.

  o  The auto-extraction engine has been totally reworked both for
     performance and to better handle the many different ways mail clients
     use MIME headers to specify an attachment.  If your accounts use the
     auto-decode feature you should see an improvement in the number of
     attachments MD is able to handle and extract.  Finally, the new
     engine will facilitate handling new encoding methods in the future.

  o  The source of a potential buffer overrun was found and removed.

  o  A new switch is available in the Miscellaneous Options screen which
     allows you to select whether or not you want your server to honor
     the USERS command and send your userlist information to the requesting
     system.

  o  The Priority Mail screen has a new button called "Exceptions" which
     will allow you to define field/value combinations which will make a
     message an exception to the priority mail settings.  This will give
     you more flexible control over the use of this feature.

  o  Support for a special catalog called "Public" has been added.  MDaemon
     will create this catalog automatically on server startup if it does
     not already exist.  You can place files into this catalog which will
     be made available without password protection.  Files can be grabbed
     from this catalog by simply writing an email message to mdaemon@domain.com
     and specifying "get filename.txt" in the body of the message.  Note
     that the public catalog doesn't require you to specify the name of the
     catalog or a password in order to get the file.

  o  When you press the right mouse button on the tray icon a menu will
     popup.  The menu allows you to perform various standard functions
     as well as lock the server console.  If you wish you can select "Lock
     Server" and enter a password.  To bring the interface back up you will
     have to enter the password again.

     NOTE: The tray popup menu is incomplete as of this release.  Although
     it is completely functional I am aware of a placement bug in which
     the popup menu sometimes appears in an unexpected location.  You don't
     need to report this as a bug if you encounter it.

-END-
