QmailAgent ohne Verlust der Inhalte umziehen

Vorhaben

Aufgrund von entweder lediglich einer neuen Philosophie der Datenträger- oder Speicherstruktur oder aber aufgrund eines kompletten Neuaufsetzens soll QmailAgent ohne Verlust der Inhalte komplett wieder aufgebaut werden. Parallel hierzu nutze ich HBS3, um mir von den entsprechenden Verzeichnissen mit den Mailinhalten regelmäßig Backups zu erstellen. Darauf gehe ich hier nicht ein. Zurückgreifen musste ich auch noch nicht auf diese Backups.


Hintergrund

In meinem Fall wurde das bereits schon durchgeführt, als ich mein Speichermanagement aus dem veralteten Legacy-System in das neuere System mit Speicherpool überführt habe. Dazu gibt es noch eine wichtige Erklärung am Ende - Stichwort: autorun. Damals hatte ich mir fest vorgenommen, dies auch in eigenem Interesse sauber zu dokumentieren. Ist ja nicht ausgeschlossen, dass es mal wieder anstehen könnte. Diese Annahme war - wie sich jetzt zeigt - nicht ganz unbegründet. Und prompt habe ich auch jetzt so das eine oder andere wieder erst mal falsch gemacht, weil es eben doch nicht sauber nachvollziehbar war. Daher soll jetzt der damalige Vorsatz erfüllt werden.


Jetzt habe ich es nochmal gemacht, als ich mein System neu aufsetzen wollte. Und schließlich habe ich dann noch das Verzeichnis mit den eigentlichen Mailinhalten auf ein anderes Volume verschoben.

[Ergänzung: Es gibt im WI zu QmailAgent auch die Möglichkeit, jedem Postfach neue Speicherorte für Mails und Anhänge zuzuweisen - das habe ich aber nicht genutzt].

Ein Tipp: Will das jemand selber probieren, empfehle ich schon, dies hier erst mal bis zum End durchzulesen. Ich kann nicht alle vielleicht wichtigen Details hier schon im Vorfeld benennen. Der Rest dieses Abschnittes kann aber durchaus übersprungen werden - ist der Tatsache geschuldet, dass ich mich gerne selber reden höre ;).


Mangels detaillierter Beschreibung habe ich durch waghalsiges Probieren einige Zusammenhänge herausgefunden - zugegeben, so mutig war das gar nicht. Da ich gezwungen war, für den Umstieg meiner 4 x 3 TB auf damals 4 x 16 TB vom Legacy auf das neue System entweder auf meine bisheriges Mailarchiv einfach zu verzichten oder mir eine Lösung zu suchen. Ich nutze aktuell QmailAgent mit 14 verschiedenen Postfächern sowohl als Archiv als auch zum mobilen Checken und Lesen von Mails am Smartphone oder im Browser. Versenden tue ich praktisch nicht darüber. Von QNAP wird dazu jetzt in der entsprechenden Anleitung recht einfach und schnell gesagt: Im Falle des Wechsels zum neuen Speichermanagement am Besten die Daten sichern und dann wieder neu einspielen. Muss ich immer noch leicht schmunzeln. Zum einen macht das bei 14 Postfächern nur bedingt wirklich Spaß, zum anderen ist das mit dem Altbestand gar nicht auf Tastendruck möglich. Und wie gesagt, eine Dokumentation dazu gibt es offensichtlich nicht oder ich habe sie bisher nicht gefunden. Auch der Support konnte nur bedingt etwas beitragen. Zu dem Zeitpunkt, als dies bei mir erstmals anstand, gab es auch nur eine Betaversion ohne die Möglichkeit irgendwelcher Sicherungen. Ob das mit der kostenpflichtigen Version wirklich so funktionieren würde, wie ich das wollte, weiß ich nicht, da ich sie nicht habe. Weiter gibt es auch über das WI von QmailAgent die Möglichkeit, den Speicherort von Mails und deren Anhängen für jedes erfasste Postfach einzeln anzupassen und auch neue Speicherorte festzulegen, allerdings war ich mir nie ganz sicher, was dann mir meinen alten, bereits eingelesenen Mails passieren würde. Umgekehrt habe ich auch nicht probiert, ob ich so auch alte Mails aus abweichenden Verzeichnissen problemlos hinzufügen könnte. Nachdem meine erste größere Umzugsaktion auf der im folgenden beschriebenen Weg aber erfolgreich war, hatte ich dies auch aus den Augen verloren. Und schließlich liegt es mir manchmal immer noch mehr, mit der Konsole und Eingabe von Befehlen auf der Tastatur zu hantieren, dies dann geschickt ergänzt durch kleine Skripte, als mich wie hier durch 14 Postfächer mit Maus durch die Menüs mit teilweise recht träger Reaktion des Webinterfaces zu hangeln.


Wichtige Anmerkung

Ich bin selber kein Programmierer sondern lediglich ein mutiger Anwender - daher seien mir manche unsaubere Formulierungen nachgesehen. Ich hoffe, dass sie dennoch vertretbar sind. Diese Beschreibung spiegelt nicht exakt mein Vorgehen wieder. Da ich gezwungen war, unterschiedliche Schritte in unterschiedlicher Reihenfolge zu probieren kann ich nicht mit letzter Sicherheit sagen, inwieweit ein Schritt, der anschließend rückgängig gemacht wurde, doch von Einfluss gewesen sein kann. Insgesamt hat es mir aber gezeigt, dass in dem Falle, dass man gut auf sein Backup aufpasst, hier nicht wirklich etwas verloren gehen kann. Notfalls muss man die Schritte eben wiederholen. Einen Punkt gab es dann dennoch, zu dem mir wegen einer Nachlässigkeit einige Mails einer kurzen Zeitspanne verloren gingen. Diese konnte ich aber auch wieder gewinnen. Dazu später näheres. Ganz wichtig ist aber dabei, daher erwähne ich es auch jetzt schon im Vorfeld, dass man auf dem Mailserver, von dem die Mails abgerufen werden, diese nicht automatisch nach dem Abruf löschen lässt.


Zuletzt, vor es endlich los geht, versteht sich von selbst: Nachmachen auf eigenes Risiko und nicht leichtfertig, wenn einem etwas an seinen Mails liegt!


Zur Struktur von QmailAgent

Wie vieles bei QNAP (und anderen sicher genauso) besteht QmailAgent im Grunde nicht aus einer kompletten eigenen Erfindung von QNAP. Vielmehr ist es eine Zusammenfassung anderer bekannte frei verfügbarer Software, die hier eben in eine gemeinsame Oberfläche gepackt sind.

QmailAgent ist prinzipiell zweigeteilt. Es gibt einmal die Anwendung

  • qmail, die im Verzeichnis /share/CACHEDEVx_DATA/.qpkg liegt. Darin liegen auch Verzeichnisse mit einer SQlite-Datenbank und Log-Dateien. Dann gibt es
  • QmailAgent, welches die eigentlichen Daten - also die Mails und je nach Einstellungen getrennt davon die Anhänge enthält. Diese liegen im Verzeichnis /share/CACHEDEVy_DATA/QmailAgent.

Hier und im folgenden immer auf die Unterscheidung zwischen "x" und "y" achten. Kommt hier im Code leider nicht rot an. Ist klar, dass es sich in Wirklichkeit dabei um Zahlen handelt?

Nach der Installation mittels der qpkg-Datei von QNAP sind/share/CACHEDEVx_DATA und /share/CACHEDEVy_DATA zunächst identisch.


Nun die Schritt-für-Schritt-Anleitung

  1. QmailAgent beenden - sollte selbstverständlich sein, genauso die folgenden beiden Schritte
  2. qmail sichern: cp -R /share/CACHEDEVx_DATA/.qpkg/qmail /share/Sicherung
  3. QmailAgent sichern: cp -R /share/CACHEDEVx_DATA/QmailAgent /share/Sicherung (könnte jetzt natürlich schon ein anderes Verzeichnis - also y statt x - sein)
  4. In meinem Falle: System, sprich Systemvolume und QTS, neu einrichten.
  5. qmail wieder aus dem Backup auf dem Volume herstellen, auf dem es später installiert werden soll: cp -R /share/Sicherung/qmail /share/CACHEDEVx_DATA/.qpkg
  6. QmailAgent wieder aus dem Backup auf dem Volume herstellen, auf dem es später liegen soll: cp -R /share/Sicherung/QmailAgent /share/CACHEDEVy_DATA
  7. QmailAgent neu installieren auf dem Volume auf CACHEDEVx_DAT
  8. Jetzt kann's mühsam werden, wenn viele Postfächer vorliegen:
    Für alle Postfächer: Unter /share/CACHEDEVx_DATA/.qpkg/qmail/mailstore müssen die Links auf Storedir und Attachmentdir angepasst werden. Für 14 Postfächer habe ich mir dazu ein kleines Skript geschrieben.
    Zunächst wird der jeweilige bestehende Link gelöscht
    rm /share/CACHEDEVx_DATA/.qpkg/qmail/mailstore/mein@mail.konto/Storedir
    Anschließend wird er neu wieder angelegt auf das neue Ziel
    ln -s /share/CACHEDEVy_DATA/QmailAgent//QmailAgent_admin_mein@mail.konto /share/CACHEDEVx_DATA/.qpkg/qmail/mailstore/mein@mail.konto/Storedir
    Sinngemäß das gleiche für die Attachements
    rm /share/CACHEDEVx_DATA/.qpkg/qmail/mailstore/mein@mail.konto/Attachmentdir
    ln -s /share/CACHEDEVy_DATA/QmailAgent//QmailAgent_admin_mein@mail.konto /share/CACHEDEVx_DATA/.qpkg/qmail/mailstore/mein@mail.konto/Attachmentdir
    Man beachte den doppelten // nach QmailAgent

Was nicht funktioniert hat: Erst QmailAgent neu installieren, dann die alten Inhalte darüber zu kopieren. Ich habe daher das qmail-Verzeichnisse nach Schritt 4 nochmal gelöscht, QmailAgent deinstalliert und dann weiter mit Punkt 5 gemacht.


Und dann?

Der Probelauf zeigt, dass alles wieder da war wo es erwartet wurde.

Nun, zugegeben, das war bei mir prompt beim zweiten Umzug nun doch wieder nicht gleich so. Ich hatte nämlich zum zweiten Mal den Schritt 8 nicht durchgeführt (soviel zum Thema: Nächstes Mal weißt Du's gleich...). Das wird einem allerdings vielleicht erst dann bewusst, wenn man versucht, eine Mail aus einem Postfach (im WI oder am Smartphone) zu öffnen oder sich den Anhang anzusehen. In der Liste sind die Mails alle aufgeführt. Diese liegt nämlich wohl in der Datenbank, die wiederum dort liegt, wo die Anwendung ist, hier also unter /share/CACHEDEVx_DATA/.qpkg/qmail/mailstore/mein@mail.konto/.metadata


[Wichtiger Hinweis: Hierin liegen auch die Logs, die ich sonst nirgends gefunden hatte und die mir erst die Spur zu den einzelnen Verzeichnissen verraten haben. Beispielsweise einmal, als aus einem Postfach plötzlich keine Mails mehr eingelesen wurden. Das ist aber eine andere Geschichte, die ich von längerem hier schon mal in einem Post berichtet hatte und jetzt nicht wiederhole.]


In meinem Fall war das jetzt so, dass scheinbar alle Mails richtig abgeholt wurden und auch in der Liste aufgeführt waren. Da ich aber mal zwischendurch den Speicherort der eigentlichen Mails gewechselt habe und das ursprüngliche Volume (aus ganz anderen Gründen war das schon gewollt und richtig) komplett entfernt habe, waren die Inhalte und Anhänge verschwunden für die Mails, die in dieser kurzen Zwischenphase abgerufen wurden. Daher habe ich QMailAgent möglichst gleich wieder gestoppt, den Fehler oben korrigiert und QmailAgent wieder gestartet. Jetzt sollten natürlich auch die verlorenen Inhalte wieder beschafft werden. Dazu nun:


Vorgehen, wenn einige Mails im Rahmen der Umstellung verloren sind

Hat man jetzt Zugriff auf den eigentlichen Mailserver wie beispielsweise gmx, kann man die vermeintlich verschwundenen Mailinhalte aber doch wieder bekommen. Voraussetzung ist dabei, wie oben angesprochen, dass die Mails dort nicht zwischenzeitlich gelöscht wurden. Sie werden zwar zunächst nicht automatisch nochmal abgerufen, wenn man QmailAgent startet, aber man kann sie dann auf dem Server einfach temporär in ein anderes Verzeichnis schieben, dann wieder zurück in den Posteingang. Dann gelten sie wieder als neu und werden nochmal von QmailAgent abgerufen. Anschließend gilt es ggf. doppelte Mails - zumindest im Bereich "Backup", evtl. auch "Sofort" von QmailAgent - zu löschen. Sie sind gekennzeichnet als auf dem Server gelöscht.


Vorbereitung in Autorun

Meine erste Version von QmaiAgent lag auf einem Legacy-Volume, das im System nicht auf die Bezeichnung CACHEDEVx_DATA sondern den Namen MD1_DATA hörte. Das machte mir damals recht viel zu schaffen, weil diese Bezeichnung MD1_DATA offensichtlich nicht nur in den Verlinkungen sondern auch in der Datenbank von QmailAgent auftaucht. Es war mir nicht möglich, diesen Eintrag überall zu finden und dann auch anzupassen. Ich vermute, dass es ähnlich sein wird beim Umzug von einem CACHEDEV zu einem anderen. Irgendwann kam mir dann spontan der Gedanke, dies ganz einfach durch einen eigenen Link zu beheben. Leider war der selbst angelegte Link entgegen der diesbezüglichen Aussage des Supports nicht weiter erhalten nach einem Neustart des NAS. Daher habe ich folgendes kurzerhand in die autorun eingebaut (Doku dazu, wie das gemacht wird, gibt's direkt bei QNAP - einfach mal suchen nach "QNAP" und "autorun").


Bash
#!/bin/sh
mkdir /share/MD1_DATA
ln -s /share/QmailAgent /share/MD1_DATA/QmailAgent
mkdir /share/MD1_DATA/.qpkg
ln -s /share/CACHEDEV1_DATA/.qpkg/qmail /share/MD1_DATA/.qpkg/qmail

Das läuft seither anstandslos. Einzig beim Update auf QTS 5.0 war der automatische Start der autorun in den Einstellungen deaktiviert. Ob das immer so ist oder von mir irgendwie selber verursacht wurde, kann ich nicht sagen. Sollten als mal Mails dennoch nicht da auftauchen, wo man sie erwartet, ist dies ein erster Suchpunkt.


Und zuletzt...

... sei noch gesagt, dass dies alles natürlich nicht allein von mir herausgefunden wurde. Jedem, der hier und da etwas finden, wo er sich denkt: "Das weiß der doch von mir." oder "Das habe ich doch auch schon geschrieben." sei gedankt und er ist eingeladen, dies auch entsprechend zu kommentieren. Auch der QNAP-Support hat mir in diesen Aktionen recht viel geholfen, wenn auch nicht immer konkret bei diesem hier beschriebenen Prozess.