diff --git a/Lib/test/test_smtplib.py b/Lib/test/test_smtplib.py
index fff319d..32d2d9b 100644
--- a/Lib/test/test_smtplib.py
+++ b/Lib/test/test_smtplib.py
@@ -47,17 +47,21 @@
 class GeneralTests(TestCase):
 
     def setUp(self):
+        self._threads = support.threading_setup()
         self.evt = threading.Event()
         self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
         self.sock.settimeout(15)
         self.port = support.bind_port(self.sock)
         servargs = (self.evt, b"220 Hola mundo\n", self.sock)
-        threading.Thread(target=server, args=servargs).start()
+        self.thread = threading.Thread(target=server, args=servargs)
+        self.thread.start()
         self.evt.wait()
         self.evt.clear()
 
     def tearDown(self):
         self.evt.wait()
+        self.thread.join()
+        support.threading_cleanup(*self._threads)
 
     def testBasic1(self):
         # connects
@@ -150,12 +154,14 @@
         self.output = io.StringIO()
         sys.stdout = self.output
 
+        self._threads = support.threading_setup()
         self.serv_evt = threading.Event()
         self.client_evt = threading.Event()
         self.port = support.find_unused_port()
         self.serv = smtpd.DebuggingServer((HOST, self.port), ('nowhere', -1))
         serv_args = (self.serv, self.serv_evt, self.client_evt)
-        threading.Thread(target=debugging_server, args=serv_args).start()
+        self.thread = threading.Thread(target=debugging_server, args=serv_args)
+        self.thread.start()
 
         # wait until server thread has assigned a port number
         self.serv_evt.wait()
@@ -166,6 +172,8 @@
         self.client_evt.set()
         # wait for the server thread to terminate
         self.serv_evt.wait()
+        self.thread.join()
+        support.threading_cleanup(*self._threads)
         # restore sys.stdout
         sys.stdout = self.old_stdout
 
@@ -261,17 +269,21 @@
         self.output = io.StringIO()
         sys.stdout = self.output
 
+        self._threads = support.threading_setup()
         self.evt = threading.Event()
         self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
         self.sock.settimeout(15)
         self.port = support.bind_port(self.sock)
         servargs = (self.evt, b"199 no hello for you!\n", self.sock)
-        threading.Thread(target=server, args=servargs).start()
+        self.thread = threading.Thread(target=server, args=servargs)
+        self.thread.start()
         self.evt.wait()
         self.evt.clear()
 
     def tearDown(self):
         self.evt.wait()
+        self.thread.join()
+        support.threading_cleanup(*self._threads)
         sys.stdout = self.old_stdout
 
     def testFailingHELO(self):
@@ -377,12 +389,14 @@
 class SMTPSimTests(TestCase):
 
     def setUp(self):
+        self._threads = support.threading_setup()
         self.serv_evt = threading.Event()
         self.client_evt = threading.Event()
         self.port = support.find_unused_port()
         self.serv = SimSMTPServer((HOST, self.port), ('nowhere', -1))
         serv_args = (self.serv, self.serv_evt, self.client_evt)
-        threading.Thread(target=debugging_server, args=serv_args).start()
+        self.thread = threading.Thread(target=debugging_server, args=serv_args)
+        self.thread.start()
 
         # wait until server thread has assigned a port number
         self.serv_evt.wait()
@@ -393,6 +407,8 @@
         self.client_evt.set()
         # wait for the server thread to terminate
         self.serv_evt.wait()
+        self.thread.join()
+        support.threading_cleanup(*self._threads)
 
     def testBasic(self):
         # smoke test
