¿Cómo puedo enviar / var / mail / root nuevamente?

12

A través de alguna configuración incorrecta, tengo muchos correos electrónicos en / var / mail / root y / var / mail / www-data

¿Cómo puedo "recorrer" estos archivos y enviar cada correo en otro momento?

Max
fuente

Respuestas:

17

formail , parte de procmail (y probablemente ya disponible en su sistema) puede tomar un buzón, dividirlo en mensajes y luego ejecutar un comando en cada uno. Desde la página del manual:

   -s   The input will be split up into separate mail messages, and  piped
        into  a  program  one  by  one (a new program is started for every
        part).  -s has to be the last option specified, the first argument
        following  it  is  expected to be the name of a program, any other
        arguments will be passed along to it.  If you  omit  the  program,
        then  formail  will  simply  concatenate the split mails on stdout
        again.  See FILENO.

Entonces puedes hacer lo que creo que quieres así:

  formail -s /usr/sbin/sendmail -oi -t < /var/mail/root
larsks
fuente
3
Pero también lo que dijo Kriss con respecto al direccionamiento; Esta solución asume que ha corregido sus alias locales o algo para enviar los mensajes a otro lugar que no sea de nuevo en / var / mail / root. Podría, por ejemplo, hacer "formail -s / usr / sbin / sendmail -oi [email protected]" para redirigir todos los mensajes.
larsks 02 de
suponiendo que www-data y root ahora estén configurados correctamente, algo como "for foo in ls /var/mail; do formail -s / usr / sbin / sendmail -oi $ foo <./$foo; done" debería repetir cada archivo y entregarlo localmente.
Tom H
3
mutt -f /var/mail/www-data

Luego dentro de mutt ...

T.*
;b

T lo pone en modo de etiquetado y. * Etiqueta todos los mensajes. El punto y coma aplica el siguiente comando a todos los mensajes etiquetados, y finalmente b "devuelve" los mensajes a una dirección que solicitará.

De memoria, creo que tampoco

D.*

o

T.*
;d

Luego vaciará el buzón.

James Green
fuente
0

Los archivos de buzón / var / spool / mail / xxx unix son archivos de texto simples donde los mensajes de correo se mantienen en secuencia. Cada mensaje de correo comienza con una línea "De" (que no es parte del mensaje) con el remitente y la fecha de recepción, luego obtienes encabezados de correo y luego el cuerpo del correo.

Básicamente, puede simplemente recorrer el archivo detectando tales líneas From y extraer cada mensaje y luego enviarlos usando herramientas como el módulo python smtp o el módulo perl Net :: SMTP de cpan.

Si el destino es otro buzón local, puede agregarle los mensajes (incluida la línea De). Incluso podría agregar todo el buzón raíz a otro buzón si no le importa recibir mensajes realmente dirigidos a la raíz.

Debería tener algunos scripts que hagan eso y publicaré ejemplos si lo desea.

El problema puede ser obtener el objetivo real del mensaje porque, si terminaron en el buzón raíz, ¿probablemente se dirigieron a la raíz desde el principio?

kriss
fuente