Resumen

  • RFC 5230 definió una acción de Sieve que genera un mensaje nuevo, lo dirige al remitente de sobre del correo recibido y registra si esa dirección ya recibió esa misma respuesta.
  • Los controles decisivos no eran solo el texto: la comprobación del destinatario, la identidad de la respuesta, los encabezados contra bucles y el intervalo delimitado determinaban quién recibía el aviso y cuándo.

La ausencia también podía perjudicar a terceros

Un mensaje de ausencia parece inofensivo porque suele ocupar dos líneas. Sin embargo, es una acción saliente realizada en nombre del titular sin preguntarle por cada destinatario. Puede revelar que alguien no está, responder a una lista o rebotar entre dos sistemas automáticos. Por eso el problema no era solo qué decir: también cuándo guardar silencio.

En 2008, RFC 5230 incorporó vacation al lenguaje de filtrado Sieve, deliberadamente limitado. El script podía avisar que una persona tardaría en responder y hacer que el intérprete crease otro mensaje. Fue la primera extensión de Sieve capaz de crear un mensaje enteramente nuevo. Ya no se trataba solo de mover un correo entre carpetas; una regla iniciaba una comunicación exterior que podía generar otra respuesta.

El destinatario era el remitente SMTP del sobre —el valor MAIL FROM, disponible en Return-Path si Sieve se ejecutaba después de la entrega final—, no simplemente el campo From que ve una persona. El nuevo mensaje debía usar una dirección de sobre vacía; si estaba disponible la extensión de notificaciones de entrega, la implementación debía solicitar que un fallo no produjera otra notificación. Auto-Submitted identificaba la respuesta automática. Los campos de fecha, remitente, destinatario y referencias describían un mensaje realmente generado, no una imitación del correo original.

Una dirección, una respuesta concreta, un plazo

La memoria es la regla más fácil de pasar por alto. El sistema registra las respuestas que envía a cada dirección durante un periodo. Un remitente puede escribir de nuevo mientras la persona está ausente, pero no necesariamente recibirá el mismo texto cada vez. :days fija el intervalo. Si se omite, se usa el mayor valor entre siete días y el mínimo del sitio. El operador puede imponer un mínimo mayor que cero y un máximo; los valores que quedan fuera se ajustan al límite. Por tanto, el número del script no siempre es el intervalo efectivo.

No es una bandera global que diga «ya se avisó de la ausencia». Importa qué respuesta recibió esa dirección. :handle proporciona una identidad explícita: las instrucciones que comparten el mismo handle cuentan como una sola respuesta. Si no se indica, la identidad se sintetiza a partir de :subject, :from, :mime y el texto. Así, dos ramas pueden dar explicaciones distintas a la misma persona. En cambio, dos acciones con los mismos argumentos comparten el historial de supresión. Cuando se usa la extensión de variables, sus valores no deben expandirse antes de calcular esa identidad: la clave proviene de los argumentos especificados, no de un valor volátil que cambia en cada ejecución.

El intervalo se comporta como una pequeña base de políticas. La clave combina la dirección del remitente con la identidad de la respuesta. Así se reducen repeticiones sin impedir otro aviso para una circunstancia distinta. El autor del script y el operador comparten el control: uno define qué respuestas son equivalentes; el otro limita la frecuencia efectiva.

El aviso debía llegar a quien correspondía

RFC 5230 exige que la dirección del usuario figure en To, Cc, Bcc o campos Resent equivalentes antes de responder. El servidor puede reconocerla en los registros de la cuenta, en el destinatario final del sobre o en una lista :addresses para alias. Esa lista es útil cuando alguien tiene varias direcciones; puede quedar incompleta cuando intervienen el reenvío o el subdireccionamiento.

También hay defensas contra sistemas y listas. La implementación debe mantener un conjunto de direcciones que nunca recibirán una respuesta de ausencia; el estándar recomienda nombres habituales de demonios y programas de gestión de listas. Recomienda no contestar mensajes con encabezados de gestión de listas ni mensajes cuyo Auto-Submitted tenga un valor distinto de no. La implementación puede además descartar mensajes cuyo contenido o encabezados indiquen que contestar sería improcedente. No se garantiza que todo servidor reconozca cualquier flujo automático: algunas identidades quedan a criterio del operador y dependen de lo que el servidor pueda observar.

RFC 3834 ya había publicado en 2004 recomendaciones generales para respuestas automáticas. RFC 5230 dice que vacation, como respondedor personal, se diseñó conforme a esa guía. Los estándares posteriores ampliaron los márgenes: RFC 6131 añadió :seconds, incluso cero para responder a todos los mensajes; RFC 6133 mostró la combinación con presencia y libreta de direcciones; RFC 8580 permitió guardar una copia de la respuesta. Esos documentos muestran posibilidades técnicas, no cuánto se desplegaron.

El mensaje no era solo su texto

La extensión contempla UTF-8 y MIME, incluidas alternativas en varios idiomas. Un script puede seleccionar idioma según los encabezados, pero el documento advierte que una comprobación simplista puede engañarse. También señala que el tono puede depender de si escribe un colega o una persona desconocida, no solo del idioma. Elegir la respuesta supone decidir a qué público se dirige.

La acción es acotada: solo puede ejecutarse una vez por script, no es compatible con reject o refuse y no cancela el keep implícito de Sieve. Esos detalles la sitúan en el lenguaje, pero no repiten la tesis general de RFC 3028 sobre la selección de acciones. La aportación de RFC 5230 es la política que rodea al nuevo mensaje saliente: su destinatario, la identidad de la respuesta, sus encabezados y el intervalo de repetición.

Las fuentes prueban el diseño, no una seguridad universal. Un servidor no siempre sabe si el mensaje era personal, si un alias reenviado pertenece al mismo titular o si un encabezado revela toda la relación con una lista. El estándar reúne señales observables y memoria acotada para contener una automatización tentadora. El aviso de ausencia no era una frase guardada: era un permiso, dirigido a alguien y limitado por un reloj.

Fuentes