27.7. Einführung in mailsync

mailsync eignet sich vor allem für die folgenden drei Aufgaben:

27.7.1. Konfiguration und Verwendung

mailsync unterscheidet zwischen der Mailbox an sich (einem so genannten Store) und der Verknüpfung zwischen zwei Mailboxen (einem so genannten Channel). Die Definitionen der Stores und Channels sind in der ~/.mailsync abgelegt. Die folgenden Abschnitte geben einige Beispiele für Stores.

Eine einfache Definition kann wie folgt aussehen:



store saved-messages { 
   pat Mail/saved-messages
prefix  Mail/
}

Mail/ ist ein Unterverzeichnis im Home-Verzeichnis des Benutzers, das Ordner mit E-Mails enthält, unter anderem den Ordner saved-messages. Wird nun mailsync mit dem Befehl mailsync -m saved-messages gestartet, wird ein Index aller Nachrichten in saved-messages aufgelistet. Für die folgende Definition:



store localdir { 
pat     Mail/* 
prefix  Mail/ 
} 

listet der Befehl mailsync -m localdir alle Nachrichten auf, die unter Mail/ gespeichert sind. Der Befehl mailsync localdir listet dagegen die Ordnernamen auf. Die Spezifikation eines Store auf einem IMAP-Server sieht wie folgt aus:



store imapinbox {
server {mail.edu.harvard.com/user=gulliver}
ref    {mail.edu.harvard.com}
pat    INBOX 
}

Das obige Beispiel adressiert nur den Hauptordner auf dem IMAP-Server. Ein Store für die Unterordner würde wie folgt aussehen:



store imapdir {
server {mail.edu.harvard.com/user=gulliver}
ref {mail.edu.harvard.com}
pat INBOX.*
prefix  INBOX.
}

Unterstützt der IMAP-Server verschlüsselte Verbindungen, sollte die Server-Spezifi­kation wie folgt geändert werden:



server {mail.edu.harvard.com/ssl/user=gulliver}

oder, falls das Server-Zertifikat nicht bekannt ist, wie folgt:



server {mail.edu.harvard.com/ssl/novalidate-cert/user=gulliver}

Das Präfix wird später erklärt.

Nun sollen die Ordner unter Mail/ mit den Unterverzeichnissen auf dem IMAP-Server verbunden werden:



channel folder localdir imapdir {
msinfo .mailsync.info
} 

mailsync verfolgt mithilfe der Datei msinfo, welche Nachrichten bereits synchronisiert wurden.

Der Befehl mailsync folder bewirkt Folgendes:

  • Auf beiden Seiten wird das Mailbox-Muster erweitert.

  • Von den resultierenden Ordnernamen wird jeweils das Präfix entfernt.

  • Die Ordner werden paarweise synchronisiert (bzw. angelegt, falls noch nicht vorhanden).

Der Ordner INBOX.sent-mail auf dem IMAP-Server wird also mit dem lokalen Ordner Mail/sent-mail synchronisiert (obige Definitionen vorausgesetzt). Die Synchronisierung zwischen den einzelnen Ordnern wird wie folgt durchgeführt:

  • Existiert eine Nachricht schon auf beiden Seiten, geschieht nichts.

  • Fehlt die Nachricht auf einer Seite und ist neu (d. h. nicht in der Datei msinfo protokolliert), wird sie dorthin übertragen.

  • Existiert die Nachricht nur auf einer Seite und ist alt (d. h. bereits in der Datei msinfo protokolliert), wird sie dort gelöscht (da sie offenbar auf der anderen Seite existiert hatte und dort gelöscht wurde).

Um im Voraus ein Bild davon zu erhalten, welche Nachrichten bei einer Synchronisierung übertragen und welche gelöscht werden, starten Sie mailsync mit einem Channel und einem Store gleichzeitig: mailsync folder localdir. Dadurch erhalten Sie eine Liste aller Nachrichten, die auf dem lokalen Host neu sind, sowie eine Liste aller Nachrichten, die bei einer Synchronisierung auf der IMAP-Seite gelöscht werden würden. Ähnlich erhalten Sie mit mailsync folder imapdir sowohl eine Liste aller Nachrichten, die auf der IMAP-Seite neu sind, als auch eine Liste aller Nachrichten, die bei einer Synchronisierung auf dem lokalen Host gelöscht werden würden.

27.7.2. Potenzielle Probleme

Im Fall eines Datenverlusts ist es das sicherste Vorgehen, die zugehörige Channel-Protokolldatei msinfo zu löschen. Dadurch gelten alle Nachrichten, die nur auf jeweils einer Seite existieren, als neu und werden bei der nächsten Synchronisierung übertragen.

Nur Nachrichten mit einer Message-ID werden in die Synchronisierung einbezogen. Nachrichten ohne Message-ID werden einfach ignoriert, d. h. sie werden weder übertragen noch gelöscht. Das Fehlen einer Message-ID wird in der Regel durch fehlerhafte Programme beim Senden oder Schreiben einer Nachricht verursacht.

Auf bestimmten IMAP-Servern werden der Hauptordner mit INBOX und Unterordner mit einem beliebigen Namen angesprochen (im Gegensatz zu INBOX und INBOX.name). Dadurch ist es bei solchen IMAP-Servern nicht möglich, ein Muster ausschließlich für die Unterordner anzugeben.

Die von mailsync benutzten Mailbox-Treiber (c-client) setzen nach der erfolgreichen Übertragung der Nachrichten an einen IMAP-Server ein spezielles Status-Flag. Daher können einige E-Mail-Programme, wie z. B. mutt, diese Nachrichten nicht als neu erkennen. Sie können das Setzen dieses speziellen Status-Flags mithilfe der Option -n verhindern.

27.7.3. Weitere Informationen

Die im Paket mailsync enthaltene README-Datei unter /usr/share/doc/packages/mailsync/ bietet weitere Informationen. Von besonderem Interesse ist in diesem Zusammenhang auch RFC 2076 „Common Internet Message Headers“.