IMAP

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 1 de agosto de 2018; las comprobaciones requieren 47 ediciones .
IMAP
Nombre Protocolo de acceso a mensajes de Internet
Nivel (según el modelo OSI ) Aplicado
Familia tcp / ip
Creado en 1986
Puerto/ID 143/ TCP , 993/TCP (IMAP sobre SSL)
Propósito del protocolo Acceso a buzones
Especificación RFC 3501
Implementaciones principales (clientes) MUA ( Outlook Express , Opera , Mozilla Thunderbird , The Bat!, Claws Mail , mutt , etc.)
Implementaciones principales ( servidores ) UW IMAP , Mensajero , Cyrus , Dovecot

IMAP ( Protocolo de acceso a mensajes de Internet ) es un protocolo de capa de aplicación para acceder al correo electrónico . 

Se basa en el protocolo de transporte TCP y usa el puerto 143, mientras que IMAPS (IMAP sobre SSL ) usa el puerto 993. IMAP solo funciona con mensajes y no requiere ningún paquete con encabezados especiales [1] .

IMAP brinda al usuario amplias oportunidades para trabajar con buzones ubicados en el servidor de correo . Un programa de correo que usa este protocolo accede al almacenamiento de correspondencia en el servidor como si esta correspondencia estuviera ubicada en la computadora del destinatario. Los correos electrónicos se pueden manipular desde la computadora del usuario ( cliente ) sin que el contenido completo de los correos electrónicos se envíe y reciba constantemente desde el servidor .

El protocolo SMTP suele utilizarse para enviar mensajes , ya que el comando de envío nativo de IMAP, llamado APPEND, no contiene un mecanismo para transferir información del servicio [1] .

Para nombres de buzones (carpetas) con caracteres fuera del rango ASCII , se utiliza una versión modificada de la codificación UTF-7 [1] .

El propósito del protocolo IMAP

El protocolo IMAP es una alternativa al POP con capacidades de envío rudimentarias.

La primera versión del protocolo POP tenía varias deficiencias, y la más grave de ellas era la falta de capacidad para administrar el movimiento y el almacenamiento de mensajes en el servidor. En POP , los mensajes se descargan del servidor de correo todos a la vez, luego de lo cual se eliminan del servidor, es decir, no hay posibilidad de seleccionar mensajes para recibir.

Para resolver los problemas asociados con esta función de POP , en 1986, Mark Crispin ( ing.  Mark Crispin ), que entonces trabajaba en la Universidad de Stanford , creó un nuevo protocolo para recibir correo del servidor [2] .

El nuevo protocolo hizo posible que los usuarios recibieran correo electrónico en múltiples ubicaciones desde el mismo buzón. El usuario tiene la oportunidad de administrar los mensajes en su buzón y funciones adicionales para dar servicio a los buzones en el servidor.

En el futuro, se finalizó el protocolo POP , en POP3 (POP versión 3) es posible recibir mensajes seleccionados del servidor y dejar mensajes seleccionados en el servidor. En versiones recientes entre IMAP y POP , la principal diferencia para el usuario es que IMAP4 puede acceder a letras en diferentes carpetas de correo en el servidor y mover letras entre ellas, mientras que POP3 accede a letras en el servidor por números en una lista lineal (es decir, funciona con una sola carpeta de correo).

Versiones del protocolo IMAP [2]

Ventajas sobre POP3

Al usar POP3 , el cliente se conecta al servidor solo durante el tiempo que tarda en descargar nuevos mensajes. Cuando se usa IMAP, la conexión no se interrumpe mientras la interfaz de usuario está activa y los mensajes se descargan solo cuando lo solicita el cliente. Esto reduce el tiempo de respuesta para los usuarios que tienen muchos mensajes grandes en sus buzones.

El protocolo POP requiere que el cliente actual sea el único conectado a la caja. IMAP permite que varios clientes accedan a un buzón al mismo tiempo y le brinda al cliente la capacidad de realizar un seguimiento de los cambios realizados por otros clientes conectados al mismo tiempo.

Gracias al sistema de banderas definido en IMAP4, el cliente puede rastrear el estado de un mensaje (leído, respondido, eliminado, etc.); Los datos de la bandera se almacenan en el servidor.

Los clientes de IMAP4 pueden crear, cambiar el nombre y eliminar buzones y mover mensajes entre buzones. Como alternativa, puede usar la "Extensión de la lista de control de acceso ( ACL ) IMAP4" ( RFC 4314 ) para administrar los derechos de acceso al buzón.

Los mensajes se buscan en el lado del servidor.

IMAP4 tiene un mecanismo de extensión explícito. [3]

Mensajes y sus atributos

IMAP solo funciona con mensajes y no requiere paquetes con encabezados especiales. Cada mensaje tiene varios atributos asociados con él. Estos atributos pueden definirse individualmente o en combinación con otros atributos.

UID

A cada mensaje se le asigna un código de 32 bits que, cuando se usa junto con un identificador único, forma una secuencia de 64 bits que garantiza la identificación única del mensaje en el buzón. Cuanto más tarde llegue el mensaje, mayor será su UID.

Un UID se asocia con un buzón y se envía como un código de respuesta de validez de uid (ok) durante la fase de selección del buzón. Si el UID de la sesión anterior no se puede utilizar por algún motivo, se debe incrementar el UID.

El UID de un mensaje no debe cambiar dentro de una sesión, ni debe cambiar de una sesión a otra. Sin embargo, si no es posible almacenar el UID del mensaje en una sesión posterior, cada sesión posterior debe tener un nuevo código identificador único, que debe ser mayor que cualquier UID utilizado anteriormente.

Número de secuencia del mensaje

El número de secuencia de un mensaje en un buzón comienza en 1. Cada mensaje, a partir del segundo, tiene un número de secuencia exactamente 1 mayor que el que lo precedió.

Se permite cambiar el número de secuencia de un mensaje durante una sesión. Por ejemplo, cuando se elimina un mensaje de un buzón, los números de todos los mensajes posteriores cambian.

Banderas de mensajes

Este atributo es una lista de cero o más tokens con nombre asociados con el mensaje dado. La bandera se establece al agregarla a esta lista y se restablece al eliminarla. Hay dos tipos de banderas en IMAP 4.1. La bandera puede ser permanente o estar activa solo durante la duración de esta sesión.

Una bandera del sistema es una bandera cuyo nombre se define en la especificación del protocolo. Todas las banderas del sistema comienzan con un \.

Los siguientes indicadores del sistema están definidos actualmente:

Fecha y hora interna del mensaje en el servidor

La hora y la fecha en que se recibió el mensaje. Si el mensaje se entregó a través del protocolo SMTP  , la fecha y hora de entrega al destino final. Para mensajes entregados por el comando de copia, la fecha y hora internas del remitente del mensaje. Al usar el comando append , la fecha y la hora especificadas por los parámetros del comando.

Otros atributos

Interacción entre cliente y servidor

Una conexión IMAP 4.1 implica establecer una conexión entre un cliente y un servidor . El cliente envía comandos al servidor, el servidor envía datos y notificaciones sobre el estado de la solicitud al cliente. Todos los mensajes, tanto del cliente como del servidor, tienen la forma de cadenas terminadas en una secuencia especial.

Cualquier procedimiento comienza con el comando del cliente. Cualquier comando de cliente comienza con un prefijo de identificador (generalmente una cadena alfanumérica corta como, A0001etc. A0002) llamado etiqueta. Para cada comando, el cliente genera su propia etiqueta.

Hay dos casos en los que la cadena enviada por el cliente no representa un comando completo. En el primero, el argumento del comando se proporciona con un código que determina el número de octetos en la cadena. En el segundo, los argumentos del comando requieren una respuesta del servidor. En ambos casos, el servidor envía una solicitud de continuación de comando que comienza con el carácter +.

El cliente debe completar el envío de un comando antes de enviar otro.

El receptor de protocolo del servidor lee la cadena de comando recibida del cliente, la analiza, extrae los parámetros y envía los datos al servidor. Cuando se completa el comando, el servidor envía una respuesta.

Los datos transmitidos por el servidor al cliente, así como las respuestas de estado que no indican la finalización del comando, tienen un prefijo * y se denominan respuestas sin etiquetar.

Los datos pueden ser enviados por el servidor en respuesta a un comando del cliente o por iniciativa propia. El formato de los datos no depende del motivo del envío.

La respuesta indica el éxito/fracaso de la operación. Utiliza la misma etiqueta que el comando del cliente que inició el procedimiento. Por lo tanto, si se ejecuta más de un comando, la etiqueta del servidor apunta al comando que provocó la respuesta. Hay tres tipos de respuesta de terminación del servidor: ok(éxito), no(fallo), bad(error de protocolo, por ejemplo, comando no reconocido o error de sintaxis detectado).

El agente de escucha del protocolo de cliente IMAP 4.1 lee la cadena de respuesta del servidor y toma medidas de acuerdo con el primer carácter *o +.

El cliente debe estar preparado para aceptar cualquier respuesta del servidor en cualquier momento. Los datos del servidor deben escribirse para que el cliente pueda usarlos directamente sin enviar solicitudes de búsqueda al servidor.

Estados del servidor IMAP

El servidor IMAP 4.1 se encuentra en uno de cuatro estados.

La mayoría de los comandos solo se pueden usar en ciertos estados.

En el estado no autenticado , el cliente debe proporcionar un nombre de usuario y una contraseña antes de que la mayoría de los comandos estén disponibles para él. La transición a este estado se realiza cuando se establece una conexión sin autenticación previa.

En el estado autenticado , el cliente se identifica y debe seleccionar un buzón, después de lo cual los comandos para trabajar con mensajes estarán disponibles para él. La transición a este estado se produce cuando se establece una conexión con autenticación previa , cuando se emiten todos los datos de identificación necesarios o cuando se selecciona un buzón por error.

El sistema ingresa al estado de selección cuando el buzón se selecciona con éxito.

El sistema entra en estado de salida cuando la conexión se interrumpe como resultado de una solicitud del cliente o debido a una decisión independiente del servidor.

  1. Conexión sin autenticación previa
  2. Conexión con autenticación previa
  3. Conexión rechazada
  4. Finalización exitosa del comando LOGINoAUTHENTICATE
  5. Finalización exitosa del comando SELECToEXAMINE
  6. Ejecución de comando o CLOSEcomando fallido SELECToEXAMINE
  7. Ejecutar un comando LOGOUT, cerrar el servidor o terminar la conexión

Comandos del protocolo IMAP

ACCESO Permite que el cliente utilice una ID de usuario y una contraseña en texto sin formato al iniciar sesión en el servidor IMAP. Este no es el mejor método, pero a veces es la única forma de conectarse al servidor. AUTENTICAR Permite al cliente utilizar métodos de autenticación alternativos al registrarse en el servidor IMAP. La autenticación de usuario individual es opcional y no es compatible con todos los servidores IMAP. Además, la implementación de dicha verificación puede variar según el servidor. Cuando el cliente emite un comando AUTHENTICATE, el servidor responde con una cadena de invocación codificada en base64 . A continuación, el cliente debe enviar una respuesta al desafío de autenticación del servidor, también codificada en base64. Si el servidor no soporta el método de autenticación propuesto por el cliente, incluye la palabra en su respuesta NO. Luego, el cliente debe continuar negociando el método de autenticación. Si todos los intentos de determinar el método de autenticación han fallado, entonces el cliente intenta registrarse con el servidor usando el LOGIN. CERCA Cierra el buzón. Cuando se cierra un buzón con este comando, los mensajes marcados con la bandera \DELETEDse eliminan del buzón. No tiene opciones. CERRAR SESIÓN Finaliza la sesión para el ID de usuario actual. CREAR Crea un nuevo buzón. El nombre y la ubicación de los nuevos buzones se determinan según las especificaciones generales del servidor. ELIMINAR Aplica para buzones. El servidor IMAP, al recibir este comando, intentará eliminar el buzón con el nombre especificado como argumento del comando. Los mensajes se eliminan junto con los buzones y no se pueden restaurar. REBAUTIZAR Cambia el nombre del buzón . Este comando tiene dos parámetros: el nombre del buzón que desea cambiar de nombre y el nuevo nombre del buzón. SUSCRIBIR Agrega un buzón a la lista de buzones activos del cliente. El único parámetro que se utiliza en este comando es el nombre del buzón que se listará. No es necesario que exista un buzón para agregarlo a la lista de buzones activos; esto le permite agregar buzones que aún no se han creado a la lista de buzones activos o eliminarlos si están vacíos. BAJAR Elimina buzones de la lista activa. También utiliza un parámetro: el nombre del buzón, que se elimina de la lista de buzones activos del cliente . Sin embargo, el buzón en sí no se elimina. LISTA Obtenga una lista de todos los buzones de los clientes; tiene dos parámetros. LSUB A diferencia del comando LIST, se utiliza para obtener una lista de buzones activados por el comando SUBSCRIBE. Los parámetros son los mismos que para LIST. ESTADO Genera una consulta sobre el estado actual del buzón. El primer parámetro de este comando es el nombre del buzón al que se aplica. El segundo parámetro es una lista de criterios por los cuales el cliente desea recibir información. El comando STATUSse puede utilizar para obtener información sobre el estado de un buzón sin abrirlo con los comandos SELECTo EXAMINE. El usuario puede obtener información según los criterios: ADJUNTAR Agrega un mensaje al final del buzón especificado. Los argumentos son el nombre del buzón, las banderas del mensaje (opcional), la marca de tiempo (opcional) y el mensaje en sí mismo: encabezado y cuerpo. Están disponibles los siguientes indicadores de mensaje: Si se especifican banderas en el comando, se establecen para el mensaje agregado. En cualquier caso, la bandera se establece para el mensaje \Recent. Si se especifica una marca de tiempo en el comando, esta hora se establecerá como la hora de creación del mensaje; de ​​lo contrario, la hora actual se tomará como la hora de creación. Debido a que el mensaje no es una sola línea, se utilizan literales . Ejemplo: C A003 ADJUNTAR mensajes guardados (\ Visto) {247} S + Listo para datos literales C Fecha: lunes, 7 de febrero de 1994 21:52:25 -0800 (PST) C De: Fred Foobar <[email protected]> Asunto: reunión de la tarde C Para: [email protected] C ID de mensaje: <[email protected]> C C Hola Joe, ¿crees que podamos encontrarnos mañana a las 3:30? S A003 OK AÑADIR completado El MULTIAPPEND, descrito en RFC 3502 , permite que un solo comando agregue varios mensajes a un buzón. CONTROLAR Establece un punto de control en un buzón. Cualquier operación, como, por ejemplo, escribir datos de la memoria del servidor en su disco duro , debe realizarse cuando el buzón se encuentra en el estado adecuado. Es para verificar la integridad del buzón después del disco y otras operaciones similares que se usa el comando CHECK. Este comando se utiliza sin parámetros. BORRAR Elimina todos los mensajes marcados con la bandera \DELETEDdel buzón sin cerrar el buzón. La respuesta del servidor al comando EXPUNGEes un informe del nuevo estado del buzón. BÚSQUEDA Busca mensajes por criterios en el buzón activo y luego muestra los resultados como un número de mensaje. Es posible buscar mensajes que tengan una determinada cadena de texto en el cuerpo, o que tengan una determinada bandera, o que se hayan recibido antes de una determinada fecha, etc. BUSCAR Obtener el texto del mensaje de correo. El comando solo se usa para mostrar mensajes. A diferencia de POP3 , el cliente IMAP no almacena una copia del mensaje en la PC del cliente . TIENDA Cambia la información sobre un mensaje. COPIAR Copia mensajes de un buzón a otro. UID Se utiliza junto con los comandos FETCH, COPYo . Permite que estos comandos usen UID reales en lugar de una secuencia de números de un rango de números de mensajes.STORESEARCH CAPACIDAD Consulta un servidor IMAP para obtener información sobre sus capacidades. NOOP El equipo no hace nada. Se puede usar para mantener activa la sesión de modo que la sesión no se agote por un temporizador de tiempo de espera. La respuesta del servidor al comando NOOPsiempre debe ser positiva. Dado que el servidor a menudo devuelve el estado de ejecución de un comando en particular en una respuesta, NOOPse puede usar como desencadenante de una consulta periódica sobre el estado del servidor.

Literatura

Enlaces

Notas

  1. 1 2 3 Semenov, 2014 .
  2. 12 Universidad de Washington .
  3. ¿Cuál es la diferencia entre POP e IMAP?  (ruso)  ? . soporte.microsoft.com . Consultado el 19 de julio de 2021. Archivado desde el original el 19 de julio de 2021.