Version 1.2.4:
- Changed return code in case of authentication error from EX_DATAERR 
  to EX_NOPERM
- Changed return code in case of missing/invalid configuration file or 
  nonexistent account from EX_NOINPUT/EX_DATAERR to EX_CONFIG
- Test return value of localtime(3) in msmtp_log()
- Windows specific code in net.c: moved translation of error code from 
  WSAStartup() from net_lib_init() to wsa_strerror()
- OpenSSL specific code in tls.c: minor cleanup in openssl_io_error()
- Always keep control of the format string in calls to merror(). (There
  were four cases where the result of strerror() was passed as the format
  string in smtp.c.)  
- Clarified usage instructions of merror() in merror.h
- Check at initialization time whether support for a manually requested
  authentication mechanism is compiled, *before* establishing a network
  connection.
  This required a change from smtp_auth_caps() to the (equally trivial)
  smtp_authmech_is_supported() function.
  Made the output of both "not compiled in" messages (TLS and auth mech)
  consistent.
  The return code for these error conditions is EX_UNAVAILABLE now.
- Make the output of -h/--help and -v/--version consistent with the GNU 
  utilities by including copyright and no-warranty notice (version) and
  a short description and the bug report address (--help).
- Add missing declarations of optarg and optind to msmtp.c, needed for
  getopt() handling. No compiler complained so far, though.
- Fixed stupid error in smtp.c that prevented the detection of output 
  errors when sending the RCPT TO command (highly unlikely to occur).
- Cosmetic change in -v/--version output that avoids lines longer than 
  80 characters
- Fixed some man page typos
- Fixed typos in conffile.c error message
- Fixed typo in tls.c error message (OpenSSL code only)
- Changed error messages: "bla [blub]" -> "bla: blub"
- Improved some TLS error messages
- Corrected short description in man page, README and code comments
- Updated README.dos

Version 1.2.3:
- documentation updates
- The -v/--version option now prints information about the supported 
  authentication methods
- The tls_* commands and the auth mechanisms ntlm and digest-md5 are now
  allowed in the configuration file even if msmtp is compiled without
  support for TLS or GSASL. An error message will only appear only if you
  actually try to make use of a feature not compiled in.
- The GNU SASL code does not expect support for digest-md5 or ntlm (or 
  any other mechanism) in the library anymore. It just works with what's 
  supported. This means you can now use the packaged versions of GNU SASL
  from Gentoo and Debian sarge.
- Switch from gsasl_client_step_base64() to the newer gsasl_step64()
  in the GNU SASL authentication code
- Martin Hauke added README.hpux
- updated automake files to version 1.8.5
- configure.ac: check that pkg-config exists before trying to use it
- configure.ac: try to check for GNU SASL using pkg-config (if available)
- configure.ac: improved detection of network settings.
- configure.ac: improved checks for OpenSSL and GnuTLS
- configure.ac: fixed display of warning when neither OpenSSL nor GnuTLS 
  is found and --disable-ssl was not explicitly used
- updated README.win32, README.dos
- Use getaddrinfo() on Windows (but not gai_strerror()). This enables 
  IPv6 support for Windows.
- clarified an error message in tls.c (only OpenSSL affected):
  "cannot establish TLS connection" changed to "TLS handshake failed"

Version 1.2.2:
- set *error_msg to NULL in smtp_auth() and smtp_send_mail() to prevent 
  possible segfaults in the calling function
- correctly handle mails whose last line lacks a newline character (the 
  missing character will be added)
- smtp error messages are sanitized before printed in an error message or 
  to the logfile: non-printable characters (!isprint(c)) are replaced with
  a question mark.
- corrected a problem where the "exitcode=..." field in the logfile said 
  EX_SOFTWARE though the exitcode was in fact something different
- do not expect an SMTP response to end with '\n'; clarified comment about 
  smtp_get_msg() (Ralph Siemsen)
- added a "mailsize=..." field to the logfile
- added a "smtpmsg='...'" field to the logfile
- added a "errormsg='...'" field to the logfile
- the dash (-) as a logfile name causes logging to standard output
- removed all `...' quoting from error messages: `bla' -> bla
- updated documentation
  
Version 1.2.1:
- don't use -n option for echo in configure.ac, because it is not portable
- reduce calls to printf() in msmtp_serverinfo()
- correctly handle configuration files in which the last line does not end
  with a newline character
- update MD5 implementation to the version from popa3d-0.6.4.1, which has 
  a small fix (msmtp was not affected).

Version 1.2.0:
- changed output of -v,--version
- made TLS/SSL support optional: --disable-ssl disables it.
- moved md5.[ch] to md5_apps.[ch]
- added MD5 implementation by Solar Designer (files md5_algo.c and 
  md5_algo.h). It only gets used when
  - GNU SASL is not used and 
  - GnuTLS is not used and 
  - OpenSSL is not used and 
  - the C library does not implement MD5.
  See README.md5.
- print all debugging info to stdout (the SMTP session was printed to 
  stderr before).

Version 1.1.3:
- cosmetic changes in configure.ac
- cosmetic change in --serverinfo output
- new command: logfile (see man page)
- new option -i, which is ignored for compatibility with mail(1)
- made smtp_msg_status() available through smtp.h because the new 
  logging code needs it
- documentation updates
- translate SMTP_EINVAL to EX_DATAERR instead of EX_SOFTWARE in 
  exitcode_smtp() in msmtp.c

Version 1.1.2:
- changed the net_getline() and tls_getline() funtions to the slightly 
  different net_gets()/tls_gets() functions to clean things up and 
  prevent minor possible bugs
- various minor cleanups and portability improvements
- updated documentation. msmtp now accepts the example configuration 
  file ;-)

Version 1.1.1:
- many minor cleanups
- fixed a bug where error messages might get overwriten by further 
  error messages in msmtp.c
- tls_nostarttls now also changes the default port to 465 (ssmtp).

Version 1.1.0:
- restructured everything to use a new error handling scheme
- restructured TLS interface
- rewrote SMTP protocol implementation
- added SMTP PIPELINING support
- added new option -S, --serverinfo, which prints information about the
  SMTP server.
- changed option -f, --file to -F, --file
- added new option -f, --from to set the envelope from address. The from
  address does not need to be set in the configuration file anymore.
  The command line address overrides the configuration file setting.  
- removed check for vasprintf() in configure.ac; it is not used anymore
- removed check for strcasecmp() in configure.ac
- the tilde expansion now uses getpwuid() when $HOME is not set on UNIX

Version 1.0.0:
- correctly handle certificate chains in tls.c GnuTLS code
- added tilde expansion to configuration file filenames (expand_tilde() 
  in path.c)
- return EX_IOERR instead of other exit codes on read errors in esmtp.c
- case insensitive parsing of EHLO response
- fall back to HELO if EHLO fails
- removed check for vsnprintf() in configure.ac
- updated automake
- removed names of failed functions from error messages (Example:
  "cannot get system time [time(): %s]" -> "cannot get system time [%s]")
- slightly improved error messages in net.c
- minor man page improvements
- updated README.gsasl

Version 0.7.2:
- minor man page improvements
- additional eror check in smtp_copy_mail()
- removed unneeded msmtp.h
- moved cram_md5.* to md5.* and renamed cram_md5() to hmac_md5()
- cleaned up conditional compilation of base64.c and md5.c
- documentation updates
- cleaned up configure.ac
- new files paths.[ch] for OS dependend path functions
- added support for MinGW to build native Win32 application -- see README.win32
- added support for DJGPP to build native DOS application -- see README.dos
- fixed a bug in tls.c: wrong test for RAND_status() (OpenSSL code).
  This only affected the new DOS port (see next point).
- added code to seed the OpenSSL pseudo random number generator. This code is
  only used when OpenSSL cannot seed the PRNG itself. This means the code is
  probably only ever used on DOS.

Version 0.7.1:
- new command 'domain' to set the EHLO parameter
- new options --pretend and --debug (thanks to David MacMahon)
- minimal change in --version behaviour: print package name, not name of binary file

Version 0.7.0:
- Added support for DSN (Delivery Status Notification) via the new configuration
  commands 'dsn_return' and 'dsn_notify' (changes in conffile.[ch], msmtp.c,
  esmtp.[ch])
- configuration: added 'tls_nocertcheck' which disables all server 
  certificate checks (changes in conffile.[ch], msmtp.c, esmtp.[ch], tls.[ch]).
- configuration: renamed 'nostarttls' to 'tls_nostarttls'
- documentation updates
- fixed a minor bug in an OpenSSL error report
- minor --help text change
- minor cleanups in conffile.c

Version 0.6.6:
- fixed building on Solaris (and maybe other systems)

Version 0.6.5:
- License clarification: msmtp is released under the GPL with the additional
  exemption that compiling, linking, and/or using OpenSSL is allowed.
- Updated tls.c and cram_md5.c to work with gnutls >=1.0.0 and libgcrypt >=1.1.90
  The code will not work with older versions anymore!
- Use gethostbyname() in net.c if getaddrinfo() is not available. This allows
  msmtp to be compiled on older systems and systems that don't have proper IPv6
  support, for example Cygwin.
- Accept arbitrary long input lines in the mail (new function smtp_copy_mail()). 
  The MUA is responsible for the RFC conformance of mails (no line longer than 
  998 characters).
- improved error messages in case of SMTP responses that are too long
- improved error messages in tls.c
- increased SMTP buffer size in esmtp.c
- Make check of return code of vasprintf() more portable in xmalloc.c
- cleaned up esmtp.h
- changed --help text

Version 0.6.4:
- fixed a bug in conffile.c
- report missing arguments in conffile.c

Version 0.6.3:
- man page improvements
- reset error_lines to NULL in merror.c in print_error_lines() to allow
  further calls to add_error_line() (not yet needed in msmtp)
- free memory in case of tls_init() failure in msmtp.c
- fixed --disable-gsasl configure option
- #include <unistd.h> in msmtp.c because Mac OS X has getopt() there (Randolph
  Fritz). (This applies to all systems that don't have getopt.h).
- return EX_OK instead of 0 in some functions in esmtp.c

Version 0.6.2:
- added support for GNU Autotools (Christophe Nowicki)
- the GNU getopt sources are no longer included; msmtp will fall back to short 
  options when getopt_long is not available (Christophe Nowicki)
- fixed a bug in the certificate check/verification code that prevented 
  msmtp from accepting a wildcard in the Common Name (CN) field (this 
  affected only the OpenSSL version of the code)
- wrapped some lines in the man page (example section)
- updated documentation
  
Version 0.6.1:
- free x509_cert in OpenSSL code of tls_cert_check()
- always check x509_subject common name for hostname matching in OpenSSL code
  of tls_cert_check() (like the GnuTLS code does).
- improved CN/hostname matching in OpenSSL code: it is now case insensitive
  and allows the * wildcard as the left-most character in the CN (RFC 2595)
- check for x509_subject == NULL in OpenSSL code of tls_cert_check()
- moved tls_init()/tls_deinit() from smtp_send() to main()
- removed tls dependencies from net.c
- change comments/code/documentation to read GSASL instead of GnuSASL

Version 0.6.0:
- Added GnuTLS/libgcrypt support to tls.c and cram_md5.c
  You can now choose whether you want to use GnuTLS/libgcrypt or OpenSSL 
  for TLS support and CRAM-MD5 authentication (see Makefile).
- Added sanity checks of server certificate when using TLS.
- Added the tls_trust_file command.
  This enables strict verification of the server certificate.
- Added tls_key_file/tls_cert_file commands.
  These commands enable msmtp to send a client certificate to the server if 
  requested.
- Optional support for GSASL. When used, it replaces the built-in
  PLAIN, LOGIN and CRAM-MD5 authentication code and adds support for
  DIGEST-MD5 and NTLM.
- The EHLO response is now taken into account:
  - The STARTTLS command will only be sent if the server supports it
  - If no authentication method was specified, the best one that is supported
    by the server will be chosen.
- Removed the ability to choose the TLS method with the tls command. This was
  not completely implementable with GnuTLS (since it lacks SSLv2 support afaik)
  and is unnecessary anyway. The best method available is automatically chosen.
- Changed configuration file parsing: Now arguments may contain spaces and may
  be enclosed in double quotes (to allow leading or ending blanks in an 
  argument).
- Reorganized Makefile to support the new configuration options (GSASL/GnuTLS).
- Removed unnecessary #includes from cram_md5.c
- Updated documentation

Version 0.5.3:
- Fixed RFC2821 violations in the "MAIL FROM:" and "RCPT TO:" commands.
- Fixed RFC2487 SHOULD-clause violation: Now send EHLO again after
  successful TLS handshake.

Version 0.5.2:
- fixed stupid bugs in base64dec() and cram_md5() that sometimes caused
  CRAM-MD5 authentication to fail.

Version 0.5.1:
- man page corrections and improvements
- improved error messages
- moved msmtp.html to msmtp.1.html

Version 0.5.0:
- Switched from commandline configuration to a configuration file
  (~/.msmtprc). This improves security (no authentication data on the
  commandline) and allows easy setup of multiple accounts.  
  The only options are --help, --version, --file, --account now.

Version 0.4.2:
- Security fix: delete username and password information from the commandline
  after they have been extracted, so that this information is not visible per
  ps / top anymore.
  It is still possible to see the length of the authentication information via
  /proc/pid/cmdline in Linux.
  The real fix is to move all sensitive data into a configuration file. This
  is planned for 0.5.0.
  
Version 0.4.1:
- improved error handling in non-TLS net i/o
- the code that removes the Bcc header was updated to conform to RFC 2822,
  section 2.2.3. It now allows continued Bcc header lines to start with ' ' or
  '\t' (previously only '\t' was allowed).
- properly close TLS connection at the end of smtp_send()
- minor cleanups
- minor man page improvements

Version 0.4.0:
- changed the short version of --keep-bcc to -k (as documented in the man page)
- cleaned up the choice of the authentication method in msmtp.c
- changed tls_start() to use tls_io_error() for SSL_connect() errors
- fixed a segfault bug with failing tls_start() that was introduced in 0.3.1
- added --nostarttls option (Kai)
- updated man page to clarify the use of optional arguments (Kai)

Version 0.3.1:
- code cleanups
- documentation improvements
- --help text improvements
- added instructions on how to find out system specific settings to the 
  Makefile
- changed tls.[ch] to hide OpenSSL specific details.
- improved TLS input/output error reporting
- fixed a minor bug in the error handling of tls_start()
- improved error reporting in smtp_get_response()
- fixed minor off-by-one bug in smtp_put() (the check for the return value of 
  vsnprintf() was wrong). This bug would have been triggered if you used an 
  extremely long username for authentication (longer than ca. 950 characters).

Version 0.3.0:
- remove Bcc header by default
- added --keep-bcc to keep the Bcc header.
- fixed handling of lines beginning with a dot
- added GNU getopt source for systems that don't have it
- added xvasprintf/xasprintf() to xmalloc.c
- cleaned up xmalloc.c
- changed merror.c to use xvasprintf()
- open_socket() improvements (now uses getaddrinfo() for protocol independence
  and portability)
- Makefile changes (support for more platforms)
- documentation updates

Version 0.2.6:
- added support for IPv6
- documentation update

Version 0.2.5:
- fixed handling of optional arguments for short options
- fixed error handling for gethostbyname()
- minor documentation changes
- renamed smtp.[ch] to esmtp.[ch]
- improved error reporting in smtp_auth_plain()

Version 0.2.4:
- minor error message changes
- minor documentation changes
- cleanups in tls.c
- error handling changes and fixes in tls.c
- fixed potential problems reported by NetBSD's lint(1)
- moved choice of secure authentication method from smtp.c to msmtp.c

Version 0.2.3:
- changed behaviour of --auth: does not accept 'none' anymore,
  no argument means choose a *secure* method.
- changed behaviour of --tls: does not accept 'any', 'none'
  anymore, no argument means choose best method available.
- documentation updates and minor changes
- minor Makefile tweaks
- now use die() to exit in case of memory allocation failure 
- minor tls.c cleanups
- fixed stupid minor bug regarding base64dec()

Version 0.2.2:
- minor change to the Makefile
- minor change to the man page
- minor changes to unify error messages
- close connection on errors in smtp_send()

Version 0.2.1:
- support for AUTH PLAIN
- documentation fixes, updates and cleanups.
- fixed memory leak in smtp_auth_login()
- fixed stupid bug regarding base64enc()
- clean up smtp_auth_cram_md5()

Version 0.2.0:
- AUTH CRAM-MD5 support
- new option (--auth) to choose the authentication method
- support for --version and --help if one of them is the only argument
- documentation fixes / improvements
- better error messages
- Makefile fixes

Version 0.1.1:
- documentation updates / fixes
- better error handling in start_tls()
- adjust MAX_SMTP_LINELEN in smtp.c
