Permalink
Fetching contributors…
Cannot retrieve contributors at this time
135 lines (97 sloc) 4.79 KB

Change Log

Unreleased

Fixed

  • The result of the reverse IP lookup was never consumed in SmtpEdge.

4.0 - 2016-11-13

Added

  • New slimta.util functions for limiting outbound connections to IPv4.
  • New socket_error_log_level variable for better log level control.

Changed

  • Constructors and functions that took a tls dictionary now take a context argument that should be an SSLContext object. 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.
  • The AUTH SMTP extension will now advertise insecure authentication mechanisms without TLS, but trying to use them will fail.
  • Moved the slimta.system module to slimta.util.system to de-clutter the top-level namespace.

Fixed

  • 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.
  • The session.auth variable now correctly contains the tuple described in the documentation.

3.2 - 2016-05-16

Added

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

Changed

  • Unit tests are now run with py.test instead of nosetests.
  • 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.

Fixed

  • 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

Added

  • QueueError objects may now set the reply 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.

Removed

  • Dependence on six for Python 2/3 compatibility.

Changed

  • The builtin edges now use 451 codes when a QueueError occurs, rather than 550.
  • 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.

Fixed

  • Correctly throws PermanentRelayError instead of ZeroDivisionError for SMTP MX relays when DNS returns no results.

3.0 - 2015-12-19

Added

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

Removed

  • Compatibility with Python 2.6.x.
  • Dependence on dnspython for DNS resolution.

Changed

  • Relay results that were returned as a list are now returned as a dict, keyed on the envelope recipients.

Fixed

  • 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 or 421 in an SMTP edge session will now result in the connection closing.