4.1 - Unreleased
create_listenersfunction for creating IP sockets on both IPv4 and IPv6, if available.
mixinfunctions in the
- Support for
- Allow providing custom
WsgiEdgelistener creation was made more consistent with other edges.
StaticLmtpRelaynow returns success (250) responses as well.
- Multi-recipient messages to
per_recipientflag set will execute once per recipient with partial delivery responses.
- The result of the reverse IP lookup was never consumed in
- Fix various issues in the
- Corrected sorting of AUTH mechanisms.
- Fix SMTP client always choosing
PLAINAUTH mechanism even if it is not advertised, instead of best available.
4.0 - 2016-11-13
slimta.utilfunctions for limiting outbound connections to IPv4.
socket_error_log_levelvariable for better log level control.
- Constructors and functions that took a
tlsdictionary now take a
contextargument that should be an
SSLContextobject. This allows finer control of encryption behavior, as well as the ability to pre-load sensitive certificate data before daemonization.
- Client connections will now be opportunistic and try to use TLS if it is available, even if a key or cert have not been configured.
AUTHSMTP extension will now advertise insecure authentication mechanisms without TLS, but trying to use them will fail.
- Moved the
slimta.util.systemto de-clutter the top-level namespace.
- Fixed a possible race condition on enqueue.
- Fixed exception when given empty EHLO/HELO string.
- Fixed the fallback from EHLO to HELO in certain situations.
session.authvariable now correctly contains the tuple described in the documentation.
3.2 - 2016-05-16
parselinefunction is now exposed and documented.
slimta.logging.log_exceptionfunction may now be replaced with custom functions, for special error handling scenarios.
- Unit tests are now run with
- Exception log lines will now include up to 10,000 characters of the traceback string.
- Socket errors are no longer logged as unhandled errors and do not include a traceback.
socket.gaierrorfailures are now caught and ignored during PTR lookup.
- Correctly set an empty greenlet pool in
- Corrected a potential duplicate relay scenario in
Replyencoding and decoding now works correctly in Python 2.x.
httplibimports in Python 3.3.
3.1 - 2016-02-04
QueueErrorobjects may now set the
replyattribute to tell edge services what happened.
- SMTP servers now advertize
SMTPUTF8and clients will now use UTF-8 sender and recipient addresses when connected to servers that advertize it.
- When creating an edge or relay service, now checks for the existence of any given TLS key or cert files before proceeding.
- Support for proxy protocol version 2 and version auto-detection.
- Dependence on six for Python 2/3 compatibility.
- The builtin edges now use
451codes when a
QueueErroroccurs, rather than
Bounceclass header and footer templates may now be bytestrings.
Envelope.flattennow returns bytestrings on Python 3, to avoid unnecessary encoding and decoding of message data.
- Correctly throws
ZeroDivisionErrorfor SMTP MX relays when DNS returns no results.
3.0 - 2015-12-19
- Compatibility with Python 3.3+.
- Proxy protocol version 1 support on edge services.
- Dependence on pycares for DNS resolution.
- Support for the
socket_creatoroption to control how sockets are created during SMTP relaying.
- Support for
ehlo_asfunctions to allow custom EHLO logic on each delivery attempt.
- Support for a new
handle_queuedcallback on SMTP edges, to control the reply code and message based on queue results.
- Compatibility with Python 2.6.x.
- Dependence on dnspython for DNS resolution.
- Relay results that were returned as a list are now returned as a dict, keyed on the envelope recipients.
- During SMTP relaying, timeouts and other errors will more consistently return the current SMTP command where the error happened.
- Setting a reply code to
421in an SMTP edge session will now result in the connection closing.