PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Cyrus-imap: HowTo für Restore von Mailboxen



tschloss
15.12.05, 18:57
Passend zu meinem andern Post: jetzt will ich versuchen, meine verlorenen Ordner (ca. 80% der Unterordner in einer bestimmten Mailbox sind nebst Messages verschwunden).

Ich habe Backups (auf File-Ebene) von spool/imap und lib/imap.
Und zwar einmal komplett (3 Tage alt, wäre ok) sowie inkrementelle der 3 Tage (nice to have).

Hat jemand ein Howto, wie und was ich wieder zurückkopieren soll, und welche reconstructs oÄ ich laufen lassen muß.

Ich könnte auch einen zweiten Mailserver aufsetzen und dort alles zurückinstallieren, um es einem IMAP-Client zu überlassen, die Daten per Drag&Drop zurückzukopieren.

Danke im voraus!
Grüße
Thomas

Roger Wilco
15.12.05, 22:36
http://acs-wiki.andrew.cmu.edu/twiki/bin/view/Cyrus/ReconstructMailboxes

tschloss
16.12.05, 13:43
Hi, ich habe ein wenig experimentiert mit dem Einspielen von Foldern in die Dateistruktur eines aufgesetzten IMAP-Servers. Das habe ich nicht so richtig hinbekommen und selbst wenn, bliebe ein ungutes Gefühl, dass da möglicherweise irgendwelche Metainformation, die Cyrus imapd reichlich anzulegen scheint, nicht paßt und möglicherweise auf Dauer zu Problemen führt.

Wie gesagt: der IMAP Server läuft, alle User sind da, es fehlen nur ca. 20 Folder eines bestimmten Users.
Ich mache es jetzt folgendermaßen:
Die Messages liegen in Backup aus /var/spool/imap/users/johndoe/verloren1 als einzelne Dateien vor.
Ich simuliere mit diesen Dateien ein "Maildir", indem ich das verzeichnis in new umbenenne und ein tmp (und cur) daneben stelle.
Dann lege ich mit KMail ein Maildir-Konto an dieser Stelle an und kann die Dateien im Posteingang bewundern.
Gleichzeitig öffne ich in KMail das IMAP-Server-Konto und drag&drop die Mails einfach rüber.

Ich gehe einfach mal davon aus, dass durch diese Vorgehensweise die IMAP Datenstruktur konsistent bleibt (normale IMAP-Operationen).

Das Verfahren kann man sicher noch verbessern, immerhin muß ich das jetzt 20x machen.
Vielleicht wäre das auch ein kleines (für mich mittleres) Perl-Programm wert? IMAP-Extensions gibt es sehr schöne, evtl. auch welche für Maildir!?

Grüße
Thomas

Nachtrag:
Ganz befriedigend ist der obige Ansatz natürlich nicht, auch wenn er aus der Sicht der Datenintegrität sicher hoch einzustufen ist, weil man nichts an der Datenstruktur direkt manipuliert, sondern nur IMAP Kommandos als Client verwendet.

Aber das Kommando "reconstruct" bietet offenbar doch die nötigen Werkzeuge, um die verschiedenen Verlustvarianten abzudecken (obwohl der Universal-Heiler "-m" offenbar noch nicht implementiert ist).

Es gibt da verschiedene Optionen, Mails und Folder-Hierarchien wieder herzustellen und dabei entweder nur die Dateistruktur oder aber noch vorhandene Metadaten ((a) pro Folder gibt es drei Verwaltungsateien, (b) unter /var/lib/imap/ gibt es verschiedene Strukturen wie eine Mailbox-Datenbank und Statusinfos pro User ("seen")) nutzt bzw. neu generiert/updatet.

Mir ist bisher noch nicht ganz klar, welche Strukturen genau da sind, was sie enthalten und wie sie gepflegt werden, aber ggf. werde ich da auf einem Test-Server mal etwas herumexperimentieren. Die Man-Page läßt viele Fragen offen, die vielleicht durch einen passenden Überblick der Konzepte und Strukturen geklärt werden könnten. Vielleicht finde ich sowas noch.

Greetz
Thomas

tschloss
18.12.05, 22:41
Ok - jetzt habe ich es auch per "reconstruct" hinbekommen:

After fiddling around with several variants I found now the parameters which worked for me:

- added a new user "johndoe" with cyradm
- did not stop the IMAPd
- copied the tree of backuped dirs/files to "/partition/user/johndoe"
- chown´ed these files/dirs to cyrus/imap
- su cyrus
- /path-to/reconstruct -C /etc/imapd.conf -r -f user.johndoe
- changed the ACL of user.johndoe* (which may be obsolote because reconstruct used the found values!)
--> all seems to be there, visible by the IMAP client!
--> move the mailfolders to the final destination (with IMAP client)

The last step could be omitted if I would have worked directly under the destination user, which I did not trust in.

Cheers.
Thomas