ubuntuusers.de

Batch move Mails nach MailStore Home Restore

Status: Ungelöst | Ubuntu-Version: Ubuntu 14.04 (Trusty Tahr)
Antworten |

SebastianKF

Anmeldungsdatum:
22. Januar 2017

Beiträge: 3

Hallo zusammen, Ich habe folgendes Problem: Mit MailStore Home sichere ich meine berufliche eMail-Struktur und exportiere dann diese auf meinen Server (eine Weiterleitung oder Umleitung ist leider nicht möglich). MailStore Home legt beim Imap-Upload jedoch eine eigene Verzeichnisstruktur auf dem Server an. Um die eMails in die passenden Ordner meines Accounts zu verschieben bedürfte es nach jeder Sicherung sehr viel manueller Arbeit. Ich würde daher gerne mittels Skript unter Ubuntu sämtliche eMail-Dateien in den MailStore Export Ordnern (sprich meine eMails) in die korrespondierenden Ordner meines Mailaccounts verschieben.

Folgend drei Ordnerbeispiele:

.MailStore Export.Exchange suser.Posteingang.Projekte
.MailStore Export.Exchange suser.Posteingang.Projekte.Lehre
.MailStore Export.Exchange suser.Posteingang.Fortbildungen

Die korrespondierenden Zielverzeichnisse lauten:

.Beruf.ZRR [KKG].Projekte
.Beruf.ZRR [KKG].Projekte.Lehre
.Beruf.ZRR [KKG].Fortbildungen

Alle diese Ordner liegen im selben Verzeichnis unter "/var/vmail" Wünschenswert wäre also eine automatische Ersetzung von ".MailStore Export.Exchange suser.Posteingang" durch ".Beruf.ZRR [KKG]". Leider ist dieses nicht ohne weiteres möglich, da die Zielordner bereits existieren und eMails enthalten. Diese liegen immer in einem Unterverzeichnis namens "cur".

So würde exemplarisch aus der einzelnen eMail

"/var/vmail/.MailStore Export.Exchange suser.Posteingang.Projekte/cur/1454077301.M331212P11073.servername.de,S=12645,W=13034:2,S"
"/var/vmail/.Beruf.ZRR [KKG].Projekte/cur/1454077301.M331212P11073.servername.de,S=12645,W=13034:2,S"

werden.

Theoretisch müsste man also vom Vorgehen

  • unter "/var/vmail/" nach Ordnern suchen, welche ".MailStore Export.Exchange suser.Posteingang" im Namen enthalten

  • die Liste aller Dateien im jeweiligen Unterordner "/cur" auslesen (=eMails)

  • die einzelnen Dateien in das Zielverzeichnis verschieben, welches im Pfad lediglich ".MailStore Export.Exchange suser.Posteingang" gegen ".Beruf.ZRR [KKG]" ersetzt hat.

Kann da jemand ein Script draus bauen? Mit PHP könnte ich es, aber hierfür reichen die Zugriffsrechte (zum Glück;-) nicht. Die Shell beherrsche ich leider nicht entsprechend.

Herzlichen Dank, Sebastian

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17625

Wohnort: Berlin

Einfache Methode, divide et impera, teile und herrsche.

1
find /var/vmail/ -path "*/.MailStore Export.Exchange suser.Posteingang.*/cur/*" -type f -exec echo mailmove.sh {} ";" 

Erfasst das alle Dateien und keine zuviel?

Dann das echo entfernen und mailmove.sh schreiben, ausführbar machen, Pfad ...

Was bekommt mailmove.sh für Argumente?

1
/var/mail/.MailStore Export.Exchange suser.Posteingang.Projekte/cur/1454077301.M331212P11073.servername.de,S=12645,W=13034:2,S"

Das ist $1 im Script mailmove.sh:

1
2
3
4
#!/bin/bash
alt=$1
neu=$(echo $alt | sed "s|.MailStore Export.Exchange suser.Posteingang.|.Beruf.ZRR [KKG].|")
echo mv "$alt" "$neu"

Wenn dessen Ausgabe dann auch vernünftig aussieht, das echo wegnehmen.

SebastianKF

(Themenstarter)

Anmeldungsdatum:
22. Januar 2017

Beiträge: 3

Lieber "user_unknown",

1000 Dank -Das klappt astrein. Dein Skript verrichtet nun als Cronjob den regelmäßigen Mailtransfer.

Vielen herzlichen Dank für die Hilfe!! Sebastian

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

Hi Sebastian,

im nachhinein noch ein herzliches Willkommen hier auf dem Forum !

Und noch eine handwerkliche Bemerkung zum Skript von user_unknown:
An einer Stelle ist dort unsauber ge"quotet" - mit der Folge, dass es krachen würde, sobald im Dateipfad "$alt" mehrere Leerzeichen oder sowas vorkämen.

Das solltest Du also noch korrigieren, dann ist es "wasserdicht":

#!/bin/bash
alt=$1
neu=$(echo  "$alt"  | sed "s|.MailStore Export.Exchange suser.Posteingang.|.Beruf.ZRR [KKG].|")
echo mv "$alt" "$neu"

LG,

track

SebastianKF

(Themenstarter)

Anmeldungsdatum:
22. Januar 2017

Beiträge: 3

Hallo track, Danke, das ist ein guter Hinweis.

Antworten |