			libESMTP, version 0.8
			      -- oOo --
	      	Brian Stafford	<brian@stafford.uklinux.net>


What is libESMTP?
-----------------

LibESMTP is a library to manage posting (or submission of) electronic
mail using SMTP to a preconfigured Mail Transport Agent (MTA) such as
Exim.  It may be used as part of a Mail User Agent (MUA) or another
program that must be able to post electronic mail but where mail
functionality is not the program's primary purpose.

LibESMTP is not intended to be used as part of a program that implements
a Mail Transport Agent.

LibESMTP is an attempt to provide a robust implementation of the SMTP
protocol for use with mail clients.  It is being developed as a reaction
to the experience of incomplete or buggy implementations of SMTP and
also to help remove the need for the installation of MTAs on workstations
which only need them to provide a sendmail command for a mail client to
post its mail.

It is hoped that the availability of a lightweight library implementing
an SMTP client will both ease the task of coding for software authors
and improve the quality of the resulting code.

Important
---------
libESMTP is currently under development and testing.  Consequently
certain parts of the API are subject to change between releases of the
library and certain APIs and SMTP extensions have not yet been fully
implemented or tested.

Features
--------

Support for many SMTP extensions, notably PIPELINING (RFC 2920),
DSN (RFC 2554) and AUTH (RFC 2554).  Also supported is the
sendmail specific XUSR extension which informs sendmail that the
message is an initial submission.

SASL
----

AUTH is implemented using a new SASL (RFC 2222) client library which is
currently integrated into libESMTP.  It was felt that the Cyrus SASL
library was too complex for the needs of a client only SASL
implementation.

If there is sufficient interest in a LGPL SASL library, the SASL client
API will be split off into a speerate library in the future.  There may
also be a case for implementing a server side SASL library along the
same lines as the client implementation.

Dependencies
------------

libESMTP requires that libltdl is installed on your system.  Libltdl is
included in the libESMTP tarball.  Libltdl is distributed with GNU
Libtool, which is available from http://www.gnu.org/software/libtool/

No other packages are required, however if OpenSSL (http://www.openssl.org/)
is installed, it will be used by the authentication code.

Installation
------------

Please refer to INSTALL for generic installation instructions.  LibESMTP
has a few options when configuring; ./configure --help will list them.

Balsa users: be sure to use the --enable-require-all-recipients when running
configure.

configure may complain that it cannot find getaddrinfo and suggest using
the --enable-gethostbyname option.  This is not enabled automatically
since the gethostbyname (or getipnodebyname) is deprecated in favour of the
getaddrinfo, which is easier to use, protocol independent, thread-safe and
Posix standard.

If this happens, you have a choice.  Either take the easy option and do
as configure suggests or get a modern resolver library which implements
getaddrinfo, e.g.  recent versions of ISC bind.  Support for gethostbyname
is likely to be removed from libESMTP in the future.

Please note that if your system provides getaddrinfo it will always be
used.  Support for gethostbyname cannot be enabled in this case.

Licence
-------

LibESMTP is licensed under the GNU Lesser General Public License and the
example programs are under the GNU General Public Licence.  Please refer
to COPYING.GPL and COPYING for full details.

Obtaining libESMTP
------------------

LibESMTP may be obtained from:
	http://www.stafford.uklinux.net/libesmtp/

Documentation
-------------

LibESMTP documentation is available on the web at:
	http://www.stafford.uklinux.net/libesmtp/api.html
This probably (definitely) lags behind the actual source code.

What does the 'E' stand for?
--------------------------

The 'E' in libESMTP is there because support for a number of SMTP
extensions is built in to the library by design.


