<!--
{
  "documentType" : "article",
  "framework" : "Technotes",
  "identifier" : "/documentation/Technotes/tn3191-imap-extensions-supported-by-mail",
  "metadataVersion" : "0.1.0",
  "role" : "article",
  "title" : "TN3191: IMAP extensions supported by Mail for iOS, iPadOS, and visionOS"
}
-->

# 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](https://www.rfc-editor.org/rfc/rfc3501.html) (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                                                                                                                                                                                                                                                                                                                                                                                              |
|------------------------------------------------------------------------------------|---------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|[RFC 3501](https://www.rfc-editor.org/rfc/rfc3501.html)                             |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.                                                                                                                                                                                                                                            |
|[RFC 3501](https://www.rfc-editor.org/rfc/rfc3501.html)                             |`STARTTLS`           |The Mail app upgrades plaintext connections using `STARTTLS`. Implicit TLS is generally preferred over `STARTTLS`, though, since it reduces connection setup time.                                                                                                                                                                                                                                       |
|[RFC 3501](https://www.rfc-editor.org/rfc/rfc3501.html)                             |Authentication       |The Mail app uses either `LOGIN` or SASL `CRAM-MD5`/`PLAIN` authentication, based on server capabilities (`LOGINDISABLED`, `AUTH=PLAIN`, `AUTH=CRAM-MD5`).                                                                                                                                                                                                                                               |
|[RFC 4959](https://www.rfc-editor.org/rfc/rfc4959.html)                             |`SASL-IR`            |The Mail app has to do fewer round trips during SASL authentication when the server supports `SASL-IR`.                                                                                                                                                                                                                                                                                                  |
|[RFC 7889](https://www.rfc-editor.org/rfc/rfc7889.html)                             |`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.                                                                                                                                                                                       |
|[RFC 4978](https://www.rfc-editor.org/rfc/rfc4978.html)                             |`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.                                                                                                                                                                                        |
|[RFC 4551](https://www.rfc-editor.org/rfc/rfc4551.html)                             |`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.                                                                                                                                                                                                                                  |
|[RFC 4731](https://www.rfc-editor.org/rfc/rfc4731.html)                             |`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.                                                                                                                                            |
|[RFC 2971](https://www.rfc-editor.org/rfc/rfc2971.html)                             |`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.                                                                                                                                                                                                                                                     |
|[RFC 2177](https://www.rfc-editor.org/rfc/rfc2177.html)                             |`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.                                                                         |
|[RFC 5819](https://www.rfc-editor.org/rfc/rfc5819.html)                             |`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.                                                                                                                                                                                              |
|[RFC 7888](https://www.rfc-editor.org/rfc/rfc7888.html)                             |`LITERAL+`/`LITERAL-`|The Mail app supports both extensions to reduce required round-trips.                                                                                                                                                                                                                                                                                                                                    |
|[RFC 6851](https://www.rfc-editor.org/rfc/rfc6851.html)                             |`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.                                                                                                                                                                                                                  |
|[RFC 6154](https://www.rfc-editor.org/rfc/rfc6154.html)                             |`SPECIAL-USE`        |The Mail app honors `SPECIAL-USE` mailboxes during initial account setup, but lets users override mailbox assignments.                                                                                                                                                                                                                                                                                   |
|[RFC 4315](https://www.rfc-editor.org/rfc/rfc4315.html)                             |`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`).                                                                                                                                                                                                                             |
|[RFC 9586](https://www.rfc-editor.org/rfc/rfc9586.html)                             |`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.|
|[RFC 9394](https://www.rfc-editor.org/rfc/rfc9394.html)                             |`PARTIAL`            |When performing server-side search initiated by the user searching for messages, the Mail app will use [RFC 9394](https://www.rfc-editor.org/rfc/rfc9394.html) to limit the number of results requested if the server announced `PARTIAL` support.                                                                                                                                                       |
|[UIDBATCHES](https://datatracker.ietf.org/doc/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.                                                                          |
|[RFC 9738](https://www.rfc-editor.org/rfc/rfc9738.html)                             |`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.

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)