Kategorien
linux tutorial

Googlemail Backup mit Linux – Auswechselspieler

googlemailOk muss zugeben, fetchmail ist schön, fetchmail ist toll, aber es gibt laut meiner Erfahrung immer jemanden der irgendwas besser kann, und auch beim Mail-Abholer für Linux ist das nicht anders. Getmail heißt der Ersatzmann für fetchmail, der vor allem durch seine durchdachte , übersichtliche Konfiguration besticht, aber auch einige Features hat die fetchmail vermissen lässt. Darum hier eine kleine Aktualisierung meines GMail Backup Tutorials auf Basis von getmail. Installation beschreibe ich heute mal nicht, das könnt ihr mal selbst machen.

Fertig mit Installieren? Dann erst noch ein wenig „Vorarbeit“:

Anlegen des Ordners in den unser „Backup“ wandern soll:

mkdir /pfad/zum/ordner

Wichtig ist das der Ordner im Maildir-Format vorliegen muss! Dazu erstellt man in diesem Ordner die drei Verzeichnisse ’new‘, ‚cur‘ und ‚tmp‘. Das sollte reichen. Man kann dazu auch das Tool maildirmake benutzen, das zum Beispiel im Paket maildrop dabei ist. Dann kann man das ‚mkdir /pfad/zum/ordner‘ durch ein ‚maildirmake /pfad/zum/ordner‘ ersetzen und muss die Unterverzeichnisse nicht erstellen.

Danach gehts auch schon zur Konfiguration. Dazu legen wir in unserem Benutzerverzeichnis einen Ordner names ‚.getmail‘ an. Und erstellen in diesem unsere Konfigurationsdatei, hier ‚getmailrc‘, doch dazu später noch etwas mehr. In dieser Datei sollte für unser Backup folgendes zu finden sein:

[retriever]
type = SimpleIMAPSSLRetriever
server = imap.gmail.com
username = email@googlemail.com
password = geh heim
mailboxes = ("INBOX", "[Gmail]/All Mail")

[destination]
type = Maildir
path = /pfad/zum/ordner/

[options]
delete = false
read_all = false
message_log = /pfad/zur/logdatei.log

Das wars schon. Wichtigste Zeile hier ist bei den Optionen: ‚delete = false‘, sonst werden die Mails nach dem Abholen vom Server gelöscht.
Kurz zur Erklärung:
SimpleIMAPSSLRetriever, ist quasi das Plugin um die Mails per IMAP zu holen.
In der Zeile ‚mailboxes‘ sollten die Ordner (bei Google heissen die Labels) stehen, die ihr abrufen wollt, der ‚All Mail‘ Eintrag sorgt dafür das alles was da ist auch bei euch im Backup landet.
In der Zeile ‚path‘ gebt ihr den Pfad zum eben erstellten Ordner ein.
‚read_all = false‘ sorgt dafür das nicht jedes mal alle Mails abgeholt werden, sondern nur die neuen
Der letzte Eintrag ‚message_log‘ ist nicht unbedingt notwendig, aber hilfreich bei der Fehlersuche.

Um nun euren ersten Schwung E-Mails abzuholen sollte, falls ihr als Namen für die Konfigurationsdatei ‚getmailrc‘ gewählt habt, ein einfaches ‚getmail‘ auf der Konsole genügen. Falls ihr eure Konfigurationsdatei anders benannt haben solltet hilft ‚getmail -r/pfad/zur/konf‘ weiter.
Da in jeder Konfigurationsdatei nur ein Account stehen darf kann man durch mehrmaliges anfügen der Option ‚-r‘ getmail dazu auffordern mehrere Accounts abzurufen.

Um nun das ganze periodisch ablaufen zu lassen, will sagen eure E-Mails regelmäßig zu backuppen, solltet ihr das ganze in die crontab eintragen. Anleitung dazu in meinem crontab-Artikel.

Achso: Bei mehr als 3000 Mails sollte man beim ersten Abholen erstens Zeit mitbringen und sich zweitens nicht wundern das die Verbindung irgendwann abbricht. Einfach ein paar Minuten warten und nochmal starten das Ding, ist wahrscheinlich ne Art Schutzmechanismus vom Gmail Server.

Wie immer alles ohne Gewähr und Gewährleistung, aber das kennt ihr ja schon. Fehler und Ergänzungen sind bitte in den Kommentaren unterzubringen. Danke!

Links:

Mehr Informationen über die Funktionen von Getmail in der offiziellen Dokumentation
Getmail Homepage
Getmail Tutorial bei adminlife.net

17 Antworten auf „Googlemail Backup mit Linux – Auswechselspieler“

Ich habe einen vServer, welchen ich als zentralen IMAP-Server
verwende. Über einen Cronjob hole ich mir alle 5 Minuten die E-Mails
von meinen 4 GMail und 1 GMX Konto ab. Über mutt lese ich meine
E-Mails (und Newsfeeds). Diese Methode funktionioniert seit 3 Monaten
recht gut. Allerdings habe ich Probleme, wenn Leute mir große Dateien
an einen meiner GMail-Konten zuschicken (ca. 1 MB oder größer). Mitten
im Transfer wird abgebrochen. Im Urlaub hatte ich leider kein
Internet, sodass diese E-Mail alle 5 Minuten heruntergeladen wurde.
Gerade auf einem vServer mit begrenztem Traffic ist dies
problematisch. Ich hatte Glück, sodass „nur“ ein paar GB
heruntergeladen wurden. Hattest du ähnliche Probleme? Ich würde nur
ungern POP3 verwenden, sodass ich die Spam E-Mails bei GMail auch über
IMAP herunterladen kann (ist leider über POP3 nicht möglich). GMail
hat in der Vergangenheit E-Mails oft falsch klassifiziert, sodass ich
dies lokal (auf dem vServer) von Bogofilter erledigen lasse, welcher
die Spam E-Mails in das Postfach „Spam“ verschiebt. Danke.

Nein, konnte ich bisher noch nicht beobachten, hatte nur am Anfang beim ersten Abholen das Problem, das er öfter Mal abgebrochen hat, ist aber seit dem nicht mehr vorgekommen…werd aber mal testen wenn ich ein wenig Zeit habe…

Hi,

ich habe das Tutorial gerade ausprobiert doch leider klappt es bei mir nicht. IMAP ist im Konto enabled aber ich bekomme immer folgende Fehlermeldung:

SimpleIMAPSSLRetriever:myMail@gmail.com@imap.gmail.com:993:
getmailrc: operation error (IMAP error (command SELECT (‚[Gmail]/All Mail‘,) returned NO))
0 messages (0 bytes) retrieved, 0 skipped
IMAP error during logout (command CLOSE illegal in state AUTH)

Im Logfile steht die selbe Fehlermeldung und keine weitere Information. Hast du eine Idee warum sich getmail weigert? IPTables habe ich auch schon ausgeschaltet aber es kommt der selbe Fehler.

Danke & Gruß,
Esco

Hi,
versuch mal folgendes, ändere
type = SimpleIMAPSSLRetriever mal zu type = SimplePOP3SSLRetriever
und lass die Zeile ‚mailboxes‘ mal weg…nicht vergessen POP3 zu aktivieren in Gmail!
Sollte genauso funktionieren…werd aber die Woche mal schaun warum das mit IMAP hakt…

Hi,

mit POP3 klappt es, aber es werden auch nicht alle Nachrichten vom Server geholt. Habe getmail mehrfach ausgeführt aber nur knapp über 700 Mails wurden geholt. ~2500 Konversationen befinden sich auf dem Server.

Danke & Gruß,
Esco

Das Problem hatte ich am Anfang auch, einfach nochmal ein wenig warten, ich hatte damals das Gefühl, das der Gmail-Server wenn man sehr viele Mails abholt zwischendurch mal die Verbindung abbricht und erst nach einiger Zeit wieder Mails ausliefert…sonst wüsste ich jetzt im Moment leider auch keine Lösung..

Hat noch mal rund 250 abgeholt aber das sind immer noch zu wenig.

Werde mal was warten und es später noch probieren.

Hast Erfahrung damit das Backup mit Thunderbird o.ä. zu machen?

Esco

Na mit TB sollte es eigentlich kein Problem sein. Einfach mit POP3 abholen, das mit dem recent: von dem Link hier nicht vergessen ( http://preview.tinyurl.com/2qry86 ) und in Thunderbird einstellen, das er die Mails nicht vom Server löschen soll…

Bei mir hat das gesamte Abholen von 3000Mails übrigens über nen halben Tag gedauert, eben durch diese Unterbrechungen…

Alles klar danke, werds mal probieren.

Wie lang waren bei dir die Unterbrechungen?

Ich glaube aber, dass der Fehler wo anders liegt, denn die Seite sagt auch, dass „Recent mode fetches the last 30 days of mail“. Aber die Mails sind älter als 30 Tage und wurden auch schonmal per POP3/IMAP abgeholt. So wie ich das jetzt verstehe kann das mit Recent auch nicht funktionieren.

Kann man das mit IMAP über TB evtl. umgehen? Werde das mal in Ruhe probieren müssen…

Sind die Mails, wenn sie TB/getmail löscht komplett weg oder noch im Papierkorb auf dem Webserver. (Falls mal eine Einstellung falsch sein sollte.)

Esco

Soweit ich weis speichert TB im IMAP Modus die Mails nicht lokal, dürfte also nicht funktionieren…

Denke mal das die Mails dann weg sind, wenn sie per pop3 vom Server gelöscht werden, so ist es zumindest auf „normalen“ Servern…also besser keine Fehler machen 😉

Oh weh,

ich seh schon das wird ne längere Aktion. Werde mir einen zweiten GMail Acc. machen und daran spielen…

Ist aufs Wochenende verschoben… wenn du willst kann ich dir dann von dem Erfolg/Misserfolg berichten 🙂

Esco

Also ich hba noch ein bischen gesucht und bin auf das hier gestoßen:

http://blog.tim-bormann.de/backup-gmail.html

Da wird ein Programm für Windows verwendet. Hab es auf einem Windows Rechner benutzt und es klappt ganz gut aber auch hier ist wie du schon beschrieben hast das Problem, dass man sich immer wieder verbinden muss. Die email werden nach Labels sortiert als .eml gespeichert. Weiß nicht ob es mit wine auch unter Linux funktioiert aber das werde ich bei Gelegenheit testen. Mache jetzt erstmal das Backup und hoffe, dass ich mit noch ein paar Verbindungen dann endlich mal alle Mails habe. Oder zumindest ein Großteil, bis jetzt wurden nach ca. 4 Verbindungen ca. 50% der Mails ~3000 eMails gespeichert. Wenn das in dem Tempo weiter geht bin ich zufrieden.

Gruß,
Esco

Kurze Frage, wie restore ich denn die Mails wieder, falls jene alle wech sind ? .-)

Denke am einfachsten mit Thunderbird oder einem ähnlichen Mail-Programm. Einfach den Ordner wo du die Mails hin“gebackuppt“ hast als Postfach einbinden und dann per IMAP wieder zu Google zurück schieben. So würde ichs denke ich machen…

Noch einfacher ist das Tool offlineIMAP.
Man gibt die IMAP-Daten und den Pfad zum sichern an und offlineIMAP erledigt den Rest, sprich legt den maildir an und lädt den kompletten IMAP-Account runter, d.h. auch Unterordner werden als maildirs auomatisch angelegt und korrekt sortiert.

Ich hatte erst getmail probiert, aber da viele Ordner runterzuladen ist recht kompliziert, man muss für jeden ein maildir anlegen und eine eigene config-Datei machen, sonst haut er alle Mails in ein maildir…

Ich weiß nicht ob gmail wirklich Unterordner oder nur Labels/Tags kennt (das ist eigentlich ein Unterschied bei IMAP), ich nutze kein gmail (sondern einen Courier-IMAP-Server). Wenn gmail Labels statt Ordnern nutzt, liegen faktisch ja eh alle Mails im selben Ordner, dann kann man natürlich auch genauso gut getmail nutzen.

Ein Tutorial zu offlineIMAP findet ihr hier:
http://seraphyn.teiko.org/archives/525-Simple-IMAP-Backup-mit-OfflineIMAP.html

Kommentare sind geschlossen.