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 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]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]
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.
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.
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.
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:
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.
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.
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.
URI | esquemas|
---|---|
Oficial | |
no oficial |
Protocolos TCP /IP básicos por capas del modelo OSI | |
---|---|
Físico | |
canalizado | |
la red | |
Transporte | |
sesión | |
Representación | |
Aplicado | |
Otro aplicado | |
Lista de puertos TCP y UDP |