ubuntuusers.de

Mails per Skript in Datei speichern

Status: Ungelöst | Ubuntu-Version: Server 18.04 (Bionic Beaver)
Antworten |

Nilsco187

Anmeldungsdatum:
11. Oktober 2019

Beiträge: 9

Ich will folgendes realisieren:

Automatisches Skript welches Mails per IMAP holt und diese dann in ein Text file speichert welches ich dan weiter verarbeiten kann.

Was wären eure Vorschläge ?

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13209

Nilsco187 schrieb:

Herzlich willkommen hier im Forum!

Was wären eure Vorschläge ?

fetchmail (siehe auch fetchmail und cron)

Nilsco187

(Themenstarter)

Anmeldungsdatum:
11. Oktober 2019

Beiträge: 9

Ich habe fetchmail bereits so eingerichtet das Mail abgerufen werden.

Jetzt stellt sich mir noch folgende Frage :

Bei Aufrufen von fetchmail bekomme ich folgende Rückgabe: 5 Nachrichten (5 gesehene) für XXX@XXX bei imap.XXXX. Wo liegen nun diese Mails und wie kann ich diese automatisiert Anschauen ?

Vielen Dank

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13209

Nilsco187 schrieb:

Bei Aufrufen von fetchmail bekomme ich folgende Rückgabe: 5 Nachrichten (5 gesehene) für XXX@XXX bei imap.XXXX. Wo liegen nun diese Mails und wie kann ich diese automatisiert Anschauen ?

Ist schon eine Weile her, dass ich mit fetchmail gearbeitet habe. Schau mal auf die Manpage, die ich auch vorher verlinkt habe, ob man jede Email in ein separates Programm pipen kann. Schau mal Option "--mda" an.

Wenn das nicht geht, kannst Du eventuell tricksen, indem Du fetchmail immer genau eine Email holen lässt und in eine separate Datei schreiben lässt, auf die Du dann ein anderes Programm loslässt. Schau mal Option "--batchlimit" an.

Cranvil

Anmeldungsdatum:
9. März 2019

Beiträge: 990

Diese Antwort glieder sich in drei Abschnitte:

  1. Programmempfehlung für den Abruf von Emails von mehreren Server (und für mehrere Benutzer)

  2. Programmempfehlung für das Anzeigen von Emails in der Kommandozeile

  3. Beispielkonfiguration für 1.

zu 1:

Ich habe mit getmail als Alternative zu fetchmail sehr gute Erfahrungen gemacht. Es kann Emails für viele Benutzer abholen, unterstützt unterschiedliche Protokolle und kann die gesammelten Emails flexibel weiterverteilen. Letzteres sogar mit mehreren Zielen (z.B. Verteilen in ein oder mehrere Mailverzeichnisse und zusätzlich Weitergabe an ein zusätzliches Skript zur Verarbeitung).

Die manpage zu getmail lässt leider die Spezifikation der Konfigurationsdatei offen, dafür kannst du die als reine Textdatei in /usr/share/doc/getmail/configuration.txt.gz lesen oder als HTML im gleichen Verzeichnis unter configuration.html. Unten habe ich noch ein Beispiel für eine funktionierende Konfiguration (Hinweise beachten) zum Abruf aus einem IMAP-Konto dargestellt.

Ein Problem, dass ich unter 18.04 Server mit getmail festgestellt habe ist die Installation von python2.7 in einer Form, dass ein Binary hinter /usr/bin/python2 zu finden ist. Wenn getmail meckert, dass es dieses Programm nicht finden kann, musst du unter Umständen mit

sudo update-alternatives --install /usr/bin/python2 python2 /usr/bin/python2.7 1 

dafür sorgen, dass ein entsprechender Link gesetzt wird. Vorher evtl. mit

update-alternatives --list python2 

prüfen, ob du nicht doch noch eine ungenutzte Alternative hast.

Das ist meiner Meinung nach erstmal kein unmittelbarer Fehler in getmail, sondern eher in dem ganzen Packaging- und Versionstrara um Python 2.x und 3.x begründet.

Zu 2:

Was sich ganz gut für das schnelle Betrachten (reiner) Textnachrichten eignet, ist mail aus mailutils. Falls du das noch installieren musst, nicht erschrecken: Es zieht mit den Abhängigkeiten eine ganze Postfix-Installation hinterher. Im Rahmen der Installation solltest du aber auch gefragt werden, wie die Grundkonfiguration aussehen soll und dort wird auch eine Option für den rein lokalen Betrieb angeboten.

Ohne Parameter versucht das Programm die Mailbox (mbox-Format, eine Datei mit allen Emails) oder das Mailverzeichnis (Maildir-Format, jede Email eine Datei; heutzutage in der Regel die bessere Wahl) in /var/mail/$USER zu öffnen. Mit der Option -f kann man ein Verzeichnis oder eine Datei angeben, die es stattdessen nehmen soll. Nach dem Start öffnet sich eine kleine "Mailshell", deren Befehle du mit ? anzeigen lassen kannst.

Ich empfehle dir, getmail ein paar Mails abholen zu lassen und dann mit mail drüber zu gehen und zu schauen, ob das für deinen gedachten Arbeitsablauf passen könnte. Reicht dir das nicht, weil deine Emails komplexer sind, kannst du auch zu Mutt greifen. In Kombination mit w3m sollst du damit dann sogar HTML-Emails und Bilder betrachten könnten. Du brauchst die Servereinstellungen bei Mutt weglassen, wenn du getmail/fetchmail verwendest und keine Emails senden willst.

Zu 3:

Ich hatte ja eine getmail-Konfiguration versprochen. Wenn der nachfolgende Codeblock in eine Datei $HOME/.getmail/getmailrc kopiert und angepasst wird, benutzt getmail diese Einstellungen. Alternativ müsste dann mit entsprechenden Schaltern oder getmails gearbeitet werden. Ich habe hier mal die Möglichkeit genutzt, mehrere Ziele anzugeben, damit du vielleicht selbst mbox und maildir testen kannst.

[retriever]
type = SimpleIMAPSSLRetriever
server = imap.somewhere.tld
username = my_login_usernme
password = SuperSecretPassword
# Alle Mailboxen abrufen
mailboxes = ALL
# Einzelne Mailboxen abrufen
#mailboxes = ("MailboxA", "MailboxB")

[destination]
type = MultiDestination
destinations = ('[mboxdest]', '[maildirdest]')
# Auch möglich, aber ich wollte die zusätzlichen Sektionen zeigen. :)
#destinations = ('~/Mail/inbox/', '~/Mailbox')

[mboxdest]
type = Mboxrd
path = ~/Mailbox

[maildirdest]
type = Maildir
path = ~/Mail/inbox/

[options]
# Terminal nicht mit Meldungen füllen
verbose = 0
# Nur neue (noch nicht gesehene) Nachrichten herunterladen,
# siehe .getmail-Verzeichnis nach erstem Abruf
read_all = false
# Meldungen sind trotzdem nett ;)
message_log = ~/.getmail/log

Hinweise: getmail macht einen recht umfangreichen Plausibilitätscheck beim Lesen der Konfigurationsdatei, wobei es grobe Schnitzer natürlich nicht verhindert. Am ehesten wird es dich erstmal anmeckern, dass die Mailbox-Datei nicht existiert (zu beheben mit touch $PFAD/Dateiname). Maildir hat auch ein paar Anforderungen. Hier am besten folgendes für obiges Beispiel ausführen (Annahme: Konfiguration gehört zu ausführendem Benutzerkonto)

mkdir -p $HOME/Mail/inbox/{new,cur,tmp} 

Ich glaube, das war's fürs erste. 😀

Nilsco187

(Themenstarter)

Anmeldungsdatum:
11. Oktober 2019

Beiträge: 9

Vielen Dank für die Antworten.

Ich habe jetzt folgendes Pobiert: 1. Mit Fetchmail Mails abrufen 2. Diese mit mu extract

Jetzt habe ich aber folgendes Problem: Dies Funktioniert wenn es nur ein Mail gibt. Wenn jetzt aber 2 Mails heruntergeladen werden, funktioniert mein extrahieren mit Text nicht mehr. Wie kann ich die Mails auseinander nehmen sodass ich jeweils nur den Text habe ?

Vielen Dank

Cranvil

Anmeldungsdatum:
9. März 2019

Beiträge: 990

Nilsco187 schrieb:

Vielen Dank für die Antworten.

Ich habe jetzt folgendes Pobiert: 1. Mit Fetchmail Mails abrufen 2. Diese mit mu extract

Jetzt habe ich aber folgendes Problem: Dies Funktioniert wenn es nur ein Mail gibt. Wenn jetzt aber 2 Mails heruntergeladen werden, funktioniert mein extrahieren mit Text nicht mehr. Wie kann ich die Mails auseinander nehmen sodass ich jeweils nur den Text habe ?

Vielen Dank

Wie versuchst du denn derzeit, die Inhalte zu extrahieren?

Wenn ich mir die Anleitung zu mu-find anschaue, bietet es sich an, dieses als Zwischenschritt einzubinden. Hier insbesondere auf die Option --fields beachten, da es mit dem l auch möglich zu sein scheint, die einzelnen Dateien aufzulisten. Diese Liste kannst du dann in einer Schleife für mu-extract einsetzen.

Nilsco187

(Themenstarter)

Anmeldungsdatum:
11. Oktober 2019

Beiträge: 9

Da ich mit fetchmail keine Mails in einen anderen Ordner verschieben konnte nutze ich nun getmail. Dort ist die Extraktion um einiges einfacher da die Mails im maildir format abgespeichert werden können. Im Moment kämpfe ich aber mit folgender Fehlermeldung :

getmailrc: operation error (IMAP error (command COPY ('7926', 'Posteingang.Test') returned NO ['[TRYCREATE] UID COPY failed']))

Diesen bekomme ich aufgrund folgendem Parameter : move_on_delete = Posteingang.Test

Ich glaube das ich eine falsche UID für den Ordner nehme. Kann das sein ?

Nilsco187

(Themenstarter)

Anmeldungsdatum:
11. Oktober 2019

Beiträge: 9

Habs herausgefunden. Lag an einer Falschen UID. Anstat Inbox.Test , Inbox/Test

Antworten |