RFC 1732 INFORMATIONAL EMAIL · COMPATIBILITY

IMAP4 Compatibility with IMAP2 and IMAP2bis

Hints for making an IMAP4 client or server get along with older IMAP2 and IMAP2bis software.

On rfc-editor.org ↗
PUBLISHED
December 1994
AUTHORS
M. Crispin
STREAM
IETF
CAPABILITY VALUE FOR IMAP4
IMAP4
TEST FOR CREATE SUPPORT
Try CREATE INBOX
OLD PROTOCOL SPECIFICATION
RFC 1176 (IMAP2)
DOI
10.17487/RFC1732

RFC text

Contents
Original text · RFC Editor View on rfc-editor.org ↗
Network Working Group                                         M. Crispin
Request for Comments: 1732                      University of Washington
Category: Informational                                    December 1994


              IMAP4 COMPATIBILITY WITH IMAP2 AND IMAP2BIS


Status of this Memo

   This memo provides information for the Internet community.  This memo
   does not specify an Internet standard of any kind.  Distribution of
   this memo is unlimited.

Introduction

   This is a summary of hints and recommendations to enable an IMAP4
   implementation to interoperate with implementations that conform to
   earlier specifications.  None of these hints and recommendations are
   required by the IMAP4 specification; implementors must decide for
   themselves whether they want their implementation to fail if it
   encounters old software.

   IMAP4 has been designed to be upwards compatible with earlier
   specifications.  For the most part, IMAP4 facilities that were not in
   earlier specifications should be invisible to clients unless the
   client asks for the facility.

   In some cases, older servers may support some of the capabilities
   listed as being "new in IMAP4" as experimental extensions to the
   IMAP2 protocol described in RFC 1176.

   This information may not be complete; it reflects current knowledge
   of server and client implementations as well as "folklore" acquired
   in the evolution of the protocol.

IMAP4 client interoperability with old servers

   In general, a client should be able to discover whether an IMAP2
   server supports a facility by trial-and-error; if an attempt to use a
   facility generates a BAD response, the client can assume that the
   server does not support the facility.

   A quick way to check whether a server implementation supports the
   IMAP4 specification is to try the CAPABILITY command.  An OK response
   that includes the IMAP4 capability value indicates a server that
   supports IMAP4; a BAD response or one without the IMAP4 capability
   value indicates an older server.

   The following is a list of facilities that are only in IMAP4, and
   suggestions for how new clients might interoperate with old servers:

   CAPABILITY command
            A BAD response to this command indicates that the server
            implements IMAP2 (or IMAP2bis) and not IMAP4.

   AUTHENTICATE command.
            Use the LOGIN command.

   LSUB and LIST commands
            Try the RFC 1176 FIND command.

   * in a sequence
            Use the number of messages in the mailbox from the EXISTS
            unsolicited response.

   SEARCH extensions (character set, additional criteria)
            Reformulate the search request using only the searching
            options listed in search_old in the IMAP4 grammar.  This may
            entail doing multiple searches to achieve the desired
            results.

   BODYSTRUCTURE fetch data item
            Try to fetch the non-extensible BODY data item.

   body section number 0
            Fetch the entire message and extract the header.

   RFC822.HEADER.LINES and RFC822.HEADER.LINES.NOT fetch data items
            Use RFC822.HEADER and remove the unwanted information.

   BODY.PEEK[section], RFC822.PEEK, and RFC822.TEXT.PEEK fetch data
            items Use the corresponding non-PEEK versions and manually
            clear the \Seen flag as necessary.

   UID fetch data item and the UID commands
            No equivalent capabilitity exists in older servers.

   FLAGS.SILENT, +FLAGS.SILENT, and -FLAGS.SILENT store data items
            Use the corresponding non-SILENT versions and ignore the
            untagged FETCH responses which com eback.


   The following IMAP4 facilities were introduced in the experimental
   IMAP2bis revisions to RFC-1176, and may be present in a server that
   does not support the CAPABILITY command:

   CREATE, DELETE, and RENAME commands
            To test whether these commands are present, try a CREATE
            INBOX command.  If the response is NO, these commands are
            supported by the server.  If the response is BAD, they are
            not.  Older servers without the CREATE capability may sup-
            port implicit creation of a mailbox by a COPY command with a
            non-existant name as the destination.

   APPEND command
            To test whether this command is present, try to append a
            zero-length stream to a mailbox name that is known not to
            exist (or at least, highly unlikely to exist) on the remote
            system.

   SUBSCRIBE and UNSUBSCRIBE commands
            Try the form of these commands with the optional MAILBOX
            keyword.

   EXAMINE command
            Use the SELECT command instead.

   flags and internal date argument to APPEND command
            Try the APPEND without any flag list and internal date argu-
            ments.

   BODY, BODY[section], and FULL fetch data items
            Use RFC822.TEXT and ALL instead.  Server does not support
            MIME.

   PARTIAL command
            Use the appropriate FETCH command and ignore the unwanted
            data.


   IMAP4 client implementations must accept all responses and data for-
   mats documented in the IMAP4 specification, including those labeled
   as obsolete.  This includes the COPY and STORE unsolicited responses
   and the old format of dates and times.  In particular, client imple-
   mentations must not treat a date/time as a fixed format string; nor
   may they assume that the time begins at a particular octet.

   IMAP4 client implementations must not depend upon the presence of any
   server extensions that are not in the base IMAP4 specification.

   The experimental IMAP2bis version specified that the TRYCREATE spe-
   cial information token is sent as a separate unsolicited OK response
   instead of inside the NO response.

   The FIND BBOARDS, FIND ALL.BBOARDS, and BBOARD commands of RFC 1176
   are removed from IMAP4.  There is no equivalent to the bboard com-
   mands, which provided a separate namespace with implicit restrictions
   on what may be done in that namespace.

   Older server implementations may automatically create the destination
   mailbox on COPY if that mailbox does not already exist.  This was how
   a new mailbox was created in older specifications.  If the server
   does not support the CREATE command (see above for how to test for
   this), it will probably create a mailbox on COPY.

   Older server implementations may not preserve flags or internal dates
   on COPY.  Some server implementations may not permit the preservation
   of certain flags on COPY or their setting with APPEND as site policy.

IMAP4 server interoperability with old clients

   In general, there should be no interoperation problem between a
   server conforming to the IMAP4 specification and a well-written
   client that conforms to an earlier specification.  Known problems are
   noted below:

      Poor wording in the description of the CHECK command in earlier
      specifications implied that a CHECK command is the way to get the
      current number of messages in the mailbox.  This is incorrect.  A
      CHECK command does not necessarily result in an EXISTS response.
      Clients must remember the most recent EXISTS value sent from the
      server, and should not generate unnecessary CHECK commands.

      An incompatibility exists with COPY in IMAP4.  COPY in IMAP4
      servers does not automatically create the destination mailbox if
      that mailbox does not already exist.  This may cause problems with
      old clients that expect automatic mailbox creation in COPY.

      The PREAUTH unsolicited response is new in IMAP4.  It is highly
      unlikely that an old client would ever see this response.

      The format of dates and times has changed due to the impending end
      of the century.  Clients that fail to accept a four-digit year or
      a signed four-digit timezone value will not work properly with
      IMAP4.

      An incompatibility exists with the use of "\" in quoted strings.
      This is best avoided by using literals instead of quoted strings
      if "\" or <"> is embedded in the string.

Security Considerations

   Security issues are not discussed in this memo.

Author's Address:

   Mark R. Crispin
   Networks and Distributed Computing, JE-30
   University of Washington
   Seattle, WA  98195

   Phone: (206) 543-5762

   EMail: MRC@CAC.Washington.EDU

AI ELI5

On this page
PROBLEMIMAP4 was meant to be upwards compatible, but real servers and clients from the IMAP2 and IMAP2bis era behaved differently in a number of small ways.
MECHANISMThe memo lists IMAP4 facilities and suggests fallback commands for each, explains how to detect an old server with CAPABILITY or trial and error, and notes known incompatibilities for servers dealing with old clients.
THE CATCHNone of the hints are required by the IMAP4 specification; implementers decide for themselves whether to fail on old software.

§1Introduction

This memo is a summary of hints and recommendations that let an IMAP4 implementation interoperate with implementations of earlier specifications. None of them are required by the IMAP4 specification. The author says the list may be incomplete, since it reflects current knowledge of server and client implementations plus "folklore" gathered as the protocol evolved.

IMAP4 was designed to be upwards compatible, so facilities that were not in earlier specifications should mostly be invisible to a client unless it asks for them. Some older servers may offer "new in IMAP4" capabilities as experimental extensions to the IMAP2 protocol of RFC 1176.

New mail programs are supposed to still work with old ones. This note collects tips from people who have tried, and none of the tips are rules.

§2Clients Talking to Old Servers

A client can usually find out whether an IMAP2 server supports a facility by trial and error: if the attempt draws a BAD response, assume the server lacks it. A quicker check is the CAPABILITY command. An OK response that includes the IMAP4 capability value means an IMAP4 server. A BAD response, or one without that value, means an older server.

To test for CREATE, DELETE and RENAME, try CREATE INBOX: a NO means the commands exist, a BAD means they do not. Older servers may create a mailbox implicitly when a COPY names a destination that does not exist.

Clients must accept all responses and data formats in the IMAP4 specification, including those labelled obsolete such as the old date and time format, and must not treat a date/time as a fixed-format string. They must not depend on server extensions outside the base specification.

If you are not sure whether a friend speaks the new language, ask them a simple question first. If they look confused, switch back to the old words.

§3Fallbacks for IMAP4-Only Facilities

The memo gives a fallback for most IMAP4-only features. For example, a client can use LOGIN instead of AUTHENTICATE, SELECT instead of EXAMINE, and the RFC 1176 FIND command in place of LSUB and LIST. For BODYSTRUCTURE it can try the non-extensible BODY item, and for the .PEEK fetch items it can use the plain versions and clear the \Seen flag by hand.

A few features have no workaround at all: the UID fetch item and the UID commands have no equivalent in older servers. The FIND BBOARDS, FIND ALL.BBOARDS and BBOARD commands of RFC 1176 were removed from IMAP4 with no replacement.

Most new buttons have an old button that does nearly the same job. A couple of new buttons have no old twin, so you just cannot use them with an old machine.

SELECTED IMAP4 FACILITIES AND THEIR OLDER FALLBACKS (RFC 1732)
IMAP4 facilityFallback with an old server
AUTHENTICATEUse the LOGIN command
EXAMINEUse the SELECT command
LSUB and LISTTry the RFC 1176 FIND command
BODYSTRUCTUREFetch the non-extensible BODY item
BODY.PEEK[section]Use the non-PEEK version and clear \Seen by hand
UID fetch item and UID commandsNo equivalent exists

§4Servers Talking to Old Clients

A conforming IMAP4 server and a well-written client for an earlier specification should interoperate, with a few known problems. Earlier wording implied that CHECK is the way to learn the current message count, which is incorrect; a client should remember the latest EXISTS value and avoid needless CHECK commands.

COPY in IMAP4 does not create a missing destination mailbox, which can trip up old clients that expected that. Dates and times changed because of the impending end of the century, so clients that cannot accept a four-digit year or a signed four-digit timezone will not work with IMAP4. Backslash handling in quoted strings also differs, so literals are best when a string contains \ or a double quote. The PREAUTH response is new in IMAP4, but an old client is highly unlikely to see it.

An old mail program may be surprised by new habits, like four-digit years or a copy command that no longer makes new folders on its own.

§5References