MailMirror ist ein leichtgewichtiges Werkzeug zum lokalen Spiegeln von IMAP‑Postfächern. Es holt alle Mails aus deinen Ordnern ab, zerlegt Punkt‑Notation automatisch in Unterordner und speichert jede Nachricht strukturiert nach Jahr, Monat und Datum mit Betreff. So entsteht eine nachvollziehbare Ablage mit HTML‑Darstellung, Rohdatei, Anhängen und Metadaten. Dank systemd‑Integration lässt sich der Prozess bequem automatisieren und regelmäßig ausführen, ohne manuelles Eingreifen.
📖 MailMirror – Dokumentation
1. Zweck
MailMirror dient zum lokalen Spiegeln von IMAP‑Postfächern. Es speichert jede Mail in einer klaren Ordnerstruktur mit Jahr/Monat und einem Unterordner nach Schema:
Ordner/Unterordner/Jahr/Monat/YYYY-MM-DD_Betreff/
├── mail.html
├── raw.eml
├── meta.json
└── Anhang.pdf
Damit erhältst du eine chronologische und nachvollziehbare Ablage deiner Mails, inklusive Anhängen und Metadaten.
2. Funktionen
- Holt alle IMAP‑Ordner (inkl. Unterordner).
- Zerlegt Punkt‑Notation (
Archiv.Internet.Hosting.Synology) in echte Unterordner (Archiv/Internet/Hosting/Synology). - Speichert jede Mail mit:
- HTML‑Darstellung inkl. Header (Betreff, Absender, Datum, Message‑ID).
- Rohdatei (
raw.eml). - Anhänge im gleichen Ordner.
- Metadaten (
meta.json).
- Ordnername:
YYYY-MM-DD_Betreffunter Jahr/Monat. - Logging:
- Text‑Log (
mailmirror.log) für Statusmeldungen. - JSON‑Log (
mailmirror.jsonl) für Admin‑Panel‑Integration.
- Text‑Log (
3. Projektstruktur
mailmirror/
├── config.env
├── mirror_mail.sh
├── fetch_mail.py
├── utils/
│ ├── helpers.py
│ └── logger.py
└── logs/
├── mailmirror.log
└── mailmirror.jsonl
4. Installation
Abhängigkeiten
sudo apt update
sudo apt install -y python3
Deployment
sudo mkdir -p /opt/mailmirror
sudo cp -r mailmirror/* /opt/mailmirror/
sudo chmod -R 750 /opt/mailmirror
sudo chown -R root:root /opt/mailmirror
sudo mkdir -p /var/lib/mailmirror/work /var/lib/mailmirror/logs
sudo chown -R root:root /var/lib/mailmirror
sudo chmod -R 750 /var/lib/mailmirror
5. Konfiguration
Passe config.env an:
IMAP_SERVER=imap.deinmailserver.de
IMAP_USER=deinuser
IMAP_PASS=deinpasswort
WORKDIR=/var/lib/mailmirror/work
LOG_DIR=/var/lib/mailmirror/logs
TEXT_LOGFILE=/var/lib/mailmirror/logs/mailmirror.log
JSON_LOGFILE=/var/lib/mailmirror/logs/mailmirror.jsonl
MAIL_ID_SCHEME=DATE_SUBJECT
MAX_SUBJECT_DIRLEN=120
6. Nutzung
Manuell starten:
cd /opt/mailmirror
./mirror_mail.sh
Die Mails werden lokal im WORKDIR gespeichert.
7. Automatisierung mit systemd
Service
Erstelle /etc/systemd/system/mailmirror.service:
[Unit]
Description=Mail Mirror (lokal)
After=network-online.target
[Service]
Type=oneshot
WorkingDirectory=/opt/mailmirror
ExecStart=/opt/mailmirror/mirror_mail.sh
User=root
Group=root
[Install]
WantedBy=multi-user.target
Timer (optional)
Erstelle /etc/systemd/system/mailmirror.timer:
[Unit]
Description=Nightly Mail Mirror
[Timer]
OnCalendar=02:00
Persistent=true
[Install]
WantedBy=timers.target
Aktivieren
sudo systemctl daemon-reload
sudo systemctl enable --now mailmirror.timer
8. Logs
- Text‑Log:
/var/lib/mailmirror/logs/mailmirror.log - JSON‑Log:
/var/lib/mailmirror/logs/mailmirror.jsonl
Beispielauszug:
2025-12-03 02:00:01 - INFO - Starte Mail-Fetch
2025-12-03 02:00:02 - INFO - Bearbeite Ordner: INBOX
2025-12-03 02:00:03 - INFO - [OK] UID=123 | Ordner=INBOX | Pfad='INBOX/2025/12/2025-12-02_Projektstatus' | Betreff='Projektstatus' | Anhänge=1
2025-12-03 02:00:04 - INFO - Mail-Fetch abgeschlossen
9. Hinweise
- Punkt‑Notation wird automatisch in Unterordner zerlegt.
- Betreff wird bereinigt und auf
MAX_SUBJECT_DIRLENgekürzt. - Bei fehlendem Datum oder Betreff wird UID als Fallback genutzt.
- Nur lokales Speichern – kein Upload mehr.
- Für große Postfächer kannst du später Delta‑Sync (UID‑Cache) ergänzen.
© 2025 MaDe-Online

