[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Procesando correo con Procmail, comando incorrecto



On Wed, 2003-04-16 at 12:16, Maria Garcia Suarez wrote:
> Hola Cesar!

¡Quihubo!

> Creo que no es lo que queria, con ese metodo los
> ficheros dejan de ser legibles mediante mutt o pine,
> no? Me quedo con una serie de ficheros de texto que no
> puedo leer con un programa de correo.
>
> Me gustaria conservarlos en formato de correo...

Entiendo.  Sí, es correcto, dejarían de ser legibles directamente. 
Aunque, por otra parte, ya separados en archivos discretos podrías
volver a concatenarlos manualmente en mailboxes, digamos de cien en cien
mensajes, e instalar esos mailboxes manualmente de vuelta en tu home
como "carpetas".  Si te interesa explorar esta posibilidad, y no te
resulta obvio como hacer un script que haga ésto, pide auxilio y lo
cocinamos.  Con un poco de suerte acabará siendo otro "one-liner" --un
encantamiento de una sola línea-- usando xargs y formail.

> Aqui no entiendo una cosa: aunque pueda parecer
> ridiculo que lo pregunte a estas alturas... que
> diferencia existe entre el fichero en
> /var/spool/mail/maria y $HOME/mbox? Pq yo creia que
> estaba trabajando sobre el fichero llamado mbox, y al
> no ver efecto alguno sobre el mismo iba probando cosas
> diferentes, hasta que el sistema me ha dicho que no
> tenia disco duro libre... entonces es cuando en mirado
> en el spool....

Oh, mea culpa, ovidé el asunto de /var/spool/mail.  La cosa es que el
funcionamiento exacto del sistema de correo depende del MTA que estés
usando, y a veces ese spool no se usa... pero bueno, es más o menos así,
en general:

Cuando se recibe un mensaje de correo, éste es agregado al final del
archivo /var/spool/mail/<user>.  Si el archivo no existe, es creado. 
Todos los mensajes recibidos se van acumulando ahí.

Cuando el usuario lee su correo, ya sea vía POP3/IMAP, o via algún
programa que use los spools de mail directamente (e.g. mail(1)), y lo
lee exitosamente (e.g., sin agotar la memoria del sistema, etc.), el
contenido completo del spool es agregado al final de ~<user>/mbox, y el
spool es simplemente borrado.  En el primer caso, es el servidor
POP3/IMAP (uw-imap, courier, lo que estés usando) el que hace ésto; en
el segundo, la herramienta específica que hayas usado.

(Incidentalmente, el formato de ambos archivos es exáctamente el mismo,
un formato conocido como "mailbox Berkeley".  Básicamente, son archivos
de texto plano, con los mensajes concatenados uno tras otro.  Cada
mensaje comienza con una línea "From <direccion>" (nota: "From", no
"From:"); esa línea es el separador de mensajes.  A ese tipo de archivos
a veces se les llama simplemente "mailboxes".)

> Pero que diferencia existe entre lo que hago ahora
> (trabajar desde el fichero mbox) y lo que tu propones?
> La unica diferencia seria el nombre del fichero que
> alimenta al procmail.... No? 
> 
> Con lo que he hecho hasta ahora el fichero mbox no ha
> sido modificado. Si hago lo que tu me propones seguira
> sin ser modificado, no?

Sí, ya entiendo, mil disculpas, porque fue mi error.  Pensé que los
mensajes procesados por procmail habían llegado ya a tu mbox.  Realmente
están en el "spool", esperando ser reintegrados al mbox en la primera
oportunidad.

En esencia, lo que yo quería decir es que procmail no va a borrar
mensajes de tu mbox.  El mbox lo tienes que borrar tú, a mano, después
de procesarlo con procmail o lo que sea.  El spool sí se borra
automáticamente, normalmente, pero sólo cuando los mensajes fueron
agregados exitosamente al mbox.  O sea, para todo fin práctico, es lo
mismo.

Mira, a estas alturas de tu caso, probablemente lo mejor será que
respaldes tanto el mbox como el spool, y simplemente los borres, para
regresar tu servidor a la normalidad.  Es muy, muy, MUY malo para Linux
que no tengas espacio en /var.

Si no tienes espacio suficiente en disco en ninguna partición, quizá
podrías intentar este respaldo usando compresión, con algo como:

  gzip -9c /var/spool/mail/maria > /algun/lugar/spool.gz
  gzip -9c /home/maria/mbox > /algun/lugar/mbox.gz

Si ni siquiera eso es posible, y no puedes copiarlos a otro servidor
(aunque sea un Windows)... pues no es tu día de suerte.  Abre el spool y
el mbox con less, lee todo tu correo, memoriza los mensajes importantes,
y luego bórralo para siempre :-(

(Alternativamente, podrías intentar editarlo con un editor de texto,
borrando los mensajes duplicados, etc.; pero probablemente ni siquiera
eso sea posible, por falta de espacio en disco para salvar.)

Si sí puedes hacer el respaldo, entonces, eliminado el problema
inmediato, puedes procesar ambos archivos con calma, y luego regresarlos
al sistema de correo.  Se me ocurren tres maneras:

  1. Como carpetas en tu home, usando una concatenación manual como la
     que describía al inicio de este mensaje).

  2. Importarlos directamente en un cliente de correo, en otra máquina,
     que sepa leer mailboxes (e.g. Ximian Evolution o quizá algún animal
     en Windows) y luego regresarlos al servidor copiándolos vía IMAP.

  3. Reinsertarlos con procmail después de comprobar que las reglas
     están correctas y todo funciona correctamente.

Ojalá todo te salga bien (de aquí en adelante, al menos :-)

 -CR




Reply to: