Imap Mailordner syncronisieren mit imapsync   Vor kurzem aktualisiert!


Imapsync ist ein Kommandozeilenwerkzeug, 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)

imapsync --host1 imap.main-server.de --user1 Username1 --passfile1 /etc/secret1 --host2 imap.dein-server.de --user2 Username2 --passfile2 /etc/secret2

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

#!/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

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

username2@example.com;passwort_geheim

username2@example.com;passwort_geheim

username2@example.com;passwort_geheim

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

#!/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

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

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre, wie deine Kommentardaten verarbeitet werden.