Meine E-Mail-Konten rufe ich für gewöhnlich per IMAP ab. Das ist zwar einerseits komfortabel, weil auf all meinen Geräten derselbe Stand vorhanden ist, andererseits bin ich natürlich von der Verfügbarkeit des Mailservers und dem Ausbleiben technischer Pannen beim jeweiligen Provider abhängig. Hinzu kommt das Risiko versehentlich gelöschter E-Mails.
Aus diesem Grund habe ich mir mithilfe von Getmail 5.4 eine eine Archivierung auf meinem Homeserver gebastelt. Diese läuft alle paar Stunden, holt neue Mails aus den Postfächern ab und speichert sie in einem lokalen Maildir. Dabei werden ungelesene Mails nicht als gelesen markiert und es werden auch keine Mails auf dem Server gelöscht. Das einzige Problem, das ich noch nicht lösen konnte: Wenn ich eine Mail in einen anderen IMAP-Ordner verschiebe, lädt Getmail sie erneut herunter. Aber damit kann ich leben.
Ich habe dazu folgende Ordnerstruktur und einige Dateien angelegt:
/data/mail
├── getall.sh
├── getall.log
├── example@gmail.com
│ ├── conf
│ │ └── getmailrc
│ ├── log
│ │ └── getmail.log
│ └── maildir
│ ├── cur
│ ├── new
│ └── tmp
├── me@example.com
│ ├── conf
│ │ └── getmailrc
│ ├── log
│ │ └── getmail.log
│ └── maildir
│ ├── cur
│ ├── new
│ └── tmp
└── <weitere E-Mail-Adressen>
└── …
getall.sh
ruft Getmail mit den entsprechenden Konfigurationsdateien pro Unterverzeichnis auf:
#!/bin/bash
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
echo "Script run $(date)"
for i in ${DIR}/*/conf
do
echo $i
cd $i
getmail -g./
done
echo "-------------------"
Ich rufe getall.sh
einmal am Tag via cron auf.
0 3 * * * /bin/bash /data/mail/getall.sh >> /data/mail/getall.log 2>&1
Für die Gmail-Adresse sieht meine Getmail-Konfiguration getmailrc
wie folgt aus:
[retriever]
type = SimpleIMAPSSLRetriever
server = imap.gmail.com
username = example@gmail.com
password = PASSWORD1234
mailboxes = ALL
use_peek = true
[destination]
type = Maildir
path = /data/mail/example@gmail.com/maildir/
[options]
verbose = 1
message_log = /data/mail/example@gmail.com/log/getmail.log
read_all = false
Die heruntergeladenen Mails landen als einzelne Dateien in maildir/new
. Die IMAP-Ordnerstruktur geht dabei zunächst verloren, ist in den Mail-Dateien aber in einem zusätzlichen Header-Feld X-getmail-retrieved-from-mailbox
noch vermerkt, sodass man sie bei Bedarf schon rekonstruieren könnte.