Question

In theory, the set of Request For Comments (RFC) contain everything that a developer needs to know to build an IMAP client. However, it is not always easy to know which RFCs need to be considered and which ones can be ignored.

Does anyone have an RFC roadmap to steer developers through this? By RFC roadmap, I mean:

  • A complete list of RFCs that need to be read and understood, in order to develop an IMAP client.
  • An indication of which RFCs no longer need to be considered, because they have been superseded.
  • A summary of the relevant RFCs.
  • Detail on how the relevant RFCs interrelate to each other.
  • An indication of the logical order to read and understand the relevant RFCs.
Was it helpful?

Solution

The roadmap is reasonably short. Start with the IMAP 4rev1 RFC, RFC 3501. It has a Normative References appendix that lists all the RFCs it directly depends on, and it references those RFCs in the appropriate places in the document.

The really crucial ones -- you can read them in this order -- are Internet Message Format (I'd recommend RFC 5322 instead of RFC 2822 to be more up-to-date), the MIME RFCs (RFC 2045, 2046, and 2047), Content-Disposition (RFC 2183), TLS (RFC 2595), and UTF-7 (RFC 2152) to handle non-ASCII folder names.

Once you've got the baseline protocol finished, you'll want to start looking at extensions. Some of them will make your life much easier... when the server also provides support. You'll definitely want IDLE (RFC 2177) and UIDPLUS (RFC 4315). SORT (RFC 5256) is a good one as well, and NAMESPACE (RFC 2342) may be useful. You'll probably also need to handle some extra SASL authentication mechanisms, so start with RFC 1731 and go from there as necessary.

Here's the text from Appendix A:

The following documents contain definitions or specifications that
are necessary to understand this document properly:

[ABNF]                Crocker, D. and P. Overell, "Augmented BNF for
                      Syntax Specifications: ABNF", RFC 2234,
                      November 1997.

[ANONYMOUS]           Newman, C., "Anonymous SASL Mechanism", RFC
                      2245, November 1997. 

[CHARSET]             Freed, N. and J. Postel, "IANA Character Set
                      Registration Procedures", RFC 2978, October
                      2000.

[DIGEST-MD5]          Leach, P. and C. Newman, "Using Digest
                      Authentication as a SASL Mechanism", RFC 2831,
                      May 2000.

[DISPOSITION]         Troost, R., Dorner, S. and K. Moore,
                      "Communicating Presentation Information in
                      Internet Messages: The Content-Disposition
                      Header", RFC 2183, August 1997.

[IMAP-TLS]            Newman, C., "Using TLS with IMAP, POP3 and
                      ACAP", RFC 2595, June 1999.

[KEYWORDS]            Bradner, S., "Key words for use in RFCs to
                      Indicate Requirement Levels", BCP 14, RFC 2119,
                      March 1997.

[LANGUAGE-TAGS]       Alvestrand, H., "Tags for the Identification of
                      Languages", BCP 47, RFC 3066, January 2001.

[LOCATION]            Palme, J., Hopmann, A. and N. Shelness, "MIME
                      Encapsulation of Aggregate Documents, such as
                      HTML (MHTML)", RFC 2557, March 1999.

[MD5]                 Myers, J. and M. Rose, "The Content-MD5 Header
                      Field", RFC 1864, October 1995.

[MIME-HDRS]           Moore, K., "MIME (Multipurpose Internet Mail
                      Extensions) Part Three: Message Header
                      Extensions for Non-ASCII Text", RFC 2047,
                      November 1996.

[MIME-IMB]            Freed, N. and N. Borenstein, "MIME
                      (Multipurpose Internet Mail Extensions) Part
                      One: Format of Internet Message Bodies", RFC
                      2045, November 1996.

[MIME-IMT]            Freed, N. and N. Borenstein, "MIME
                      (Multipurpose Internet Mail Extensions) Part
                      Two: Media Types", RFC 2046, November 1996.

[RFC-2822]            Resnick, P., "Internet Message Format", RFC
                      2822, April 2001.

[SASL]                Myers, J., "Simple Authentication and Security
                      Layer (SASL)", RFC 2222, October 1997.

[TLS]                 Dierks, T. and C. Allen, "The TLS Protocol
                      Version 1.0", RFC 2246, January 1999.

[UTF-7]               Goldsmith, D. and M. Davis, "UTF-7: A Mail-Safe
                      Transformation Format of Unicode", RFC 2152,
                      May 1997.

The following documents describe quality-of-implementation issues
that should be carefully considered when implementing this protocol:

[IMAP-IMPLEMENTATION] Leiba, B., "IMAP Implementation
                      Recommendations", RFC 2683, September 1999.

[IMAP-MULTIACCESS]    Gahrns, M., "IMAP4 Multi-Accessed Mailbox
                      Practice", RFC 2180, July 1997.
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top