Jede dateibasierte E-Mail-Clientanwendung? (Um die Mailbox unter VCS zu stellen.)

955
Xiè Jìléi

Wie Subversion, die zwei Backend-Typen hat: BDB-basiert und dateibasiert. Die meisten E-Mail-Anwendungen, die ich gesehen habe, verwenden Datenbank-Back-End, aber die Datenbank kann vom Endbenutzer nicht so bequem manipuliert werden.

Momentan verwende ich Thunderbird, das auch Datenbank als Backend verwendet. Ich verwende Thunderbird auf vier Maschinen, es gibt also 4 separate Datenbanken. Und ich habe viele Mail-Konten, vielleicht 20 und mehr. (Nein, bitte sagen Sie mir keine Mail weiter.) Wenn also das Backend dateibasiert ist, kann ich einfach ein Git-Repository einrichten und sie alle synchronisieren. Thunderbird hat jedoch sein internes Datenbankformat, daher ist es sehr unpraktisch, diese separaten Datenbanken zu verwalten.

4
Eine Datenbank ist wahrscheinlich viel einfacher zu bearbeiten als ein Satz von Dateien, wenn Sie über die entsprechenden Werkzeuge verfügen. Ich kenne keine Besonderheiten, aber ich würde wetten, dass viele Open-Source-Mail-Clients nur sqlite unter der Haube verwenden. Haben Sie versucht, die tatsächliche Datendatei von Thunderbird zu finden und diese mit sqlite abzufragen? jcrawfordor vor 12 Jahren 0
Huh Das letzte Mal, als ich ThunderBird ausprobierte, stellte ich fest, dass jede Nachricht in einer separaten Datei gespeichert war. In der Tat waren viele E-Mail-Clients, die ich ausprobierte, Windows Mail (und WMLive). (Das heißt aber nicht, dass sie nicht auch einen * Haufen * von anderen Dateien und Junk erstellt haben.) Synetech vor 12 Jahren 0

2 Antworten auf die Frage

5
imz -- Ivan Zakharyaschev

Das Maildir- Format zum Speichern von E-Mail wurde eingeführt, das genau das tut, was Sie beschreiben: Eine Nachricht wird in einer separaten Datei gespeichert.

Es gibt Maildir-Treiber (Backends) für einige E-Mail-Clients und einige E-Mail-Zustellungsagenten sowie einige E-Mail-Zugriffs-Server (IMAP oder POP oder Web-Interface).

Wenn Ihre E-Mails in Maildirs gespeichert werden, ist es natürlich am einfachsten, sie unter die übliche Versionskontrolle zu stellen.

So können Sie Maildir-Backends für Mail-Clients suchen.

Tatsächlich kann das Synchronisieren Ihres Mail-Speichers jedoch etwas schwieriger sein als das Synchronisieren von Verzeichnissen von Dateien - aufgrund verschiedener Flags (neu, gelesen), Beschriftungen, Bewegungen oder Kopien von Nachrichten zwischen Ordnern und - dem schwierigsten Teil. -die serverinternen Nachrichten-IDs, die von Mail-Access-Servern (IMAP) oder Mail-Clients verwendet werden . Worum geht es bei diesen IDs? Nun, es ist wichtig, IDs zwischen mehreren Kopien Ihres E-Mail-Speichers aufzubewahren, damit die Zwischenspeicherung Ihres E-Mail-Clients korrekt ausgeführt werden kann.

Ich habe dieses Problem untersucht und einige Notizen hier niedergeschrieben: Recherchen, wie Sie ein IMAP-Konto sichern können . (Aber dann musste ich diese Aufgabe nicht erledigen, daher waren die Notizen und meine praktische Lösung nicht vollständig.)

Die allgemeine Idee, zu der ich gekommen bin, ist, dass die Verwendung eines Mail-Clients und die einfache Versionskontrolle von Maildirs Ihnen nicht alles bieten, was Sie von der Verwaltung der Revisionen Ihres Mail-Speichers erwarten. Es ist besser, es mit echten IMAP-Servern (entweder Remote- oder lokalen Servern) für einen einheitlichen Zugriff auf die E-Mail zu kombinieren, und mit speziellen Tools, die auf IMAP ausgeführt werden, um verschiedene Kopien / Repositorys / Verzweigungen Ihres Mail-Speichers zu synchronisieren (die speziellen Tools werden es tun.) achten Sie auf die Flaggen, Etiketten und IDs). Die übliche Versionskontrolle ist in Ordnung, um die Revisionen zu überprüfen und zu einer früheren Revision zurückzukehren. Beim Zusammenführen von Verzweigungen (= Synchronisieren) würde ich ein komplexeres Verfahren in Betracht ziehen:

Sie möchten Zweige Aund zusammenführenB .

  • Sie bereiten also den neuen Zustand (Revision) vor C, der den zusammengefügten Zustand halten wird, indem Sie einen von ihnen kopieren, z. B. in den neuen kopierenAC .
  • Dann verwenden Sie ein Tool (z. B. "imapsync"; wählen Sie das für Ihre Bedürfnisse geeignete Tool aus; ich habe einige solcher Tools in meinen Notizen aufgeführt ), um die neuen Änderungen von B nach C: imapsync Bzu übernehmenC .

(Dies kann davon ausgehen, dass Sie über einen Server über IMAP auf den Mail-Speicher zugreifen.)

  • Machen SieC jetzt ein Commit (als Ergebnis des Zusammenführens Aund Bvorher könnten Sie einen entsprechenden Befehl in Ihrem VCS verwenden, um die Informationen aufzuschreiben, die das Ergebnis des Zusammenführens Bsind A, z. B. " git merge B -s ours --no-commit" in C).

Bitte erforschen Sie die Details selbst, ich habe nur die allgemeine Idee im Sinn, und ich führe ein solches Verfahren jetzt nicht in der Praxis aus.

Ich denke, dass dies eine sehr interessante Aufgabe ist, die von üblichen, bekannten Dienstprogrammen erledigt werden muss. Ich würde gerne mehr über erfolgreiche Setups erfahren, mit denen sich andere Leute befassen!


AFAIR habe ich offlineimapfür meine Aufgabe ausgewählt, ein IMAP-Konto in Git zu sichern . BTW hier ist eine Antwort mit einer Beispielkonfiguration von offlineimap.

Vielleicht gibt es unter den Google-Suchergebnissen interessante Informationen, zum Beispiel unter * [maildir git imapsync] (http://www.google.com/search?q=maildir+git+imapsync) *, zB [HGM - Distributed maildirs ] (http://www.hawaga.org.uk/ben/tech/hgm/). imz -- Ivan Zakharyaschev vor 12 Jahren 0
4
Randy Orrison

Die beste Antwort ist die Verwendung eines Servers, der für die gemeinsame Nutzung von E-Mails zwischen Clients vorgesehen ist - ein IMAP-Server. So ziemlich jeder E-Mail-Client kann dann auf die E-Mail auf diesem Server zugreifen. Sie können Ihre eigene, auf Ubuntu oder Google Mail einrichten. Wenn Sie einen ISP für Ihre E-Mail verwenden, wird dieser Internetdienstanbieter wahrscheinlich IMAP-Zugriff auf Ihre E-Mail dort erlauben.