Mailboxen mit IMAP TOOLS zwischen IMAP Servern verschieben

Version 1.0

Author: Falko Timme <ft [at] falkotimme [dot] com>, Christian Schmalfeld <c [dot] schmalfeld [at] projektfarm [dot] de>

Follow me on Twitter

Dieses How-to erklärt, wie man mit Hilfe von IMAP TOOLS Mailboxen zwischen IMAP Servern verschieben können. IMAP TOOLS ist eine Sammlung von Perl Scripts welche es Ihnen erlaubt, diverse Aktionen mit IMAP aber auch POP3 Servern durchzuführen. In diesem Artikel werde ich mich auf die Skripte imapcopy.pl (kopiert Nachrichten und Mailboxen von einem IMAP Server auf den anderen) und pop3toimap.pl (kopiert POP3 Nachrichten auf einen IMAP Server) konzentrieren. Beide Skripts unterstützen SSL. Wählen Sie Port 993 (995 für POP3) aus um eine SSL Verbindung zu initiieren. Ist der Port 143 (110 für POP3)  werden sie versuchen eine nicht-SSL Verbindung herzustellen. Mit jedem anderen Wert wird der Port darauf getestet ob er SSL Verbindungen unterstützt. Ist dies der Fall, wird SSL benutzt, um die Verbindung herzustellen, andernfalls nicht.

Für die Inhalte dieses Tutorials gebe ich keinerlei Garantie!

1 Vorbemerkung

Ich benutze in diesem Fall zwei Server:

  • server1.example.com (Quelle)
  • server2.example.com (Ziel)

Ich möchte die Mailbox sales@example.com (Benutzername: sales@example.com, Passwort: secret) auf dem Server server1.example.com zur Mailbox sales@example.com auf dem Server server2.example.com verschieben (Benutzername und Passwort wie die selben wie auf server1.example.com).

2 Vor dem Start

Werfen Sie vor dem Start einen Blick in beide Mailboxen um zu sehen, was sie beinhalten (Sie können dies mit einem Email Programm wie Outlook, Thunderbird, oder einem web-basierten Email PRogramm wie Squirrelmail tun – Ich benutze in diesem Fall Squirrelmail).

server1.example.com:

server2.example.com:

Nach dem Verschieben sollten die drei Nachrichten auf server1.example.com auf server2.example.com verfügbar sein.

3 Installation von IMAP TOOLS

Es macht keinen Unterschied ob Sie IMAP TOOLS auf server1.example.com oder server2.example.com installieren – Sie können sie genausogut auf einem dritten, unbeteiligten Server installieren.

Laden Sie die IMAP TOOLS Skripts wie folgt in das /usr/local/imap_tools/ Verzeichnis herunter:

cd /usr/local/

mkdir imap_tools

cd imap_tools

wget http://www.athensfbc.com/imap_tools/files/imap_tools_V1.105.tar.gz

tar xvfz imap_tools_V1.105.tar.gz

Nun müssen Sie die Perl Skripts ausführbar machen:

chmod +x /usr/local/imap_tools/*.pl

4 Emails mit imapcopy.pl von einem IMAP Server auf einen anderen IMAP Server verschieben

Die Benutzung von imapcopy.pl läuft wie folgt:

/usr/local/imap_tools/imapcopy.pl -S host1[:port]/user1/password1 -D host2[:port]/user2/password2

Der Befehl, um Emails von sales@example.com auf server1.example.com nach sales@example.com auf server2.example.com lautet demnach:

/usr/local/imap_tools/imapcopy.pl -S server1.example.com/sales@example.com/secret -D server2.example.com/sales@example.com/secret

Hier ist eine Beispielausgabe:

root@server1:/usr/local/imap_tools# /usr/local/imap_tool/imapcopy.pl -S server1.example.com/sales@example.com/secret -D server2.example.com/sales@example.com/secret

/usr/local/imap_tools/imapcopy.pl starting

Connected to server1.example.com on port 143

Authenticating to server1.example.com as sales@example.com

Connected to server2.example.com on port 143

Authenticating to server2.example.com as sales@example.com

Number of mailboxes to process: 5

Drafts mailbox is empty

Junk mailbox is empty

Trash mailbox is empty

Sent mailbox is empty

Copied 3 messages to INBOX

Copied 3 total messages

root@server1:/usr/local/imap_tools#

Auf dem Zielserver (server2.example.com) sollten Sie nun die Nachrichten vom Quellserver sehen können server1.example.com:

server2.example.com:

5 Emails mit pop3toimap.pl von einem POP3 Server auf einen IMAP Server verschieben

Die Benutzung von pop3toimap.pl läuft wie folgt:

/usr/local/imap_tools/pop3toimap.pl -p POP3host[:port] -i IMAPhost[:port] -u users_file

users_file hat das folgende Format:

popUsername password imapUsername password

Erstellen Sie die Datei  /usr/local/imap_tools/users_file, welche die Login Daten enthält:

vi /usr/local/imap_tools/users_file

sales@example.com secret sales@example.com secret

Der Befehl um Emails von sales@example.com auf dem POP3 Server server1.example.com nach sales@example.com auf dem IMAP Server server2.example.com zu verschieben lautet demnach:

/usr/local/imap_tools/pop3toimap.pl -p server1.example.com -i server2.example.com -u /usr/local/imap_tools/users_file

Erhalten Sie Fehlermeldungen wie

Unexpected response to SELECT INBOX. command: 1 NO Mailbox does not exist, or must be subscribed to.

unexpected APPEND response: 1 NO Access denied for APPEND on INBOX. (ACL „i“ required)

öffnen Sie pop3toimap.pl

vi /usr/local/imap_tools/pop3toimap.pl

… kommentieren Sie Zeile 123 aus ($mailbox = ‚INBOX‘ unless $mailbox;) und fügen Zeile 124 hinzu ($mailbox = ‚INBOX‘;):

[...]
 foreach $msgnum ( @popMsgList ) {
 if ( $range ) {
 Log("msgnum $msgnum") if $debug;
 next if $msgnum < $lower;
 next if $msgnum > $upper;
 }
 Log("Fetching POP message $msgnum") if $debug;
 $msg = getPOPMsg( $msgnum, $p_conn );

 getFlag( $msg, $flag );
 getDate( $msg, $date );

 next if $msg eq '';

 #$mailbox = 'INBOX' unless $mailbox;
 $mailbox = 'INBOX';
 selectMbx( $mailbox, $i_conn );

 if ( insertMsg(*msg, $mailbox, $date, $flag, $i_conn ) ) {
 $copied++;
 $grandTotal++;
 Log("$copied messages migrated") if $copied/100 == int($copied/100);

 # Delete the message from the POP server if the delete flag is set
 deletePOPMsg( $msgnum, $p_conn ) if $delete;

 }
 }
[...]

Benutzen Sie dann erneut den

/usr/local/imap_tools/pop3toimap.pl -p server1.example.com -i server2.example.com -u /usr/local/imap_tools/users_file

Befehl.

So sieht eine Beispielausgabe aus:

root@server1:/usr/local/imap_tools# /usr/local/imap_tools/pop3toimap.pl -p server1.example.com -i server2.example.com -u /usr/local/imap_tools/users_file

pop3toimap 1.3 starting

There are 1 users to be migrated

Connected to server1.example.com on port 110

Connected to server2.example.com on port 143

Migrating sales@example.com on server1.example.com to sales@example.com on server2.example.com (3 messages)

Summary of POP3 -> IMAP migration

Users migrated  1

Total messages  3

Total bytes     2912

root@server1:/usr/local/imap_tools#

Auf dem Zielserver (server2.example.com) sollten Sie nun Emails von server1.example.com sehen können:

server2.example.com:

6 Links

Das könnte dich auch interessieren …