Imap Mailordner syncronisieren mit imapsync


Imapsync ist ein Kommandozeilen Werkzeug mit dem man E-Mails von einem Imapserver auf einen anderen übertragen kann. Es läuft recht stabil und man kann z.B. mittels Cron damit auch Mailboxen zwischen verschiedenen Providern synchronisieren.

Installieren lässt sich imapsync z.B. unter Debian oder Ubuntu mittels

apt-get install imapsync

Das imapsync Kommando ist relativ einfach aufgebaut – es müssen die Hostnamen der beiden Imapserver die man synchronisieren will angegeben werden und die entsprechenden Usernamen und Passwörter (in dem Beispiel geht das über eine Passwortdatei, das Passwort kann auch über kommandozeile übergeben werden, erscheint dann aber bei den aktuellen Prozessen – wenn man z.B. ps -auxw |grep imapsync aufrufen würde sieht man das Passwort)

[code lang=“bash“]
imapsync –host1 imap.main-server.de –user1 Username1 –passfile1 /etc/secret1 –host2 imap.dein-server.de –user2 Username2 –passfile2 /etc/secret2
[/code]

Um automatisch mehrer Accounts zu synchronisieren habe ich nachfolgendes Shellskript geschrieben.

[code lang=“bash“]

#!/bin/bash

CMD=/usr/bin/imapsync
DATA=/tmp/data
HOST1=mail1.example.com
HOST2=mail2.example.com

#EMAIL=`cat $DATA |cut -d „;“ -f 1`
#PASSWD=`cat $DATA |cut -d „;“ -f 2`

for i in `cat $DATA`
do
EMAIL=`echo $i |cut -d „;“ -f 1`
PASSWD=`echo $i |cut -d „;“ -f 2`

echo „Syncronisiere Daten für Email: $EMAIL, (Passwort: $PASSWD)“

echo „==============================================================“

$CMD –host1 $HOST1 –user1 $EMAIL –password1 $PASSWD –host2 $HOST2 –user2 $EMAIL –password2 $PASSWD

echo „==============================================================“

done

[/code]

Das Shellscript erwartet eine Datei /tmp/data in der Form:

[code lang=“bash“]

username2@example.com;passwort_geheim

username2@example.com;passwort_geheim

username2@example.com;passwort_geheim

[/code]

Mit anderen Parametern werden die E-Mails umgezogen von einem zum anderen ImapServer (und auf dem Quellserver gelöscht) – siehe Beispiel unten:

[code lang=“bash“]

#!/bin/bash

CMD=/usr/bin/imapsync
DATA=/tmp/data
HOST1=host1.example.com

HOST2=host2.example.com

#EMAIL=`cat $DATA |cut -d „;“ -f 1`
#PASSWD=`cat $DATA |cut -d „;“ -f 2`

for i in `cat $DATA`
do
EMAIL=`echo $i |cut -d „;“ -f 1`
PASSWD=`echo $i |cut -d „;“ -f 2`

echo „Syncronisiere Daten für Email: $EMAIL, (Passwort: $PASSWD)“

echo „==============================================================“

$CMD –delete –expunge1 –host1 $HOST1 –user1 $EMAIL –password1 $PASSWD –host2 $HOST2 –user2 $EMAIL –password2 $PASSWD

echo „==============================================================“

done
[/code]
Weiterführende Links:

Homepage von imapsync

Freshmeat Projektseite vom imapsync

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.