Doubletten aus mbox entfernen. Kleines HowTo mit formail und procmail
From
Raphael Eiselstein <rabe@...>
Date
Hallo zusammen,
aufgrund einer *kleinen* Panne in einem Mail-Script habe ich mir in
duzenden mbox-Files teilweise mehrere Duplikate einzelner E-Mails erzeugt,
indem ich ein und die selbe eingehende E-Mail mehrfach parallel mittels
procmail verarbeitet habe.
Das Script selbst prueft zwar, ob eine Mail mit einer checksumme schon
ge-procmail't wurde, hatte aber urspruenglich kein lockfile erzeugt, was
eine parallel laufende Instanz des Scriptes effektiv am *zeitgleichen*
Verarbeiten ein und der selben E-Mail verhindert haette.
Lessons learned ;)
Aufraeumen geht dann so (wer auch immer das mal benoetigt):
Angenommen neue (eingehende) Mails werden mit procmail verarbeitet und
dabei sortiert, kann man eine bestehende mbox Datei (also das, wo wo
procmail reinschreibt) mittels "formail" nochmal durchlaufen lassen.
In seiner Standardform funktioniert formail zB so:
formail -s procmail < ./unsortierte.mbox
Dabei wird der Inhalt von ./unsortierte.mbox in einzelne Nachrichten
aufgespilittet und einzeln an procmail verfuettert, also letztlich genau
das, was ein lokaler Mailer eben auch tun wuerde, zB sendmail, oder eben
mein Spezialscript (mit dem Bug).
formail kann dabei doppelte Message-IDs ausfiltern, wenn man ihm das
sagt:
formail -D 1048576 /tmp/idcache.tmp -s procmail < ./mbox-mit-duplikaten
Gruss
Raphael
PS: und jetzt bitte keine Beschwerden von Hipstern, die neumodischen
Kram wie "maildir" verwenden oder von Leuten, die E-Mails nur noch mit
GUIs oder gar nur noch Webmailer kennen!
--
Raphael Eiselstein <rabe@...>
PGP 4E63 5307 6F6A 036D 518D 3C4F 75EE EA14 F625 DB4E
.........|.........|.........|.........|.........|.........|.........|..
--
UUGRN e.V. http://www.uugrn.org/
http://mailman.uugrn.org/mailman/listinfo/uugrn
Wiki: https://wiki.uugrn.org/UUGRN:Mailingliste
Archiv: http://lists.uugrn.org/