getmail für eml2pdf, so holst du deine Emails vom SERVER und übergibst sie automatisch an eml2pdf. Auch Filter kannst du definieren !
Der folgende Beitrag ist auf Anregung von „Samke“, einen Benutzer von eml2pdf, entstanden. Samke hat sehr gute Erfahrungen mir getmail gemacht, um Emails automatisch abzurufen und an eml2pdf zu Verarbeitung zu übergeben.
Einfache Konfiguration für 1-3 E-Mail-Adressen
Das Ziel
E-Mails von mehreren Konten automatisch abrufen und alle EML-Dateien direkt in einem Verzeichnis (./eml-import/) ablegen – bereit für die Weiterverarbeitung mit Tools wie eml2pdf.
Die Lösung: Maildir + automatisches Verschieben
Wir nutzen das bewährte Maildir-Format (jede E-Mail als eigene .eml-Datei) und verschieben die Dateien einfach aus dem Unterordner new/ nach oben.
Video: getmail für eml2pdf, Emails automatisch abrufen
Sprache: 🇩🇪|🇬🇧
☝️ Benutze YouTube Untertitel für alle Sprachen.
1. Verzeichnisstruktur vorbereiten
bash
mkdir -p getmail-docker/{config,eml-import,logs}
cd getmail-docker
2. Konfigurationsdateien für bis zu 3 Konten
Konto 1: Gmail – config/getmailrc-gmail
ini
[retriever] type = SimpleIMAPSSLRetriever server = imap.gmail.com port = 993 username = [email protected] password = TestPasswort.1 # Bei 2FA: App-Passwort verwenden! [destination] type = Maildir path = /eml-import/ [options] verbose = 2 delete = false delete_after = 0 max_message_size = 0 message_log = /logs/getmail-gmail.log
Konto 2: Outlook – config/getmailrc-outlook
ini
[retriever] type = SimpleIMAPSSLRetriever server = outlook.office365.com port = 993 username = [email protected] password = EinAnderesPasswort [destination] type = Maildir path = /eml-import/ [options] verbose = 2 delete = false delete_after = 0 max_message_size = 0 message_log = /logs/getmail-outlook.log
Konto 3: Web.de – config/getmailrc-webde
ini
[retriever] type = SimpleIMAPSSLRetriever server = imap.web.de port = 993 username = [email protected] password = WebdePasswort [destination] type = Maildir path = /eml-import/ [options] verbose = 2 delete = false delete_after = 0 max_message_size = 0 message_log = /logs/getmail-webde.log
3. Erklärung der wichtigsten getmail-Optionen
Retriever-Abschnitt (Server-Verbindung)
| Option | Beschreibung | Beispiel |
|---|---|---|
| type | Protokoll und Verschlüsselung | SimpleIMAPSSLRetriever (IMAP mit SSL), SimplePOP3SSLRetriever (POP3 mit SSL) |
| server | Adresse des Mailservers | imap.gmail.com, outlook.office365.com, imap.web.de |
| port | Server-Port | 993 (IMAP SSL), 995 (POP3 SSL) |
| username | Vollständige E-Mail-Adresse | [email protected] |
| password | Passwort oder App-Passwort | TestPasswort.1 oder 16-stelliges App-Passwort bei Google |
Destination-Abschnitt (Zielspeicher)
| Option | Beschreibung | Beispiel |
|---|---|---|
| type | Format der Speicherung | Maildir (einzelne EML-Dateien in new/, cur/, tmp/) |
| path | Zielverzeichnis im Container | /eml-import/ |
Options-Abschnitt (Verhalten)
| Option | Beschreibung | Beispiel |
|---|---|---|
| verbose | Ausführlichkeit der Ausgabe (0-3) | 2 (mittlere Detailstufe) |
| delete | Mails nach Download vom Server löschen? | false = behalten, true = löschen |
| delete_after | Automatisch löschen nach X Tagen | 0 = deaktiviert, 30 = nach 30 Tagen |
| max_message_size | Maximale Größe pro Mail in Bytes | 0 = unbegrenzt, 5242880 = 5 MB |
| message_log | Pfad zur Logdatei | /logs/getmail.log |
| delivered_to | „Delivered-To“-Header hinzufügen? | false |
| received | „Received“-Header hinzufügen? | false |
Wichtige Hinweise zu den Optionen
| Option | Bedeutung |
|---|---|
| delete = false | Mails bleiben auf dem Server (empfohlen) |
| delete = true | Mails werden vom Server gelöscht – nur mit Backup! |
| delete_after = 30 | Löscht Mails automatisch 30 Tage nach Download |
| max_message_size = 0 | Alle Mails, egal wie groß |
| max_message_size = 5242880 | Nur Mails bis 5 MB |
| verbose = 2 | Detaillierte Ausgabe (gut für Einrichtung) |
4. Docker-Compose Datei: docker-compose.yml
yaml
version: '3.8'
services:
getmail:
image: python:3.11-slim
container_name: getmail-multi
restart: unless-stopped
volumes:
- ./config:/config:ro
- ./eml-import:/eml-import
- ./logs:/logs
environment:
- TZ=Europe/Berlin # Oder Asia/Bangkok, je nach Wunsch
command: >
sh -c "
pip install --no-cache-dir getmail6 &&
echo '=== getmail Multi-Account Starter ===' &&
while true; do
# Alle Konfigurationsdateien durchgehen
for rcfile in /config/getmailrc-*; do
if [ -f \"\$rcfile\" ]; then
echo \"\$(date): Verarbeite \$(basename \$rcfile)\"
getmail --getmaildir /config --rcfile=\$(basename \$rcfile)
fi
done
# WICHTIG: Alle neuen EMLs direkt nach /eml-import/ verschieben
if [ -d /eml-import/new ] && [ \"\$(ls -A /eml-import/new/ 2>/dev/null)\" ]; then
echo \"\$(date): Verschiebe neue EMLs nach /eml-import/\"
mv /eml-import/new/* /eml-import/ 2>/dev/null || true
echo \"\$(date): Fertig - EMLs bereit für die Weiterverarbeitung\"
fi
echo \"\$(date): Warte 5 Minuten bis zum nächsten Durchlauf\"
sleep 300
done
"
5. Starten und testen
bash
# Container starten docker-compose up -d # Logs ansehen docker-compose logs -f # Nach einigen Minuten: Prüfen, ob EMLs ankommen ls -la ./eml-import/ # Beispiel-Ausgabe: # -rw-r--r-- 1 user user 12543 Feb 21 12:34 1701234567.12345_1.server:2, # -rw-r--r-- 1 user user 8972 Feb 21 12:34 1701234568.12345_2.server:2, # -rw-r--r-- 1 user user 152034 Feb 21 12:35 1701234569.12345_3.server:2,
6. Was passiert hier genau?
| Schritt | Beschreibung |
|---|---|
| 1 | Container startet, installiert getmail |
| 2 | Alle 5 Minuten werden alle Konfigurationsdateien (getmailrc-*) verarbeitet |
| 3 | Jedes Konto ruft seine E-Mails ab und speichert sie im Maildir-Format |
| 4 | Neue Mails landen zuerst in /eml-import/new/ |
| 5 | Unser Skript verschiebt alle Dateien aus new/ nach /eml-import/ |
| 6 | FERTIG: Alle EMLs liegen direkt im Hauptverzeichnis |
7. Wichtige Hinweise
Google Mail mit 2-Faktor-Authentifizierung
Bei Google mit 2FA kein normales Passwort verwenden, sondern ein App-Passwort:
- Google-Konto → Sicherheit → App-Passwörter
- 16-stelliges Passwort generieren
- In der Konfiguration eintragen
Was ist in einer .eml-Datei enthalten?
- Komplette E-Mail mit Text und allen Anhängen (PDFs, Bilder, etc.)
- Anhänge sind Base64-codiert in der Datei eingebettet
- Keine separaten Dateien nötig!
Für die Weiterverarbeitung mit eml2pdf
bash
# Alle EMLs in PDFs konvertieren eml2pdf ./eml-import/ ./pdf-ausgabe/
8. Optional: Filtern nach Absender oder Betreff
Wenn Sie nur bestimmte E-Mails behalten möchten (z.B. nur von Cloudflare oder mit „Rechnung“ im Betreff):
ini
[retriever] type = SimpleIMAPSSLRetriever server = imap.gmail.com username = [email protected] password = TestPasswort.1 [filter] type = Filter_classifier expression = from pattern = .*@(cloudflare|paypal)\.com case_sensitive = false [destination] type = Maildir path = /eml-import/ [options] verbose = 2
9. Fehlerbehebung
bash
# Manuell einmal ausführen (zum Testen) docker exec getmail-multi getmail --getmaildir /config --rcfile=getmailrc-gmail # Logs prüfen cat logs/getmail-gmail.log # Wenn etwas schiefläuft: Container neustarten docker-compose restart
Zusammenfassung
Mit dieser einfachen Konfiguration:
- ✅ Bis zu 3 E-Mail-Konten (beliebig erweiterbar)
- ✅ Alle EMLs direkt in
/eml-import/– genau dort, wo Sie sie brauchen - ✅ Jede EML enthält Text + Anhänge – alles in einer Datei
- ✅ Perfekt für eml2pdf, Archivierung, Backup
- ✅ Google Mail mit 2FA unterstützt (via App-Passwort)
- ✅ Einfach zu warten und zu erweitern
Die Mails werden alle 5 Minuten abgerufen und automatisch ins richtige Verzeichnis verschoben – ein vollautomatischer, zuverlässiger Workflow!

Link zur Unterstützung / Spende für den Kanal
Wenn meine Beiträge hilfreich sind oder dir geholfen haben, würde ich mich über eine Unterstützung sehr freuen 🙏
#Docker #eml2pdf #EmailToPdfKonverter #Getmail #AutomatischerEmailAbruf #Paperless #DMS