diff --git a/aiosmtpd/controller.py b/aiosmtpd/controller.py
index 075d74b..8a336d9 100644
--- a/aiosmtpd/controller.py
+++ b/aiosmtpd/controller.py
@@ -79,6 +79,24 @@ def get_localhost() -> Literal["::1", "127.0.0.1"]:
         raise
 
 
+def _server_to_client_ssl_ctx(server_ctx: ssl.SSLContext) -> ssl.SSLContext:
+    """
+    Given an SSLContext object with TLS_SERVER_PROTOCOL return a client
+    context that can connect to the server.
+    """
+    client_ctx = ssl.create_default_context(purpose=ssl.Purpose.SERVER_AUTH)
+    client_ctx.options = server_ctx.options
+    client_ctx.check_hostname = False
+    # We do not verify the ssl cert for the server here simply because this
+    # is a local connection to poke at the server for it to do its lazy
+    # initialization sequence. The only purpose of this client context
+    # is to make a connection to the *local* server created using the same
+    # code. That is also the reason why we disable cert verification below
+    # and the flake8 check for the same.
+    client_ctx.verify_mode = ssl.CERT_NONE    # noqa: DUO122
+    return client_ctx
+
+
 class _FakeServer(asyncio.StreamReaderProtocol):
     """
     Returned by _factory_invoker() in lieu of an SMTP instance in case
@@ -425,7 +443,8 @@ class InetMixin(BaseController, metaclass=ABCMeta):
         with ExitStack() as stk:
             s = stk.enter_context(create_connection((hostname, self.port), 1.0))
             if self.ssl_context:
-                s = stk.enter_context(self.ssl_context.wrap_socket(s))
+                client_ctx = _server_to_client_ssl_ctx(self.ssl_context)
+                s = stk.enter_context(client_ctx.wrap_socket(s))
             s.recv(1024)
 
 
@@ -467,7 +486,8 @@ class UnixSocketMixin(BaseController, metaclass=ABCMeta):  # pragma: no-unixsock
             s: makesock = stk.enter_context(makesock(AF_UNIX, SOCK_STREAM))
             s.connect(self.unix_socket)
             if self.ssl_context:
-                s = stk.enter_context(self.ssl_context.wrap_socket(s))
+                client_ctx = _server_to_client_ssl_ctx(self.ssl_context)
+                s = stk.enter_context(client_ctx.wrap_socket(s))
             s.recv(1024)
 
 
diff --git a/setup.cfg b/setup.cfg
index 9f16d3a..63ae3a8 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -25,6 +25,7 @@ classifiers =
     Programming Language :: Python :: 3.7
     Programming Language :: Python :: 3.8
     Programming Language :: Python :: 3.9
+    Programming Language :: Python :: 3.10
     Programming Language :: Python :: Implementation :: CPython
     Programming Language :: Python :: Implementation :: PyPy
     Topic :: Communications :: Email :: Mail Transport Agents

diff --git a/.github/workflows/unit-testing-and-coverage.yml b/.github/workflows/unit-testing-and-coverage.yml
index e17be25..8d4d2ef 100644
--- a/.github/workflows/unit-testing-and-coverage.yml
+++ b/.github/workflows/unit-testing-and-coverage.yml
@@ -89,7 +89,7 @@ jobs:
       fail-fast: false
       matrix:
         os: [ "macos-10.15", "ubuntu-18.04", "ubuntu-20.04", "windows-latest" ]
-        python-version: [ "3.6", "3.7", "3.8", "3.9", "pypy3.6" ]
+        python-version: [ "3.6", "3.7", "3.8", "3.9", "3.10", "pypy3.6" ]
     runs-on: ${{ matrix.os }}
     timeout-minutes: 15  # Slowest so far is pypy3 on MacOS, taking almost 7m
     steps:
diff --git a/aiosmtpd/tests/test_server.py b/aiosmtpd/tests/test_server.py
index 0449310..bda6d3b 100644
--- a/aiosmtpd/tests/test_server.py
+++ b/aiosmtpd/tests/test_server.py
@@ -28,6 +28,7 @@ from aiosmtpd.controller import (
     UnixSocketUnthreadedController,
     _FakeServer,
     get_localhost,
+    _server_to_client_ssl_ctx,
 )
 from aiosmtpd.handlers import Sink
 from aiosmtpd.smtp import SMTP as Server
@@ -101,7 +102,10 @@ def safe_socket_dir() -> Generator[Path, None, None]:
 def assert_smtp_socket(controller: UnixSocketMixin) -> bool:
     assert Path(controller.unix_socket).exists()
     sockfile = controller.unix_socket
-    ssl_context = controller.ssl_context
+    if controller.ssl_context:
+        ssl_context = _server_to_client_ssl_ctx(controller.ssl_context)
+    else:
+        ssl_context = None
     with ExitStack() as stk:
         sock: socket.socket = stk.enter_context(
             socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
diff --git a/aiosmtpd/tests/test_smtp.py b/aiosmtpd/tests/test_smtp.py
index 69a0871..0907d37 100644
--- a/aiosmtpd/tests/test_smtp.py
+++ b/aiosmtpd/tests/test_smtp.py
@@ -1946,12 +1946,16 @@ class TestAuthArgs:
     def test_warn_authreqnotls(self, caplog):
         with pytest.warns(UserWarning) as record:
             _ = Server(Sink(), auth_required=True, auth_require_tls=False)
-        assert len(record) == 1
-        assert (
-            record[0].message.args[0]
-            == "Requiring AUTH while not requiring TLS can lead to "
-            "security vulnerabilities!"
-        )
+        for warning in record:
+            if warning.message.args and (
+                warning.message.args[0]
+                == "Requiring AUTH while not requiring TLS can lead to "
+                "security vulnerabilities!"
+            ):
+                break
+            else:
+                pytest.xfail("Did not raise expected warning")
+
         assert caplog.record_tuples[0] == (
             "mail.log",
             logging.WARNING,

aiosmtpd test suite fails on Python 3.10
While trying to build aiosmtpd 1.4.2 on Fedora for Python 3.10 (as part of [upgrading to Python 3.10 for Fedora Linux 35](https://fedoraproject.org/wiki/Changes/Python3.10)), aiosmtpd failed to build because the test suite fails:

```
=========================== short test summary info ============================
FAILED aiosmtpd/tests/test_server.py::TestUnixSocketController::test_server_creation_ssl
FAILED aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_byclient[login-False]
FAILED aiosmtpd/tests/test_smtp.py::TestAuthArgs::test_warn_authreqnotls - as...
ERROR aiosmtpd/tests/test_smtps.py::TestSMTPS::test_smtps - ssl.SSLError: Can...
ERROR aiosmtpd/tests/test_starttls.py::TestNoTLS::test_disabled_tls - OSError...
ERROR aiosmtpd/tests/test_starttls.py::TestStartTLS::test_help_starttls - OSE...
ERROR aiosmtpd/tests/test_starttls.py::TestStartTLS::test_starttls_arg - OSEr...
ERROR aiosmtpd/tests/test_starttls.py::TestStartTLS::test_starttls - OSError:...
ERROR aiosmtpd/tests/test_starttls.py::TestStartTLS::test_starttls_quit - OSE...
ERROR aiosmtpd/tests/test_starttls.py::TestStartTLS::test_failed_handshake - ...
ERROR aiosmtpd/tests/test_starttls.py::TestStartTLS::test_tls_handshake_stopcontroller
ERROR aiosmtpd/tests/test_starttls.py::TestStartTLS::test_tls_bad_syntax - OS...
ERROR aiosmtpd/tests/test_starttls.py::TestStartTLS::test_help_after_starttls
ERROR aiosmtpd/tests/test_starttls.py::TestStartTLS::test_helo_starttls - OSE...
ERROR aiosmtpd/tests/test_starttls.py::TestTLSEnding::test_eof_received - OSE...
ERROR aiosmtpd/tests/test_starttls.py::TestTLSEnding::test_tls_handshake_failing
ERROR aiosmtpd/tests/test_starttls.py::TestTLSForgetsSessionData::test_forget_ehlo
ERROR aiosmtpd/tests/test_starttls.py::TestTLSForgetsSessionData::test_forget_mail
ERROR aiosmtpd/tests/test_starttls.py::TestTLSForgetsSessionData::test_forget_rcpt
ERROR aiosmtpd/tests/test_starttls.py::TestRequireTLS::test_helo_fails - OSEr...
ERROR aiosmtpd/tests/test_starttls.py::TestRequireTLS::test_help_fails - OSEr...
ERROR aiosmtpd/tests/test_starttls.py::TestRequireTLS::test_ehlo - OSError: [...
ERROR aiosmtpd/tests/test_starttls.py::TestRequireTLS::test_mail_fails - OSEr...
ERROR aiosmtpd/tests/test_starttls.py::TestRequireTLS::test_rcpt_fails - OSEr...
ERROR aiosmtpd/tests/test_starttls.py::TestRequireTLS::test_vrfy_fails - OSEr...
ERROR aiosmtpd/tests/test_starttls.py::TestRequireTLS::test_data_fails - OSEr...
ERROR aiosmtpd/tests/test_starttls.py::TestRequireTLS::test_noop_okay - OSErr...
ERROR aiosmtpd/tests/test_starttls.py::TestRequireTLS::test_quit_okay - OSErr...
ERROR aiosmtpd/tests/test_starttls.py::TestRequireTLSAUTH::test_auth_notls - ...
ERROR aiosmtpd/tests/test_starttls.py::TestRequireTLSAUTH::test_auth_tls - OS...
= 3 failed, 521 passed, 1 skipped, 113 warnings, 27 errors in 186.09s (0:03:06) =
```

Most of it is the test suite returning `OSError: [Errno 98] error while attempting to bind on address ('127.0.0.1', 8025): address already in use`, but there are other errors too...

Full build log: [python-aiosmtpd-1.4.2-3.fc35-build.log.txt](https://github.com/aio-libs/aiosmtpd/files/6885253/python-aiosmtpd-1.4.2-3.fc35-build.log.txt)

Reference Koji build task: https://koji.fedoraproject.org/koji/taskinfo?taskID=72467725

cc: @abompard, @hroncok
aiosmtpd/tests/test_server.py::TestServer::test_smtp_utf8 aiosmtpd/tests/test_server.py::TestServer::test_default_max_command_size_limit aiosmtpd/tests/test_server.py::TestServer::test_special_max_command_size_limit aiosmtpd/tests/test_server.py::TestServer::test_warn_authreq_notls aiosmtpd/tests/test_server.py::TestController::test_ready_timeout aiosmtpd/tests/test_server.py::TestController::test_factory_timeout aiosmtpd/tests/test_server.py::TestController::test_reuse_loop aiosmtpd/tests/test_server.py::TestController::test_socket_error_dupe aiosmtpd/tests/test_server.py::TestController::test_socket_error_default aiosmtpd/tests/test_server.py::TestController::test_server_attribute aiosmtpd/tests/test_server.py::TestController::test_enablesmtputf8_flag aiosmtpd/tests/test_server.py::TestController::test_serverhostname_arg aiosmtpd/tests/test_server.py::TestController::test_hostname_empty aiosmtpd/tests/test_server.py::TestController::test_hostname_none aiosmtpd/tests/test_server.py::TestController::test_testconn_raises aiosmtpd/tests/test_server.py::TestController::test_getlocalhost aiosmtpd/tests/test_server.py::TestController::test_getlocalhost_noipv6 aiosmtpd/tests/test_server.py::TestController::test_getlocalhost_6yes aiosmtpd/tests/test_server.py::TestController::test_getlocalhost_6no[99] aiosmtpd/tests/test_server.py::TestController::test_getlocalhost_6no[97] aiosmtpd/tests/test_server.py::TestController::test_getlocalhost_6inuse aiosmtpd/tests/test_server.py::TestController::test_getlocalhost_error aiosmtpd/tests/test_server.py::TestController::test_stop_default aiosmtpd/tests/test_server.py::TestController::test_stop_assert aiosmtpd/tests/test_server.py::TestController::test_stop_noassert aiosmtpd/tests/test_server.py::TestUnixSocketController::test_server_creation aiosmtpd/tests/test_server.py::TestUnixSocketController::test_server_creation_ssl aiosmtpd/tests/test_server.py::TestUnthreaded::test_unixsocket aiosmtpd/tests/test_server.py::TestUnthreaded::test_inet_loopstop aiosmtpd/tests/test_server.py::TestUnthreaded::test_inet_contstop aiosmtpd/tests/test_server.py::TestFactory::test_normal_situation aiosmtpd/tests/test_server.py::TestFactory::test_unknown_args_direct aiosmtpd/tests/test_server.py::TestFactory::test_unknown_args_inkwargs aiosmtpd/tests/test_server.py::TestFactory::test_factory_none aiosmtpd/tests/test_server.py::TestFactory::test_noexc_smtpd_missing aiosmtpd/tests/test_server.py::TestCompat::test_version aiosmtpd/tests/test_smtp.py::TestProtocol::test_honors_mail_delimiters aiosmtpd/tests/test_smtp.py::TestProtocol::test_empty_email aiosmtpd/tests/test_smtp.py::TestSMTP::test_binary[\x80FAIL\r\n] aiosmtpd/tests/test_smtp.py::TestSMTP::test_binary[\x80 aiosmtpd/tests/test_smtp.py::TestSMTP::test_helo aiosmtpd/tests/test_smtp.py::TestSMTP::test_close_then_continue aiosmtpd/tests/test_smtp.py::TestSMTP::test_helo_no_hostname aiosmtpd/tests/test_smtp.py::TestSMTP::test_helo_duplicate aiosmtpd/tests/test_smtp.py::TestSMTP::test_ehlo aiosmtpd/tests/test_smtp.py::TestSMTP::test_ehlo_duplicate aiosmtpd/tests/test_smtp.py::TestSMTP::test_ehlo_no_hostname aiosmtpd/tests/test_smtp.py::TestSMTP::test_helo_then_ehlo aiosmtpd/tests/test_smtp.py::TestSMTP::test_ehlo_then_helo aiosmtpd/tests/test_smtp.py::TestSMTP::test_noop aiosmtpd/tests/test_smtp.py::TestSMTP::test_noop_with_arg aiosmtpd/tests/test_smtp.py::TestSMTP::test_quit aiosmtpd/tests/test_smtp.py::TestSMTP::test_quit_with_args aiosmtpd/tests/test_smtp.py::TestSMTP::test_help aiosmtpd/tests/test_smtp.py::TestSMTP::test_help_[HELO] aiosmtpd/tests/test_smtp.py::TestSMTP::test_help_[EHLO] aiosmtpd/tests/test_smtp.py::TestSMTP::test_help_[MAIL] aiosmtpd/tests/test_smtp.py::TestSMTP::test_help_[RCPT] aiosmtpd/tests/test_smtp.py::TestSMTP::test_help_[DATA] aiosmtpd/tests/test_smtp.py::TestSMTP::test_help_[RSET] aiosmtpd/tests/test_smtp.py::TestSMTP::test_help_[NOOP] aiosmtpd/tests/test_smtp.py::TestSMTP::test_help_[QUIT] aiosmtpd/tests/test_smtp.py::TestSMTP::test_help_[VRFY] aiosmtpd/tests/test_smtp.py::TestSMTP::test_help_[AUTH] aiosmtpd/tests/test_smtp.py::TestSMTP::test_help_esmtp[MAIL] aiosmtpd/tests/test_smtp.py::TestSMTP::test_help_esmtp[RCPT] aiosmtpd/tests/test_smtp.py::TestSMTP::test_help_bad_arg aiosmtpd/tests/test_smtp.py::TestSMTP::test_expn aiosmtpd/tests/test_smtp.py::TestSMTP::test_no_helo[MAIL] aiosmtpd/tests/test_smtp.py::TestSMTP::test_no_helo[RCPT] aiosmtpd/tests/test_smtp.py::TestSMTP::test_no_helo[DATA] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[0] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[1] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[2] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[3] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[4] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[5] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[6] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[7] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[8] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[9] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[10] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[11] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[12] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[13] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[14] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[15] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[16] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[17] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[18] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[19] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[20] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[21] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[22] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[23] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[24] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[25] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[26] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[27] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[28] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[29] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[30] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[31] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[32] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[33] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[34] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[35] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[36] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[37] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[38] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_valid_address[39] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_smtp_errsyntax[noarg] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_smtp_errsyntax[nofrom] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_smtp_errsyntax[noaddr] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_smtp_errsyntax[params_noesmtp] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_smtp_errsyntax[malformed] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_params_esmtp[norm] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_params_esmtp[extralead] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_params_esmtp[extratail] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_from_twice aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_esmtp_errsyntax[malformed] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_esmtp_errsyntax[missing] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_esmtp_errsyntax[badsyntax] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_esmtp_errsyntax[space] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_esmtp_params_unrecognized aiosmtpd/tests/test_smtp.py::TestSMTP::test_bpo27931fix_smtp aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_invalid_address[0] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_invalid_address[1] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_esmtp_invalid_address[0] aiosmtpd/tests/test_smtp.py::TestSMTP::test_mail_esmtp_invalid_address[1] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_no_mail aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_smtp_errsyntax[noarg] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_smtp_errsyntax[noto] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_smtp_errsyntax[noaddr] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_smtp_errsyntax[params] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_smtp_errsyntax[malformed] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_esmtp_errsyntax[noarg] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_esmtp_errsyntax[noto] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_esmtp_errsyntax[noaddr] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_esmtp_errsyntax[badparams] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_esmtp_errsyntax[malformed] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_unknown_params aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[0] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[1] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[2] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[3] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[4] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[5] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[6] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[7] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[8] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[9] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[10] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[11] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[12] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[13] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[14] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[15] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[16] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[17] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[18] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[19] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[20] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[21] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[22] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[23] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[24] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[25] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[26] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[27] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[28] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[29] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[30] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[31] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[32] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[33] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[34] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[35] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[36] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[37] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[38] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[39] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[40] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[41] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_valid_address[42] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_invalid_address[0] aiosmtpd/tests/test_smtp.py::TestSMTP::test_rcpt_invalid_address[1] aiosmtpd/tests/test_smtp.py::TestSMTP::test_bpo27931fix_esmtp aiosmtpd/tests/test_smtp.py::TestSMTP::test_rset aiosmtpd/tests/test_smtp.py::TestSMTP::test_rset_with_arg aiosmtpd/tests/test_smtp.py::TestSMTP::test_vrfy aiosmtpd/tests/test_smtp.py::TestSMTP::test_vrfy_no_arg aiosmtpd/tests/test_smtp.py::TestSMTP::test_vrfy_not_address aiosmtpd/tests/test_smtp.py::TestSMTP::test_data_no_rcpt aiosmtpd/tests/test_smtp.py::TestSMTP::test_data_354 aiosmtpd/tests/test_smtp.py::TestSMTP::test_data_invalid_params aiosmtpd/tests/test_smtp.py::TestSMTP::test_empty_command aiosmtpd/tests/test_smtp.py::TestSMTP::test_too_long_command aiosmtpd/tests/test_smtp.py::TestSMTP::test_way_too_long_command aiosmtpd/tests/test_smtp.py::TestSMTP::test_unknown_command aiosmtpd/tests/test_smtp.py::TestSMTPNonDecoding::test_mail_invalid_body_param aiosmtpd/tests/test_smtp.py::TestSMTPAuth::test_no_ehlo aiosmtpd/tests/test_smtp.py::TestSMTPAuth::test_helo aiosmtpd/tests/test_smtp.py::TestSMTPAuth::test_not_enough_values aiosmtpd/tests/test_smtp.py::TestSMTPAuth::test_already_authenticated aiosmtpd/tests/test_smtp.py::TestSMTPAuth::test_auth_individually aiosmtpd/tests/test_smtp.py::TestSMTPAuth::test_rset_maintain_authenticated aiosmtpd/tests/test_smtp.py::TestSMTPAuth::test_auth_loginteract_warning aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_ehlo aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_not_supported_mechanism[GSSAPI] aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_not_supported_mechanism[DIGEST-MD5] aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_not_supported_mechanism[MD5] aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_not_supported_mechanism[CRAM-MD5] aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_custom_mechanism aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_disabled_mechanism aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_byclient[login-True] aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_byclient[login-False] aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_byclient[plain-True] aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_byclient[plain-False] aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_plain1_bad_base64_encoding aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_plain1_bad_base64_length aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_plain1_too_many_values aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_plain1_bad_username aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_plain1_bad_password aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_plain1_empty aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_plain1_good_credentials aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_plain1_goodcreds_sanitized_log aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_plain2_good_credentials aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_plain2_bad_credentials aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_plain2_no_credentials aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_plain2_abort aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_plain2_bad_base64_encoding aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_login2_bad_base64 aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_login2_good_credentials aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_login3_good_credentials aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_login3_bad_base64 aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_login3_bad_username aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_login3_bad_password aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_login3_empty_credentials aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_login3_abort_username aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_login3_abort_password aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_DENYFALSE aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_DENYMISSING aiosmtpd/tests/test_smtp.py::TestAuthMechanisms::test_NONE aiosmtpd/tests/test_smtp.py::TestAuthenticator::test_success aiosmtpd/tests/test_smtp.py::TestAuthenticator::test_fail_withmesg aiosmtpd/tests/test_smtp.py::TestRequiredAuthentication::test_help_unauthenticated aiosmtpd/tests/test_smtp.py::TestRequiredAuthentication::test_help_authenticated aiosmtpd/tests/test_smtp.py::TestRequiredAuthentication::test_vrfy_unauthenticated aiosmtpd/tests/test_smtp.py::TestRequiredAuthentication::test_mail_unauthenticated aiosmtpd/tests/test_smtp.py::TestRequiredAuthentication::test_rcpt_unauthenticated aiosmtpd/tests/test_smtp.py::TestRequiredAuthentication::test_rcpt_nomail_authenticated aiosmtpd/tests/test_smtp.py::TestRequiredAuthentication::test_data_unauthenticated aiosmtpd/tests/test_smtp.py::TestRequiredAuthentication::test_data_authenticated aiosmtpd/tests/test_smtp.py::TestRequiredAuthentication::test_vrfy_authenticated aiosmtpd/tests/test_smtp.py::TestRequiredAuthentication::test_mail_authenticated aiosmtpd/tests/test_smtp.py::TestRequiredAuthentication::test_data_norcpt_authenticated aiosmtpd/tests/test_smtp.py::TestResetCommands::test_helo aiosmtpd/tests/test_smtp.py::TestResetCommands::test_ehlo aiosmtpd/tests/test_smtp.py::TestResetCommands::test_rset aiosmtpd/tests/test_smtp.py::TestSMTPWithController::test_mail_with_size_too_large aiosmtpd/tests/test_smtp.py::TestSMTPWithController::test_mail_with_compatible_smtputf8 aiosmtpd/tests/test_smtp.py::TestSMTPWithController::test_mail_with_unrequited_smtputf8 aiosmtpd/tests/test_smtp.py::TestSMTPWithController::test_mail_with_incompatible_smtputf8 aiosmtpd/tests/test_smtp.py::TestSMTPWithController::test_mail_invalid_body aiosmtpd/tests/test_smtp.py::TestSMTPWithController::test_esmtp_no_size_limit aiosmtpd/tests/test_smtp.py::TestSMTPWithController::test_process_message_error aiosmtpd/tests/test_smtp.py::TestSMTPWithController::test_too_long_message_body aiosmtpd/tests/test_smtp.py::TestSMTPWithController::test_dots_escaped aiosmtpd/tests/test_smtp.py::TestSMTPWithController::test_unexpected_errors aiosmtpd/tests/test_smtp.py::TestSMTPWithController::test_unexpected_errors_unhandled aiosmtpd/tests/test_smtp.py::TestSMTPWithController::test_unexpected_errors_custom_response aiosmtpd/tests/test_smtp.py::TestSMTPWithController::test_exception_handler_exception aiosmtpd/tests/test_smtp.py::TestSMTPWithController::test_exception_handler_undescribable aiosmtpd/tests/test_smtp.py::TestSMTPWithController::test_exception_handler_multiple_connections_lost aiosmtpd/tests/test_smtp.py::TestSMTPWithController::test_bad_encodings aiosmtpd/tests/test_smtp.py::TestSMTPWithController::test_data_line_too_long aiosmtpd/tests/test_smtp.py::TestSMTPWithController::test_long_line_double_count aiosmtpd/tests/test_smtp.py::TestSMTPWithController::test_long_line_leak aiosmtpd/tests/test_smtp.py::TestSMTPWithController::test_too_long_body_delay_error aiosmtpd/tests/test_smtp.py::TestSMTPWithController::test_too_long_body_then_too_long_lines aiosmtpd/tests/test_smtp.py::TestSMTPWithController::test_too_long_line_delay_error aiosmtpd/tests/test_smtp.py::TestSMTPWithController::test_too_long_lines_then_too_long_body aiosmtpd/tests/test_smtp.py::TestCustomization::test_custom_hostname aiosmtpd/tests/test_smtp.py::TestCustomization::test_default_greeting aiosmtpd/tests/test_smtp.py::TestCustomization::test_custom_greeting aiosmtpd/tests/test_smtp.py::TestCustomization::test_mail_invalid_body_param aiosmtpd/tests/test_smtp.py::TestCustomization::test_limitlocalpart aiosmtpd/tests/test_smtp.py::TestClientCrash::test_connection_reset_during_DATA aiosmtpd/tests/test_smtp.py::TestClientCrash::test_connection_reset_during_command aiosmtpd/tests/test_smtp.py::TestClientCrash::test_connection_reset_in_long_command aiosmtpd/tests/test_smtp.py::TestClientCrash::test_close_in_command aiosmtpd/tests/test_smtp.py::TestClientCrash::test_close_in_command_2 aiosmtpd/tests/test_smtp.py::TestClientCrash::test_close_in_long_command aiosmtpd/tests/test_smtp.py::TestClientCrash::test_close_in_data aiosmtpd/tests/test_smtp.py::TestClientCrash::test_sockclose_after_helo aiosmtpd/tests/test_smtp.py::TestStrictASCII::test_ehlo aiosmtpd/tests/test_smtp.py::TestStrictASCII::test_bad_encoded_param aiosmtpd/tests/test_smtp.py::TestStrictASCII::test_mail_param aiosmtpd/tests/test_smtp.py::TestStrictASCII::test_data aiosmtpd/tests/test_smtp.py::TestSleepingHandler::test_close_after_helo aiosmtpd/tests/test_smtp.py::TestTimeout::test_timeout aiosmtpd/tests/test_smtp.py::TestAuthArgs::test_warn_authreqnotls aiosmtpd/tests/test_smtp.py::TestAuthArgs::test_log_authmechanisms aiosmtpd/tests/test_smtp.py::TestAuthArgs::test_authmechname_decorator_badname[has aiosmtpd/tests/test_smtp.py::TestAuthArgs::test_authmechname_decorator_badname[has.dot] aiosmtpd/tests/test_smtp.py::TestAuthArgs::test_authmechname_decorator_badname[has/slash] aiosmtpd/tests/test_smtp.py::TestAuthArgs::test_authmechname_decorator_badname[has\\backslash] aiosmtpd/tests/test_smtp.py::TestLimits::test_limit_wrong_type aiosmtpd/tests/test_smtp.py::TestLimits::test_limit_wrong_value_type aiosmtpd/tests/test_smtp.py::TestLimits::test_all_limit_15 aiosmtpd/tests/test_smtp.py::TestLimits::test_different_limits aiosmtpd/tests/test_smtp.py::TestLimits::test_different_limits_custom_default aiosmtpd/tests/test_smtp.py::TestLimits::test_limit_bogus aiosmtpd/tests/test_smtp.py::TestSanitize::test_loginpassword aiosmtpd/tests/test_smtp.py::TestSanitize::test_authresult