- New
slimta.util
functions for limiting outbound connections to IPv4.
- The
tls
option to many different class constructors now defaults (withNone
) to enabling TLS with no custom configuration. It can be given explicitlyFalse
to disable TLS.
- Fixed a possible race condition on enqueue.
3.2 - 2016-05-16
- The
parseline
function is now exposed and documented. - The
slimta.logging.log_exception
function may now be replaced with custom functions, for special error handling scenarios.
- Unit tests are now run with
py.test
instead ofnosetests
. - 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.gaierror
failures are now caught and ignored during PTR lookup.
- Correctly set an empty greenlet pool in
EdgeServer
constructor. - Corrected a potential duplicate relay scenario in
Queue
. Reply
encoding and decoding now works correctly in Python 2.x.- Fixed
httplib
imports in Python 3.3.
3.1 - 2016-02-04
QueueError
objects may now set thereply
attribute to tell edge services what happened.- SMTP servers now advertize
SMTPUTF8
and 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
451
codes when aQueueError
occurs, rather than550
. - The
Bounce
class header and footer templates may now be bytestrings. Envelope.flatten
now returns bytestrings on Python 3, to avoid unnecessary encoding and decoding of message data.
- Correctly throws
PermanentRelayError
instead ofZeroDivisionError
for 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_creator
option to control how sockets are created during SMTP relaying. - Support for
ehlo_as
functions to allow custom EHLO logic on each delivery attempt. - Support for a new
handle_queued
callback 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
221
or421
in an SMTP edge session will now result in the connection closing.