Wie kann ich / var / mail / root erneut senden?

12

Durch eine falsche Konfiguration habe ich viele E-Mails in / var / mail / root und / var / mail / www-data

Wie kann ich diese Dateien "durchlaufen" und jede Mail ein anderes Mal senden?

Max
quelle

Antworten:

17

formail , ein Teil von procmail (und möglicherweise bereits auf Ihrem System verfügbar), kann eine Mailbox entgegennehmen, in Nachrichten aufteilen und dann einen Befehl für jede Mailbox ausführen. Von der Manpage:

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

Sie können also tun, was Sie meiner Meinung nach wollen:

  formail -s /usr/sbin/sendmail -oi -t < /var/mail/root
larsks
quelle
3
Aber auch was kriss zu sagen hatte: Adressierung; Bei dieser Lösung wird davon ausgegangen, dass Sie Ihre lokalen Aliase behoben haben oder die Nachrichten an einen anderen Ort als zurück nach / var / mail / root gesendet haben. Sie können beispielsweise "formail -s / usr / sbin / sendmail -oi [email protected]" verwenden, um alle Nachrichten umzuleiten.
Larsks
Unter der Annahme, dass www-data und root jetzt richtig konfiguriert sind, sollte so etwas wie "for foo in ls /var/mail; do formail -s / usr / sbin / sendmail -oi $ foo <./$foo; done" jede Datei schleifen und lokal ausliefern.
Tom H
3
mutt -f /var/mail/www-data

Dann in mutt ...

T.*
;b

T versetzt es in den Tag-Modus und. * Markiert alle Nachrichten. Das Semikolon wendet den nächsten Befehl auf alle mit Tags versehenen Nachrichten an und leitet die Nachrichten schließlich an eine Adresse weiter, nach der gefragt wird.

Aus der Erinnerung denke ich auch

D.*

oder

T.*
;d

Werde dann die Mailbox leeren.

James Green
quelle
0

Die / var / spool / mail / xxx-Unix-Postfachdateien sind einfache Textdateien, in denen E-Mail-Nachrichten nacheinander gespeichert werden. Jede E-Mail-Nachricht beginnt mit einer "Von" -Zeile (die nicht Teil der Nachricht ist) mit Absender und Empfangsdatum. Anschließend erhalten Sie E-Mail-Header und anschließend den E-Mail-Text.

Grundsätzlich können Sie einfach die Datei durchlaufen, die solche From-Zeilen erkennt, alle Nachrichten extrahieren und sie dann mit Tools wie dem Python-SMTP-Modul oder dem Perl-Net :: SMTP-Modul von cpan senden.

Wenn das Ziel ein anderes lokales Postfach ist, können Sie die Nachrichten (einschließlich der Von-Zeile) einfach an dieses Postfach anhängen. Sie können sogar das gesamte Root-Postfach an ein anderes Postfach anhängen, wenn Sie nicht möchten, dass auch Nachrichten an Root gesendet werden.

Ich sollte einige Skripte haben, die das tun und Beispiele posten, wenn Sie wollen.

Das Problem könnte darin bestehen, das eigentliche Ziel der Nachricht zu ermitteln, da sie, wenn sie im Stammpostfach endeten, wahrscheinlich von Anfang an auf root abzielten.

kriss
quelle