NEWS for aiosmtpd¶
aiosmtpd-next¶
Added¶
Apache License version 2.0
Support for SMTP
AUTH, with AUTH hooks featureBuilt-in implementation for
AUTH PLAINandAUTH LOGINlogic (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\nprior to terminating dot.Slight improvement to make Test Suite more maintainable
No more failures/DeprecationWarnings for Python 3.8 (fixes #167)
Faster
_handle_client()processingFaster method access for
smtp_*,handle_*, andauth_*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/EHLOcommands in the same session are semantically equivalent toRSET. (Closes #78)As per RFC 5321, $4.1.1.9,
NOOPtakes an optional argument, which is ignored. API BREAK If you have a handler that implementshandle_NOOP(), it previously took zero arguments but now requires a single argument. (Closes #107)The command line options
--version/-vhas been added to print the package’s current version number. (Closes #111)General improvements in the
Controllerclass. (Closes #104)When aiosmtpd handles a
STARTTLSit 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
ConnectionResetErrorandCancelledErrorto also catch such errors from handler methods. (Closes #110)Added a manpage for the
aiosmtpdcommand 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 decoratesmtp_*()methods. These then show up inHELPresponses. This also fixesHELPresponses for theLMTPsubclass. (Closes #113)The
Controllerclass now takes an optional keyword argumentssl_contextwhich is passed directly to the asynciocreate_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
-Eoption 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)
Proxyhandlers work withSMTPservers regardless of the value of thedecode_dataargument.The command line script is now installed as
aiosmtpdinstead ofsmtpd.The
SMTPclass now does a better job of handling Unicode, when the client does not claim to supportSMTPUTF8but sends non-ASCII anyway. The server forces ASCII-only handling whenenable_SMTPUTF8=False(the default) is passed to the constructor. The command line argumentsdecode_data=Trueandenable_SMTPUTF8=Trueare 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()andSMTP.rset_hook().Deprecate handler
process_message()methods. Use the new asynchronoushandle_DATA()methods, which take a session and an envelope object.Added the
STARTTLSextension. Given by Konstantin Volkov.Minor changes to the way the
Debugginghandler printsmail_optionsandrcpt_options(although the latter is still not support inSMTP).DATAmethod now respects original line endings, and passing size limits is now handled better. Given by Konstantin Volkov.The
Controllerclass has two new optional keyword arguments.ready_timeoutspecifies 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 variableAIOSMTPD_CONTROLLER_TIMEOUT. (Closes #35)enable_SMTPUTF8is passed through to theSMTPconstructor in the default factory. If you overrideController.factory()you can passself.enable_SMTPUTF8yourself.
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.testingpackage 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 theSMTPinstance. (Closes #20)Fixed a new incompatibility with the
atpubliclibrary.
1.0a3 (2016-11-24)¶
Fix typo in
Message.prepare_message()handler. The craftedX-RcptTosheader is renamed toX-RcptTofor 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 additionalEHLOsub-responses.SMTP.rset_hook()is called just before the final 250 command to allow subclasses to provide additionalRSETfunctionality.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
--listenoption. Given by Jason Coombs. (Closes #3)Correctly handle client disconnects. Given by Konstantin vz’One Enchant.
The SMTP class now takes an optional
hostnameargument. Use this if you want to avoid the use ofsocket.getfqdn(). Given by Konstantin vz’One Enchant.Close the transport and thus the connection on SMTP
QUIT. (Closes #11)Added an
AsyncMessagehandler. Given by Konstantin vz’One Enchant.Add an examples/ directory.
Flake8 clean.
1.0a1 (2015-10-19)¶
Initial release.