stringtranslate.com

Mbox

Mbox es un término genérico para una familia de formatos de archivos relacionados que se utilizan para almacenar colecciones de mensajes de correo electrónico . Se implementó por primera vez en la quinta edición de Unix .

Todos los mensajes de un buzón mbox se concatenan y se almacenan como texto sin formato en un único archivo. Cada mensaje comienza con los cuatro caracteres "From" seguidos de un espacio (la llamada línea "From_") y la dirección de correo electrónico del remitente. La RFC 4155 define que una marca de tiempo UTC sigue a otro carácter de espacio de separación. [1]

Sin embargo, como se indica en la RFC, existe una enorme variación entre los distintos sistemas de almacenamiento. Como ejemplo específico, si se exporta mediante IMAP , el popular servicio Gmail utiliza - como marcador de posición en lugar de la dirección del remitente, lo acompaña con una marca de tiempo que representa la hora en que se configuró la exportación IMAP o la hora de recepción (la que sea más reciente) y no intenta evitar las cadenas "De -" que aparecen en el cuerpo de un correo electrónico.

Un formato similar a mbox es el MH Message Handling System . Otros sistemas, como Microsoft Exchange Server y el servidor IMAP Cyrus , almacenan los buzones de correo en bases de datos centralizadas administradas por el sistema de correo y a las que no pueden acceder directamente los usuarios individuales. El formato de buzón maildir se cita a menudo como una alternativa al formato mbox para los sistemas de almacenamiento de correo electrónico en red.

Protocolos de almacenamiento de correo

A diferencia de los protocolos de Internet utilizados para el intercambio de correo electrónico, el formato utilizado para el almacenamiento de correo electrónico nunca se ha definido formalmente a través del mecanismo de estandarización RFC y se ha dejado completamente en manos del desarrollador de un cliente de correo electrónico. Sin embargo, el estándar POSIX definió un marco flexible junto con el programa mailx . En 2005, el tipo de medio application/mbox se estandarizó como RFC 4155, que insinuó que mbox almacena los mensajes del buzón en su formato original de mensaje de Internet (RFC 2822), excepto por el carácter de nueva línea utilizado, el almacenamiento de datos limpios de siete bits y el requisito de que cada mensaje recién agregado finalice con una línea completamente vacía dentro de la base de datos mbox. [1] [2]

Familia Mbox

El formato mbox utiliza una sola línea en blanco seguida de la cadena 'De' (con un espacio) para delimitar los mensajes; esto puede crear ambigüedades si un mensaje contiene la misma secuencia en el texto del mensaje.

A lo largo de los años, surgieron cuatro variantes populares pero incompatibles: mboxo , mboxrd , mboxcl y mboxcl2 . El esquema de nombres fue desarrollado por Daniel J. Bernstein , Rahul Dhesi y otros en 1996. Cada uno se originó a partir de una versión diferente de Unix . mboxcl y mboxcl2 se originaron a partir del formato de archivo utilizado por las herramientas de correo de Unix System V Release 4. mboxrd fue inventado por Rahul Dhesi et al. como una racionalización de mboxo y posteriormente adoptado por algunas herramientas de correo de Unix, incluida qmail .

Todas estas variantes tienen el problema de que a veces es necesario modificar el contenido del mensaje para eliminar ambigüedades, como se muestra a continuación, de modo que las aplicaciones tienen que saber qué regla de comillas se ha utilizado para realizar la reversión correcta, lo que resultó ser poco práctico. El uso de MIME y la elección de una codificación de transferencia de contenido que comillas las líneas "From_" de una manera compatible con el estándar garantiza que no sea necesario cambiar el contenido del mensaje, sino solo su representación MIME . Por lo tanto, las sumas de comprobación permanecen constantes, una condición previa necesaria para admitir S/MIME y Pretty Good Privacy . Las aplicaciones que crean mensajes nuevos y los almacenan en archivos de base de datos mbox probablemente utilizarán este enfoque para separar el contenido del mensaje del formato de almacenamiento de la base de datos.

mboxo y mboxrd localizan el mensaje buscando líneas De que se encuentren antes de los encabezados del mensaje de correo electrónico. Si From aparece una cadena " " al principio de una línea en el encabezado o en el cuerpo de un mensaje (una violación estándar de correo para el primero, pero no para el segundo), el mensaje de correo electrónico debe modificarse antes de almacenarse en un archivo de buzón de correo mbox o la línea se tomará como límite del mensaje. Para evitar malinterpretar una From cadena " " al principio de la línea en el cuerpo del correo electrónico como el comienzo de un nuevo correo electrónico, algunos sistemas "deshacen" [3] el mensaje, generalmente anteponiendo un signo mayor que:

 >Desde mi punto de vista...

En el formato mboxo , estas líneas tienen una ambigüedad irreversible. [4] En el formato mboxo , esto puede provocar la corrupción del mensaje. Si una línea ya está contenida >From al principio (como en una cita), no se modifica al escribirla. Cuando el software de correo la lee posteriormente, el prefijo >se elimina por error. El formato mboxrd resuelve este problema convirtiendo From a >From y convirtiendo >From a >>From , etc. La transformación es entonces siempre reversible. [5]

Ejemplo:

Desde MAILER-DAEMON vie., 8 jul. 2011 12:08:34 Desde:  Autor <[email protected]> Para: Destinatario <[email protected]> Asunto: Mensaje de muestra 1 Este es el cuerpo. >De (debe estar con caracteres de escape). Hay 3 líneas. Desde MAILER-DAEMON vie., 8 jul. 2011 12:08:34 Desde: Autor <[email protected]> Para: Destinatario <[email protected]> Asunto: Mensaje de muestra 2 Este es el segundo cuerpo.                

Los formatos mboxcl y mboxcl2 utilizan un Content-Length:encabezado para determinar la longitud de los mensajes y, por lo tanto, la siguiente línea From real . mboxcl todavía cita las líneas From en los propios mensajes como lo hace mboxrd , mientras que mboxcl2 no lo hace.

mbox modificado

Algunos clientes de correo electrónico utilizan una modificación del formato mbox para sus carpetas de correo.

Bloqueo de archivos

Dado que se almacena más de un mensaje en un solo archivo, se necesita algún tipo de bloqueo de archivos para evitar la corrupción que puede resultar de que dos o más procesos modifiquen el buzón de correo simultáneamente. Esto podría suceder si un programa de entrega de correo electrónico de red entrega un mensaje nuevo al mismo tiempo que un lector de correo está eliminando un mensaje existente.

Los distintos formatos de mbox han utilizado varios mecanismos mutuamente incompatibles para permitir el bloqueo de archivos de mensajes, incluidos fcntl()y lockf(). Esto no funciona bien con sistemas de archivos montados en red, como el Sistema de archivos de red (NFS) , por lo que tradicionalmente Unix utilizaba archivos de "bloqueo de puntos" adicionales, que se podían crear de forma atómica incluso sobre NFS.

Los archivos mbox también deben bloquearse mientras se están leyendo. De lo contrario, el lector puede ver contenidos de mensajes dañados si otro proceso está modificando el mbox al mismo tiempo, aunque no se produzca ninguna corrupción real en el archivo.

Como formato de parche

En el desarrollo de código abierto , es común enviar parches en formato diff a una lista de correo para su discusión. El formato diff permite agregar "encabezados" irrelevantes, como datos mbox. [8] [9] Los sistemas de control de versiones como git tienen soporte para generar parches en formato mbox y enviarlos a la lista como correos electrónicos en un hilo. [10] [11]

Véase también

Referencias

  1. ^ ab Hall, E., ed. (septiembre de 2005). «Solicitud de comentarios: 4155 – El tipo de medio application/mbox». Grupo de trabajo de ingeniería de Internet . Archivado desde el original el 17 de mayo de 2021. Consultado el 17 de mayo de 2021 .
  2. ^ Resnick, P., ed. (abril de 2001). «Solicitud de comentarios: 2822 – Formato de mensajes de Internet». Grupo de trabajo de ingeniería de Internet . Archivado desde el original el 31 de marzo de 2023. Consultado el 17 de mayo de 2021 .
  3. ^ Gellens, R., ed. (febrero de 2004). "Solicitud de comentarios: 3676 – El formato Text/Plain y los parámetros DelSp – Sección 4.4: Relleno de espacio". Grupo de trabajo de ingeniería de Internet . Archivado desde el original el 16 de mayo de 2021. Consultado el 17 de mayo de 2021 .
  4. ^ "Configuración de Netscape Mail en Unix: por qué el formato Content-Length es malo" Archivado el 8 de abril de 2009 en Wayback Machine por Jamie Zawinski 1997
  5. ^ de Boyne Pollard, Jonathan (2004). «"mbox" es una familia de varios formatos de buzón de correo mutuamente incompatibles». Respuestas dadas con frecuencia. Archivado desde el original el 31 de diciembre de 2020 . Consultado el 20 de marzo de 2023 .
  6. ^ "Guía del usuario de Eudora 6.2.4 para Mac" (PDF) . p. 113. Archivado desde el original (PDF) el 2014-07-12 . Consultado el 2015-10-29 .
  7. ^ "Importación y exportación de correo - Base de conocimientos de MozillaZine". kb.mozillazine.org . Archivado desde el original el 2013-07-03 . Consultado el 2011-06-18 .
  8. ^ "Envío de parches: la guía esencial para incluir su código en el núcleo — La documentación del núcleo de Linux". www.kernel.org . Archivado desde el original el 27 de octubre de 2019 . Consultado el 3 de marzo de 2020 .
  9. ^ Randal, Allison; Sugalski, Dan; Tötsch, Leopold (2003). "Envío de parches". Perl 6 Essentials . O'Reilly Media, Inc. pág. 14. ISBN 978-0-596-00499-6.
  10. ^ "Git - Documentación de git-format-patch". git-scm.com . Archivado desde el original el 2020-03-07 . Consultado el 2020-03-03 .
  11. ^ "Git - Documentación de git-send-email". git-scm.com . Archivado desde el original el 2020-02-21 . Consultado el 2020-03-03 .

Lectura adicional