Contents

TN3191: IMAP extensions supported by Mail for iOS, iPadOS, and visionOS

Learn which extensions to the RFC 3501 IMAP protocol are supported by Mail for iOS, iPadOS, and visionOS.

Overview

The IMAP protocol defined in RFC 3501 (IMAP4rev1) is one of the protocols used by Mail for iOS, iPadOS, and visionOS to connect to email servers.

To improve efficiency and performance for both the Mail app and email servers, the Mail app supports various extensions to the IMAP protocol. This document is intended for IMAP email server implementers to guide decisions on which extensions to support. For example, the CONDSTORE, IDLE, and ESEARCH extensions are especially important for efficient synchronization.

Details

Below are the IMAP extensions that Mail for iOS, iPadOS, and visionOS uses, with descriptions of their implementation.

RFC

Capability / Name

Description

Rfc3501

Pipelining

The Mail app uses pipelining to enqueue multiple IMAP commands with the server. Commands can be completed out-of-order and responses can be sent interleaved.

Rfc3501

STARTTLS

The Mail app upgrades plaintext connections using STARTTLS. Implicit TLS is generally preferred over STARTTLS, though, since it reduces connection setup time.

Rfc3501

Authentication

The Mail app uses either LOGIN or SASL CRAM-MD5/PLAIN authentication, based on server capabilities (LOGINDISABLED, AUTH=PLAIN, AUTH=CRAM-MD5).

Rfc4959

SASL-IR

The Mail app has to do fewer round trips during SASL authentication when the server supports SASL-IR.

Rfc7889

APPENDLIMIT

The Mail app supports both mailbox-specific and global append limits. If the server announces a corresponding APPENDLIMIT capability, the Mail app will not attempt to APPEND messages larger than this limit.

Rfc4978

COMPRESS

If the server announces the COMPRESS=DEFLATE capability, the Mail app enables compression to reduce bandwidth usage. Data sent to the server is compressed at level 1 for commands and at level 5 for messages.

Rfc4551

CONDSTORE

The Mail app uses CONDSTORE to efficiently retrieve changes to message flags. Without this capability, the Mail app falls back to re-fetching flags for all messages.

Rfc4731

ESEARCH

This reduces data size of responses when the Mail app sends UID SEARCH commands. The Mail app will send result options such as RETURN (ALL) for all UID SEARCH commands, such that the response from the server can use a more compact format for UIDs.

Rfc2971

ID

When the server supports this capability, the Mail app identifies itself to the server, and it allows the server to identify itself to the Mail app.

Rfc2177

IDLE

Enables efficient server updates for the currently selected mailbox. The Mail app applies these updates directly, often avoiding the need to re-sync the mailbox and allowing users to see updates almost immediately. If the server does not support IDLE, the Mail app may poll the server for changes at regular intervals.

Rfc5819

LIST-STATUS

The Mail app will use this to retrieve status as part of running the LIST command. If the server does not support LIST-STATUS, the Mail app may run STATUS for each mailbox in the list of mailboxes.

Rfc7888

LITERAL+/LITERAL-

The Mail app supports both extensions to reduce required round-trips.

Rfc6851

MOVE

The Mail app will use this to efficiently move messages between mailboxes. This notably improves message deletion, as messages are generally moved to Trash when the user deletes them.

Rfc6154

SPECIAL-USE

The Mail app honors SPECIAL-USE mailboxes during initial account setup, but lets users override mailbox assignments.

Rfc4315

UIDPLUS

The Mail app will use UIDs returned as part of APPEND and MOVE commands to improve efficiency. This notably affects uploading drafts and deleting messages (see MOVE).

Rfc9586

UIDONLY

UIDONLY mode can substantially reduce resource requirements for some server implementations, since no message sequence numbers are used, and the server doesn’t have to map between UIDs and sequence numbers. The Mail app will send an ENABLE UIDONLY command to enable UIDONLY mode if the server announces all of the PARTIAL, UIDBATCHES, ENABLE, UIDONLY, and ESEARCH capabilities.

Rfc9394

PARTIAL

When performing server-side search initiated by the user searching for messages, the Mail app will use Rfc9394 to limit the number of results requested if the server announced PARTIAL support.

Draft Ietf Mailmaint Imap Uidbatches

UIDBATCHES

The Mail app operates on roughly equally sized batches of messages for many operations. If the server supports UIDBATCHES, the client will use this extension to divide the messages in a particular mailbox into these batches. Otherwise, the Mail app will fall back to using UID SEARCH using message sequence numbers.

Rfc9738

MESSAGELIMIT

As noted under UIDBATCHES, the Mail app operates on batches of messages. The server can use MESSAGELIMIT to lower the size of these batches if the server is constrained.

Revision History

  • 2025-08-27 First published.

See Also

Latest