Resumen

  • El RFC 1176 declaraba opcionales comandos como FIND MAILBOXES y FIND BBOARDS; una respuesta BAD no permitía al cliente determinar la causa.
  • El RFC 1203, presentado expresamente como contrapropuesta, añadió comandos para conocer las versiones y funciones del servidor antes de escogerlas.

El problema cabía en un menú. Un programa ofrecía buscar buzones; el usuario pulsaba la opción; el servidor contestaba BAD. El RFC 1176, publicado en agosto de 1990, hacía opcional FIND MAILBOXES y advertía que, ante esa respuesta, el cliente no podía sacar conclusiones. Tampoco había una consulta previa que enumerase los comandos instalados. La norma le pedía al programa que actuase a ciegas y que interpretase un fracaso ambiguo.

John Rice publicó RFC 1203 en febrero de 1991 como una contrapropuesta llamada IMAP3. Su introducción acusa al RFC 1176 de haberse preparado sin consulta interna con la comunidad IMAP. Es la acusación del autor, no un recuento independiente de reuniones. La discrepancia técnica sí queda escrita a ambos lados: unos comandos podían ser opcionales mientras el cliente carecía de un mecanismo para averiguar cuáles estaban disponibles.

IMAP3 planteó una secuencia más limpia. SUPPORTED.VERSIONS preguntaría qué versiones y funciones admitía el servidor. SELECT.VERSION escogería una versión y SELECT.FEATURES activaría funciones concretas. El intercambio de ejemplo del RFC consulta primero, elige después la versión 3.0 y habilita TAGGED.SOLICITED. Si se pide una versión o función no anunciada, el servidor responde NO. Así la interfaz puede ofrecer una opción porque existe, no porque el desarrollador espera que exista.

Rice cuidó la puerta antigua. El servidor empezaría comportándose como IMAP2 según RFC 1064 y solo cambiaría cuando el cliente eligiera otra versión o función. La selección de versión debía ocurrir antes de elegir un buzón: una implementación podía necesitar un programa distinto para servir otro protocolo y perder el estado al cambiar. Esa regla sitúa el cambio donde todavía es barato reiniciar la conversación.

El choque alcanzaba incluso a la memoria del cliente. El apéndice del RFC 1176 decía que un cliente IMAP2 debía mantener una caché local, un modelo incompleto del buzón actualizado con respuestas del servidor. RFC 1203 rechazaba que el protocolo presupusiera tal arquitectura. También separaba las respuestas exigidas por una orden, marcadas con su etiqueta, de los datos enviados por iniciativa del servidor, marcados con *. Con varias búsquedas simultáneas y almacenamiento lento, saber a qué petición pertenece cada resultado deja de ser un detalle estético.

El registro oficial indica que IMAP3 fue Experimental para Internet y hoy figura como Historic. Los documentos no cuentan cuántos servidores lo ejecutaron. Sí muestran una pelea concreta sobre la distribución del trabajo: quien conoce las capacidades puede anunciarlas, o puede dejar que cada cliente las descubra a golpes de error. En 1991, Rice decidió poner esa pregunta por escrito.

Fuentes