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.