« Ny webbserver | Main | Choco: Constraint Programming i Java »

april 17, 2006

Mutt - en konfigurerbar mailklient

I mer än 10 år har jag läst merparten av privata mail med den textbaserade mailklienten Pine. I den gångna veckan bytte jag till en annan textbaserad editor: Mutt (*).

Eftersom pålitliga vänner länge har pratat väl om Mutt har jag kikat på det flera gånger tidigare. Trådning har alltid varit ett stort argument, liksom konfigurerbarheten. Men det har alltid varit för meckigt och icke prioriterat att byta till ett annat mail-läsarsystem.

Efter att ha bitit i det sura äpplet (byte av den Linux-maskin där jag läser mail och där installation av Pine tjorvade) började jag alltså lära mig Mutt från grunden. Redan efter några minuter påträffades saker som jag nu inte förstår hur jag kunde klara mig utan. T.ex. att kunna ange vilken mailbox som ska föreslås som default när man sparar ett läst mail (s.k. save-hook, baserat på information i header-fälten, se nedan); de kraftfulla sökmöjligheterna samt naturligtvis trådningen av mailen.

Här är några för mig användbara saker från min nuvarande konfigurationsfil (.muttrc) varsamt kommenterad. Även om det inte syns så motstod jag frestelsen att definiera om Mutt så det liknar Pines tangentkonfiguration. Det mesta känns logiskt.


# använd textläges-emacs som editor
set editor="emacs -nw"

# när man läser mail ser man delar av maillistningen
# man kan toggla detta via macrot på I, se nedan
set pager_index_lines=8

# togglar om man ska se maillistningen när man läser ett mail.
# de två första är "interna funktioner" (Inspiration från Roland Rosenfeld)
macro pager _TOGIL0 ':set pager_index_lines=0:macro pager I_TOGIL1<enter>' 'internal function'
macro pager _TOGIL1 ':set pager_index_lines=9:macro pager I _TOGIL0<enter>' 'internal function'
# Finns på I (versalt i)
macro pager I _TOGIL0 'toggle pager_index_lines'

# redigera .muttrc
# kan göras dels i listningen av mail och när man läser ett mail
macro pager '!emacs -nw ~/.muttrc<enter>' 'edit .muttrc'
macro index '!emacs -nw ~/.muttrc <enter>' 'edit .muttrc'

# laddar om .muttrc. Notera att gamla alias etc finns kvar efter omladdning.
macro index ':source ~/.muttrc <enter>' 'Reload .muttrc'
macro pager ':source ~/.muttrc<enter>' 'Reload .muttrc'

# gå tillbaka till "första sidan", dvs den vanliga inboxen
macro pager Q 'c !<enter>' 'till huvudsidan'
macro index Q 'c !<enter>' 'till huvudsidan'
# definieras något annorlunda i browsern (fil/folderlistningen)
macro browser Q 'q !<enter>' 'till huvudsidan'

# grepm är ett externt program som möjliggör sökning i flera foldrar samtligt.
# Kräver grepmail
# (skriv in sökkriteriet och tryck sedan Enter)
macro index '!grepm -ie ~/Mail/*' 'grepm'

# kopia av skickade mail sparas i en sent-mail-YYYY-MM-folder
set record="=sent-mail-`date +%b-%Y`"

# Fråga inte "move read messages to mbox" när vid avsluta
set move=no

# Fråga inte om man man ska "append to mailboxes" vid spara
set confirmappend=no

# exempel på några save-hooks: När man sparar ett läst mail kommer en speciell
# mailfolder som förslag. (För att spara mail till mailfoldrar utan att läsa dem används
# lämpligen t.ex. procmail.)
# Förklaring:
# ~f: From-fältet, ~t: TO, ~c: CC, ~h finns i någon header
#
save-hook "~t CRYPTO-GRAM-LIST@LISTSERV.MODWEST.COM" =crypto-gram
save-hook "~f comdig@ms68.hinet.net" =complexity_digest
save-hook "~h noreply-orkut@google.com" =orkut

# sorteringsordning baserad på den folder man är i
# trådning är default
folder-hook . set sort=threads
# men i spam-foldern sorteras i datumordning, senaste mailet först
folder-hook caughtspam set sort=-reverse_date

# folderlistan sorteras om omvänd datumordning
set sort_browser=reverse-date

# default vid q (quit) är No i stället för det fabriksinställda Yes
set quit=ask-no

# piper när nya meddelanden kommer i mailboxes (se nedan)
set beep_new=yes

# Förutom inkommande-foldern definieras även dessa foldrar som mailfoldrar när nya mail
# kommer in automatiskt t.ex. via procmail
# Det innebär att det piper när det kommer nya mail , de hanteras speciellt
# i folderlistan, att man via kommandot "." (punkt) ser om det kommit nya mail etc
# Not: det är anonymiserade foldernamn.
mailboxes =folder1 =folder2 =folder3


En sak störde mig stort från början och det var att Ctrl-C (för att avbryta en operation) alltid frågade om man vill avsluta Mutt och default var att det ville jag. Men det ville inte jag; jag ville inte ens ha frågan. Tyvärr hittades inget konfigurationskommando för att styra detta beteende, varpå frågan sonika kommenterades bort i källkoden (funktionen mutt_query_exit i i curs_lib.c). Nu händer alltså inget mer än att operationen avbryts, vilket är den intuition jag har kring hur Ctrl-C ska fungera i detta sammanhang.


(*) Ja, jag läser hellre privata mail i en textbaserade mailklient än på andra sätt. Gmail är trevlig liksom Evolution, men inte tillräckligt trevliga. Det finns för- och nackdelar med respektive lösningar.


Se även
MuttWiki
comp.mail.mutt.
Tips: Via "Prenumerera på den här gruppen" och sedan "Sammandragsmail (hela meddelanden) " blir man mailad nya inlägg i gruppen cirka en gång per dag.
Yahoo! mutt-users
Manualen till version 1.5.11
Utvecklingsversionen (CVS).

Exempel på konfigurationsfiler (från Wikin)
dotfiles.com har fler exempel på konfigurationsfiler.
mutt next generation, en variant av Mutt med extra features. (Att kika mer på.)

procmail för att automatiskt filtrera mail till mailboxar. Kombineras lämpligen med ett spamupptäckarprogram, t.ex. Spamassassin.

Posted by hakank at april 17, 2006 08:17 FM Posted to Program

Comments

Använd Ctrl - g för att avbryta en operation och inte Ctrl - c :) PS. Fin sida du har. DS.

Posted by: David Andersson at september 25, 2006 11:53 EM