Geeks am Abend

Ich habe gerade den späteren Teil des Abends damit verbracht mich mit mutt zu beschäftigen. Torgen (der mir seine .muttrc gegeben hat, damit ich sie schamlos plündern kann) hat das Feature Mails beim löschen in einen Folder (nennen wir ihn sinnigerweise Trash) zu verschieben. Es könnte ja mal was dabei sein was man doch lieber behalten möchte.

 
macro pager d "scu+Trashn" "move deleted message to Trash"  
macro index d "scu+Trashn" "move deleted message to Trash2

Funktioniert Prima. In Verbindung mit einem cronjob der regelmässig Trash wegschreibt und gzipt verliere ich also nieeeeeeee wieder eine wichtige Mail.

 
> 1 21 1,15 \* \* /bin/mv \$HOME/Mail/Trash  \$HOME/Mail/archiv/Trash\$(/bin/date ‘+%Y%m%d’) && /bin/gzip  -9 \$HOME/Mail/archiv/Trash\$(/bin/date ‘+%Y%m%d’) &&  /usr/bin/touch \$HOME/Mail/Trash

(man stelle sich das bitte als eine Zeile vor und vergesse nicht die % mit einem zu escapen)

Soweit die Theorie!

Nur leider behalte ich jetzt auch den ganzen Spamquatsch, der ja eigentlich doch in den Müll kann. Also soll im Trash Folder doch wieder richtig gelöscht werden.

Erster Ansatz: Wir setzen das Macro per folder-hook für alle Folder die nicht Trash sind. Das können wir aber ganz schnell wieder vergessen da mutt den hook nicht zurücksetzt wenn man den Folder wieder verlässt. Einmal gesetzt gilt.

Zweiter Ansatz: Wir setzen das Macro als default folder-hook und in einem folder-hook für Trash löschen wir das Macro wieder. Macro löschen ist allerdings nicht so einfach, bzw. ich habe bisher nicht herausbekommen ob das überhaupt geht. Also habe ich mich auf Macro umdefinieren verlegt und daran rumgeknobelt.

Jetzt sieht das ganze so aus:

 
# d: move message to =Trash instead of delete-message.  
# Do a real delete when are in the Trash folder.  
# Beware! Define the default action before the folder specific action  
# (or you can spend quite some time to figure out why it does not ork)  
  
folder-hook . 'macro pager d "scu+Trashn” “move deleted message to Trash"'  
folder-hook . 'macro index d "scu+Trashn” “move deleted message to Trash"'  
folder-hook Trash 'macro pager d "<delete>" "delete message"'  
folder-hook Trash 'macro index d "<delete>" "delete message"'</delete></delete>

Wichtig ist dabei den default-hook vor dem folder-spezifischen zu definieren.