1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162
|
===================
NEWS for aiosmtpd
===================
aiosmtpd-next
=============
Added
-----
* **Apache License version 2.0**
* Support for SMTP ``AUTH``, with AUTH hooks feature
* Built-in implementation for ``AUTH PLAIN`` and ``AUTH LOGIN`` logic (fixes #102)
* Feature to inject keyword args during server class instantiation in ``Controller.factory``
(potentially fixes #194, #179)
* Support for Python 3.8 and 3.9.0 (also fixes #188)
Fixed/Improved
--------------
* Don't strip last ``\r\n`` prior to terminating dot.
* Slight improvement to make Test Suite more maintainable
* No more failures/DeprecationWarnings for Python 3.8 (fixes #167)
* Faster ``_handle_client()`` processing
* Faster method access for ``smtp_*``, ``handle_*``, and ``auth_*`` hooks
Removed
-------
* Unit Tests that mocked too deep, possibly masking observable internal behaviors
* Drop support for Python 3.5
1.2 (2018-09-01)
================
* Improve the documentation on enabling ``STARTTLS``. (Closes #125)
* Add customizable ident field to SMTP class constructor. (Closes #131)
* Remove asyncio.coroutine decorator as it was introduced in Python 3.5.
* Add Controller docstring, explain dual-stack binding. (Closes #140)
* Gracefully handle ASCII decoding exceptions. (Closes #142)
* Fix typo.
* Improve Controller ssl_context documentation.
* Add timeout feature. (Partial fix for #145)
1.1 (2017-07-06)
================
* Drop support for Python 3.4.
* As per RFC 5321, ยง4.1.4, multiple ``HELO`` / ``EHLO`` commands in the same
session are semantically equivalent to ``RSET``. (Closes #78)
* As per RFC 5321, $4.1.1.9, ``NOOP`` takes an optional argument, which is
ignored. **API BREAK** If you have a handler that implements
``handle_NOOP()``, it previously took zero arguments but now requires a
single argument. (Closes #107)
* The command line options ``--version`` / ``-v`` has been added to print the
package's current version number. (Closes #111)
* General improvements in the ``Controller`` class. (Closes #104)
* When aiosmtpd handles a ``STARTTLS`` it must arrange for the original
transport to be closed when the wrapped transport is closed. This fixes a
hidden exception which occurs when an EOF is received on the original
tranport after the connection is lost. (Closes #83)
* Widen the catch of ``ConnectionResetError`` and ``CancelledError`` to also
catch such errors from handler methods. (Closes #110)
* Added a manpage for the ``aiosmtpd`` command line script. (Closes #116)
* Added much better support for the ``HELP``. There's a new decorator called
``@syntax()`` which you can use in derived classes to decorate ``smtp_*()``
methods. These then show up in ``HELP`` responses. This also fixes
``HELP`` responses for the ``LMTP`` subclass. (Closes #113)
* The ``Controller`` class now takes an optional keyword argument
``ssl_context`` which is passed directly to the asyncio ``create_server()``
call.
1.0 (2017-05-15)
================
* Release.
1.0rc1 (2017-05-12)
===================
* Improved documentation.
1.0b1 (2017-05-07)
==================
* The connection peer is displayed in all INFO level logging.
* When running the test suite, you can include a ``-E`` option after the
``--`` separator to boost the debugging output.
* The main SMTP readline loops are now more robust against connection resets
and mid-read EOFs. (Closes #62)
* ``Proxy`` handlers work with ``SMTP`` servers regardless of the value of the
``decode_data`` argument.
* The command line script is now installed as ``aiosmtpd`` instead of
``smtpd``.
* The ``SMTP`` class now does a better job of handling Unicode, when the
client does not claim to support ``SMTPUTF8`` but sends non-ASCII anyway.
The server forces ASCII-only handling when ``enable_SMTPUTF8=False`` (the
default) is passed to the constructor. The command line arguments
``decode_data=True`` and ``enable_SMTPUTF8=True`` are no longer mutually
exclusive.
* Officially support Windows. (Closes #76)
1.0a5 (2017-04-06)
==================
* A new handler hook API has been added which provides more flexibility but
requires more responsibility (e.g. hooks must return a string status).
Deprecate ``SMTP.ehlo_hook()`` and ``SMTP.rset_hook()``.
* Deprecate handler ``process_message()`` methods. Use the new asynchronous
``handle_DATA()`` methods, which take a session and an envelope object.
* Added the ``STARTTLS`` extension. Given by Konstantin Volkov.
* Minor changes to the way the ``Debugging`` handler prints ``mail_options``
and ``rcpt_options`` (although the latter is still not support in ``SMTP``).
* ``DATA`` method now respects original line endings, and passing size limits
is now handled better. Given by Konstantin Volkov.
* The ``Controller`` class has two new optional keyword arguments.
- ``ready_timeout`` specifies a timeout in seconds that can be used to limit
the amount of time it waits for the server to become ready. This can also
be overridden with the environment variable
``AIOSMTPD_CONTROLLER_TIMEOUT``. (Closes #35)
- ``enable_SMTPUTF8`` is passed through to the ``SMTP`` constructor in the
default factory. If you override ``Controller.factory()`` you can pass
``self.enable_SMTPUTF8`` yourself.
* Handlers can define a ``handle_tls_handshake()`` method, which takes a
session object, and is called if SSL is enabled during the making of the
connection. (Closes #48)
* Better Windows compatibility.
* Better Python 3.4 compatibility.
* Use ``flufl.testing`` package for nose2 and flake8 plugins.
* The test suite has achieved 100% code coverage. (Closes #2)
1.0a4 (2016-11-29)
==================
* The SMTP server connection identifier can be changed by setting the
``__ident__`` attribute on the ``SMTP`` instance. (Closes #20)
* Fixed a new incompatibility with the ``atpublic`` library.
1.0a3 (2016-11-24)
==================
* Fix typo in ``Message.prepare_message()`` handler. The crafted
``X-RcptTos`` header is renamed to ``X-RcptTo`` for backward compatibility
with older libraries.
* Add a few hooks to make subclassing easier:
* ``SMTP.ehlo_hook()`` is called just before the final, non-continuing 250
response to allow subclasses to add additional ``EHLO`` sub-responses.
* ``SMTP.rset_hook()`` is called just before the final 250 command to allow
subclasses to provide additional ``RSET`` functionality.
* ``Controller.make_socket()`` allows subclasses to customize the creation
of the socket before binding.
1.0a2 (2016-11-22)
==================
* Officially support Python 3.6.
* Fix support for both IPv4 and IPv6 based on the ``--listen`` option. Given
by Jason Coombs. (Closes #3)
* Correctly handle client disconnects. Given by Konstantin vz'One Enchant.
* The SMTP class now takes an optional ``hostname`` argument. Use this if you
want to avoid the use of ``socket.getfqdn()``. Given by Konstantin vz'One
Enchant.
* Close the transport and thus the connection on SMTP ``QUIT``. (Closes #11)
* Added an ``AsyncMessage`` handler. Given by Konstantin vz'One Enchant.
* Add an examples/ directory.
* Flake8 clean.
1.0a1 (2015-10-19)
==================
* Initial release.
|