Wie verwende ich Metamail, um E-Mail-Anhänge ohne interaktive Eingabe zu extrahieren?

Wie verwende ich Metamail, um E-Mail-Anhänge ohne interaktive Eingabe zu extrahieren?

Ich suche nach einer Möglichkeit, alle Anhänge aus einem IMAP-Ordner mit über 3000 DMARC-Berichten zu speichern, von denen jeder als Datei an die einzelnen Nachrichten angehängt ist .zip. .xml.gzIch verwendeKlauenpostwelches hateine Möglichkeit, dies zu automatisieren(Siehe Beispiele -> Speichern) durch munpack. Leider scheint es unter openSUSE Leap 42.3 (das ich verwende) kein Paket zu geben, das munpack. Nach einiger Suche im Internet habe ich eine Alternative gefunden: metamail -wyvorgeschlagen als Antwort aufdiese Frage.

Als ich das direkt in Claws versuchte, kam es zu einem Fehler (weil ich das Programm nicht richtig benutzte). Also habe ich eine Nachricht manuell in einem temporären Verzeichnis gespeichert und es von der Konsole aus versucht:

[/tmp/download]: metamail -yw msg
Date: Mon, 03 Nov 2014 10:13:53 +0000
Subject: Report domain: ████████ Submitter: ████████
From: [email protected]
To: ████████


This message contains data in an unrecognized format, application/zip,
which can either be viewed as text or written to a file.

What do you want to do with the application/zip data?
1 -- See it as text
2 -- Write it to a file
3 -- Just skip it

2
Please enter the name of a file to which the data should be written
(Default: ████████.zip) >
Wrote file ████████.zip

Mit anderen Worten: Es funktioniert an sich, erfordert aber interaktive Eingaben für jede einzelne Nachricht – sicherlich keine Option für mehr als 3000 Mails.

Meine Frage ist:

Wie kann ich es auf eine Weise verwenden metamail, die keine interaktive Eingabe erfordert, sodass es iteriert werden kann (z. B. in einem Skript oder über die Funktionalität von Claws Mail)?

Antwort1

Ich bin nicht sicher, wie die Daten, die Sie haben, tatsächlich aussehen, daher kann ich höchstens einige fundierte Vermutungen anstellen.

Ich habe es metamail -q -w -x file_namein der Vergangenheit erfolgreich in Skripten verwendet, um Anhänge zu extrahieren. Wie Sie sehen können man metamail, -wweist Metamail an, die Mailcap-Datei nicht zu konsultieren, sondern nur die Anhänge zu extrahieren, -qes soll ruhig sein, weil Skripte die zusätzliche Ausgabe nicht mögen, und -xes teilt ihm mit, dass es definitiv nicht auf einem Terminal ausgeführt wird und daher keine dummen Fragen stellen sollte.

Sie haben bereits -w, und Sie verwenden auch -y, was nicht notwendig sein sollte, wenn die E-Mail richtig formatiert ist, aber vielleicht ist Ihre nicht richtig formatiert – wie gesagt, ich weiß nicht, welche Daten Sie haben. Die Manpage warnt auch vor seltsamen Effekten, die mit auftreten können -y.

Löschen Sie also zunächst -y, und prüfen Sie, ob es noch funktioniert. Fügen Sie dann hinzu -x, und prüfen Sie, ob keine weiteren Abfragen mehr erfolgen. Fügen Sie abschließend hinzu, -qum die unerwünschte Ausgabe zu entfernen.

Bearbeiten

Nachdem mir vorgeworfen wurde, ich sei zu faul, es zu versuchen, habe ich die folgenden Schritte durchgeführt:

1) Ich habe mir per E-Mail eine Zip-Datei mit einer leeren Datei geschickt mutt. Hier ist die komplette E-Mail, wobei einige Header entfernt/bearbeitet wurden:

From mail  Sat Mar  3 12:49:13 2018
Envelope-to: <dirk@...>
...
Message-ID: <20180303114913.xr7xvpx2pso6wurn@feanor>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="gsrhzrdopn4ddt7t"
Content-Disposition: inline
User-Agent: NeoMutt/20170609 (1.8.3)
Content-Length: 480
Lines: 18


--gsrhzrdopn4ddt7t
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

Test

--gsrhzrdopn4ddt7t
Content-Type: application/zip
Content-Disposition: attachment; filename="foo.zip"
Content-Transfer-Encoding: base64

UEsDBAoAAAAAALplY0wAAAAAAAAAAAAAAAAHABwAenp6L2Zvb1VUCQAD8IqaWvCKmlp1eAsA
AQToAwAABOgDAABQSwECHgMKAAAAAAC6ZWNMAAAAAAAAAAAAAAAABwAYAAAAAAAAAAAApIEA
AAAAenp6L2Zvb1VUBQAD8IqaWnV4CwABBOgDAAAE6AMAAFBLBQYAAAAAAQABAE0AAABBAAAA
AAA=

--gsrhzrdopn4ddt7t--

2) Habe es in einem Postfach namens gespeichert yyyund dann ausgeführt

METAMAIL_TMPDIR=. metamail -q -x -w ~/Mail/yyy

3) Wie erwartet fragt Metamail nicht danach und speichert alle Teile als zwei Dateien mit den Namen 1-M64bZlzund 1-MKfamEn. Die zweite ist die ZIP-Datei, die erste ist der Haupttext.

Und jetzt? Bei mir funktioniert es, bei Ihnen nicht.

Antwort2

  1. ripmime ist ein wirklich gutes Dienstprogramm zum Extrahieren von Anhängen aus einer E-Mail (ich verwende ein Skript, das von procmail aufgerufen wird).

2a) Wenn Sie wirklich Munpack verwenden möchten, können Sie wahrscheinlich die Binärdatei verwenden, die in der Paketverwaltungsdatei für eine frühere Version enthalten ist. Ich brauchte beispielsweise Munpack auf CentOS-7, konnte aber kein RPM für Mpack finden, also habe ich mit RPMFinder dieses „mpack-1.6-2.el6.rf.x86_64.rpm“ heruntergeladen und dann diesen Befehl zum Entpacken des Inhalts verwendet.

rpm2cpio mpack-1.6-2.el6.rf.x86_64.rpm | cpio -idmv

(Sie können dies in einem leeren Unterordner tun; verwenden Sie die Baumstruktur, um die Dateien zu finden; meine befanden sich unter .usr/bin)

2b) munpack-1.6 hat einen nicht dokumentierten Schalter „-t“, um bessere Textextraktionen durchzuführen (wird nicht angezeigt, wenn Sie „-?“ verwenden)

verwandte Informationen