Agentur für Neue Medien


Alte Einträge aus dem Archiv von mailman löschen

Wer in mailman die Archivierung der Mails, die über eine Mailingliste geschickt wurden, aktiviert hat, steht irgendwann vor dem Problem, dass das Archiv sehr groß werden kann und u.U. mehrere Jahre zurückreicht, was aber niemanden mehr interessiert.

Daher stellt sich die Frage, wie man die alten Mails aus dem Archiv löschen kann, ohne dabei gleich das ganze Archiv zu löschen?

In der Benutzeroberfläche von mailman gibt es dazu leider keine Funktion, so dass wir da etwas "Handarbeit" angesagt ist.

 

Im Internet habe ich folgendes gefunden:

/usr/lib/mailman/bin/arch --start=N --wipe yourmailinglist

Angeblich soll dieser Befehl alle Mails die älter sind als die Nummer "N" löschen. Wobei man die Anzahl der Mails mit folgendem Befehl ermitteln kann:

grep "Return-Path:" yourmailinglist.mbox | wc -l

Doch leider hat das zumindest bei mir nicht funktioniert, daher habe ich eine alternative Möglichkeit gesucht und gefunden:

  1. Wir suchen im Archiv die Mail heraus, bis zu der wir alle alten Mails löschen wollen und notieren uns deren Datum und Uhrzeit.
  2. Wir wechseln in der Kommandozeile in den Ordner:
    /var/lib/mailman/archives/private/yourmailinglist.mbox
    (wobei private auch public sein kann, jenachdem ob das Archiv privat oder öffentlich ist und yourmailinglist muss natürlich durch den Namen der Mailingliste ersetzt werden).
  3. Dann ermitteln wir die Zeilennummer, in der die oben notierte E-Mail steht, mit dem Befehl:
    grep -nri "14:32:45" yourmailinglist.mbox
    (Die Uhrzeit ist meistens ausreichend.)
  4. Als nächstes kopieren wir alles ab der ermittelten Zeilennummer in eine neue Datei:
    tail -n +1234 yourmailinglist.mbox > yourmailinglist.mbox.neu
    (wobei 1234 für die ermittelte Zeilennummer steht)
  5. Dann löschen wir die alte yourmailinglist.mbox (oder kopieren sie woanders hin):
    rm yourmailinglist.mbox
  6. Und benennen die neue Datei wieder zurück:
    mv yourmailinglist.mbox.neu yourmailinglist.mbox
  7. Nun lassen wir mailman das Archiv neu erstellen mit dem Befehl:
    /usr/lib/mailman/bin/arch --wipe yourmailinglist
  8. Fertig! ;o)
comments powered by Disqus

Copyright SKom 2006

Ecke rechts unten