
=head1 NAME

XMail Change Log as of Version 1.27

[L<top|"__index__">]

=head1 CHANGE LOG

=head2 Feb 25, 2010 v 1.27

=over 4

=item *

Support for using a chain of SSL certificates, instead of a single one.

=item *

Fixed SMTP explicit routing address parsing.

=item *

Fixed a bug that made XMail incorrectly handle extremely long header line lengths.

=item *

Faster shutdown time on Unix systems.

=item *

Tweaked DNS resolution to cope with lame name servers.

=item *

Support for greater than 2GB sizes in POP3 server and PSYNC.

=item *

Safer temporary file name generation.

=item *

Made the temporary directory on Unix, configurable via the "XMAIL_TEMP" environment variable.

=item *

Fixed a bug that was caused by the SSL code triggering the XMail binding locking code
after XMail has already cleanup.

=item *

Fixed a bug in the SMTP external authentication.

=item *

Fixed Unix syslog logging facility to consider different logging levels.

=item *

Changed SMTP HELP response code to 214.

=back

=head2 Jun 27, 2009 v 1.26

=over 4

=item *

Fixed a bug where STARTTLS was resetting the session too much, by canceling
certain flags/options read inside the SERVER.TAB.

=item *

Fixed a bug that happened if a message filter mistakenly remove the message file
from under XMail control.

=item *

Fixed a bug that make XMail to wrongly report virtual memory sizes on 32 bit
systems with larger than 4GB VM space.

=item *

Changed the line termination used to store messages into the mailboxes
of Unix versions of XMail. Now messages are stored with the OS native LF
termination, instead of the RFC CRLF that was used before.
This allows other Unix softwares working together with XMail to not be
confused by the extra CR present in the line termination.

=item *

The "smtprelay" behaviour with respect to 5xx responses from one of the servers
in the relay list, has been changed. Now a 5xx response will stop the
processing, instead of iterating on the remaining servers of the list.

=item *

Avoid to crawl all the USER.TAB file during a "userlist" CTRL command.

=item *

Fixed a bug that allowed non-RFC characters inside domain names.

=item *

Fixed OSX Leopard build error.

=item *

Added "timeo" option to flags execution.

=item *

Added "NoAuth", "EnableVRFY" and "EnableETRN" settings inside IP properties.

=back

=head2 Jan 3, 2008 v 1.25

=over 4

=item *

Added the ability to select SmtpConfig-IP options by local port too (SmtpConfig-IP,PORT).

=item *

Added a new -YT command line option to set the timeout used by a POP3 client connection.

=item *

Fixed a bug in the RFC822 ATEXT token definition.

=item *

If the recipient domain does not have an MX record, and does not have an A record,
now XMail bounces immediately.

=item *

Fixed OpenSSL connection shutdown to avoid RST packet generation.

=item *

Changed SMTP AUTH LOGIN authentication to support the optional inline parameter.

=item *

Added IPV6 support. New command line options are available to select XMail's
behaviour with respect to IPV4/IPV6 compatibility.

=item *

Fixed/strengthened RFC address parsing.

=item *

Drop the SMTP connection is case of timeout.

=item *

Fixed a bug caused by the new strict host/doman name check added in 1.24 (in the
SMTPGW.TAB parsing).

=item *

Completely changed the DNS resolution code.

=item *

Do not try the A-record delivery in case of temporary DNS/network errors.

=item *

Added remote MTA message ID to SMAIL logging.

=item *

Added a new "POP3S" option to the POP3LINKS.TAB file, to allow connections
to full POP3S remote servers.

=item *

Fixed a bug in the SMTP Outbind feature.

=item *

Changed POP3 log format to add information about the success or failure of the operation,
and to report the number of messages and the total size of the mailbox (in
case of successful login).

=item *

Added a new "Pop3LogPasswd" SERVER.TAB variable to control if POP3 passwords
are logged into the POP3 log file.

=item *

Added a new "SmtpNoTLSAuths" SERVER.TAB variable. It allows to specify
which SMTP authentications are allowed in non-TLS mode.

=item *

Fixed a small memory leak affecting users using the "OutBind" feature.

=item *

Removed the "SMTP-TLS" SERVER.TAB variable and replaced with "SmtpGwConfig"
that supports the format described in "SMTP GATEWAY CONFIGURATION". The
"SmtpGwConfig" allows the user to specify global options for remote SMTP
connections.

=item *

Added $(RRCPT) macro to SMTP filters.

=back

=head2 Jan 1, 2007 v 1.24

=over 4

=item *

 ********************************************************************
 * Removed the DynDNS feature.
 ********************************************************************

=item *

Added the new "OutBind" options for PSYNC accounts. It allows to specify the
IP of the interface to be used when talking to the remote server.

=item *

Added a new "OutBind" option to the "SmtpConfig" SERVER.TAB variables.
It allows to specify the IP of the interface to be used when talking to the
remote server.

=item *

Added a new SMTP.HNPROP.TAB file to drive remote peers SMTP properties
through host name.

=item *

Added command line options to disable single services.

=item *

 ********************************************************************
 * The external SMTP authentication (both server and client) changed.
 * Changed is also the format of the SMTPEXTAUTH.TAB file.
 * The external SMTP client authentication has been removed.
 ********************************************************************

=item *

Added the new "Leave" options for PSYNC accounts, that allows messages to be left
on the remote server. This option only works if the remote POP3 server supports
the UIDL command.

=item *

Fixed a bug in the mailbox size check between SMTP and SMAIL layers. This
resulted in EFULL errors never returned at SMTP level.

=item *

Fixed a bug in alias resolution for aliased users inside aliased domains.

=item *

 ********************************************************************
 * SSL support has been added. See the "SSL CONFIGURATION" section of
 * the documentation to find out how to properly configure XMail.
 * You MUST do this in order to have SSL support working.
 ********************************************************************

=item *

 ********************************************************************
 * The format of the "DefaultSMTPGateways" SERVER.TAB variable, of the
 * SMTPFWD.TAB relay list, and of the "smtprelay" list changed
 * (separator is now the ';' character and can have options attached,
 * separated by comma).
 * You need to adjust it according to the new format
 ********************************************************************    

=item *

Added new "EnableCTRL-TLS", "EnableSMTP-TLS" and "EnablePOP3-TLS" SERVER.TAB variables.

=item *

Added SMTP gateway options to the "DefaultSMTPGateways" variable, to the
SMTPFWD.TAB file, and to the "smtprelay" command inside the mail processing files.

Added a new "WantTLS" option to the "SmtpConfig" SERVER.TAB variables.

=item *

Added a new "EaseTLS" option to the SMTP.IPPROP.TAB file.

=item *

Added a new 'S' SMTP auth option to bypass a "WantTLS" configuration.

=item *

Added "SSLUseCertsFile", "SSLUseCertsDir", "SSLWantVerify", "SSLAllowSelfSigned",
"SSLWantCert" and "SSLMaxCertsDepth" SERVER.TAB variables to configure XMail's SSL behaviour.

=item *

Added STARTTLS SMTP support.

=item *

Added STLS POP3 support (and the new CAPA command).

=item *

Added SMTPS support.

=item *

Added POP3S support.

=item *

Added CTRLS support.

=item *

Added FAPOP, STLS and FSTLS authentication options to the POP3LINKS.TAB file..

=item *

Added a new "SMTP-TLS" SERVER.TAB variable to tell XMail if it has to try to negotiate
TLS sessions with remote SMTP servers.

=item *

Added SSL support to the CTRL protocol and to the CtrlClnt client.

=back

=head2 Nov 19, 2006 v 1.23

=over 4

=item *

Changed the filter log to include the full exec string (separated by semicolon).

=item *

Fix CTRL "poplnkadd" and "poplnkdel" to accept local domains strings starting
with special characters.

=item *

Added (finally!) a command line makefile (Makefile.win) to build the whole XMail
package without the usage of the MS VC++ IDE.

=item *

Reject a CTRL "domainadd" command if an alias domain already exists with the same name.

=item *

Changed the CTRL "usergetmproc" command to allow the caller to specify if it
is the user or the domain one that is wanted. Or a merges of both, if "DU" is
specified in the optional 3th parameter.

=item *

Changed the CTRL "usersetmproc" command to allow the caller to specify if it
is the user ('U') or the domain ('D') one that is wanted to be set.

=item *

Added complex/multiple macro substitution capabilities to external programs
argoument lists.

=item *

Added strictier SMTP address validation.

=item *

Check the mailbox size for every message coming into the mailbox (before it was
only done during the SMTP phase).

=item *

Do not try to send to the 'A' record if the recipient domain does not exist at all (NXDOMAIN).
Bounce immediately instead, avoiding lengthy retry policies.

=item *

Added the "wlex" flag to filter lines (works for the SMTP ones only), to exclude
execution of the filter line in case the client IP is white-listed inside the
ipprop file.

=item *

Added the post-RCPT SMTP filter, that is called before XMail acks the client recipient.
A new "RCPT=EFILTER" long entry is emitted in case a recipient is rejected by a filter.

=item *

Added @@CRCPT (current recipient) and @@FROM (sender email address) macros to SMTP
filter substitution.

=item *

Allow cmdaliases to work on aliased domains. Before a cmdalias defined on an
alias-target domain was not working before the cmdalias check was done before
the alias domain resolution.

=item *

Added the ability to bypass the SMTP.IPMAP.TAB inclusion using SMTP authentication.

=item *

Added a new SERVER.TAB variable "SMTP-IpMapDropCode" to control the drop code
to be used for IPs listed inside the SMTP.IPMAP.TAB. Like other codes inside
XMail, 1 means drop now, 0 means allow if auth, and -N means add N seconds delay.
An immediate drop will emit a "SNDRIP=EIPBAN" log entry.

=item *

Added a new SERVER.TAB variable "SmtpMsgIPBan" to control the SMTP message returned
in case of SMTP.IPMAP.TAB inclusion.

=item *

Added log message when the maximum number of SMTP/POP3/CTRL threads is hit.

=item *

Fixed documentation about the spool info line and the SMTP filters info line.

=item *

Fixed a build problem on OpenBSD related to the lack of c_r (reentrant C library) library.

=item *

Fixed greetings message to be RFC2821 compliant (server host must be first).

=item *

Fixed a NAME_MAX build error ond *BSD and Solaris.

=item *

Added a "Pop3ScanCur" USER.TAB variable to control the scan of the Maildir's "cur"
directory during POP3 message list build. Now XMail only scans the "new" directory
as default.

=back

=head2 Oct 12, 2005 v 1.22

=over 4

=item *

The POP3 before SMTP authentication is now correctly interpreted as real SMTP authentication,
by the mean of @@USERAUTH.

=item *

'B<ATTENTION>': Fixed a possible cause of buffer overflow in the XMail's sendmail binary.

=item *

Changed the DNS MX resolution to allow better handling of partially broken DNS servers
configuations.

=back

=head2 Jan 9, 2005 v 1.21

=over 4

=item *

Added a fix for 64 bits porting compatibility.

=item *

Added the ability to exclude filters from execution in case of authenticated user.
By pre-pending the filter command token with a token containing "!aex", the filters
won't be run if the user authenticated himself.

=item *

Added @@USERAUTH macro even to standard in/out filters (before it was only defined
for SMTP ones).

=item *

Added a new "NoSenderBounce" variable inside the SERVER.TAB file, to enable
XMail generated bounce messages to have the empty SMTP sender ('MAIL FROM:<>').

=item *

Added a new "SMTP-MaxErrors" variable inside the SERVER.TAB file to set the maximum
errors allowed in a single SMTP session (default zero, unlimited).

=item *

Added a "LastLoginTimeDate" variable to the "userstat" CTRL command.

=item *

Added external aliases support in the CTRL protocol.

=item *

The MESSAGE.ID file is now automatically created, if missing.

=item *

Changed the logic used to treat domain and user MAILPROC.TAB files. Before, a user's
MAILPROC.TAB was overriding the domain one, while now the rules are merged together,
with domain's ones first, followed by user's ones.

=item *

The maximum mailbox size of zero is now interpreted as unlimited.

=item *

Fixed XMail's sendmail to detect non-RFC822 data and handle it correctly.

=item *

The IP:PORT addresses emission in spool files (and Received: lines) has been changed
to the form [IP]:PORT.

=item *

Added filter logging, that is enabled with the new -Qg command line option.

=item *

Fixed an error message in the SMTP server, that was triggered by the remote client
not using the proper syntax for the "MAIL FROM:" and "RCPT TO:" commands.

=item *

Fixed explicit routing through SMTPGW.TAB file.

=item *

Fixed a possible problem with file locking that might be triggered from CTRL commands
cfgfileget/cfgfileset.

=item *

Added a check to avoid the CTRL server to give an error when a domain created with
older versions of XMail does not have the domain directory inside cmdaliases.

=item *

The SMTP server FQDN variable should be set to the value of "SmtpServerDomain", when
this is used inside the SERVER.TAB file.

=back

=head2 May 30, 2004 v 1.20

=over 4

=item *

Fixed a possible memory leak and a possible source of crashes.

=back

=head2 May 29, 2004 v 1.19

=over 4

=item *

Implemented the "filter" command for custom mail processing (MAILPROC.TAB, cmdaliases
and custom domains).

=item *

If "RemoveSpoolErrors" is set inside the SERVER.TAB file, messages are never frozen.
Before there was a special case (delivery failure and delivery notification failure)
that could have lead to frozen messages.

=item *

Made "aliasdomainadd" to check for the existence of the alias domain (and reject
the command if existing).

=item *

Introduced a new environment variable recognized by XMail (XMAIL_PID_DIR), to let
the user to specify a custom PID file directory (this is for Unix ports only).

=item *

Implemented ability to stop custom mail processing upon certain exit codes from
external commands execution.

=item *

The SPAMMERS.TAB check is now bypassable (see doc for details).

=item *

'B<ATTENTION>': Changed the "aliasdomainlist" syntax and output format (see doc for details).

=item *

Made (on Unix setups) the PID file name to be dependent on the daemon file name.

=item *

Implemeted a domain-wise MAILPROC.TAB and extended its "redirect" and "lredirect"
commands to support account specific (USER@DOMAIN) and domain targets (DOMAIN).

=item *

Implemented SMTP filters to allow users to reject the SMTP session before and
after the remote client data has been received.

=back

=head2 Mar 27, 2004 v 1.18

=over 4

=item *

Restructured the external program execution environment on Unix ports. Simplified,
as a consequence of this, the system dependent portion of XMail (SysDep*).

=item *

Fixed a bug in the address range parsing (x.y.w.z/s).

=item *

Fixed the alias lookup to perform a better "best match" wildcard selection.

=item *

Fixed a bug in the DNS resolved that made XMail to not correctly handle domain CNAMEs.

=back

=head2 Sep 14, 2003 v 1.17

=over 4

=item *

Added Bcc: removal from message headers in XMail's sendmail.

=item *

Added PSYNC logging (-Yl).

=item *

Added domain completion to XMail's sendmail when the specified sender address (-f or -F)
does not contain one. The environment variable (or registry in Windows) DEFAULT_DOMAIN is
looked up to try to complete the address.

=item *

Fixed a bug in the return code of SysAccept() in all Unix versions.

=item *

Fixed a bug that was triggered by external command and filter exiting soon. XMail was not
able to correctly sync with the child process by losing it. This apply only to Unix
versions of XMail.

=item *

A notification message is now sent to the sender if the message is handled with
"smtp" or "smtprelay" commands and a permanent error happen when sending to the
remote SMTP server.

=back

=head2 Jul 8, 2003 v 1.16

=over 4

=item *

Added a new configuration file "smtp.ipprop.tab" to be able to specify peer IP based
configuration option, like for example IP white listing against IP checks.

=item *

'B<ATTENTION>': The filter return code has been changed and new return codes are
expected to be returned by filters. Please che the documentation and update your
filters before starting to use the new version.

=item *

Added the ability to specify a custom error message for filters.

=item *

Fixed a bug in the string quoting function that showed up when the string was empty ("").

=item *

Changed the order used by XMail to check the mailer domain. Now MX check is performed
first, then A record check. This caused a slow down for domains having MX records but
not A records.

=item *

Added two new Received: types to give the ability to hide client information if
the SMTP client does authenticate with the server.

=item *

Added the rejection map name inside the SMTP log file in case of SNDRIP=EIPMAP error.

=item *

Modified XMail's sendmail to add the RFC822 Date: header if missing.

=item *

XMail now uses the name of the executable ( without .exe ) to both register the service
name and fetch registry variables.

=item *

The POP3 server now picks up messages even from the Maildir's "cur" subdirectory.

=back

=head2 May 3, 2003 v 1.15

=over 4

=item *

Implemented a new filters feature that enable the user to stop the selected filters
list processing upon receival of certain exit codes.

=item *

Fixed the wrong log file name generation when the daylight time is active.

=item *

Fixed a bug inside the DNS MX resolver.

=item *

Fixed a bug ( Windows OS bug ) that made XMail unable to create domains starting
with reserved device names ( COM#, LPT, PRN, CON, ... ). So, for example, a domain
named "com4.domain.org" couldn't be created because of this naming conflict.

=item *

Fixed a bug that made XMail to not apply filters for local mailing list.

=item *

Fixed a bug that made XMail to crash under certain conditions.

=back

=head2 April 2, 2003 v 1.14

=over 4

=item *

Added a "Server:" field to the notification message. It'll report the remote SMTP server
host name and IP that issued the error. It will not be present if the error does not
originate from a remote SMTP server.

=item *

Added a new command line parameter -MD to set the number of subdirectories allocated
for the DNS cache files storage.

=item *

Messages with non RFC822 conforming headers are now handled by the PSYNC code.

=item *

'B<ATTENTION>': The filter architecture has been completely changed. To correctly
update to this version you have to create two empty files "filters.in.tab" and "filters.out.tab"
inside the $MAIL_ROOT directory. Please refer to the documentation for more information
about the new filter architecture. If you are not currently using filters, the simple
creation of the two files listed above will be sufficent.

=item *

'B<ATTENTION>': The internal spool file format is changed with the new line added
( the 1st one ) that contain various message information. Filters that rely on the
internal spool file format must be changed to match the new structure.

=item *

Fixed a bug that made XMail to not correctly report zero sized files inside the mailbox.

=item *

Added file size to CTRL's "filelist" command.

=item *

Fixed a connect-error reporting bug on Windows platform.

=back

=head2 January 25, 2003 v 1.12

=over 4

=item *

Better check for user/domain names.

=item *

Changed search pattern for filters. Now a domain name is scanned for all sub-domains.

=item *

Fixed a boundary check inside the Base64 decoder.

=item *

Added the client FQDN inside the SMTP log file in case the RDNS check is enabled.

=item *

Added a new SERVER.TAB variable "SmtpMsgIPBanSpammers" to set the message that is sent
to the SMTP client when the client IP is listed inside the file SPAMMER.TAB.

= item *

Added a new SERVER.TAB variable "SmtpMsgIPBanMaps" to set the message that is sent
to the SMTP client when the client IP is listed inside one of the "CustMapsList".

=item *

Added a new SERVER.TAB variable "SmtpMsgIPBanSpamAddress" to set the message that is sent
to the SMTP client when the client IP is listed inside the file SPAM-ADDRESS.TAB.

=item *

Fixed a bug inside the custom account handling that made XMail to pass the old password
instead of the new one.

=item *

Added OpenBSD support.

=back

=head2 November 9, 2002 v 1.11

=over 4

=item *

Added a new command line parameter -QT to enable a configurable timeout for filter commands.

=item *

Fixed a bug that made XMail to ignore cmdalias accounts when a wildcard alias was matching
the account itself.

=item *

Added the 'smtprelay' command to the MAILPROC.TAB processing.

=item *

Removed the 'wait' command from all custom processing.

=item *

Added a new macro @@RRCPT to filters commands to extract the real local recipient.

=item *

Changed the way the EXTALIASES.TAB mapping modify the return path. It now change the "Reply-To:"
instead of the "From:" to avoid problems with signature verification software.

=item *

Implemented logging on SMTP transactions rejected because of mapped IP or failing RDNS check.

=item *

Added a new SERVER.TAB variable "SmtpServerDomain" to force the SMTP domain used by XMail
in its banner string ( for CRAM-MD5 ESMTP authentication ).

=item *

Improved DNS resolution for not existing domains.

=back

[L<top|"__index__">]

=head2 July 27, 2002 v 1.10

=over 4

=item *

Added a variable 'CustomSMTPMessage' inside the server's configuration file SERVER.TAB to enable
the postmaster to set a custom message that is appended to the standard XMail error
response.


=item *

Added log entries in case of relay lists mapped IPs.


=item *

Fixed a build error on FreeBSD.


=item *

Added a new SERVER.TAB variable 'DisableEmitAuthUser' to block the emission the the header
'X-Auth-User:' for authenticated user.


=item *

Added a new USER.TAB variable 'DisableEmitAuthUser' to block the emission the the header
'X-Auth-User:' for authenticated users (this variable overrides the SERVER.TAB one).


=item *

Added command line driven mailbox delivery mode (-MM = Maildir , -Mm = mailbox).


=item *

Added  sysv_inst.sh  shell script to help creating SysV boot scripts for XMail.

=back

[L<top|"__index__">]

=head2 June 15, 2002 v 1.9

=over 4

=item *

Fixed a bug in HOSTNAME:PORT handing code inside the PSYNC server.


=item *

Fixed a bug introduced in 1.8 in the Windows version that made XMail to have bad behaviour when
used with external programs.


=item *

Fixed a bug that resulted in XMail generating frozen messages even if the SERVER.TAB variable was
set to not create them.


=item *

Fixed a bug that made it possible to send a 'MAIL FROM:<@localdomain:remoteaddress>' and to have
the message relayed if the IP of the current machine was inside the smtprelay.tab of the machine
handling the MX of @localdomain.


=item *

Implemented internal mail loop checking (internal redirects).


=item *

Added a new MLUSERS.TAB permissions flags 'A', that is similar to 'W' by instead of checking
the 'MAIL FROM:<...>' address check the SMTP authentication address (this will prevent malicious
users to forge the address to gain write permissions on the list).

=back

[L<top|"__index__">]

=head2 May 19, 2002 v 1.8

=over 4

=item *

Changed XMail's behaviour upon receival on long (RFC compared) data lines on SMTP and POP3 fetch
inbound doors. Before the operation was aborted while now data is accepted without truncation,
that might make XMail to behave non conforming the RFC.


=item *

Added @@RRCPT macro to the 'external' MAILPROC.TAB command to emit the real recipient of the message
(@@RCPT could be an alias).

=item *

Added HOSTNAME:PORT capability to POP3LINKS.TAB entries.


=item *

Added Linux/PowerPC port.


=item *

Added 'filelist' CTRL protocol command.


=item *

Added SMTP HELP command.


=item *

Changed bounce message format to add the last SMTP error and to make it works with Ecartis mail bounce processing.


=item *

Changed the XMail's sendmail implementation to accept '-f FROM' and '-F FROM' non standard sendmail
paramenter specification.


=item *

Fixed a bug inside the PSYNC server code that made XMail to fail to resolve POP3 server addresses.


=item *

Various code cleanups.

=back

[L<top|"__index__">]

=head2 March 03, 2002 v 1.7

=over 4

=item *

Fixed a bug inside the POP3 server that caused bad responses to UIDL and LIST commands in case of
certain command patterns.


=item *

Added support for HOSTNAME:PORT (or IP:PORT) for the DefaultSMTPGateways SERVER.TAB variable.


=item *

Added domain aliases cleanup upon main domain removal.


=item *

Added 'MaxMessageSize' inside USER.TAB files to override the global (SERVER.TAB) one.

=back

[L<top|"__index__">]

=head2 March 03, 2002 v 1.6

=over 4

=item *

Added a new USER.TAB variable 'UseReplyTo' (default 1) to make it possible to disable the emission
of the Reply-To: header for mailing lists.


=item *

Fixed a bug that caused XMail to uncorrectly deliver POP3 fetched messages when used togheter with
domain masquerading.


=item *

Changed index file structure to use an hash table for faster lookups and index rebuilding.


=item *

New files inside the  tabindex  directory now have the extension  .hdx  and old  .idx  files can be removed.


=item *

Added X-Deliver-To: header to messages redirected with MAILPROC.TAB file.


=item *

Added configurable Received: tag option in SERVER.TAB by using the variable 'ReceivedHdrType'.


=item *

Added a configurable list of header tags to be used to extract addresses for POP3 fetched messages
by using the SERVER.TAB variable 'FetchHdrTags'.


=item *

History (change log) entries have been moved from the main documentation file and a new file (ChangeLog.txt)
has been created to store change-log entries.


=item *

Removed RBL-MAPSCheck (currently blackholes.mail-abuse.org.), RSS-MAPSCheck (currently relays.mail-abuse.org.)
and DUL-MAPSCheck (currently dialups.mail-abuse.org.) specific variables and now everything must
be handled with CustMapsList (please look at the documentation).


=item *

Added  NotifyMsgLinesExtra  SERVER.TAB variable to specify the number of lines of the bounced message
to include inside the notify reply (default zero, that means only header).


=item *

The message log file is now listed inside the notification message sent to  ErrorsAdmin  (or  PostMaster ).


=item *

Added  NotifySendLogToSender  SERVER.TAB variable to enable/disable the send of the message log file
inside the notify message to the sender (default is off).


=item *

Added  TempErrorsAdmin  SERVER.TAB variable to specify an account that will receive temporary delivery
failures notifications (default is empty).


=item *

Added a new SERVER.TAB variable  NotifyTryPattern  to specify at which delivery attempt failure
the system has to send the notification message.


=item *

Fixed a bug that caused alias domains to have higher priority lookup compared to standard domains.

=back

[L<top|"__index__">]

=head2 February 05, 2002 v 1.5

=over 4

=item *

Fixed a bug in wildcard aliases domain lookup.


=item *

Fixed a bug in CTRL command 'aliasdel' that failed to remove aliases with wildcard domains.


=item *

Fixed a bug that caused XMail to timeout on very slow network connections.

=back

[L<top|"__index__">]

=head2 January 18, 2002 v 1.4

=over 4

=item *

Fixed a bug that made XMail fail to parse custom maps lists in SERVER.TAB.


=item *

Fixed a bug that prevented XMail to add wildcard-domain aliases.


=item *

Added a filter feature to the CTRL commands 'domainlist' and 'aliasdomainlist'.


=item *

Added an extra message header field 'X-AuthUser:' to log the username used by the account to send the message.


=item *

Added Reply-To: RFC822 header for mailing lists sends.


=item *

Fixed a Win32 subsystem API to let XMail to correctly handle network shared MAIL_ROOTs.

=back

[L<top|"__index__">]

=head2 December 19, 2001 v 1.3

=over 4

=item *

ORBS maps test removed due old ORBS dead, the SERVER.TAB variable 'CustMapsList' can be used
to setup new ORBS (and other) maps.


=item *

Fixed a bug in XMail's  sendmail  that was introduced in version 1.2 and made it to incorrectly
interpret command line parameters.


=item *

Fixed a bug that made XMail not correctly recognize user type characters when lowercase.


=item *

Fixed a bug that caused XMail to not start is the MAIL_ROOT environment variable had
a final slash on Windows.


=item *

Added a new filter return code (97) to reject messages without notification and without frozen processing.


=item *

Added two new command line options  -MR  and  -MS  to set the I/O socket buffers sizes in bytes
(do not use them if You don't know what You're doing).


=item *

Changed system library to have a better performace, expecially on the Windows platform.


=item *

Users that are using XMail mainly inside their local LAN are strongly encouraged to switch to this version.


=item *

Fixed a bug that enabled insertion of aliases that overlapped real accounts.

=back

[L<top|"__index__">]

=head2 November 12, 2001 v 1.2

=over 4

=item *

A problem with log file names generation has been fixed.


=item *

Added a new CTRL command 'userstat'.


=item *

Implemented Linux/SPARC port and relative makefile (Makefile.slx).


=item *

Extended the XMail version of  sendmail  to support a filename as input (both XMail format that
raw email format) and to accept a filename as recipient list.


=item *

Added a new kind of aliases named 'cmdaliases' that implements a sort of custom domains commands
on a per-user basis (look at the  CmdAliases  section).


=item *

 ********************************************************************
 * You must create the directory 'cmdaliases' inside $MAIL_ROOT
 * to have 1.2 work correctly
 ********************************************************************    


=item *

Fixed a bug that had XMail not check for the user variable SmtpPerms with CRAM-MD5 authetication.


=item *

Fixed a bug in the XMail's  sendmail  implementation that made it unable to detect the '.'
end of message condition.


=item *

Fixed a bug in the XMail's  sendmail  implementation that made it to skip cascaded command line
parameters (-Ooet).


=item *

Implemented a new XMail's  sendmail  switch -i to relax the <CR><LF>.<CR><LF> ond of message indicator.

=back

[L<top|"__index__">]

=head2 October 09, 2001 v 1.1

=over 4

=item *

Fixed a bug in the XMail version of  sendmail  that made messages to be double sent.


=item *

The macro @@TMPFILE has been removed from filters coz it's useless.


=item *

The command line parameter  -Lt NSEC  has been added to set the sleep timeout of LMAIL threads.


=item *

Added domain aliasing (see ALIASDOMAIN.TAB section).


=item *

 ********************************************************************    
 * You must create the file ALIASDOMAIN.TAB inside $MAIL_ROOT
 * (even if empty)
 ********************************************************************    


=item *

Added CTRL commands 'aliasdomainadd', 'aliasdomaindel' and 'aliasdomainlist' to handle domain aliases
through the CTRL protocol.

=back

[L<top|"__index__">]

=head2 September 04, 2001 v 1.0

=over 4

=item *

Added wildcard matching in the domain part of ALIASES.TAB (see ALIASES.TAB section).


=item *

Changed the PSYNC scheduling behaviour to allow sync interval equal to zero (disabled) and
let the file .psync-trigger to schedule syncs.


=item *

Solaris on Intel support added.


=item *

A new filter return code (98) has been added to give the ability to reject message without notify the sender.

=back

[L<top|"__index__">]

=head2 June 10, 2001 v 0.74

=over 4

=item *

A stack shifting call method has been implemented to make virtually impossible for attackers
to guess the stack frame pointer.


=item *

With this new feature, even if buffer overflows are present, the worst thing that could happen
is a server crash and not the attacker that execute root code on the server machine.


=item *

Implemented the SIZE ESMTP extension and introduced a new SERVER.TAB variable 'MaxMessageSize' that set
the maximum message size that the server will accept (in Kb).


=item *

If this variable is not set or if it's zero, any message will be accepted.


=item *

A new SMTP authentication permission ('Z') has been added to allow authenticated users to bypass the check.


=item *

The SMTP sender now check for the remote support of the SIZE ESMTP extension.


=item *

A new SERVER.TAB variable has been added  'CustMapsList'  to enable the user to enter custom maps checking
(look at the section 'SERVER.TAB variables').


=item *

Fixed a bug in 'frozdel' CTRL command.

=back

[L<top|"__index__">]

=head2 June 08, 2001 v 0.73

=over 4

=item *

Fixed a possible buffer overflow bug inside the DNS resolver.

=back

[L<top|"__index__">]

=head2 May 23, 2001 v 0.72

=over 4

=item *

Fixed build errors in MkUsers.cpp and SendMail.cpp (FreeBSD version).


=item *

Added the ability to specify a list of matching domains when using PSYNC with masquerading domains (see POP3LINKS.TAB section).


=item *

The auxiliary program  sendmail  now reads the MAIL_ROOT environment from registry (Win32 version) and
if it fails it reads from the environment.


=item *

Fixed a bug that made XMail to crash if the first line of ALIASES.TAB was empty.


=item *

RPM packaging added.


=item *

Added a new feature to the custom domain commands 'redirect' and 'lredirect' that will accept
email addresses as redirection target.


=item *

Fixed a bug in MkUsers.


=item *

Added system resource checking before accepting SMTP connections (see 'SmtpMinDiskSpace' and 'SmtpMinVirtMemSpace'
SERVER.TAB variables).


=item *

Added system resource checking before accepting POP3 connections (see 'Pop3MinVirtMemSpace' SERVER.TAB variable).


=item *

A new command line param -t has been implemented in sendmail.


=item *

A new USER.TAB variable 'SmtpPerms'  has been added to enable account based SMTP permissions.


=item *

If 'SmtpPerms' is not found the SERVER.TAB variable 'DefaultSmtpPerms' is checked.


=item *

A new USER.TAB variable 'ReceiveEnable' has been added to enable/disable the account from receiving emails.


=item *

A new USER.TAB variable 'PopEnable' has been added to enable/disable the account from fetching emails.

=back

[L<top|"__index__">]

=head2 April 29, 2001 v 0.71

=over 4

=item *

Removed the SERVER.TAB variable 'HeloUseRootDomain' and introduced a new one 'HeloDomain' to specify
the name to send as HELO domain (look at variable documentation).


=item *

If 'HeloDomain' is not specified or if empty then the reverse lookup of the local IP is sent as HELO domain.


=item *

Added a new SERVER.TAB variable 'DUL-MAPSCheck' to implement the 'dialups.mail-abuse.org' maps check.


=item *

Changed the meaning of the SERVER.TAB variables SMTP-RDNSCheck, RBL-MAPSCheck, RSS-MAPSCheck,
ORBS-MAPSCheck and DUL-MAPSCheck to give XMail the ability to delay SMTP commands for clients that fail the check.


=item *

The old behaviour (dropped connection) is obtained by setting values greater than zero,
while You can set the delay (in seconds) by specifying negative values.


=item *

For SMTP-RDNSCheck and DUL-MAPSCheck variables the connection is no more dropped at welcome time but
a 'server use forbidden' message is given at MAIL_FROM time.


=item *

In this way XMail give authenticated users the ability to get in from 'mapped' IPs.


=item *

Fixed a bug that cause XMail to crash if there is an empty line in a MLUSERS.TAB file.


=item *

Added a new SERVER.TAB variable 'ErrorsAdmin' that will receive the notification message for every message
that has had delivery errors.


=item *

The feature to force XMail to initiate a PSYNC transfer has been added. This is implemented by making XMail
to check for a file named '.psync-trigger' inside MAIL_ROOT. When this file is found a PSYNC tranfer
is started and the file is deleted.


=item *

Added a new SERVER.TAB variable 'MaxMTAOps' to set the maximum number of relay steps before to declare
the message as looped.


=item *

Added SMTP after POP3 authentication and one new command line switch (-Se) to set the expire time of the POP3 IP.


=item *

A new SERVER.TAB variable has been added to enable/disable SMTP after POP3 authentication (EnableAuthSMTP-POP3).


=item *

Added the replacement for sendmail that will use the local mail delivery of XMail (look at the sendmail section).


=item *

The ESMTP command ETRN has been added has long as a new SMTP perm flag 'T' to give access to this feature
and a new SERVER.TAB variable 'AllowSmtpETRN' to set the default feature access.


=item *

Added a new CTRL command 'etrn' to support the same SMTP feature through the CTRL protocol.


=item *

Fixed a bug in filters selection that made XMail to case-sensitive compare user and domain filters.


=item *

Changed the name of the default filter to '.tab' instead of 'defaultfilter.tab'.


=item *

Finally, FreeBSD port added !!

=back

[L<top|"__index__">]

=head2 April 08, 2001 v 0.70

=over 4

=item *

Added the message ID to the received tag and extended the SMTP log file with the username of
the authenticated user (if any).


=item *

Fixed a bug in external authentication (POP3).


=item *

The USERDEF.TAB file is now checked inside $MAIL_ROOT/domains/DOMAIN before and then in $MAIL_ROOT.


=item *

This permit per domain user default configuration.


=item *

Added a new CTRL server command 'frozsubmit' to reschedule a frozen message.


=item *

Added a new CTRL server command 'frozdel' to delete a frozen message.


=item *

Added a new CTRL server command 'frozgetlog' to retrieve the frozen file log file.


=item *

Added a new CTRL server command 'frozgetmsg' to retrieve the frozen message file.

=back

[L<top|"__index__">]

=head2 February 22, 2001 v 0.69

=over 4

=item *

Fixed a bug that made XMail to grant Read permissions to mailing lists users.


=item *

Fixed a bug that made XMail to delete SMTP rights granted during authentication when sending
multiple messages.


=item *

Fixed a bug in SMTP CRAM-MD5 authentication.


=item *

Fixed a bug that caused XMail to break the header when an headers tag is made by 'tag-name:[CR][LF]tag-string'.


=item *

Added the delete functionality to the CTRL command 'uservarsset' by giving the string value
'.|rm' the delete capability.

=back

[L<top|"__index__">]

=head2 February 05, 2001 v 0.68

=over 4

=item *

Fixed a buffer overflow vulnerability in CTRL server and added command string validation to all servers.


=item *

Added 8BITMIME and PIPELINING support (it was already compliant).


=item *

Added a new SERVER.TAB option 'HeloUseRootDomain' to make XMail to use the 'RootDomain'
like HELO domain.


=item *

Added FINGER service access control based on the peer IP address. A new file FINGER.IPMAP.TAB
has been added to MAIL_ROOT with the same meaning of the ones used with SMTP, POP3 and CTRL services.


=item *

Fixed a bug that caused XMail to drop the first character of the headers if there was no space
between the colon and the header value.


=item *

Added extended SMTP log information by adding an extra (last) field to the log file.


=item *

Added a new SERVER.TAB variable 'AllowSmtpVRFY' (default off) to enable the SMTP VRFY command.


=item *

Added a new SMTP auth flag 'V' to enable VRFY command (bypassing SERVER.TAB settings).


=item *

Improved the POP3 sync method to fetch and distribute mail that uses an external POP3
mailbox to collect more accounts togheter. Before the method failed if the user was not
in the first 'To:' address, while now all addresses contained in 'To:', 'Cc:' and 'Bcc:' are
checked. There is also a new SERVER.TAB variable 'Pop3SyncErrorAccount' whose use is
catch all emails that has been fetched but has had delivery errors.

=back

[L<top|"__index__">]

=head2 January 04, 2001 v 0.67

=over 4

=item *

Fixed a bug in 'poplnkenable' CTRL server command.


=item *

Changed the report of 'poplnklist' CTRL server command to include the authentication mode and
the enabled status.


=item *

Fixed a bug in 'poplnkdel' that left around the .disable file.


=item *

A new directory 'pop3links' has to be added to store POP3 links disable files for non-local links.


=item *

This will fix also a bug in multi-account and masquerading POP3 sync.


=item *

A new way to retrieve the POP3 domain has been coded by doing a reverse DNS lookup from
the server IP. If the result of the lookup will be  xxxx.yyyy.zzzz  then XMail will
test if  xxxx.yyyy.zzzz  is handled, then  yyyy.zzzz  and then  zzzz.


=item *

The first of these domains that is handled by XMail will be the POP3 domain.


=item *

Added a new  SERVER.TAB  variable 'CheckMailerDomain' that, if on ('1'), force XMail
to validate the sender domain ('MAIL FROM:<...@xxx>') by looking up DNS/MX entries.


=item *

Fixed the bug that made XMail to not accept users to add if a wildcard alias were defined.

=back

[L<top|"__index__">]

=head2 December 08, 2000 v 0.66

=over 4

=item *

The SMTP command RSET no more clean the authentication status of the client.


=item *

Improved MX records resolution and fixed a bug in MD5 algo.


=item *

A new USER.TAB variable (for Mailing Lists) 'ListSender' has been added to hide
real senders from SMTP protocol.


=item *

If this variable does not exist the 'MAIL FROM:<>' command will contain the 'real' sender address.


=item *

This variable should be set to the email address of the mailing list admin that will receive
all the notification and error messages, preventing this error to reach real senders.


=item *

Fixed an RFC conformance bug in SMTP protocol that made XMail to accept the MAIL_FROM command
even if the HELO (or EHLO) command was not issued.


=item *

Fixed a bug in SysExec() in Linux and Solaris versions that made all external programs to
have a bad behaviour or fail. This bug was introduced in 0.65 version.


=item *

Fixed a bug in the Windows version that results in a failure to resolve MX queries.


=item *

This bug was introduced in 0.65.

=back

[L<top|"__index__">]

=head2 November 25, 2000 v 0.65

=over 4

=item *

Complete Linux library rewrite, now using PThread library instead of forking.


=item *

Solaris/SPARC port added (HPUX/PARISC incoming).


=item *

Removed the -Ma flags for the maximum number of accounts coz it's no more needed due
the new Linux system library (now the memory shares is given for free instead of having
to rely on IPC).


=item *

Removed the -Mk parameter due the IPC stuff removal.


=item *

Extra domain aliases has been added (see ALIASES.TAB section).


=item *

A new feature has been added to XMail to enable XMail users to prepare mail files in a
given format, put them in /spool/local directory and get them delivered by the server
(see 'XMail local mailer' section).


=item *

Two new directories  'local'  and  'temp'  must be created inside the  'spool'  directory.


=item *

The meaning of the command line param '-Mr ...' has changed from days to hours.

=back

[L<top|"__index__">]

=head2 November 02, 2000 v 0.64

=over 4

=item *

Added permissions to mailing list users (see MLUSERS.TAB section). This enable You to have
read only users as long as read/write users.


=item *

This is implemented by adding a new extra field to MLUSERS.TAB to store permissions ('R' or 'RW').


=item *

The lack of this extra field (old MLUSERS.TAB files) will be interpreted as 'RW'.


=item *

The command 'mluseradd' has been extended to hold the new permission parameter
(see section 'XMail admin protocol').


=item *

Added a new CTRL command  'frozlist'  to list files that are in frozen status (see section
'XMail admin protocol').


=item *

Fixed a bug in the new masquerading feature of XMail (POP3LINKS.TAB).


=item *

Fixed a bug that makes XMail crashes when a mail loop condition is detected.


=item *

Removed the strict RFC compliant check on messages.

=back

[L<top|"__index__">]

=head2 October 27, 2000 v 0.63

=over 4

=item *

Added a feature that makes usable the new POP3LINKS.TAB fetching option by masquerading
incoming recipient. This can be done by replacing the domain part or by adding a constant
string to the To: address (see  POP3LINKS.TAB section).

=back

[L<top|"__index__">]

=head2 September 12, 2000 v 0.62

=over 4

=item *

Added a new custom domain processing command  'smtprelay'  that can be used to route
messages to other smtp servers (see section 'Custom domain mail processing').


=item *

New search method for  custdomains/  files : now the test to find out if the domain
sub1.sub2.domain.net  will get a custom domain processing is done by looking up
sub1.sub2.domain.net.tab , .sub2.domain.net.tab , .domain.net.tab , .net.tab and then .tab.


=item *

There is a new POP3 sync method now that enables users that receives mail for multiple recipients
into a single external POP3 account to get all mail to be distributed locally.


=item *

You've to be sure, to not create mail loops, that all recipients domains are locally handled
in a way or another (see section POP3LINKS.TAB).


=item *

Added the random order option to SMTPFWD.TAB gateways to randomly select the order of the try list
(see section SMTPFWD.TAB).


=item *

Added the random order option to  'smtprelay'  custom domain processing (see section
'Custom domain mail processing').


=item *

The use of realloc() function has been removed to make place for free()/malloc() due a glibc bug
with such function.

=back

[L<top|"__index__">]

=head2 September 12, 2000 v 0.61

=over 4

=item *

Added a new CTRL command  'userauth'  that helps to check users authentication.


=item *

This command can be used by external modules that need to check XMail username/password
authentication (ex: external IMAP auth modules).


=item *

A new file  SMTPFWD.TAB  has been introduced to supply customizable mail exchangers
for external domains (see section  SMTPFWD.TAB).


=item *

Not local POP3 sync has been introduced to make it possible to download external POP3
accounts without having to setup local accounts (see section POP3LINKS.TAB).


=item *

This feature can be used, for example, to catch mails from a set of remote accounts
and redirect these to another SMTP server.


=item *

Now it's possible to set per IP server port in command line params by specifying  bindip[:port]
PSYNC flags  -Qx  has been removed due the new queue system.


=item *

A new global command line parameter  -Mx  has been introduced to setup the queue split level
even if my suggestion is to leave the default value (23 , that means that the queue is splitted
in 23 * 23 = 529 subdirectories).


=item *

 ********************************************************************    
 * A new spool format has been coded to enable XMail to handle very
 * large sending queues.
 * See section 'XMail spool design' for a description of how the spool
 * works.
 * Due to the new spool format the following directories can be
 * removed:
 *
 * custdomains/spool
 * spool/tmp
 * spool/errors
 * spool/logs
 * spool/locks
 *
 * You've to leave XMail flush its queue (spool) before upgrading
 * to this version.
 * A more complex solution, if You've a lot of file pending into the
 * spool, is :
 *
 * 1) Stop XMail
 * 2) Upgrade to 0.61
 * 3) Start XMail and wait it has created all the queue tree structure
 * 4) Stop XMail
 * 5) Move all old spool/ files into 0/0/mess
 * 6) Rename all spool/logs/ files removing the .log extension
 * 7) Move all spool/logs/ file into 0/0/slog
 * 8) Now You can remove the above directories and restart XMail
 ********************************************************************    


=item *

ORBS relays checking has been added and is activated by the new  SERVER.TAB  option
'ORBS-MAPSCheck'.


=item *

A new  SERVER.TAB  variable  'AllowNullSender'  (default true) has been introduced to
change the XMail default behaviour that reject null sender messages. Now if You want null
sender messages to be rejected You've to set this variable to zero.


=item *

Fixed a bug in Linux XMail debug startup.


=item *

Now SMTP authentication does a previous lookup in  mailusers.tab  using the complete
email address as username (@ or : as separators).


=item *

Authenticated users will get the permission stored in the new  'DefaultSmtpPerms'  SERVER.TAB
variable.

=back

[L<top|"__index__">]

=head2 August 31, 2000 v 0.60

=over 4

=item *

The XMail executable filename has been modified to  XMail.


=item *

A better (even if not perfect) Linux SysV startup script (xmail) has been coded.


=item *

Fixed a bug in locking procedures (.lock file oriented) and introduced a correct
SIGPIPE handling.


=item *

Improved I/O performance due to a new way of sending files through TCP/IP connections,
to a more efficent way to copy message files and to a reduced number of temporary files
that are created by XMail.

=back

[L<top|"__index__">]

=head2 July 30, 2000 v 0.59

=over 4

=item *

DNS MX queries caching has been added to lower DNS network traffic and to speed up
message delivery.


=item *

A new directory  dnscache  must be added to MAIL_ROOT as long as the two subdirectories
dnscache/mx  and  dnscache/ns  .


=item *

A possible buffer overflow error has been fixed.


=item *

Some code rewrites.

=back

[L<top|"__index__">]

=head2 July 22, 2000 v 0.58

=over 4

=item *

Maildir mailbox format has been introduced as an optional mail storage other than
the proprietary mailbox structure (You need to change CFLAGS definition in Makefile.lnx
to build the Maildir version of XMail or edit SvrConfig.h defining CONFIG_MAILDIR
for both Linux and NT version).


=item *

If You want to switch to the new Maildir version You MUST convert Your accounts and
You MUST create a  tmp  directory inside  $MAIL_ROOT/spool.


=item *

The maximum number of recipients for a single SMTP message has been made tunable
by a new command line parameter (-Sr ... , default 100).


=item *

Fixed a small memory leak in SMTP server in case of multiple recipients.


=item *

New POP3 username/domain separator (:) has been introduced other than (@) that
is not a valid char for Netscape mail system.


=item *

A buffer overflow bug has been corrected (the bug outcrop when a line is longer
than the supplied buffer and a newline char is exactly placed at the buffer[sizeof(buffer)-1]).


=item *

Mail loop check has been introduced.


=item *

Fixed a bug that makes XMail unable to correctly handle SMTP lines terminated by <CR><CR><LF>.


=item *

SMTP server 'Received:' tag has been changed to suite 'MAIL FROM:<>' and 'RCPT TO:<>'
addresses.

=back

[L<top|"__index__">]

=head2 July 13, 2000 v 0.57

=over 4

=item *

Fixed a SERIOUS bug introduced with the new indexing features of XMail that makes
names case sensitive. You must also empty the tabindex directory to enable XMail
to rebuild indexes in a case insensitive way. Update SOON to this version.


=item *

The maximum number of accounts has been removed due the new locking method.


=item *

Now the -Ma ... parameter give XMail a way to allocate locking resources, but it's
not as strict as it was with previous versions.


=item *

New CTRL commands has been added (cfgfileget, cfgfileset).


=item *

A new command line utility to create user accounts based on a formatted text file
has been added (watch at MkUsers section).

=back

[L<top|"__index__">]

=head2 July 07, 2000 v 0.56

=over 4

=item *

 ********************************************************************    
 *                            WARNING
 * The MAIL_ROOT directory organization has been changed !
 * A new directory  domains  MUST be created inside MAIL_ROOT to get
 * a cleaner configuration for XMail installations that handle
 * several domains.
 * In order to use this new version You MUST move Your domains
 * directories inside the new  domains  directory
 ********************************************************************    


=item *

SMAIL scheduling times in sending messages has been changed (see -Qi command line option).


=item *

The file  domains.tab  has been put under index.


=item *

Completely rewrited lock procedures.


=item *

New CTRL commands has been added (usergetmproc, usersetmproc, custdomget,
custdomset, custdomlist).

=back

[L<top|"__index__">]

=head2 July 04, 2000 v 0.55

=over 4

=item *

A syntax bug has been corrected, 'SMTP-RARPCheck' leave place to the correct 'SMTP-RDNSCheck'.


=item *

Now the files  mailusers.tab  ,  aliases.tab  and  extaliases.tab  are indexed for a faster
lookup in case of having several thousands of users and / or aliases. For this need a
new directory named  tabindex  __MUST__ be added to MAIL_ROOT path.


=item *

As a consequence of this new feature You __CANNOT__ edit files under index while XMail
is running.


=item *

POP3 mailbox locking method is changed to speedup startup time in case of thousand of users.


=item *

Remember to __ADD__ the directory  pop3locks  inside MAIL_ROOT path.

=back

[L<top|"__index__">]

=head2 June 29, 2000 v 0.54

=over 4

=item *

A user level grained control over incoming POP3 connections based on peer IP
has been added (see at the section dedicated to POP3.IPMAP.TAB).


=item *

A new XMail command line parameter has been added to increase the maximum number
of accounts that can be handled by the server (now defaults to 25000 while previous
versions defaults to 7500).


=item *

Fixed a bug in XMail alias removal.


=item *

Some code rewrites.

=back

[L<top|"__index__">]

=head2 June 21, 2000 v 0.53

=over 4

=item *

The ability to setup a spammer protection based on sender address has been added
(see section dedicated to SPAM-ADDRESS.TAB).

=back

[L<top|"__index__">]

=head2 June 18, 2000 v 0.52

=over 4

=item *

The ability to disable PSYNC server by setting sync timeout to zero (-Yi 0)
has been added.


=item *

SMTP client authentication has been added (see SMTP Client Authentication section).


=item *

SMTP server authentication (PLAIN LOGIN CRAM-MD5) has been added (see SMTPAUTH.TAB description).


=item *

SMTP server custom authentication has been added (see SMTPEXTAUTH.TAB description).

=back

[L<top|"__index__">]

=head2 June 12, 2000 v 0.51

=over 4

=item *

Added  'aliaslist'  command to controller server.


=item *

Wildcard matching has been added in  'userlist'  and  'aliaslist'  controller
server commands.


=item *

Fixed a SERIOUS bug in  SysExec()  on Linux port - upgrade asap Your version.

=back

[L<top|"__index__">]

=head2 June 07, 2000 v 0.50

=over 4

=item *

MD5 authentication has been added to CTRL server to enforce server security
(watch at  XMail admin protocol  section).


=item *

Users of CTRL protocol are ancouraged to use this new authentication mode.


=item *

POP3 TOP command has been implemented.

=back

[L<top|"__index__">]

=head2 June 06, 2000

=over 4

=item *

Fixed a SERIOUS bug in custom (external) POP3 authentication procedures, it
always give auth :((
APOP POP3 authentication has been added to POP3 server as long as to PSYNC server
(POP3 client).


=item *

PSYNC server configuration file (POP3LINKS.TAB) IS CHANGED to enable 
APOP authentication (watch at POP3LINKS.TAB section).


=item *

The command  'poplnkadd'  of CTRL server has been extended to another parameter
that store authentication method to be used.

=back

[L<top|"__index__">]

=head2 June 01, 2000

=over 4

=item *

Correct handling of mail routing through 'RCPT TO: <>' has been added (see Mail 
Routing Through Addresses section).


=item *

Added wildcard matching and complex mail routing in  SMTPGW.TAB.


=item *

Fixed a bug in PSYNC server that makes XMail to test for '+OK ' response instead
that for '+OK' (and '-ERR ' for '-ERR').


=item *

Added configuration steps in Part 7 of this doc.


=item *

The ability to handle custom (external) POP3 authentication procedures
has been added (see section External Authentication).

=back

[L<top|"__index__">]

=head2 May 29, 2000

=over 4

=item *

Bug fixes in controller server and in PSYNC server.


=item *

Added  --install-auto  to install XMail as an autostart service (NT).


=item *

Better reliability in custom domain processing has been coded (REMEMBER to add
the  spool  directory inside  custdomains ).


=item *

Improved delivery error logs for a better problem understanding and fix.


=item *

Some code rewrites.

=back

[L<top|"__index__">]

=head2 May 27, 2000

=over 4

=item *

CtrlClnt  improved in error control and bug fixes.


=item *

Changes in controller protocol for commands that has output.


=item *

The command  'userpasswd'  has been added in controller server to allow user password
changes.


=item *

Bug fixes in controller server.


=item *

Added wildchar (* ?) compare in aliases that allow to give a default processing
to group of users (ie users that does not have an account).


=item *

XMail init.d startup script has been added (xmail).

=back

[L<top|"__index__">]

=head2 May 26, 2000

=over 4

=item *

Added  CtrlClnt  to give a access to remote administration of XMail (see CtrlClnt section).


=item *

This permit You to add, delete, list users as long as many other administration
procedures (see XMail controller protocol).

=back

[L<top|"__index__">]

=head2 May 24, 2000

=over 4

=item *

Closed mailing lists has been added ('ClosedML' variable in USER.TAB).


=item *

The concept of filtering as message content testing has been extended to a message
processing (address rewriting, attachment purging, etc ...).


=item *

Now message filtering can have a 'per user' processing to give a more fine grained control.

=back

[L<top|"__index__">]

=head2 May 21, 2000

=over 4

=item *

Added the way to specify a default domain filter with the presence of the file
defaultfilter.tab  into the  filters  subdirectory.


=item *

Improved PSYNC error handling.


=item *

Improved shutdown condition sensing (read Server Shutdown section).

=back

[L<top|"__index__">]

=head2 May 08, 2000

=over 4

=item *

Fixed a bug in SysDepLinux.cpp in function SysMakeDir() - permission mask changed to 0700.


=item *

Improved external programs execution behaviour under NT (no console is displayed).


=item *

Added the option to setup domain message filters with external programs exection
(remember to add the filters subdirectory if You're upgrading an existing XMail).


=item *

This can help to filter messages based on its content to avoid mail worms and viruses
that travel in attachments with given dangerous extensions.

=back

[L<top|"__index__">]

=head2 April 26, 2000

=over 4

=item *

 ********************************************************************    
 *                             WARNING
 * The spool file format is changed !
 * In order to use this new version You MUST flush the spool before
 * starting the new version of XMail.
 ********************************************************************    


=item *

Modified SysRename() to MscMoveFile() to avoid errors in all cases where files are
positioned on differents mount points (Unixes versions).


=item *

Added log files rotate function as long as a new command line parameter (-Mr ndays)
to specify the rotate delay.


=item *

Added message-id to SMAIL and SMTP log file.


=item *

Added  @@MSGID  macro in custom mail processing (external commands).


=item *

Added  @@MSGREF  macro in custom mail processing (external commands).


=item *

Now messages coming from external POP3 links are pushed into the spool and not directly
into the target user mailbox - this enable custom user mail processing also on this
kind of messages.


=item *

Added 'lredirect' command to MAILPROC.TAB that makes XMail to impersonate the local
domain when redirect messages.


=item *

Added 'lredirect' command to custom domain mail processing that makes XMail 
to impersonate the local domain when redirect messages.

=back

[L<top|"__index__">]

=head2 April 04, 2000

=over 4

=item *

A @@TMPFILE macro has been added to MAILPROC.TAB syntax as long as to custom domain
processing syntax. It will create a temporary file which hold the copy of the message.


=item *

It's external program resposibility to delete such file when it has finished its processing.


=item *

Messages generated as response to a delivery failure has target address remapped
with the meanings of the file EXTALIASES.TAB.


=item *

Fixed a bug that makes XMail write a bad 'Received: ...' message tag.


=item *

This error cause mail readers to display bad message's datetimes.


=item *

Added 'uservars' command to the controller protocol to list user defined variables.


=item *

Added 'uservarsset' command to the controller protocol to set user defined variables.

=back

[L<top|"__index__">]

=head2 March 21, 2000

=over 4

=item *

IP access control has been added to POP3, SMTP and CTRL servers (pop3.ipmap.tab ,
smtp.ipmap.tab , ctrl.ipmap.tab). I suggest You to setup at least ctrl.ipmap.tab.


=item *

Permanent SMTP error detect has been added to avoid to send N times a message that 
will be always rejected.


=item *

Some code rewrite.

=back

[L<top|"__index__">]

=head2 March 18, 2000

=over 4

=item *

Linux daemon startup code has been added.


=item *

Modified the means of 'smtprelay.tab' and 'spammers.tab' with the introduction of
a netmask (MODIFY YOUR FILES EVEN IF FOR NOW THE OLD VERSION IS STILL SUPPORTED !).


=item *

Service threads limit has been added to POP3 and SMTP servers.

=back

[L<top|"__index__">]

=head2 March 16, 2000

=over 4

=item *

Fixed a bug in new Linux semaphore code.

=back

[L<top|"__index__">]

=head2 March 13, 2000

=over 4

=item *

Added 'POP3Domain' configuration variable that gives the possibility to set the
default (primary) POP3 domain.


=item *

Users of such domain can log to the server using only the name part of their email
address.


=item *

Enached daemon (or service) mode with no messages printed onto console.


=item *

A -Md flag has been added to activate the debug mode that will restore verbose behaviour.


=item *

Error messages, in daemon mode, will be now printed to syslog() (Linux) 
or to EventViewer (NT).


=item *

Improved semaphore handling in Linux that prevent from allocation a great number of
semaphores. SysV semaphore array capability of Linux is used to reduce the number of
allocated semaphores.


=item *

Code rewrite.

=back

[L<top|"__index__">]

=head2 March 10, 2000

=over 4

=item *

Fixed other possible points of buffer overflow attacks.


=item *

My Co. XMail server has reached 100000 messages exchanged without a single crash !
Custom domain mail processing has been added.


=item *

MAIL_CMD_LINE environment (or registry) has been added to give XMail a way to get a
command line even when it's started as service.


=item *

Command line option -?I xxx.yyy.zzz.www has been added to bind to specified server
interfaces.

=back

[L<top|"__index__">]

=head2 March 08, 2000

=over 4

=item *

Added UIDL POP3 server command to make XMail work with clients that needs
that feature.


=item *

Fixed a bug that prevent to send mail introduced with the previous version.

=back

[L<top|"__index__">]

=head2 March 06, 2000

=over 4

=item *

Fixed a bug that can cause XMail to fall in a long CPU eating loop.


=item *

Added a delay to bad POP3 logins to prevent POP3 mailboxes attacks.


=item *

Added the option to shutdown the connection in a bad POP3 login case.


=item *

Fixed a bug that makes XMail (as NT service) shutdown at user logoff.


=item *

Fixed a bug that makes XMail unable to work with machine that are unable
to RDNS its own socket addresses.


=item *

Fixed some possible points of buffer overflow attacks.

=back

[L<top|"__index__">]

=head2 March 03, 2000

=over 4

=item *

Added 'poplnkenable' controller command.


=item *

Added RSS maps check option (relays.mail-abuse.org).

=back

[L<top|"__index__">]

=head2 March 01, 2000

=over 4

=item *

Added VRFY SMTP command.


=item *

Coded a better Service exit under Windows NT.


=item *

Added MAILPROC.TAB that enable custom processing of user messages.

=back

[L<top|"__index__">]

=head2 February 29, 2000

=over 4

=item *

Fixed a compilation bug under certain distributions of Linux.


=item *

The ability to make a dynamic DNS registration has been added with the 
'DynDnsSetup' configuration option in SERVER.TAB.

=back

[L<top|"__index__">]

=head2 February 28, 2000

=over 4

=item *

'SmartDNSHost' option added to redirect all DNS queries to a list of DNS
hosts. This option can be used to avoid MSProxyServer-WS2_32.DLL bug that
not allow to send UDP packets out of the local net.


=item *

User mailbox size check has been added.

=back

[L<top|"__index__">]

=head2 February 27, 2000

=over 4

=item *

Added UDP DNS query support when searching MX records.


=item *

This fixes a bug that makes XMail unable to send its mails if it deals
with name servers that works only in UDP.

=back

[L<top|"__index__">]

=head2 February 25, 2000

=over 4

=item *

Fixed a bug that prevent XMail POP3 server to handle multiple domains if
there are more nic-names over a single IP address.


=item *

Improved controller protocol.


=item *

Added RBL maps check option (rbl.maps.vix.com).


=item *

Added 'spammers.tab' file that control SMTP client connections.

=back

[L<top|"__index__">]

=head2 February 24, 2000

=over 4

=item *

Added controller login check.

=back

[L<top|"__index__">]

=head2 February 23, 2000

=over 4

=item *

Fixed a bug caused by a case sensitive compare in domain and users names.


=item *

Improved controller protocol for remote admin.

=back

[L<top|"__index__">]

=head2 February 22, 2000

=over 4

=item *

Fixed a Linux compilation bug and implemented controller protocol for remote admin.

=back

[L<top|"__index__">]

=head2 February 18, 2000

=over 4

=item *

Log locking and some code rewrite.

=back

[L<top|"__index__">]

=head2 February 16, 2000

=over 4

=item *

Added DNSROOTS file to avoid to repeat queries for roots domains.


=item *

Fixed a bug that can lead to a infinite loop under DNS queries.

=back

[L<top|"__index__">]

=head2 February 15, 2000

=over 4

=item *

Some code rewrite.


=item *

Improved DNS search for MX records (bug fix).

=back

[L<top|"__index__">]

=head2 February 07, 2000

=over 4

=item *

Some code rewrite.


=item *

Now if there are no MX records for destination domain, it'll be tried
an SMTP connection to that domain directly.

=back

[L<top|"__index__">]

=head2 February 05, 2000

=over 4

=item *

Some code rewrite and SMTP RDNS check added.

=back

[L<top|"__index__">]

=head2 January 31, 2000

=over 4

=item *

Bug Fixes, some code rewrite and added NT service startup.

=back

[L<top|"__index__">]

=head2 January 26, 2000

=over 4

=item *

Bug Fixes.

=back

[L<top|"__index__">]

=head2 January 18, 2000

=over 4

=item *

Bug Fixes.

=back

[L<top|"__index__">]

=head2 January 13, 2000

=over 4

=item *

Bug Fixes.

=back

[L<top|"__index__">]

=head2 October 11, 1999

=over 4

=item *

Initial Revision.

=back

[L<top|"__index__">]

