IMAP4 Internet Message Access Protocol Version 4 (RFC3501) Ing. Agustín Eijo <[email protected]> Universidad Tecnológica Nacional, Facultad Regional La Plata Características Operación en línea y fuera de línea Conexión de múltiples clientes simultáneos Acceso a partes MIME de los mensajes y obtención parcial La información de estado del mensaje se mantiene en el Servidor Accesos a múltiples buzones de correo en el servidor Búsquedas en el servidor Modo de Operación El servidor escucha en el puerto TCP 143 o 993 (SSL). El cliente establece una conexión con el servidor. El servidor envía un saludo. El cliente y el servidor intercambian comandos y respuestas (respectivamente). La conexión se cierra o se aborta. Máquina de estados Comandos Identificador: llamado “Tag” Palabras clave: (case insensitive) Posiblemente seguidas de un argumento Todos los comandos terminan con CRLF El Identificador, las palabras clave y los argumentos se separan con un espacio Ejemplo: C: A001 LOGIN juan clave S: A001 OK User logged in Comandos: estado No Autenticado: AUTHENTICATE mechanism: Este comando requiere del Servidor un mecanismo de autenticación especial especificado por “mechanism”. Ejemplo: Kerberos_v4, GSSAPI, SKEY. LOGIN user pass: Este comando envia el nombre de usuario y la contraseña en texto plano. STARTTLS: Inicia una negociación TLS (Transport Layer Security). Comandos: hacia seleccionado SELECT Nombre: Selecciona el mailbox EXAMINE Nombre: Selecciona el mailbox en modo lectura. CREATE Nombre: Crea el mailbox DELETE Nombre: Borra el mailbox RENAME Origen Destino: Mueve o renombra el mailbox SUBSCRIBE Nombre: Agrega el mailbox a una lista de suscripción. UNSUBSCRIBE Nombre: Quita el mailbox a una lista de suscripción. LIST Nombre Mailbox: Devuelve la lista con todos los mensajes que contengan la cadena “Nombre” de Mailbox. LSUB Nombre: Devuelve todos los mailbox que estan subscriptos a Nombre STATUS Nombre Item: Devuelve el estado del Item del mailbox Nombre APPEND Mailbox Mensaje: Añade un nuevo Mensaje al Mailbox Comandos: Estado Seleccionado CHECK: Solicita un control sobre el Mailbox actual. CLOSE: Cierra el Mailbox seleccionado, se borran los correos que hayan sido marcados previamente y vuelve al Estado AUTHENTICATE) UNSELECT: Cierra el Mailbox seleccionado. EXPUNGE: Se borra los correos que hayan sido marcados. SEARCH criterio: Busca en el Mailbox los mensajes que coincidan con criterio. FETCH Item Mensaje: Devuelve un ítem especifico asociado con un mensaje. STORE Item Mensaje: Almacena un ítem específico a un mensaje. COPY Mensaje Mailbox: Copia el mensaje al final del mailbox. UID Nombre Argumento: Devuelve el identificador único del mensaje. Respuestas: De estado Datos del Servidor Continuación de Comandos/Respuestas Respuestas de Estado OK : Indica que el comando del cliente se completó con éxito. NO: Esta respuesta indica un error de operación en el Servidor. Bad: Esta respuesta provee un mensaje de error del servidor. Preauth: Esta es uno de los tres posibles saludos enviados cuando la conexión se inicia (OK, Preauth, BYE). BYE: Esta respuesta indica que el Servidor se esta preparando para cerrar la conexión (puede ser una secuencia normal, un cierre abrupto o por inactividad). Respuestas de Datos del Servidor Estas respuestas son mensajes no solicitados enviados desde el Servidor al Cliente. El cliente siempre debe estar listo para aceptar respuestas de datos del servidor. Las respuestas de datos del servidor indican o informan temas tales como: La recepción de un nuevo mail. Un cambio de estado para un mailbox o un mensaje Cualquier otro tipo de información que necesite alertar al cliente. Continuación de comandos/Respuestas Hay casos en el que los comandos de clientes son enviados en dos o mas mensajes. El cliente envía el primer mensaje y espera a que el servidor le envíe una respuesta marcada con el signo suma (+). Ejemplo: C: A001 LOGIN S: + Ready for additional command text C: user1 S: + Ready for additional command text C: password S: A001 OK LOGIN completed Atributos de Mensajes (Flags) Estos flags son usados para identificar el estado actual de un mensaje \Seen: el mensaje ha sido leido. \Answered: el mensaje ha sido respondido. \Flagged: el mensaje fue marcado para una atención especial. \Deleted: mensaje borrado, para luego ser eliminado en forma permanente. \Draft: el mensaje ha sido completado. \Recent: el mensaje ha llegado recientemente.