Email submission library
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
crammd5
doc
examples
login
ntlm
plain
AUTHORS
COPYING
COPYING.LIB
ChangeLog
INSTALL
Makefile.am
Makefile.in
NEWS
Notes
README.md
TODO
acconfig.h
acinclude.m4
aclocal.m4
api.h
auth-client.c
auth-client.h
auth-plugin.h
base64.c
base64.h
concatenate.c
concatenate.h
config.guess
config.h.in
config.sub
configure
configure.ac
depcomp
errors.c
getaddrinfo.c
getaddrinfo.h
gethostbyname.c
gethostbyname.h
headers.c
headers.h
htable.c
htable.h
install-sh
libesmtp-config.in
libesmtp-private.h
libesmtp.h
libesmtp.spec.in
ltmain.sh
memrchr.c
message-callbacks.c
message-source.c
message-source.h
missing
missing.h
protocol-states.h
protocol.c
protocol.h
rfc2822date.c
rfc2822date.h
siobuf.c
siobuf.h
smtp-api.c
smtp-auth.c
smtp-bdat.c
smtp-etrn.c
smtp-tls.c
snprintf.c
strcasecmp.c
strdup.c
strncasecmp.c
tokens.c
tokens.h

README.md

libESMTP, version 1.0

Brian Stafford contact@brianstafford.info

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 or Postfix. 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.

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 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 separate 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.

Installation

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

Dependencies

dlsym

libESMTP requires that dlsym() is available on your system. This is true of many modern systems but not all. An alternative is to download and install libltdl which provides a functional equivalent. Libltdl is distributed with GNU Libtool, which is available from http://www.gnu.org/software/libtool/

getaddrinfo

You will need a modern resolver library providing the getaddrinfo API. getaddrinfo is easier to use, protocol independent, thread-safe and RFC 2553 and Posix standard.

An emulation of this is provided for systems that do not have it, however it is reccommended that the version provided in recent versions of GNU libc or BIND is used. Most people will already at least one of these (e.g. virtually every Linux distro). There is also support for the lightweight resolver distributed with BIND 9. BIND may be downloaded from the ISC (http://www.isc.org/).

openssl

OpenSSL (http://www.openssl.org/) is required to build the SMTP STARTTLS extension and the NTLM authentication module. If you have no need for either of these features, you do not need OpenSSL.

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.