Skip to content

Releases: slimta/python-slimta

Version 4.0.0

13 Nov 22:42
Compare
Choose a tag to compare

Issue Tracker

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.

Version 3.2.0

16 May 13:40
Compare
Choose a tag to compare

Issue Tracker

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.

Version 3.1.0

04 Feb 20:44
Compare
Choose a tag to compare

Issue Tracker

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.

Version 3.0.0

19 Dec 16:50
Compare
Choose a tag to compare

Issue Tracker

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.