Resumen

  • RFC 934 propuso que una línea que empieza por guion puede separar mensajes encapsulados. Para que una línea de datos no fuese tomada por un separador, el agente de reenvío insertaba un guion y un espacio, y el agente de extracción los eliminaba.
  • La operación tiene inversa por capa, no una representación intermedia constante. El mismo renglón puede acumular un nuevo prefijo con cada envoltura adicional.
  • MIME conservó el problema de delimitar partes, pero empleó una frontera declarada y elegida para no colisionar con el contenido. RFC 2046 explica que el crecimiento de las líneas hizo inadecuada la convención de RFC 934 para anidamientos profundos.

No todo guion manda

La sintaxis del correo ya distinguía lugares antes de que existiera RFC 934. RFC 822 termina los campos de cabecera en la primera línea vacía y deja después el cuerpo. Dentro de los campos estructurados, comillas, paréntesis y la barra invertida desempeñan funciones de delimitación o de cita. No son órdenes universales: solo tienen ese efecto para el analizador que está leyendo ese campo y ha alcanzado ese estado.

Esta limitación evita una confusión frecuente en los formatos. Un carácter no trae autoridad consigo. La recibe de un contrato de lectura, de una posición y de un contexto. La misma marca puede ser texto dentro de una parte y una frontera en el envoltorio exterior. Si el receptor olvida cuál de las dos capas está leyendo, convierte información en control.

RFC 934 proponía un agente de forwarding que compone el borrador externo y un agente de bursting que lo descompone tras la entrega. El cuerpo externo admite texto inicial, mensajes encerrados y texto final. Su frontera de encapsulación, en la convención inicial, es una línea que comienza por .

Eso facilita una secuencia de mensajes: una frontera puede ser a la vez final de uno y comienzo del siguiente; dos fronteras contiguas equivalen a un mensaje vacío. Pero también crea una colisión inmediata. Una línea ordinaria del mensaje interno puede empezar por el mismo carácter sin querer participar en la gramática externa. Si nadie marca la diferencia, el extractor no puede saber si debe entregar la línea o cortar el mensaje.

El prefijo era una anotación de tránsito

La respuesta de RFC 934 es deliberadamente mecánica. Cuando el reenviador detecta en el texto que transporta una línea que comienza como frontera, emite primero y luego la línea original. Así, - informe se vuelve - - informe mientras está dentro de la envoltura. El extractor ve el patrón de guion seguido de espacio, no lo interpreta como frontera y produce el resto de la línea. Al hallar una frontera verdadera, cambia de mensaje.

El valor del procedimiento está en lo que no afirma. El reenviador no se convierte en autor del - informe, no decide que la línea interna sea una frontera y no reclama que su prefijo forme parte del original. Solo evita que su propia gramática se active sobre datos ajenos. Al salir de esa gramática, el extractor revierte la intervención.

RFC 822 describe una disciplina semejante, aunque para otra clase de transformación: al pasar entre redes heterogéneas se deshacen las peculiaridades de la red anterior para regresar a una forma canónica antes de imponer las de la siguiente. No significa que ambos protocolos hagan lo mismo. Sí muestra una regla de ingeniería: toda adaptación local necesita una frontera identificable y una ruta de vuelta; de otro modo, el trayecto se convierte en contenido permanente.

La prueba de ida y vuelta no basta

RFC 934 dice que el esquema permite reenvíos recursivos, y es cierto. Cada capa puede proteger lo que podría confundir a su extractor y cada extracción puede deshacer la protección que reconoce.

Sin embargo, la línea protegida cambia a medida que se apilan capas. Un segundo reenviador recibe - - informe, que también empieza por guion, y añade su propio . El resultado externo es - - - informe. Una tercera capa vuelve a crecerlo. Al extraer, cada capa elimina solamente el prefijo que introdujo. El contenido original regresa al final, pero no se mantiene con igual tamaño durante el viaje.

Esa diferencia separa la invertibilidad de la viabilidad operacional. Un par codificador-decodificador puede devolver exactamente los mismos datos y, aun así, una serie de intermediarios puede alcanzar límites de longitud, aplicar plegado de líneas, normalizar espacios o perder el dato que permite saber qué capa añadió qué prefijo. La forma intermedia es parte de la realidad del sistema: los relés la transmiten, los filtros la inspeccionan y los límites la rechazan.

RFC 934 también registra la presión de la práctica existente. Fue diseñado para reducir los cambios en agentes de reenvío ya desplegados. Recomienda, por compatibilidad, considerar líneas en blanco alrededor de las fronteras, pero advierte que una implementación estricta no debería producirlas. La publicación no borra lo que ejecutan los programas instalados; una regla sirve si logra coordinar escritores y lectores reales.

MIME trasladó la obligación

RFC 2045 sitúa MIME sobre trabajos previos, incluidos RFC 934 y RFC 822. MIME introduce entidades con campos que describen contenido y permite cuerpos multipartes. Es una nueva sintaxis compartida para participantes que la adoptan, no una sentencia retrospectiva sobre todos los mensajes antiguos.

En RFC 2046, una entidad multipart declara un parámetro boundary. La línea delimitadora empieza con dos guiones y esa cadena. La cadena completa no debe aparecer dentro de ninguna parte encapsulada ni como prefijo de una línea; las entidades multipartes anidadas deben usar fronteras distintas. La obligación se desplaza: quien compone escoge una frontera que no choque con sus partes.

El separador sigue siendo local. Solo obtiene significado porque el encabezado de esa entidad lo declara y porque el lector ya está aplicando la gramática multipart correspondiente. Una secuencia visualmente idéntica en texto plano no puede por sí sola abrir ni cerrar nada.

RFC 2046 conserva los dos guiones por compatibilidad aproximada con RFC 934 y para facilitar búsquedas de fronteras en algunas implementaciones. Pero aclara que multipart no cumple las convenciones de cita de líneas con guion de RFC 934. La razón no es estética: las líneas crecen con cada nivel de cita y algunas implementaciones SMTP a veces envuelven líneas largas. Para estructuras profundamente anidadas, esa combinación cambia una protección correcta en un coste de transporte.

No hay necesidad de caricaturizar la transición. RFC 934 resolvía una ambigüedad real con una máquina de estados pequeña y una inversión definida. MIME eligió otra contabilidad: declara una frontera específica y exige que no aparezca en los datos. En ambos diseños alguien debe observar la colisión, conservar los bytes relevantes y aplicar la regla en su alcance exacto.

Hacer que la autoridad del marco caduque

La pregunta que deja esta historia sirve para cualquier formato estratificado: ¿cuándo una señal se vuelve estructura y qué la obliga a volver a ser dato?

En RFC 934, el añadido es una prueba local de que la capa externa no debe tratar esa línea interna como su frontera. El burster retira la prueba al devolver la línea al mensaje interior. En MIME, la frontera se funda en un parámetro declarado para una entidad determinada. Ningún diseño debe extender ese poder más allá de la envoltura que lo justifica.

Los daños aparecen cuando un marcador temporal queda archivado como original, cuando un escape se elimina sin saber quién lo introdujo, o cuando un lector aplica una regla antes de establecer el sobre que la hace válida. La corrección no exige una autoridad central que interprete cada cadena. Exige una especificación mínima, validación local, transformaciones visibles y posibilidad de revertir lo propio.

El guion creciente obliga además a medir composición, no solo pares de funciones. Hay que preguntar cuánto se expande una representación, en qué capa se ve la expansión, qué límite toca y si una normalización conserva los indicios necesarios para recuperarla. Así un detalle de correo antiguo se convierte en una prueba seria para el diseño de cualquier frontera.

Fuentes y límites de la evidencia

El conjunto cerrado de evidencia es RFC 822, RFC 934, RFC 2045 y RFC 2046. Establece las reglas históricas y el contraste documentado con MIME. No establece adopción universal, comportamiento de productos actuales, frecuencia medida de anidamiento ni seguridad de un analizador concreto.