Wer ein Business führt, der weiss genau, dass er alle eMails schön immer archivieren muss – in der Schweiz gibt es so eine Aufbewahrungspflicht für 10 Jahre und ich glaube in der EU ist es ähnlich.
Es gibt viele teure Tools, die man kaufen kann, womit man dann die eMails archivieren kann.
Wie ihr wisst, ich bin nicht nur faul, sondern mag es auch nicht, dauernd neue Tools kaufen zu müssen, darum suche ich immer einfache, saubere Lösungen.
Heute zeige ich euch, wie ich am Mac meine eMails abspeichere / archiviere.
Ich verwende das normale Mail Programm am Mac und habe für alle Kunden einzelne Ordner. Wenn so ein Kunde dann nicht mehr bei mir ist, dann öffne ich einen neuen Ordner am Mac und ziehe alle eMails von diesem Kunden in diesen Ordner.
Das Ganze wird so organisiert.
eMail-Ordner
- Kunde 1
- Kunde 2
- Kunde 3
- ....
Damit sind alle eMails bereits als .eml Files abgespeichert.
Das Problem ist aber, dass diese eMails in diesem Ordner alle ein falsches Erstellungsdatum / Änderungsdatum haben. Sie haben nämlich dann den Tag / die Zeit von heute.
Ich will jetzt aber, dass ich hier schon an dem Erstellungsdatum / Änderungsdatum sehe, von wann diese eMail ist, dann kann ich nämlich das Ganze viel besser sortieren und sehe sofort, von wann diese eMail ist (Der Filename ist ja der Betreff).
Dafür habe ich ein kleines .sh Script, das mir genau diese Infos aus der eMail ausliest und das File aktualisiert.
Im eMail-Ordner kann ich dann das folgende .sh File abspeichern.
#!/bin/bash
# ============================================
# fix_eml_dates.sh
# Setzt das Dateidatum der .eml-Dateien
# auf das originale E-Mail-Eingangsdatum
#
# hauptordner - hier script reinlegen
# - kunde1-ordner
# - kunde2-ordner
# - ...
#
# AUSFÜHRBAR MACHEN
# chmod +x fix_eml_dates.sh
#
# ============================================
# Ordner = dort wo das Skript liegt
ORDNER="$(dirname "$0")"
echo "📂 Verarbeite .eml-Dateien in: $ORDNER"
echo "----------------------------------------"
ERFOLG=0
FEHLER=0
# Alle .eml-Dateien rekursiv in allen Unterordnern finden
while IFS= read -r -d '' f; do
datum=$(grep -m1 "^Date:" "$f" | sed 's/Date: //')
timestamp=$(date -j -f "%a, %d %b %Y %H:%M:%S %z" "$datum" "+%Y%m%d%H%M" 2>/dev/null)
# Relativen Pfad für übersichtliche Ausgabe
relpath="${f#$ORDNER/}"
if [ -n "$timestamp" ]; then
touch -t "$timestamp" "$f"
echo "✓ $relpath → $timestamp"
((ERFOLG++))
else
echo "✗ Datum nicht lesbar: $relpath"
((FEHLER++))
fi
done < <(find "$ORDNER" -name "*.eml" -print0)
echo "----------------------------------------"
echo "✅ Erfolgreich: $ERFOLG | ❌ Fehler: $FEHLER"
Sobald das File im Ordner ist, muss ich jetzt natürlich noch die Rechte anpassen, damit das File ausgeführt werden kann.
Dafür verwende ich den folgenden Befehl.
chmod + x archiv.sh
Sobald alles gemacht ist, kann ich das .sh File jetzt ausführen und zack, sehe ich jetzt, wann die eMail erstellt wurde.
So kann ich nun die eMails auf einer externen HD abspeichern und habe alles sauber archiviert.







0 Kommentare