34 Lectura del Correo con Rmail

Rmail es un subsistema de Emacs para leer y disponer del correo que recibe. Rmail almacena los mensajes de correo en ficheros llamados ficheros Rmail. La lectura de los mensajes en un fichero Rmail se hace en un modo principal especial, el modo Rmail, que redefine la mayoría de las letras para ejecutar comandos para gestionar el correo.

Emacs también viene con un subsistema mucho más sofisticado y flexible para leer el correo, llamado Gnus. Gnus es un paquete muy grande, por lo que se describe en su propio manual, véase El Lector de Noticias Gnus.

34.1 Conceptos Básicos de Rmail

Usando Rmail de la manera más simple, tiene un archivo Rmail ~/RMAIL en el que se guarda todo su correo. Se llama su archivo primario de Rmail. El comando M-x rmail lee su archivo primario de Rmail, combina el correo nuevo de sus bandejas de entrada, muestra el primer mensaje que aún no ha leído y le permite comenzar a leer. La variable rmail-nombre-archivo especifica el nombre del archivo primario de Rmail.

Rmail sólo muestra un mensaje a la vez en el archivo de Rmail. El mensaje que se muestra se denomina mensaje actual. Los comandos especiales del modo Rmail pueden hacer cosas como borrar el mensaje actual, copiarlo en otro archivo, enviar una respuesta o pasar a otro mensaje. También puede crear múltiples archivos de Rmail (vea Manejo de Archivos) y usar Rmail para mover mensajes entre ellos (vea Copiando Mensajes a Archivos).

Dentro del archivo de Rmail, los mensajes se ordenan normalmente de forma secuencial por orden de recepción; puede especificar otras formas de ordenarlos (consulte Ordenación del Archivo de Rmail). Los mensajes se identifican mediante números enteros consecutivos que son sus números de mensaje. El número del mensaje actual se muestra en la línea de modo de Rmail, seguido del número total de mensajes del archivo. Puede desplazarse a un mensaje especificando su número de mensaje con la tecla j (véase Desplazarse Entre Mensajes).

Siguiendo las convenciones habituales de Emacs, los cambios en un fichero Rmail se hacen permanentes sólo cuando se guarda el fichero. Puede guardarlo con s (rmail-expunge-and-save), que también elimina primero los mensajes borrados del fichero (vea Eliminación de Mensajes). Para guardar el archivo sin borrar, utilice C-x C-s. Rmail guarda automáticamente el archivo de Rmail después de combinar el correo nuevo de un archivo de bandeja de entrada (consulte Archivos de Rmail y Bandejas de Entrada).

Puede salir de Rmail con q (rmail-quit); esto expurga (elimina) y guarda el archivo de Rmail, luego entierra el búfer de Rmail así como su búfer de resumen, si está presente (ver Resúmenes). Pero no es necesario salir formalmente. Si cambia de Rmail a editar en otros buffers, y nunca vuelve a cambiar, ha salido. Sólo asegúrese de guardar el archivo Rmail eventualmente (como cualquier otro archivo que haya cambiado). C-x s es una forma adecuada de hacerlo (ver Comandos para Guardar Archivos). El comando b de Rmail, rmail-bury, entierra el buffer de Rmail y su resumen sin borrar y guardar el archivo de Rmail.

34.2 Desplazamiento Dentro de un Mensaje

Cuando Rmail muestra un mensaje que no cabe en la pantalla, debe desplazarse por él para leer el resto. Puede hacerlo con los comandos de desplazamiento habituales: C-v, M-v y M-< (ver Desplazamiento), pero en Rmail el desplazamiento es tan frecuente que merece ser más sencillo.

SPC

Se desplaza hacia delante (scroll-up-command).

DEL S-SPC

Se desplaza hacia atrás (scroll-down-command).

.

Salta al comienzo del mensaje (rmail-beginning-of-message).

/

Avanza hasta el final del mensaje (rmail-end-of-message).

Dado que lo más habitual mientras se lee un mensaje es desplazarse por él a través de las páginas, Rmail hace que SPC y DEL (o S-SPC) hagan lo mismo que C-v (scroll-up-command, comando de desplazamiento hacia arriba) y M-v (scroll-down-command, comando de desplazamiento hacia abajo) respectivamente.

El comando . (rmail-beginning-of-message) retrocede hasta el principio del mensaje seleccionado. Esto no es exactamente lo mismo que M-<: por un lado, no fija la marca; por otro, restablece los límites del búfer del mensaje actual si los ha cambiado (por ejemplo, editando, vea Editar Contenido de un Mensaje). Del mismo modo, el comando / (rmail-end-of-message) se desplaza hacia adelante hasta el final del mensaje seleccionado.

34.3 Moverse entre Mensajes

Lo más básico que se puede hacer con un mensaje es leerlo. La forma de hacerlo en Rmail es hacer que el mensaje sea actual. La práctica habitual es moverse secuencialmente por el fichero, ya que éste es el orden de recepción de los mensajes. Cuando entra en Rmail, se sitúa en el primer mensaje que aún no ha hecho actual (es decir, el primero que tiene el atributo «no visto»; vea Atributos de Rmail). Muévase hacia adelante para ver los demás mensajes nuevos; muévase hacia atrás para volver a examinar los mensajes antiguos.

n

Pasa al siguiente mensaje no eliminado, omitiendo los mensajes eliminados intermedios (rmail-next-undeleted-message).

p

Pasa al mensaje anterior no eliminado (rmail-previous-undeleted-message).

M-n

Pasa al mensaje siguiente, incluidos los mensajes eliminados (rmail-next-message).

M-p

Pasa al mensaje anterior, incluidos los mensajes eliminados (rmail-previous-message).

C-c C-n

Pasa al siguiente mensaje con el mismo subject (asunto) que el actual (rmail-next-same-subject).

C-c C-p

Pasa al mensaje anterior con el mismo subject (asunto) que el actual (rmail-previous-same-subject).

j

Pasa al primer mensaje. Con el argumento n, pasa al mensaje número n (rmail-show-message).

>

Va al último mensaje (rmail-last-message).

<

Va al primer mensaje (rmail-first-message).

M-s expreg RET

Pasa al siguiente mensaje que contenga una coincidencia para expreg (rmail-search).

  • M-s expreg RET

    Pasa al mensaje anterior que contiene una coincidencia para expreg. (Esto es M-s con un argumento negativo.)

n y p son la forma habitual de moverse entre los mensajes en Rmail. Se mueven a través de los mensajes secuencialmente, pero se saltan los mensajes borrados, que es normalmente lo que se quiere hacer. Sus definiciones de comando se llaman rmail-next-undeleted-message y rmail-previous-undeleted-message. Si no desea omitir los mensajes eliminados, por ejemplo, si desea ir a un mensaje para recuperarlo, utilice las variantes M-n y M-p (rmail-next-message y rmail-previous-message). Un argumento numérico para cualquiera de estos comandos sirve como recuento de repeticiones.

En Rmail, puede especificar un argumento numérico escribiendo sólo los dígitos. No es necesario teclear primero C-u. También puede especificar un argumento negativo escribiendo sólo -.

El comando M-s (rmail-search) es la versión de búsqueda de Rmail. El comando habitual de búsqueda incremental C-s funciona en Rmail, pero sólo busca dentro del mensaje actual. El propósito de M-s es buscar otro mensaje. Lee una expresión regular (ver Sintaxis de Expresiones Regulares) de forma no incremental, luego busca una coincidencia a partir del comienzo del siguiente mensaje. A continuación, selecciona ese mensaje. Si expreg está vacío, M-s reutiliza la expreg usada la vez anterior.

Para buscar otro mensaje hacia atrás en el archivo, dé a M-s un argumento negativo. En Rmail puede hacerlo con - M-s. Esto inicia la búsqueda desde el final del mensaje anterior.

También es posible buscar un mensaje basándose en las etiquetas. Ver Etiquetas.

El comando C-c C-n (rmail-next-same-subject) pasa al siguiente mensaje con el mismo asunto que el actual. Un argumento prefijo sirve como contador de repeticiones. Con un argumento negativo, este comando se mueve hacia atrás, actuando como C-c C-p (rmail-previous-same-subject). Al comparar asuntos, estos comandos ignoran los prefijos que suelen añadirse a los asuntos de las respuestas. Estos comandos son útiles para leer todos los mensajes que pertenecen al mismo asunto, es decir, al mismo hilo.

Para pasar a un mensaje especificado por el número absoluto de mensaje, utilice j (rmail-show-message) con el número de mensaje como argumento. Sin argumento, j selecciona el primer mensaje. < (rmail-primer-mensaje) también selecciona el primer mensaje. > (rmail-último-mensaje) selecciona el último mensaje.

34.4 Borrar Mensajes

Cuando ya no necesite conservar un mensaje, puede borrarlo. Esto lo marca como ignorable, y algunos comandos de Rmail fingen que ya no está presente; pero todavía tiene su lugar en el archivo de Rmail, y todavía tiene su número de mensaje.

Al borrar el archivo de Rmail, en realidad se eliminan los mensajes borrados. Los mensajes restantes se renumeran consecutivamente.

d

Elimina el mensaje actual y pasa al siguiente mensaje no eliminado (rmail-delete-forward).

C-d

Elimina el mensaje actual y pasa al mensaje anterior no eliminado (rmail-delete-backward).

u

Deshace el borrado del mensaje actual, o vuelve al mensaje borrado anteriormente y lo deshace (rmail-undelete-previous-message).

x

Borra el archivo Rmail (rmail-expunge).

Existen dos comandos de Rmail para borrar mensajes. Ambos borran el mensaje actual y seleccionan otro. d (rmail-delete-forward) se mueve al siguiente mensaje, saltándose los mensajes ya borrados, mientras que C-d (rmail-delete-backward) se mueve al mensaje anterior no borrado. Si no hay ningún mensaje no eliminado al que desplazarse en la dirección especificada, el mensaje que se acaba de eliminar sigue siendo el actual. Un prefijo numérico sirve como contador de repeticiones, para permitir el borrado de varios mensajes en una sola orden. Un argumento negativo invierte el significado de d y C-d.

Cada vez que Rmail borra un mensaje, ejecuta el gancho rmail-delete-message-hook. Cuando se invocan las funciones del gancho, el mensaje se ha marcado como borrado, pero sigue siendo el mensaje actual en el búfer de Rmail.

Para que todos los mensajes borrados desaparezcan definitivamente del archivo de Rmail, escriba x (rmail-expunge). Hasta que haga esto, todavía puede deshacer la eliminación de los mensajes borrados. El comando undeletion, u (rmail-undelete-previous-message), está diseñado para cancelar el efecto de un comando d en la mayoría de los casos. Deshace el mensaje actual si el mensaje actual ha sido borrado. En caso contrario, retrocede a los mensajes anteriores hasta que encuentra un mensaje borrado y lo borra. Un prefijo numérico sirve como contador de repeticiones, para permitir el borrado de varios mensajes en una sola orden.

Normalmente se puede deshacer una d con una u porque la u retrocede y deshace el mensaje que la d borró. Pero esto no funciona cuando la d se salta algunos mensajes ya borrados que siguen al mensaje que se está borrando; entonces la orden u borra el último de los mensajes que se saltó. No hay una forma limpia de evitar este problema. Sin embargo, repitiendo el comando u, puedes volver al mensaje que quiere borrar. También puede seleccionar un mensaje borrado concreto con el comando M-p y, a continuación, escribir u para deshacer el borrado.

Un mensaje borrado tiene el atributo “deleted” (borrado), y como resultado aparece “deleted” en la línea de modo cuando se borra el mensaje actual. De hecho, borrar o deshacer el borrado de un mensaje no es más que añadir o quitar este atributo. Véase Atributos de Rmail.

34.5 Archivos de Rmail y Bandejas de Entrada

Cuando recibe correo localmente, el sistema operativo coloca el correo entrante en un fichero que llamamos bandeja de entrada. Cuando inicia Rmail, éste ejecuta un programa C llamado movemail para copiar los nuevos mensajes de su bandeja de entrada en su archivo primario de Rmail, que también contiene otros mensajes guardados de sesiones anteriores de Rmail. Es en este archivo donde realmente se lee el correo con Rmail. Esta operación se denomina obtener correo nuevo. Puede obtener correo nuevo en cualquier momento en Rmail escribiendo g.

La variable rmail-primary-inbox-list contiene una lista de los archivos que son buzones de entrada para su archivo primario de Rmail. Si no establece esta variable explícitamente, Rmail utiliza la variable de entorno MAIL o, como último recurso, una bandeja de entrada predeterminada basada en rmail-spool-directory. El archivo de bandeja de entrada por defecto depende de su sistema operativo; a menudo es /var/mail/nombre_usuario, /var/spool/mail/nombre_usuario, o /usr/spool/mail/nombre_usuario.

Puede especificar el/los archivo(s) de bandeja de entrada para cualquier archivo de Rmail para la sesión actual con el comando set-rmail-inbox-list; consulte Múltiples Archivos de Rmail.

Hay dos razones para tener archivos de Rmail y bandejas de entrada separados.

1. El formato del archivo de bandeja de entrada varía entre sistemas operativos y según el otro software de correo que se utilice. Sólo una parte de Rmail necesita conocer las alternativas, y sólo necesita entender cómo convertirlas todas al formato propio de Rmail.

2. Es muy engorroso acceder a un archivo de bandeja de entrada sin peligro de perder el correo, porque es necesario interbloquearlo con la entrega del correo. Además, los distintos sistemas operativos utilizan técnicas de interbloqueo diferentes. La estrategia de mover el correo fuera de la bandeja de entrada de una vez por todas a un archivo Rmail separado evita la necesidad de interbloqueo en todo el resto de Rmail, ya que sólo Rmail opera sobre el archivo Rmail.

Rmail utiliza el formato estándar “mbox”, introducido por los sistemas Unix y GNU para los archivos de la bandeja de entrada, como formato interno de los archivos de Rmail. (De hecho, hay algunos formatos mbox ligeramente diferentes. Las diferencias no son muy importantes, pero puede establecer la variable rmail-mbox-format para indicar a Rmail qué formato utiliza su sistema. Consulte la documentación de esa variable para más detalles).

Cuando recibe correo nuevo, Rmail primero copia el correo nuevo del archivo de la bandeja de entrada al archivo de Rmail; luego guarda el archivo de Rmail; luego borra el archivo de la bandeja de entrada. De esta forma, un fallo del sistema puede provocar la duplicación del correo entre la bandeja de entrada y el archivo de Rmail, pero no puede perder el correo. Si rmail-preserve-inbox es distinto de cero, Rmail no borra el archivo de la bandeja de entrada cuando recibe correo nuevo. Es posible que desee establecer esto, por ejemplo, en un ordenador portátil que utilice para comprobar su correo a través de POP mientras viaja, para que su correo permanezca en el servidor y pueda guardarlo más tarde en su estación de trabajo principal.

En algunos casos, Rmail copia el nuevo correo del archivo de la bandeja de entrada indirectamente. Primero ejecuta el programa movemail para mover el correo de la bandeja de entrada a un archivo intermedio llamado .newmail-inboxname, en el mismo directorio que el archivo de Rmail. A continuación, Rmail fusiona el correo nuevo de ese archivo, guarda el archivo de Rmail y sólo entonces borra el archivo intermedio. Si se produce un fallo en el momento equivocado, este archivo sigue existiendo, y Rmail volverá a utilizarlo la próxima vez que reciba correo nuevo de esa bandeja de entrada.

Si Rmail no puede convertir los datos en .newmail-inboxname a formato mbox, renombra el archivo a RMAILOSE.n (n es un número entero elegido para que el nombre sea único) para que Rmail no vuelva a tener problemas con los datos. Debería mirar el archivo, encontrar cualquier mensaje que confunda a Rmail (probablemente uno que incluya el carácter de control-underscore, código octal 037), y borrarlo. A continuación, puede utilizar 1 g para obtener nuevo correo del archivo corregido.

34.6 Múltiples Archivos de Rmail

Rmail opera por defecto en su archivo Rmail primario, que se llama ~/RMAIL y recibe su correo entrante desde su archivo de bandeja de entrada del sistema. Pero también puede tener otros archivos Rmail y editarlos con éste. Estos archivos pueden recibir correo a través de sus propias bandejas de entrada, o puede mover mensajes a ellos con comandos explícitos de Rmail (vea Copiar Mensajes a Archivos).

i archivo RET

Lee el archivo en Emacs y ejecuta Rmail en él (rmail-input).

g

Fusiona el correo nuevo de las bandejas de entrada del archivo Rmail actual (rmail-get-new-mail).

C-u g archivo RET

Combina (fusiona) el correo nuevo del archivo de la bandeja de entrada.

Para ejecutar Rmail en un archivo que no sea su archivo de Rmail principal, puede utilizar el comando i (rmail-input) en Rmail. Esto visita el archivo en modo Rmail. Puede usar M-x rmail-input incluso cuando no esté en Rmail, pero es más fácil escribir C-u M-x rmail, que hace lo mismo.

El archivo que lee con i normalmente debería ser un archivo mbox válido. Si no lo es, Rmail intenta convertir su texto a formato mbox, y visita el texto convertido en el buffer. Si guarda el buffer, eso convierte el archivo.

Si especifica un nombre de archivo que no existe, i inicializa un nuevo búfer para crear un nuevo archivo de Rmail.

También puede seleccionar un archivo Rmail desde un menú. En el menú Clasificar, elija el elemento Archivo Rmail de entrada; a continuación, elija el archivo Rmail que desee. Las variables rmail-secondary-file-directory y rmail-secondary-file-regexp especifican qué archivos ofrecer en el menú: la primera variable dice en qué directorio encontrarlos; la segunda dice qué archivos de ese directorio ofrecer (todos los que coincidan con la expresión regular). Si ningún archivo coincide, no podrá seleccionar este elemento del menú. Estas variables también se aplican a la elección de un fichero de salida (véase Copiar Mensajes a Archivos).

Los archivos de la bandeja de entrada a utilizar se especifican mediante la variable rmail-inbox-list, que es buffer-local en modo Rmail. Como excepción especial, si no ha especificado ningún archivo de bandeja de entrada para su archivo principal de Rmail, éste utiliza la variable de entorno MAIL, o la bandeja de entrada estándar de su sistema.

El comando g (rmail-get-new-mail) fusiona el correo en el archivo Rmail actual desde sus bandejas de entrada. Si el archivo de Rmail no tiene bandejas de entrada, g no hace nada. El comando M-x rmail también fusiona correo nuevo en el archivo principal de Rmail.

Para fusionar el correo de un archivo que no es la bandeja de entrada habitual, dé a la tecla g un argumento numérico, como en C-u g. A continuación, lee un nombre de archivo y fusiona el correo de ese archivo. El archivo de la bandeja de entrada no se borra ni se modifica en modo alguno cuando se utiliza g con un argumento. Se trata, por tanto, de una forma general de fusionar un archivo de mensajes en otro.

34.7 Copiar Mensajes en Archivos

Estos comandos copian mensajes de un fichero Rmail a otro.

o archivo RET

Añade una copia completa del mensaje actual al fichero de nombre archivo (rmail-output).

C-o archivo RET

Añade una copia del mensaje actual, tal y como se muestra, al fichero de nombre archivo (rmail-output-as-seen).

w archivo RET

Envía sólo el cuerpo del mensaje al fichero de nombre archivo, tomando el nombre de archivo por defecto de la cabecera “Subject” (Asunto) del mensaje.

Los comandos o y C-o copian el mensaje actual en un archivo especificado, añadiéndolo al final. Un argumento prefijo positivo sirve como contador de repeticiones: se copiarán tantos mensajes consecutivos en el fichero especificado, empezando por el actual e ignorando los mensajes borrados.

Los dos comandos difieren principalmente en la cantidad a copiar: o copia las cabeceras completas de los mensajes, incluso si no están todas visibles, mientras que C-o copia exactamente las cabeceras que se muestran en ese momento y nada más. Véase Visualización de Mensajes. Además, o convierte el mensaje a formato Babyl (usado por Rmail en Emacs versión 22 y anteriores) si el archivo está en formato Babyl; C-o no puede dar salida a archivos Babyl en absoluto.

Si el fichero de salida está siendo visitado en un buffer de Emacs, los comandos de salida añaden el mensaje a ese buffer. Depende de Usted guardar el buffer eventualmente en su archivo.

A veces puede recibir un mensaje cuyo cuerpo contenga el contenido de un archivo. Puede guardar el cuerpo en un fichero (excluyendo la cabecera del mensaje) con el comando w (rmail-output-body-to-file). A menudo, estos mensajes contienen el nombre de archivo previsto en el campo «Subject» (Asunto), por lo que el comando w utiliza el campo «Subject» como predeterminado para el nombre del archivo de salida (después de sustituir algunos caracteres que no se pueden utilizar de forma transferible en los nombres de archivo). Sin embargo, el nombre del fichero se lee utilizando el minibuffer, por lo que puede especificar un nombre diferente si lo desea.

También puede enviar un mensaje a un fichero Rmail elegido con un menú. En el menú Classify (Clasificar), elija el elemento de menú Output Rmail File (Salida Archivo Rmail); a continuación, elija el archivo Rmail que desee. Esto envía el mensaje actual a ese archivo, como el comando o. Las variables rmail-secondary-file-directory y rmail-secondary-file-regexp especifican qué archivos ofrecer en el menú: la primera variable dice en qué directorio encontrarlos; la segunda dice qué archivos de ese directorio ofrecer (todos los que coincidan con la expresión regular). Si ningún fichero coincide, no podrá seleccionar esta opción del menú.

Copiar un mensaje con o o C-o da a la copia original del mensaje el atributo “filed” (archivado), de modo que “filed” aparece en la línea de modo cuando tal mensaje es actual.

Si desea conservar una sola copia de cada mensaje de correo, establezca la variable rmail-delete-after-output en t; entonces los comandos o, C-o y w borrarán el mensaje original después de copiarlo. (Puede deshacer el borrado después si lo desea, vea Borrado de Mensajes).

Por defecto, o dejará el estado de borrado de un mensaje tal y como estaba en el mensaje original; así, un mensaje borrado antes de ser enviado aparecerá como borrado en el fichero de salida. Establecer la variable rmail-output-reset-deleted-flag a un valor no nulo contrarresta esto: la copia del mensaje tendrá su estado de borrado restablecido, por lo que el mensaje aparecerá como no borrado en el fichero de salida. Además, cuando esta variable no es nula, si se especifica un argumento positivo a o no se ignorarán los mensajes borrados cuando se busquen mensajes consecutivos para enviar.

La variable rmail-output-file-alist le permite especificar valores inteligentes por defecto para el fichero de salida, basados en el contenido del mensaje actual. El valor debe ser una lista cuyos elementos tengan esta forma:

(expreg . nombre-expreg)

Si hay una coincidencia para regexp en el mensaje actual, entonces el nombre de archivo por defecto para la salida es nombre-expreg. Si varios elementos coinciden con el mensaje, el primer elemento coincidente decide el nombre de archivo por defecto. La subexpresión nombre-expreg puede ser una constante de cadena que indique el nombre de fichero a utilizar, o más generalmente puede ser cualquier expresión Lisp que produzca un nombre de fichero como cadena. rmail-output-file-alist se aplica tanto a o como a C-o.

Rmail puede guardar automáticamente mensajes de su archivo principal de Rmail (el que rmail-file-name especifica) en otros archivos, basándose en el valor de la variable rmail-automatic-folder-directives. Esta variable es una lista de elementos (“directives”, directivas) que dicen qué mensajes guardar y dónde. Cada directiva es una lista que consiste en un fichero de salida, seguido de uno o más pares de un nombre de cabecera y una expresión regular. Si un mensaje tiene una cabecera que coincide con la expresión regular especificada, ese mensaje se guarda en el fichero dado. Si la directiva tiene más de una entrada de encabezado, todas deben coincidir. Rmail comprueba las directivas cuando muestra un mensaje del fichero rmail-nombre-de-fichero, y aplica la primera que coincida (si hay alguna). Si el fichero de salida es nulo, el mensaje se elimina, no se guarda. Por ejemplo, puede utilizar esta función para guardar mensajes de una dirección concreta, o con un asunto concreto, en un archivo específico.20

Si hay una coincidencia para regexp en el mensaje actual, entonces el nombre de archivo por defecto para la salida es nombre-expreg. Si varios elementos coinciden con el mensaje, el primer elemento coincidente decide el nombre de archivo por defecto. La subexpresión nombre-expreg puede ser una constante de cadena que indique el nombre de fichero a utilizar, o más generalmente puede ser cualquier expresión Lisp que produzca un nombre de fichero como cadena. rmail-output-file-alist se aplica tanto a o como a C-o.

Rmail puede guardar automáticamente mensajes de su archivo principal de Rmail (el que rmail-file-name especifica) en otros archivos, basándose en el valor de la variable rmail-automatic-folder-directives. Esta variable es una lista de elementos (“directives”, directivas) que dicen qué mensajes guardar y dónde. Cada directiva es una lista que consiste en un fichero de salida, seguido de uno o más pares de un nombre de cabecera y una expresión regular. Si un mensaje tiene una cabecera que coincide con la expresión regular especificada, ese mensaje se guarda en el fichero dado. Si la directiva tiene más de una entrada de encabezado, todas deben coincidir. Rmail comprueba las directivas cuando muestra un mensaje del fichero rmail-nombre-de-fichero, y aplica la primera que coincida (si hay alguna). Si el fichero de salida es nulo, el mensaje se elimina, no se guarda. Por ejemplo, puede utilizar esta función para guardar mensajes de una dirección concreta, o con un asunto concreto, en un archivo específico.

34.8 Etiquetas

Cada mensaje puede tener asignadas varias etiquetas como medio de clasificación. Cada etiqueta tiene un nombre; nombres diferentes son etiquetas diferentes. Cualquier etiqueta puede estar presente o ausente en un mensaje en particular. Algunas etiquetas tienen un significado estándar y Rmail las asigna automáticamente a los mensajes cuando es necesario; estas etiquetas especiales se denominan atributos (véase Atributos de Rmail).

a etiqueta RET

Asigna la etiqueta de nombre etiqueta al mensaje actual (rmail-add-label).

k etiqueta RET

Elimina la etiqueta de nombre etiqueta del mensaje actual (rmail-kill-label).

C-M-n etiqueta RET

Pasa al siguiente mensaje que tenga una de las etiquetas de nombre etiqueta (rmail-next-labeled-message).

C-M-p etiqueta RET

Pasa al mensaje anterior que tiene una de las etiquetas de nombre eitqueta (rmail-previous-labeled-message).

C-M-l

Hace un resumen de todos los mensajes que contengan alguna de las etiquetas de nombre etiqueta (rmail-summary-by-labels).

Los comandos a (rmail-add-label) y k (rmail-kill-label) permiten asignar o eliminar cualquier etiqueta del mensaje actual. Si el argumento label está vacío, significa que se asignará o eliminará la etiqueta asignada o eliminada más recientemente.

Una vez que haya asignado etiquetas a los mensajes para clasificarlos como desee, existen tres formas de utilizar las etiquetas: en el desplazamiento, en los resúmenes y en la clasificación.

C-M-n labels RET (rmail-next-labeled-message) se mueve al siguiente mensaje que tenga una de las etiquetas de nombre etiqueta. El argumento etiquetas especifica uno o más nombres de etiquetas, separados por comas. C-M-p (rmail-previous-labeled-message) es similar, pero retrocede a mensajes anteriores. Un argumento numérico para cualquiera de los dos comandos sirve como recuento de repeticiones.

El comando C-M-l labels RET (rmail-summary-by-labels) muestra un resumen que contiene sólo los mensajes que tienen al menos una de las etiquetas especificadas. El argumento etiquetas es uno o más nombres de etiquetas, separados por comas. Para más información sobre resúmenes, consulte Resúmenes.

Si el argumento etiquetas de C-M-n, C-M-p o C-M-l está vacío, significa que se utilizará el último conjunto de etiquetas especificado para cualquiera de estos comandos.

Consulte Ordenación del Archivo de Rmail, para obtener información sobre la ordenación de mensajes con etiquetas.

34.9 Atributos de Rmail

Algunas etiquetas como “deleted” y “filed” tienen significados incorporados, y Rmail las asigna a los mensajes automáticamente en los momentos apropiados; estas etiquetas se llaman atributos. A continuación se muestra una lista de atributos de Rmail:

‘unseen’

Significa que el mensaje nunca ha sido actual. Se asigna a los mensajes cuando proceden de un archivo de bandeja de entrada y se elimina cuando un mensaje se actualiza. Al iniciar Rmail, inicialmente muestra el primer mensaje que tiene este atributo.

‘deleted’

Significa que el mensaje está borrado. Se asigna mediante comandos de borrado y se elimina mediante comandos de anulación del borrado (véase Borrado de Mensajes).

‘filed’

Significa que el mensaje se ha copiado en otro fichero. Asignado por los comandos de salida de archivos o y C-o (véase Copia de Mensajes a Archivos).

‘answered’

Significa que ha enviado por correo una respuesta al mensaje. Asignado por el comando r (rmail-reply). Véase Envío de Respuestas.

‘answered’

Significa que ha enviado por correo una respuesta al mensaje. Asignado por el comando r (rmail-reply). Véase Envío de Respuestas.

‘forwarded’

Significa que ha reenviado el mensaje. Asignado por el comando f (rmail-forward). Véase Envío de Respuestas.

‘edited’

Significa que ha editado el texto del mensaje dentro de Rmail. Véase Editar dentro de un Mensaje.

‘resent’

Significa que ha reenviado el mensaje. Asignado por el comando M-x rmail-resend. Véase Envío de Respuestas.

‘retried’

Significa que ha reintentado un mensaje saliente fallido. Asignado por el comando M-x rmail-retry-failure. Véase Envío de Respuestas.

El resto de etiquetas son asignadas o eliminadas únicamente por los Usuarios, y no tienen un significado estándar.

34.10. Envío de Respuestas

Rmail tiene varios comandos para enviar correo saliente. Vea Envío de Correo, para información sobre el uso del modo Mensaje, incluyendo ciertas características pensadas para trabajar con Rmail. Lo que esta sección documenta son los comandos especiales de Rmail para entrar en el búfer de correo utilizado para componer el mensaje saliente. Tenga en cuenta que las teclas habituales para enviar correo-C-x m, C-x 4 m, y C-x 5 m-también funcionan normalmente en el modo Rmail.

m

Envía un mensaje (rmail-mail).

c

Continúa editando el mensaje saliente ya iniciado (rmail-continue).

r

Envía una respuesta al mensaje Rmail actual (rmail-reply).

f

Reenvía el mensaje actual a otros usuarios (rmail-forward).

C-u f

Reenvía el mensaje actual a otros usuarios (rmail-resend).

M-m

Intenta enviar un mensaje rebotado por segunda vez (rmail-retry-failure).

La razón más común para enviar un mensaje mientras se está en Rmail es responder al mensaje que se está leyendo. Para ello, escriba r (rmail-reply). Esto muestra un búfer de composición de correo en otra ventana, de forma similar a C-x 4 m, pero preinicializa los campos de cabecera “Subject”, “To”, “CC”, “In-Reply-To” (En-Respuesta-A) y “References” (Referencias) basándose en el mensaje al que está respondiendo. El campo «To» empieza con la dirección de la persona que envió el mensaje que recibió, y el campo «CC» empieza con todos los demás destinatarios de ese mensaje.

Puede excluir a determinados destinatarios para que no se incluyan automáticamente en las respuestas, utilizando la variable mail-dont-reply-to-names. Su valor debe ser una expresión regular; los destinatarios que coincidan quedarán excluidos del campo «CC». También se excluyen del campo «To», a menos que esto deje el campo vacío. Si esta variable es nula, la primera vez que escriba una respuesta se inicializará con un valor por defecto que coincide con su propia dirección.

Para responder sólo al remitente del mensaje original, introduzca el comando de respuesta con un argumento numérico: C-u r o 1 r. De este modo se omite completamente el campo “CC” para una respuesta concreta.

Una vez inicializado el búfer de composición de correo, la edición y el envío del correo se realizan como de costumbre (véase Envío de correo). Puede editar los campos de cabecera preconfigurados si no son los que desea. También puede utilizar comandos como C-c C-y, que introduce el mensaje al que está respondiendo (consulte Comandos de correo). También puede cambiar al búfer de Rmail, seleccionar allí un mensaje diferente, volver a cambiar y tirar del nuevo mensaje actual.

A veces un mensaje no llega a su destino. Los emisores de correo suelen enviarle el mensaje fallido de vuelta, incluido en un mensaje de fallo. El comando M-m de Rmail (rmail-retry-failure) prepara el envío del mismo mensaje por segunda vez: establece un búfer de composición de correo con los mismos campos de texto y cabecera que antes. Si teclea C-c C-c inmediatamente, volverá a enviar el mensaje exactamente igual que la primera vez. Alternativamente, puede editar el texto o las cabeceras y luego enviarlo. La variable rmail-retry-ignored-headers, con el mismo formato que rmail-ignored-headers (ver Visualización de Mensajes), controla qué cabeceras se eliminan del mensaje fallido al reintentarlo.

Otra razón frecuente para enviar correo en Rmail es reenviar el mensaje actual a otros Usuarios. f (rmail-forward) hace esto fácil preinicializando el buffer de composición de correo con el mensaje actual como texto, y un asunto de la forma [from: subject], donde from y subject son el remitente y el asunto del mensaje original. Todo lo que tiene que hacer es rellenar los destinatarios y enviar. Cuando reenvíe un mensaje, los destinatarios recibirán un mensaje que procede de Usted y cuyo contenido es el mensaje original.

Rmail ofrece dos formatos para los mensajes reenviados. Por defecto se utiliza el formato MIME (ver Visualización de Mensajes). Esto incluye el mensaje original como una parte separada. Puede utilizar un formato más simple si lo prefiere, estableciendo la variable rmail-enable-mime-composing a nil. En este caso, Rmail sólo incluye el mensaje original encerrado entre dos líneas delimitadoras. También modifica cada línea que comienza con un guión, inserting “- “ (insertando “- “) al principio de la línea. Cuando reciba un mensaje reenviado en este formato, si contiene algo más que texto ordinario -por ejemplo, el código fuente de un programa- puede resultarle útil deshacer esa transformación. Para ello, seleccione el mensaje reenviado y escriba M-x unforward-rmail-message. Este comando extrae el mensaje reenviado original, eliminando las cadenas “- “ insertadas, y lo inserta en el archivo de Rmail como un mensaje separado inmediatamente después del actual.

El reenvío es una alternativa similar al reenvío; la diferencia es que el reenvío envía un mensaje que es del remitente original, tal y como le llegó a usted-con unos pocos campos de cabecera añadidos (“Resent-From” y “Resent-To”) para indicar que llegó a través de Usted. Para reenviar un mensaje en Rmail, utilice C-u f. (f ejecuta rmail-forward, que invoca rmail-resend si proporciona un argumento numérico).

Utilice el comando m (rmail-mail) para iniciar la edición de un mensaje saliente que no sea una respuesta. Deje vacíos los campos de cabecera. Su única diferencia con C-x 4 m es que hace que el búfer de Rmail sea accesible para C-c C-y, tal como lo hace r.

El comando c (rmail-continue) reanuda la edición del búfer de composición de correo, para terminar de editar un mensaje saliente que ya estaba componiendo, o para alterar un mensaje que ha enviado.

Si establece la variable rmail-mail-new-frame a un valor no nulo, entonces todos los comandos de Rmail para comenzar a enviar un mensaje crean un nuevo marco para editarlo. Este marco se borra cuando se envía el mensaje.

Todos los comandos de Rmail para enviar un mensaje utilizan el método de composición de correo que haya elegido (vea Métodos de Composición de Correo).

34.11 Resúmenes

Un resumen es un búfer que contiene una línea por mensaje para darle una visión general del correo en un archivo Rmail. Cada línea muestra el número y la fecha del mensaje, el remitente, el número de líneas, las etiquetas y el asunto. Al mover el punto en el búfer de resumen se seleccionan los mensajes a medida que se desplaza a sus líneas de resumen. Casi todos los comandos de Rmail son válidos también en la memoria intermedia de sumario; cuando se utilizan allí, se aplican al mensaje descrito por la línea actual del sumario.

Un búfer de sumario sólo se aplica a un único archivo de Rmail; si está editando varios archivos de Rmail, cada uno puede tener su propio búfer de sumario. El nombre del búfer de resumen se obtiene añadiendo «-summary» al nombre del búfer de Rmail. Normalmente, sólo se muestra un búfer de resumen a la vez.

34.11.1 Hacer Resúmenes

Estos son los comandos para crear un resumen para el búfer de Rmail actual. Una vez que el buffer de Rmail tiene un resumen, los cambios en el buffer de Rmail (como borrar o expurgar mensajes, y recibir nuevo correo) actualizan automáticamente el resumen.

h C-M-h

Resume todos los mensajes (rmail-summary).

l etiquetas RET C-M-l etiquetas RET

Resume los mensajes que tienen una o más de las etiquetas especificadas (rmail-summary-by-labels).

C-M-r rcpts RET

Resume los mensajes que coinciden con los destinatarios especificados (rmail-summary-by-recipients).

C-M-t tema RET

Resume los mensajes que tienen una coincidencia con tema expreg especificado en sus asuntos (rmail-summary-by-topic).

C-M-s expreg RET

Resume los mensajes cuyas cabeceras coinciden con la expresión regular expreg especificada (rmail-summary-by-regexp).

C-M-f remitentes RET

Resume los mensajes que coinciden con los remitentes especificados. (rmail-summary-by-senders).

El comando h o C-M-h (rmail-summary) llena el búfer de resumen del búfer de Rmail actual con un resumen de todos los mensajes del búfer. A continuación, muestra y selecciona el búfer de resumen en otra ventana.

C-M-l labels RET (rmail-summary-by-labels) hace un resumen parcial mencionando sólo los mensajes que tienen una o más de las etiquetas de nombre etiquetas. etiquetas debe contener nombres de etiquetas separados por comas.

C-M-r rcpts RET (rmail-summary-by-recipients) hace un resumen parcial mencionando sólo los mensajes que tienen uno o más destinatarios que coinciden con la expresión regular rcpts. Esto se compara con las cabeceras «To» (Para), «From» (De) y «CC» (CC) (proporcione un argumento de prefijo para excluir la cabecera «CC»).

C-M-t topic RET (rmail-summary-by-topic) hace un resumen parcial mencionando sólo los mensajes cuyos asuntos tienen una coincidencia con la expresión regular topic. Con un argumento prefijo, la coincidencia es con todo el mensaje, no sólo con el asunto.

C-M-s regexp RET (rmail-summary-by-regexp) hace un resumen parcial que menciona sólo los mensajes cuyas cabeceras (incluyendo la fecha y las líneas de asunto) coinciden con la expresión regular regexp.

C-M-f remitentes RET (rmail-summary-by-senders) hace un resumen parcial que menciona sólo los mensajes cuyos campos «From» coinciden con la expresión regular remitentes.

Tenga en cuenta que sólo hay un búfer de resumen para cualquier búfer de Rmail; hacer cualquier tipo de resumen descarta cualquier resumen anterior.

La variable rmail-summary-window-size dice cuántas líneas usar para la ventana de resumen. La variable rmail-summary-line-count-flag controla si la línea de resumen de un mensaje debe incluir el número de líneas del mensaje. Establecer esta opción a nil puede acelerar la generación de resúmenes.

34.11.2 Editar en Resúmenes

Puede usar el búfer de resumen de Rmail para hacer casi cualquier cosa que pueda hacer en el propio búfer de Rmail. De hecho, una vez que tiene un búfer de resumen, no hay necesidad de volver al búfer de Rmail.

Puedes seleccionar y mostrar varios mensajes en el búfer Rmail, desde el búfer resumen, simplemente moviendo el punto en el búfer resumen a diferentes líneas. No importa qué comando Emacs use para mover el punto; cualquiera que sea la línea en la que esté el punto al final del comando, ese mensaje se selecciona en el búfer Rmail.

Casi todos los comandos de Rmail funcionan tanto en el búfer de resumen como en el búfer de Rmail. Así, d en el búfer de resumen borra el mensaje actual, u lo deshace y x lo expurga. (Sin embargo, en en este último caso, si no hay más mensajes sin borrar en la dirección correspondiente, los comandos de borrado van al primer o al último mensaje, en lugar de quedarse en el mensaje actual). o y C-o envían el mensaje actual a un ARCHIVO; r inicia una respuesta al mismo; etc. Puede desplazarse por el mensaje actual mientras permanece en el búfer de resumen usando SPC y DEL. Sin embargo, en este búfer, si se desplaza más allá del final o del principio de un mensaje con SPC o DEL, pasará, respectivamente, al mensaje siguiente o al anterior sin borrar. Personalice la opción rmail-summary-scroll-between-messages a nil para desactivar el desplazamiento a los mensajes siguientes/anteriores.

M-u (rmail-summary-undelete-many) elimina todos los mensajes eliminados del resumen. Un argumento prefijo significa que se borran tantos mensajes como se hayan borrado anteriormente.

Los comandos de Rmail para moverse entre mensajes también funcionan en el búfer de resumen, pero con un giro: se mueven a través del conjunto de mensajes incluidos en el resumen. También se aseguran de que el búfer de Rmail aparezca en la pantalla (a diferencia de los comandos de movimiento del cursor, que actualizan el contenido del búfer de Rmail pero no lo muestran en una ventana a menos que ya aparezca). He aquí una lista de estos comandos:

n

Pasa a la línea siguiente, saltándose las líneas que dicen «deleted» (borrado), y selecciona su mensaje (rmail-summary-next-msg).

p

Pasa a la línea anterior, saltando las líneas que dicen «deleted», y selecciona su mensaje (rmail-summary-previous-msg).

M-n

Pasa a la línea siguiente y seleccionar su mensaje (rmail-summary-next-all).

M-p

Pasa a la línea anterior y selecciona su mensaje (rmail-summary-previous-all).

>

Pasa a la última línea y selecciona su mensaje (rmail-summary-last-message).

<

Pasa a la primera línea y selecciona su mensaje (rmail-summary-first-message).

j RET

Selecciona el mensaje en la línea actual (asegurándose de que el buffer Rmail aparece en la pantalla; rmail-summary-goto-msg). Con el argumento n, selecciona el mensaje número n y se desplaza a su línea en el búfer de resumen; esto señala un error si el mensaje no aparece en el búfer de resumen.

M-s patrón RET

Busca un patrón en los mensajes empezando por el mensaje actual; selecciona el mensaje encontrado y mueve el punto en el búfer de resumen a la línea de ese mensaje (rmail-summary-search). Un argumento prefijo actúa como un recuento de repeticiones; un argumento negativo significa buscar hacia atrás (equivalente a rmail-summary-search-backward.)

C-M-n etiquetas RET

Pasa al siguiente mensaje con al menos una de las etiquetas especificadas (rmail-summary-next-labeled-message). etiquetas es una lista de etiquetas separadas por comas. Un argumento prefijo actúa como contador de repeticiones.

C-M-p etiquetas RET

Pasa al mensaje anterior con al menos una de las etiquetas especificadas (rmail-summary-previous-labeled-message).

C-c C-n RET

Pasa al siguiente mensaje con el mismo asunto que el mensaje actual (rmail-summary-next-same-subject). Un argumento prefijo actúa como contador de repeticiones.

C-c C-p RET

Pasa al mensaje anterior con el mismo asunto que el mensaje actual (rmail-summary-previous-same-subject).

Borra, deshace el borrado y obtiene nuevo correo, e incluso la selección de un mensaje diferente, todas actualizan el búfer de resumen cuando las realiza en el búfer Rmail. Si la variable rmail-redisplay-summary no es nula, estas acciones también devuelven el búfer de resumen a la pantalla.

Cuando haya terminado de usar el resumen, escriba Q (rmail-summary-wipe) para borrar la ventana del búfer de resumen. También puede salir de Rmail mientras está en el resumen: q (rmail-summary-quit) borra la ventana del resumen, luego sale de Rmail guardando el archivo de Rmail y cambiando a otro búfer. Alternativamente, b (rmail-summary-bury) simplemente entierra el resumen de Rmail y el buffer.

34.12 Ordenar el Archivo Rmail

C-c C-s C-d M-x rmail-sort-by-date

Ordena los mensajes del búfer actual de Rmail por fecha.

C-c C-s C-s M-x rmail-sort-by-subject

Ordena los mensajes del búfer actual de Rmail por asunto.

C-c C-s C-a M-x rmail-sort-by-author

Ordena los mensajes del búfer actual de Rmail por el nombre del autor.

C-c C-s C-r M-x rmail-sort-by-recipient

Ordena los mensajes del búfer actual de Rmail por el nombre del destinatario.

C-c C-s C-c M-x rmail-sort-by-correspondent

Ordena los mensajes del búfer actual de Rmail por el nombre del otro corresponsal.

C-c C-s C-l M-x rmail-sort-by-lines

Ordena los mensajes del búfer actual de Rmail por número de líneas.

C-c C-s C-k RET etiquetas RET M-x rmail-sort-by-labels RET etiquetas RET

Ordena los mensajes del búfer actual de Rmail por etiquetas. El argumento etiquetas debe ser una lista de etiquetas separadas por comas. El orden de estas etiquetas especifica el orden de los mensajes; los mensajes con la primera etiqueta van primero, los mensajes con la segunda etiqueta van segundo, y así sucesivamente. Los mensajes que no tienen ninguna de estas etiquetas aparecen en último lugar.

Los comandos de ordenación de Rmail realizan una ordenación estable: si no hay razón para preferir uno de dos mensajes, su orden permanece inalterado. Puede usar esto para ordenar por más de un criterio. Por ejemplo, si usa rmail-sort-by-date y luego rmail-sort-by-author, los mensajes del mismo autor aparecerán ordenados por fecha.

Con un argumento prefijo, todos estos comandos invierten el orden de comparación. Esto significa que ordenan los mensajes de más reciente a más antiguo, de mayor a menor, o en orden alfabético inverso.

Las mismas teclas en el buffer de resumen ejecutan funciones similares; por ejemplo, C-c C-s C-l ejecuta rmail-summary-sort-by-lines. Estos comandos siempre ordenan todo el búfer de Rmail, incluso si el resumen sólo muestra un subconjunto de mensajes.

Tenga en cuenta que no puede deshacer una ordenación, por lo que puede que desee guardar el búfer de Rmail antes de ordenarlo.

34.13 Visualización de Mensajes

Esta sección describe cómo Rmail muestra las cabeceras de correo, secciones MIME y adjuntos, URLs y mensajes encriptados.

t

Alterna la visualización de la cabecera completa (rmail-toggle-header).

Antes de mostrar cada mensaje por primera vez, Rmail reformatea su cabecera, ocultando los campos de cabecera no relevantes para reducir el desorden. El comando t (rmail-toggle-header) alterna entre mostrar los campos de cabecera reformateados y mostrar la cabecera original completa. Con un argumento de prefijo positivo, el comando muestra la cabecera reformateada; con un argumento de prefijo cero o negativo, muestra la cabecera completa. Si es necesario, al volver a seleccionar el mensaje también se reformatea.

La variable rmail-ignored-headers contiene una expresión regular que especifica los campos de cabecera a ocultar; se ocultará cualquier línea de cabecera que coincida. La variable rmail-nonignored-headers anula esto: cualquier campo de cabecera que coincida con esa expresión regular se mostrará aunque coincida también con rmail-ignored-headers. La variable rmail-displayed-headers es una alternativa a estas dos variables; si no es nula, debe ser una expresión regular que especifique qué cabeceras mostrar (por defecto es nula).

Rmail resalta ciertos campos de cabecera que son especialmente relevantes -por defecto, los campos «From» (De) y «Subject» (Asunto). Este resaltado usa la cara rmail-highlight. La variable rmail-highlighted-headers contiene una expresión regular que especifica los campos de cabecera a resaltar; si coincide con el principio de un campo de cabecera, se resalta todo el campo. Para desactivar esta función, establezca rmail-highlighted-headers en nil.

Si un mensaje está en formato MIME (Multipurpose Internet Mail Extensions, Extensiones de Correo en Internet Multipropósito) y contiene múltiples partes (entidades MIME), Rmail muestra cada parte con una etiqueta. La etiqueta resume el índice, el tamaño y el tipo de contenido de la parte. Dependiendo del tipo de contenido, también puede contener uno o más botones; éstos realizan acciones como guardar la parte en un archivo.

RET

Oculta o muestra la parte MIME en el punto (rmail-mime-toggle-hidden).

TAB

Mueve el punto al siguiente botón de etiqueta MIME. (rmail-mime-next-item).

S-TAB

Mueve el punto a la parte MIME anterior (rmail-mime-previous-item).

v

Alterna entre visualización MIME y mensaje sin formato (rmail-mime).

Cada parte MIME de texto plano se muestra inicialmente inmediatamente después de su lema, como parte del búfer de Rmail (a menos que el mensaje tenga una parte HTML, ver más abajo), mientras que las partes MIME de otros tipos se representan sólo por sus lemas, con su contenido real oculto. En cualquier caso, puede alternar entre los estados mostrado y oculto de una parte MIME escribiendo RET en cualquier lugar de la parte, o en cualquier lugar de su lema (excepto en los botones para otras acciones, si los hay). Escriba RET (o haga clic con el ratón) para activar un botón de línea de etiquetas, y TAB para alternar entre los botones de línea de etiquetas.

El comando v (rmail-mime) alterna entre la visualización MIME predeterminada descrita anteriormente y una visualización sin procesar que muestra los datos MIME sin decodificar. Con un argumento de prefijo, este comando alterna la visualización de sólo una entidad en el punto.

Si el mensaje tiene una parte MIME HTML, Rmail la muestra con preferencia a la parte de texto plano, si Emacs puede renderizar HTML20. Para evitarlo, y que en su lugar se muestre la parte de texto plano, personalice la variable rmail-mime-prefer-html a un valor nulo.

Para evitar que Rmail maneje mensajes decodificados MIME, cambie la variable rmail-enable-mime a nil. En este caso, el comando v (rmail-mime) crea un búfer temporal para mostrar el mensaje MIME actual.

Si el mensaje actual está encriptado, use el comando C-c C-d (rmail-epa-decrypt) para desencriptarlo, usando la librería EasyPG (vea EasyPG en el Manual de Usuario del Asistente EasyPG).

Puede resaltar y activar URLs en el buffer de Rmail usando el modo Goto Address:

(add-hook “rmail-show-message-hook “goto-address-mode)

A continuación, puede navegar por estas URL haciendo clic en ellas con ratón-2 (o con ratón-1 rápidamente) o desplazándose a una y tecleando C-c RET. Véase Activar URLs.

  1. Esta capacidad requiere que Emacs esté compilado con soporte para libxml2 o que tenga instalado el navegador Lynx.

34.14. Rmail y los Sistemas de Codificación

Rmail decodifica automáticamente los mensajes que contienen caracteres no ASCII, igual que hace Emacs con los ficheros que visita y con la salida de los subprocesos. Rmail usa la cabecera estándar “charset=charset” en el mensaje, si la hay, para determinar cómo fue codificado el mensaje por el remitente. Mapea charset en el correspondiente sistema de codificación Emacs (ver Sistemas de Codificación), y usa ese sistema de codificación para decodificar el texto del mensaje. Si la cabecera del mensaje no tiene la especificación “charset”, o si charset no es reconocido, Rmail elige el sistema de codificación con la heurística habitual de Emacs y por defecto (ver Reconociendo Sistemas de Codificación).

Ocasionalmente, un mensaje se decodifica incorrectamente, bien porque Emacs adivinó el sistema de codificación equivocado en ausencia de la especificación “charset”, o bien porque la especificación era inexacta. Por ejemplo, un mailer mal configurado podría enviar un mensaje con una cabecera “charset=iso-8859-1” cuando en realidad el mensaje está codificado en koi8-r. Si ve el texto del mensaje distorsionado, o algunos de sus caracteres se muestran como códigos hexadecimales o casillas vacías, es posible que haya ocurrido esto.

Puede corregir el problema decodificando de nuevo el mensaje usando el sistema de codificación correcto, si puede averiguar o adivinar cuál es el correcto. Para ello, invoque el comando M-x rmail-redecode-body. Este comando lee el nombre de un sistema de codificación y luego vuelve a codificar el mensaje usando el sistema de codificación especificado. Si ha especificado el sistema de codificación correcto, el resultado debería ser legible.

Cuando recibe correo nuevo en Rmail, cada mensaje se traduce automáticamente desde el sistema de codificación en el que está escrito, como si fuera un fichero independiente. Esto usa la lista prioritaria de sistemas de codificación que usted haya especificado. Si un mensaje MIME especifica un juego de caracteres, Rmail obedece esa especificación. Para leer y guardar archivos Rmail, Emacs usa el sistema de codificación especificado por la variable rmail-file-coding-system. El valor por defecto es nil, lo que significa que los ficheros Rmail no se traducen (se leen y escriben en el código de caracteres interno de Emacs).

34.15 Edición Dentro de un Mensaje

La mayoría de las combinaciones de teclas habituales de Emacs están disponibles en el modo Rmail, aunque unas pocas, como C-M-n y C-M-h, son redefinidas por Rmail para otros propósitos. Sin embargo, el búfer de Rmail es normalmente de sólo lectura, y la mayoría de las letras son redefinidas como comandos de Rmail. Si desea editar el texto de un mensaje, debe usar el comando e de Rmail.

e

Edita el mensaje actual como texto normal.

El comando e (rmail-edit-current-message) cambia del modo Rmail al modo Rmail Edit, otro modo principal que es casi igual al modo Text. La línea de modo indica este cambio.

En el modo Edición de Rmail, las letras se insertan como de costumbre y los comandos de Rmail no están disponibles. Puede editar el cuerpo del mensaje y los campos de cabecera. Cuando termine de editar el mensaje, escriba C-c C-c (rmail-cease-edit) para volver al modo Rmail. Alternativamente, puede volver al modo Rmail pero cancelar cualquier edición que haya realizado, tecleando C-c C-] (rmail-abort-edit).

Al entrar en el modo de edición de Rmail se ejecuta el gancho text-mode-hook; después se ejecuta el gancho rmail-edit-mode-hook (ver Ganchos). Al volver al modo ordinario de Rmail se añade el atributo “edited” (editado) al mensaje, si se ha hecho algún cambio en él (ver Atributos de Rmail).

34.16 Mensajes de Síntesis

Un mensaje digest es un mensaje que existe para contener y transportar varios otros mensajes. Los compendios o resúmenes se usan en algunas listas de correo; todos los mensajes que llegan a la lista durante un periodo de tiempo como un día se ponen dentro de un solo compendio que luego se envía a los suscriptores. Transmitir el resumen único usa menos tiempo de ordenador que transmitir los mensajes individuales aunque el tamaño total sea el mismo, debido a la sobrecarga por mensaje en la transmisión de correo en red.

Cuando reciba un mensaje de resumen, la forma más cómoda de leerlo es desdigerirlo: volver a convertirlo en muchos mensajes individuales. Así podrá leer y borrar los mensajes individuales según le convenga. Para ello, seleccione el mensaje digerido y escriba el comando M-x undigestify-rmail-message. Esto extrae los submensajes como mensajes Rmail separados y los inserta a continuación del resumen. El propio mensaje de resumen se marca como eliminado.

34.17 Lectura de mensajes Rot13

Los mensajes de las listas de correo que pueden ofender o molestar a algunos lectores a veces se codifican en un código simple llamado rot13, llamado así porque rota el alfabeto en 13 letras. Este código no es para mantener el secreto, ya que no proporciona ninguno; más bien, permite a aquellos que lo deseen evitar ver el texto real del mensaje. Por ejemplo, la crítica de una película podría usar rot13 para ocultar puntos importantes de la trama.

Para ver un búfer que usa el código rot13, use el comando M-x rot13-otra-ventana. Esto muestra el búfer actual en otra ventana que aplica el código al mostrar el texto.

Si sólo le interesa una región, es preferible utilizar el comando M-x rot13-region. Esto cifrará/descifrará la región activa en su lugar. Si el búfer es de sólo lectura, intentará mostrar el texto sin formato en el área de eco. Si el texto es demasiado largo para el área de eco, el comando abrirá un búfer temporal con el texto cifrado/descifrado.

34.18 Programa movemail

Rmail usa el programa movemail para mover el correo de su bandeja de entrada a su archivo de Rmail (vea Archivos y Bandejas de Entrada de Rmail). Cuando se carga por primera vez, Rmail intenta localizar el programa movemail y determinar su versión. Hay dos versiones del programa movemail: la versión GNU Mailutils (ver movemail en GNU mailutils), y una versión específica de Emacs que se construye e instala a menos que Emacs haya sido configurado –with-mailutils en efecto. Las dos versiones de movemail soportan la misma sintaxis de línea de comandos y el mismo subconjunto básico de opciones. Sin embargo, la versión Mailutils ofrece características adicionales y es más segura.

La versión Emacs de movemail puede recuperar correo de los formatos habituales de buzón Unix. Atención: Aunque también puede usar el protocolo POP3, esto no es recomendable porque no soporta POP3 a través de canales TLS encriptados.

La versión Mailutils es capaz de manejar un amplio conjunto de formatos de buzón, como buzones Unix planos, buzones maildir y MH, etc. Es capaz de acceder a buzones remotos usando el protocolo POP3 o IMAP4, y puede recuperar correo de ellos usando un canal encriptado TLS. También acepta argumentos de buzón en forma de URL. La descripción detallada de las URL de buzón puede encontrarse en URL en Formatos de URL de buzón. En resumen, una URL es:

proto://[usuario[:contraseña]@]host-o-nombre-archivo[:puerto]

donde los corchetes denotan elementos opcionales.

proto

Especifica el protocolo o formato de buzón que se usará. La semántica exacta del resto de elementos URL depende del valor real de proto (véase más abajo).

usuario

Nombre de usuario para acceder al buzón remoto.

contraseña

Contraseña de usuario para acceder al buzón remoto.

host-o-nomre-archivo

Nombre de host del servidor remoto para buzones remotos o nombre de archivo de un buzón local.

puerto

Número de puerto opcional, si no es el predeterminado para ese protocolo.

proto puede ser uno de los siguientes:

Formato de buzón Unix habitual. En este caso, usuario, contraseña y puerto no se usan, y host-o-nombre-archivo denota el nombre del archivo del buzón, por ejemplo, mbox:///var/spool/mail/juan.

mh

Un buzón local en formato MH. no se usan usuario, contraseña ni puerto. host-or-nombre-achivo indica el nombre de la carpeta MH, por ejemplo, mh:///Mail/inbox.

maildir

Un buzón local en formato maildir. No se usan usuario, contraseña ni puerto, y host-or-nombre-archivo indica el nombre del buzón maildir, por ejemplo, maildir:///mail/inbox.

file

Cualquier archivo local en formato buzón. Su formato real es detectado automáticamente por movemail.

pop pops

El usuario especifica el nombre de usuario remoto que se usará, la contraseña se puede especificar con la palabra contraseña pass, el nombre de host o archivo es el nombre o la dirección IP del servidor de correo remoto al que se conectará y el puerto es el número de puerto; por ejemplo, pop://juan:guessme@remote.server.net:995. Si el servidor lo admite, movemail intentará usar una conexión encriptada; use el formulario “pops” para solicitarla.

imap impas

Un buzón remoto al que se accede mediante el protocolo IMAP4. usuario especifica el nombre de usuario remoto que se va a usar, contraseña se puede usar para especificar la contraseña del usuario, host-o-nombre-archivo es el nombre o la dirección IP del servidor de correo remoto al que se va a conectar y puerto es el número de puerto; por ejemplo, imap://juan:guessme@remote.server.net:993. Si el servidor lo admite, movemail intentará usar una conexión encriptada; usa el formulario “imaps” para solicitarla.

Alternativamente, puede especificar el nombre de archivo del buzón a usar. Esto equivale a especificar el protocolo “file”:

/var/spool/mail/usuario ≡ file:///var/spool/mail/usuario

La variable rmail-movemail-program controla qué versión de movemail usar. Si es una cadena, especifica el nombre de archivo absoluto del ejecutable de movemail. Si es nil, Rmail busca movemail en los directorios listados en rmail-movemail-search-path, luego en exec-path (ver Ejecutando Comandos Shell desde Emacs), luego en exec-directory.

34.19. Recuperar Correo de Buzones Remotos

Algunos sitios usan un método llamado POP3 para acceder a los datos de la bandeja de entrada de los usuarios en lugar de almacenar los datos en archivos de la bandeja de entrada. El movemail de Mailutils soporta por defecto POP3 con encriptación TLS. Advertencia: Aunque el movemail de Emacs soporta POP3, no se recomienda usarlo para esto ya que no soporta conexiones encriptadas-la versión de Mailutils sí. Ambas versiones de movemail sólo funcionan con POP3, no con versiones antiguas de POP.

Puede especificar una bandeja de entrada POP3 usando una URL POP3 (vea el programa movemail). Una URL POP3 tiene la forma “pop://nombredeusuario@nombredehost:puerto”, donde nombre de host y puerto son el nombre de host (o dirección IP) y el número de puerto del servidor de correo remoto y nombre de usuario es el nombre de usuario en ese servidor. Además, puede especificar la contraseña en la URL del buzón: pop://nombredeusuario:contraseña@nombredehost:puerto”. En este caso, la contraseña tiene preferencia sobre la establecida por rmail-remote-password (ver más abajo). Esto es especialmente útil si tiene varios buzones remotos con diferentes contraseñas. Si usa Mailutils movemail, puede usar “pops” en lugar de “pop”.

Por compatibilidad con versiones anteriores, Rmail también admite una forma alternativa de especificar buzones POP3 remotos. Especificar un nombre de buzón en la forma “po:nombreusuario:nombrehost:puerto” es equivalente a “pop://nombreusuario@nombrehost:puerto”. Si omite la parte :hostname, la variable de entorno MAILHOST especifica la máquina en la que buscar el servidor POP3.

Otro método para acceder a buzones remotos es IMAP. Este método sólo está soportado por Mailutils movemail. Para especificar un buzón IMAP en la lista de buzones de entrada, use la siguiente URL de buzón: “imap://nombredeusuario[:contraseña]@nombredehost:puerto”. La parte de la contraseña es opcional, como se ha descrito anteriormente. Puede usar “imaps” en lugar de “imap”.

El acceso a un buzón remoto puede requerir una contraseña. Rmail usa el siguiente algoritmo para recuperarla:

1 Si hay una contraseña en la URL del buzón (véase más arriba), se usa.

2 Si la variable rmail-remote-password-required es nil, Rmail asume que no se requiere contraseña.

3 Si la variable rmail-remote-password es distinta de nil, se usa su valor.

4 En caso contrario, Rmail le preguntará por la contraseña a usar.

En algunos servidores de correo los nombres de usuario incluyen información de dominio, lo que puede significar que contengan el carácter “@”. La cadena especificadora de la bandeja de entrada usa “@” para señalar el inicio del nombre del servidor de correo. Esto crea confusión para movemail. Si su nombre de usuario contiene “@” y está usando Mailutils movemail entonces puede arreglar esto: Reemplace @ en el nombre de usuario por su codificación URL “%40”.

Si necesita pasar banderas de línea de comandos adicionales a movemail, establezca la variable rmail-movemail-flags una lista de las banderas que desea usar. No use esta variable para pasar la bandera “-p” para preservar el contenido de su bandeja de entrada; use rmail-preserve-inbox en su lugar.

Es posible que el programa movemail instalado en su sitio admita la autenticación Kerberos. Si la admite, la usará por defecto siempre que intente recuperar correo POP3 cuando rmail-remote-password y rmail-remote-password-required no estén configurados.

Algunos servidores POP3 almacenan los mensajes en orden inverso. Si su servidor hace esto, y prefiere leer su correo en el orden en que fue recibido, puede decirle a movemail que invierta el orden de los mensajes descargados añadiendo la bandera “-r” a rmail-movemail-flags.

Mailutils movemail soporta encriptación TLS. Si desea usarlo, añada la opción “–tls” a rmail-movemail-flags.

34.20. Recuperación de Correo de Buzones Locales en Varios Formatos

Si su correo entrante está almacenado en una máquina local en un formato distinto al buzón Unix, necesitará el programa movemail de Mailutils para recuperarlo. Véase el Programa movemail, para una descripción detallada de las distintas versiones de este. Por ejemplo, para acceder al correo de un buzón en formato maildir ubicado en /var/spool/mail/in, deberá incluir lo siguiente en la lista de buzones de Rmail:

maildir:///var/spool/mail/in