Da ich seit kurzem Emacs verwende um meine Texte und Code zu
erstellen, möchte ich auch gerne Emails damit ansehen. Dazu habe ich
mir Gnus angesehen. Gnus ist ein Message-Reader, d.h. egal ob man
Nachrichten von einem NNTP-Server oder von einer Mailbox holt, Gnus
verwaltet diese gleich und macht dabei keinen Unterschied.
Anders als andere Message Readers (MUA - Message User Agents) löscht
Gnus keine Nachrichten standardmäßig, außer wenn man ihn auffordert
dies zu tun. Nun möchte ich aber nicht immer alle meine Nachrichten in
meiner Inbox haben und deswegen habe ich Gnus so konfiguriert, das er
nach Ablauf einer bestimmten Zeit, Nachrichten archiviert.
Dazu muß man die Nachrichten als expired markieren. Das kann man mit
der Taste E in der Summary-Übersicht machen. Das ist aber sehr
umständlich wenn man das mit jeder Nachricht machen muß. Dazu verwende
ich folgende Einstellung
(setq gnus-auto-expirable-newsgroups
"lists\\|inbox")
Hier wird definiert das in den beiden Gruppen 'lists' und 'inbox'
automatisch alle Nachrichten als expired markiert werden. Nun ist das
schön aber man kann damit noch nicht wirklich viel anfangen, denn Gnus
löscht oder verschiebt diese Nachrichten standardmäßig nach 7
Tagen. Hier kann man wieder pro Gruppe einstellen wann diese
Nachrichten gelöscht oder verschoben werden
(setq nnmail-expiry-wait-function
(lambda (group)
(cond ((string= group "lists") 'immediate)
(t 40))))
Hier werden alle Nachrichten die in der Gruppe 'lists' sich befinden
sofort nachdem die Gruppe verlassen wurde gelöscht und alle anderen
Nachrichten in anderen Gruppen erst nach 40 Tagen.
Zusätzlich möchte man vielleicht auch noch steuern wohin diese
Nachrichten, die als expiry markiert sind, wandern. Ich würde gerne
alle Nachrichten von der Gruppe inbox in das Archiv mail-%Y und alle
gesendeten Nachrichten in das Archiv sent-%Y verschieben. Alle andern
sollen in den Kübel wandern. Folgende Konfiguration führt dies durch
(defun my-fancy-expiry (group)
(let* ((target (cond
((equal group "inbox") "nnml+archive:mail-%Y")
((equal group "sent") "nnml+archive:sent-%Y")
(t "nnml+archive:trash")))
(nnmail-fancy-expiry-targets
`(("from" ".*" , target))))
(nnmail-fancy-expiry-target group)))
(setq nnmail-expiry-target 'my-fancy-expiry)
Der String '%Y' wird durch das aktuelle Jahr ersetzt. Hier wird
definiert das alle Nachrichten die von ".*" kommen und in der Gruppe
'inbox' sich befinden nach Ablauf der expiry-time (40 Tage) in das
Archiv mail-%Y wandern. In der Variable nnmail-expiry-target kann man
eine Funktion angeben die immer dann ausgeführt werden soll, wenn der
Expiryprozess gestartet wird. Dieser wird normalerweise aufgerufen
wenn man eine Gruppe verläßt.
Nach dieser Konfiguration braucht man sich um nichts mehr kümmern und
die Nachrichten werden automatisch nach einer bestimmten Zeit
verschoben.