From: Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> Date: Sun, 5 Jul 2026 14:36:06 +0000 (+0200) Subject: [3.14] gh-68147: Fix RFC references in imaplib (GH-153126) (GH-153131) X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=7a11c23ebd436e666b65c0a7b0b6a4b8ffcd5dfd;p=thirdparty%2FPython%2Fcpython.git [3.14] gh-68147: Fix RFC references in imaplib (GH-153126) (GH-153131) Refer to RFC 3501, which obsoleted RFC 2060. "]" is disallowed in flags, not in tags. (cherry picked from commit 74a2438bf783077cf49460ed0fed8853675fb103) Co-authored-by: Serhiy Storchaka Co-authored-by: Claude Fable 5 --- diff --git a/Doc/library/imaplib.rst b/Doc/library/imaplib.rst index 83c44f274c3c..131bc0101fb5 100644 --- a/Doc/library/imaplib.rst +++ b/Doc/library/imaplib.rst @@ -24,7 +24,7 @@ This module defines three classes, :class:`IMAP4`, :class:`IMAP4_SSL` and :class:`IMAP4_stream`, which encapsulate a connection to an IMAP4 server and implement a large subset of the IMAP4rev1 client protocol as defined in -:rfc:`2060`. It is backward compatible with IMAP4 (:rfc:`1730`) servers, but +:rfc:`3501`. It is backward compatible with IMAP4 (:rfc:`1730`) servers, but note that the ``STATUS`` command is not supported in IMAP4. .. include:: ../includes/wasm-notavail.rst @@ -629,7 +629,7 @@ An :class:`IMAP4` instance has the following methods: .. method:: IMAP4.store(message_set, command, flag_list) Alters flag dispositions for messages in mailbox. *command* is specified by - section 6.4.6 of :rfc:`2060` as being one of "FLAGS", "+FLAGS", or "-FLAGS", + section 6.4.6 of :rfc:`3501` as being one of "FLAGS", "+FLAGS", or "-FLAGS", optionally with a suffix of ".SILENT". For example, to set the delete flag on all messages:: @@ -643,11 +643,11 @@ An :class:`IMAP4` instance has the following methods: Creating flags containing ']' (for example: "[test]") violates :rfc:`3501` (the IMAP protocol). However, imaplib has historically - allowed creation of such tags, and popular IMAP servers, such as Gmail, + allowed creation of such flags, and popular IMAP servers, such as Gmail, accept and produce such flags. There are non-Python programs which also - create such tags. Although it is an RFC violation and IMAP clients and + create such flags. Although it is an RFC violation and IMAP clients and servers are supposed to be strict, imaplib still continues to allow - such tags to be created for backward compatibility reasons, and as of + such flags to be created for backward compatibility reasons, and as of Python 3.6, handles them if they are sent from the server, since this improves real-world compatibility. diff --git a/Lib/imaplib.py b/Lib/imaplib.py index d7efb07939b8..4f5e4fc5b9e5 100644 --- a/Lib/imaplib.py +++ b/Lib/imaplib.py @@ -1,6 +1,6 @@ """IMAP4 client. -Based on RFC 2060. +Based on RFC 3501. Public class: IMAP4 Public variable: Debug @@ -45,8 +45,8 @@ IMAP4_SSL_PORT = 993 AllowedVersions = ('IMAP4REV1', 'IMAP4') # Most recent first # Maximal line length when calling readline(). This is to prevent -# reading arbitrary length lines. RFC 3501 and 2060 (IMAP 4rev1) -# don't specify a line length. RFC 2683 suggests limiting client +# reading arbitrary length lines. RFC 3501 (IMAP 4rev1) +# doesn't specify a line length. RFC 2683 suggests limiting client # command lines to 1000 octets and that servers should be prepared # to accept command lines up to 8000 octets, so we used to use 10K here. # In the modern world (eg: gmail) the response to, for example, a diff --git a/Lib/test/test_imaplib.py b/Lib/test/test_imaplib.py index febedd4b325a..4e44666800e7 100644 --- a/Lib/test/test_imaplib.py +++ b/Lib/test/test_imaplib.py @@ -1858,8 +1858,8 @@ class ThreadedNetworkedTests(unittest.TestCase): @threading_helper.reap_threads def test_bracket_flags(self): - # This violates RFC 3501, which disallows ']' characters in tag names, - # but imaplib has allowed producing such tags forever, other programs + # This violates RFC 3501, which disallows ']' characters in flags, + # but imaplib has allowed producing such flags forever, other programs # also produce them (eg: OtherInbox's Organizer app as of 20140716), # and Gmail, for example, accepts them and produces them. So we # support them. See issue #21815.