Come posso inviare di nuovo / var / mail / root?


12

Attraverso alcune configurazioni errate ho molte e-mail in / var / mail / root e / var / mail / www-data

Come posso "scorrere" su questi file e inviare ogni posta un'altra volta?

Risposte:


17

formail , parte di procmail (e probabilmente già disponibile sul tuo sistema) può prendere una cassetta postale, dividerla in messaggi e quindi eseguire un comando su ciascuna. Dalla pagina man:

   -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.

Quindi puoi fare quello che penso tu voglia in questo modo:

  formail -s /usr/sbin/sendmail -oi -t < /var/mail/root

3
Ma anche ciò che Kriss ha detto in merito a: affrontare; questa soluzione presuppone che tu abbia corretto i tuoi alias locali o qualcosa per inviare i messaggi da qualche altra parte oltre a / var / mail / root. Ad esempio, potresti "formail -s / usr / sbin / sendmail -oi you@somewhere.else" per reindirizzare tutti i messaggi.
Larks

supponendo che www-data e root siano ora correttamente configurati, qualcosa come "for foo in ls /var/mail; do formail -s / usr / sbin / sendmail -oi $ foo <./$foo; done" dovrebbe eseguire il loop di ogni file e consegnare localmente.
Tom H,

3
mutt -f /var/mail/www-data

Quindi all'interno di mutt ...

T.*
;b

T lo mette in modalità tagging e. * Tagga tutti i messaggi. Il punto e virgola applica il comando successivo a tutti i messaggi con tag e infine b "rimbalza" i messaggi a un indirizzo richiesto.

A memoria, penso anche io

D.*

o

T.*
;d

Svuota quindi la cassetta postale.


0

I file di cassette postali unix / var / spool / mail / xxx sono semplici file di testo in cui i messaggi di posta vengono conservati in sequenza. Ogni messaggio di posta inizia con una riga "Da" (che non fa parte del messaggio) con mittente e data di ricezione, quindi ottieni le intestazioni della posta, quindi il corpo della posta.

Fondamentalmente puoi semplicemente eseguire il ciclo sul file rilevando tali righe From ed estrarre tutti i messaggi, quindi inviarli utilizzando strumenti come modulo python smtp o modulo perl :: SMTP da cpan.

Se target è un'altra cassetta postale locale, puoi semplicemente aggiungere i messaggi (inclusa la linea Da) ad essa. Potresti persino aggiungere l'intera cassetta postale di root a un'altra cassetta postale se non ti interessa ricevere messaggi realmente mirati a root.

Dovrei avere degli script che lo fanno e pubblicherò degli esempi se lo desideri.

Il problema potrebbe essere quello di ottenere la vera destinazione del messaggio perché se finivano nella cassetta postale di root probabilmente erano indirizzati a root dall'inizio?

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.