netzwerke:imap

IMAP

Die Abkürzung IMAP steht für Internet Message Access Protocol. Das Protokoll IMAP erlaubt den Zugriff auf und die Verwaltung von empfangenen E-Mails. Im Gegensatz zum weiter verbreiteten Protokoll POP3 verbleiben die Mails in der Regel auf dem Mailserver und werden nur bei Bedarf auf den Client-Rechner übertragen. IMAP wurde mit dem Ziel entworfen, den Zugriff auf Mailboxen und Nachrichten so bereitzustellen, als befänden sich diese auf dem lokalen Rechner. Im Gegensatz zu POP3 verbleiben die eMails auf dem Server.

Die bei der IANA registrierte Portnummer für IMAP ist 143. Ein primär vor der Einführung von STARTTLS verwendeter zusätzlicher Port für mit SSL gesicherte Verbindungen (IMAPS) steht mit 993 zur Verfügung.

Leider gibt es einige Protokoll-Erweiterungen die nicht von allen Clients unterstützt werden, z.B. Namespaces die für öffentliche Ordner gedacht sind.

Ein einfacher Test ob ein Login klappt 1):

telnet SERVER 143 
a1 login USER PASSWORT
a2 list "" "*"
a3 logout
  • Dsync - Migration hin zu Dovecot 2.1x
  • Imapsize: a freeware Windows application that allows you to quickly and efficiently manage your IMAP mail accounts

offlineimap sichert einen entfernten IMAP-Server in lokale maildir-Verzeichnisse.

offlineimap FAQ

Bei Debian6 ist das Paket enthalten:

aptitude install offlineimap
cp /usr/share/doc/offlineimap/examples/offlineimap.conf.minimal  ~/.offlineimaprc
# Sample minimal config file.  Copy this to ~/.offlineimaprc and edit to
# suit to get started fast.

[general]
accounts = st

[Account Test]
localrepository = Local
remoterepository = Remote

[Repository Local]
type = Maildir
localfolders = ~/Test

[Repository Remote]
type = IMAP
remotehost = examplehost
remoteuser = jgoerzen

die u.g. Tools sind für die Migration Quelle → Ziel vorgesehen. Falls eine Syncronisation gewünscht ist, könnten die folgenden Tools passen:

imapcopy: IMAP synchronization, copy and migration tool (linux) - :!: im Test mit Version 1.04-1 traten Fehler auf

imapcopy.cfg:

SourceServer source.domain.tld
SourcePort 143
DestServer destination.domain.tld
DestPort 143

CreateEmptyFolders

skipfolder Test

#skipfolder INBOX.Trash
#skipfolder INBOX.Sent
#skipfolder "INBOX.Sent Objects"

#       SourceUser SourcePassword   DestinationUser DestinationPassword
Copy    "USER1"       "PASS1"         "USER2"          "PASS2"

imapsync: IMAP migration tool - von der Homepage nur noch kommerziell erhältlich, die Lizenz erlaubt aber das freie kopieren, daher download von github kostenlos möglich.

Links:

Installation/Verwendung:

  1. Unter Debian sind die Abhängigkeiten schnell nachinstalliert:
    aptitude install libmail-imapclient-perl libdigest-md5-file-perl libterm-readkey-perl libio-socket-ssl-perl libfile-spec-perl libdigest-hmac-perl
  2. Entpacken in (z.B.) /srv/imap-migration/imapsync-1.488 (Datei imapsync muss hier liegen).
  3. Datei mit Passwörtern anlegen (damit später die Passwörter nicht in der Prozessliste stehen!)
    1. Passwort_Quelle.txt
    2. Passwort_Ziel.txt
  4. imapsync aufrufen:
    #!/bin/sh
    imapsync_folder="/srv/imap-migration/imapsync-1.488"
     
    # only help? -> uncomment next 2 lines:
    # "$imapsync_folder"/imapsync --help
    # exit
     
     
    # --dry \
    # --tls1 --tls2 \
     
    "$imapsync_folder"/imapsync \
    --subscribe_all \
    --host1 Quellserver --user1 Quellbenutzer --passfile1 Passwort_Quelle.txt \
    --host2 Zielserver --user2 Zielbenutzer --passfile2 Passwort_Ziel.txt \
    --exclude '^Ordner_Beginn_ignorieren|Zeichfolge2'

:!: Der Aufruf ohne SSL/TLS auf beiden Seiten ist merklich schneller 2), bei sehr großen Postfächer macht das anders keinen Sinn.

IMAP-Proxy-Server können Anfragen von Clients beschleunigen und auf verschiedene (nach außen) nicht sichtbare IMAP-Server verteilen (interessant bei großen Migrationen). Zudem kann dadurch eine Art Lastverteilungs realisert werden wenn dies vom IMAP-Server nicht gut unterstützt wird. Zu beachten ist das sich der Funktionsumfang deckt bzw. Befehle direkt weitergeleitet werden damit nicht der Proxy den Funktionsumfang beschränkt.

  • dovecot (director-mode)
  • Perdition
  • Imapproxy
  • Aggregator (nur Cyrus)

1)
alternativ netcat statt telnet
2)
In Version 1.488 mit SSL/TLS: 1.8 messages/s vs. 18.9 messages/s ohne Verschlüsselung