diff --git a/Lib/imaplib.py b/Lib/imaplib.py
index 9b0fd3b..1b37546 100644
--- a/Lib/imaplib.py
+++ b/Lib/imaplib.py
@@ -1054,10 +1054,10 @@
 
     def _quote(self, arg):
 
-        arg = arg.replace(b'\\', b'\\\\')
-        arg = arg.replace(b'"', b'\\"')
+        arg = arg.replace('\\', '\\\\')
+        arg = arg.replace('"', '\\"')
 
-        return b'"' + arg + b'"'
+        return '"' + arg + '"'
 
 
     def _simple_command(self, name, *args):
diff --git a/Lib/test/test_imaplib.py b/Lib/test/test_imaplib.py
index e3d51a9..8d86ce6 100644
--- a/Lib/test/test_imaplib.py
+++ b/Lib/test/test_imaplib.py
@@ -10,7 +10,7 @@
 import socketserver
 import time
 
-from test.support import reap_threads, verbose
+from test.support import reap_threads, verbose, transient_internet
 import unittest
 
 try:
@@ -192,8 +192,45 @@
     imap_class = IMAP4_SSL
 
 
-def test_main():
+class RemoteIMAPTest(unittest.TestCase):
+    host = 'cyrus.andrew.cmu.edu'
+    port = 143
+    username = 'anonymous'
+    password = 'pass'
+    imap_class = imaplib.IMAP4
 
+    def setUp(self):
+        with transient_internet(self.host):
+            self.server = self.imap_class(self.host, self.port)
+
+    def tearDown(self):
+        if self.server is not None:
+            self.server.logout()
+
+    def test_logincapa(self):
+        self.assertTrue('LOGINDISABLED' in self.server.capabilities)
+
+    def test_anonlogin(self):
+        self.assertTrue('AUTH=ANONYMOUS' in self.server.capabilities)
+        rs = self.server.login(self.username, self.password)
+        self.assertEqual(rs[0], 'OK')
+
+    def test_logout(self):
+        rs = self.server.logout()
+        self.assertEqual(rs[0], 'BYE')
+
+
+@unittest.skipUnless(ssl, "SSL not available")
+class RemoteIMAP_SSLTest(RemoteIMAPTest):
+    port = 993
+    imap_class = IMAP4_SSL
+
+    def test_logincapa(self):
+        self.assertFalse('LOGINDISABLED' in self.server.capabilities)
+        self.assertTrue('AUTH=PLAIN' in self.server.capabilities)
+
+
+def test_main():
     tests = [TestImaplib]
 
     if support.is_resource_enabled('network'):
@@ -203,7 +240,10 @@
                                     "keycert.pem")
             if not os.path.exists(CERTFILE):
                 raise support.TestFailed("Can't read certificate files!")
-        tests.extend([ThreadedNetworkedTests, ThreadedNetworkedTestsSSL])
+        tests.extend([
+            ThreadedNetworkedTests, ThreadedNetworkedTestsSSL,
+            RemoteIMAPTest, RemoteIMAP_SSLTest,
+        ])
 
     support.run_unittest(*tests)
 
diff --git a/Misc/NEWS b/Misc/NEWS
index 3e0de21..19e653c 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -60,6 +60,8 @@
 Library
 -------
 
+- Fix IMAP.login() to work properly.
+
 - Issue #9244: multiprocessing pool worker processes could terminate
   unexpectedly if the return value of a task could not be pickled.  Only
   the ``repr`` of such errors are now sent back, wrapped in an
