libESMTP is an SMTP client which manages posting (or submission of) electronic mail via a preconfigured Mail Transport Agent (MTA).
libESMTP library may be used as part of a Mail User Agent (MUA) or other program that must be able to post electronic mail but where mail functionality is not that program's primary purpose.
The availability of a reliable lightweight thread-safe SMTP client eases the task of coding for software authors thus improving the quality of the resulting code.
Here are some key features of "libESMTP":
- libESMTP supports many SMTP extensions, notably PIPELINING (RFC 2920), DSN (RFC 1891) and SASL authentication (RFC 2554). SMTP AUTH is implemented using a SASL client library integrated into libESMTP. Supported SASL mechanisms include CRAM-MD5 and NTLM.
- libESMTP is also efficient. Because it buffers all network traffic, when used in conjunction with a pipelining SMTP server libESMTP significantly increases network performance, especially on slow connections and those with high latency. Even without a pipelining server libESMTP offers significantly better performance than would be expected with a simple client.
- libESMTP is not designed to be used as part of a program that implements a Mail Transport Agent. This is not because the code is unsuitable for use in an MTA, in fact the protocol engine is significantly better than those in many MTAs. Rather, by eliminating the need for MX lookup and next-hop determination, the design of libESMTP is simplified; thus goals are made achievable. Besides, such features are undesirable in a program that is not an MTA, particularly if the client is behind a firewall which blocks access to port 25 on the Internet.
What's New in This Release: [ read full changelog ]
· Each component matched by match-domain() is either a single '*' which matches anything or a case-insensitive comparison with a string of alphanumeric characters or a '-'. This is more restrictive than RFC 2818 appears to allow and replaces the previous match which was supposed to allow multiple wildcards but which just didn't work. Revised check_acceptable_security() to check subjectAltName falling back to commonName only if subjectAltName is not available.