Mailserver – E-Mail Migration mit Imapsync

imapsync LogoBei der Migration eines ganzen Mailserver oder einzelner Postfächer steht man oft vor dem Problem des sauberen Transfers der vorhandenen E-Mails von Server zu Server.

Die einfachste Methode ist es, wenn der Zugriff auf das Dateisystem beider Server gegeben ist. Ist dies der Fall kann man die E-Mails auf Dateisystem-Ebene synchronisieren. Eine weitere Vorraussetzung ist es, dass auf beiden Server die E-Mails im selben Format vorliegen. Sollte dies nicht der Falls sein muss eine andere Lösung gefunden werden.

Postfächer mit Imapsync synchronisieren

Imapsync ist ein Tool für die Kommandozeile. Es erlaubt den rekrusiven Transfer von E-Mails zwischen zwei Imap-Postfächern. Es ist für nahezu alle Plattformen verfügbar und für Linux ist es meist in der Distribution enthalten.

Die Installation von Imapsync unter Centos funktioniert bei aktiviertem EPEL-Repository wie folgt:

Danach ist das Tool startklar.

Die Benutzung von Imapsync ist dem copy-Befehl sehr ähnlich, nur dass einige Parameter für den Login in das Postfach angegeben werden müssen.

Es gibt noch eine große Anzahl an Parameter für das Debuging und Verhalten der Synchronisation. So kann man diese z.B. mit –dry vorab testen, dabei werden noch keine E-Mails synchronisiert.

Eine komplette Liste der Parameter gibt es in der Manpage von Imapsync.

Damit seht einer unkomplizierten E-Mail Migration mit Imapsync nun nichts mehr im Wege.

Imapsync Bash-Script erstellen

Sollte die Migration mehr als ein Postfach umfassen lohnt es sich dazu ein Script zu erstellen. Wie dies aussehen könnte zeigt dieses Beispiel. Dabei wird von gleichen Imap-Zugangsdaten auf beiden Servern ausgegangen. „Mailserver – E-Mail Migration mit Imapsync“ weiterlesen

Python – Flask Cache URL mit Query String als cache_key

Python Micro-Framework Flask
Python Micro-Framework Flask

Wer bei dem Python Microframework Flask die Cache-Funktion für URLs verwendet wird bemerkt haben, dass die Request-Argumente bzw. der Query String per default nicht beachtet wird und so bei verschiedenen Request-Argumenten immer die selbe Seite aus dem Cache ausgeliefert
wird.

Da dies oft nicht gewollt ist, muss eine Möglichkeit gefunden werden den Query String in den Cache_Key einzubeziehen.

Die Cache-Funktion von Flask bietet die Möglichkeit den key_prefix selbst zu definieren. Dass dies auch mit einer anderen Funktion möglich ist, wurde sehr schlau gedacht.

Wir erstellen uns dazu eine eigene Funktion make_cache_key. Dieser übergeben wir die Parameter von dem Seitenaufruf und bekommen einen gehashten Wert aus unseren request.path und den request.args.

Nun passen wir den key_prefix der Cache-Funktion an. „Python – Flask Cache URL mit Query String als cache_key“ weiterlesen