Nastavení muttu: muttrc

Maily se nám stahují a už je můžeme teoreticky i posílat. Ale předtím, než se konečně vrhneme na jejich čtení, tak si musíme ještě nastavit samotný mutt. Konfiguraci muttu lze pro přehlednost rozházet do více souborů (čehož taky využijeme). Začneme tedy s hlavním souborem, který dáme do ~/.mutt/muttrc:

  1. # Slozky
  2. set folder = "~/.maildir"
  3. set mbox = "+INBOX"
  4. set postponed = "+Drafts"
  5. set record = "+Sent"
  6. set spoolfile = "+INBOX"
  7.  
  8. # Nastaveni
  9. set alias_file = ~/.mutt/aliases
  10. set crypt_autosign = "yes"
  11. set display_filter = ""
  12. set editor = "emacs -nw"
  13. set envelope_from = "yes"
  14. set mail_check = 10
  15. set mark_old = no
  16. set pgp_timeout = "32767"
  17. set pipe_decode = "yes"
  18. set signature = "~/.mutt/signature"
  19. set smart_wrap = "yes"
  20. set wait_key = "no"
  21. set wrap = "120"
  22.  
  23. auto_view text/html
  24.  
  25. # Import
  26. source ~/.mutt/aliases
  27. source ~/.mutt/bindings
  28. source ~/.mutt/colors
  29. source ~/.mutt/headers
  30. source ~/.mutt/hooks
  31. source ~/.mutt/sidebar

V první části nastavuji to, co se týká složek, tedy kde má hledat poštu. Proměnná folder ukazuje do našeho maildiru a pokud nyní někde, kde se očekává jméno přímo nějaké složky, uvedu na jejím začátku znak "+" nebo "=" (tak jako je to třeba u mbox), mutt si sám doplní cestu do našeho maildiru. mbox ukazuje na naší příchozí poštu, postponed na složku, kam uložíte zprávy pokud je před odesláním ještě odložíte, record obsahuje odeslané zprávy.

V další části se nastavují všelijaké proměnné muttu (jejich kompletní seznam je v dokumantaci). Osobně jsem nastavil ty, kde mi default nějak nevyhovoval. Popis uvedených voleb je takovýto:

  • alias_file ukazuje na soubor, kam budeme ukládat aliasy - to je něco jako adresář (příklad alias souboru bude ještě uveden)
  • crypt_autosign se týká použití pgp (gpg) a nastavení na hodnotu yes znamená, že odeslané maily se budou automaticky podepisovat (pokud neurčíte jinak). Pro funkční spolupráci s gpg je potřeba nastavit ještě hromadu dalších parametrů, nicméně ty už obvykle bývají v distribučním balíku přednastavené a umístěné v /etc/mutt tak, aby s nimi mutt počítal defaultně. Soubor se typicky jmenuje gpg.rc.
  • display_filter ukazuje na program, kterým se prožene mail ještě před zobrazením a má tedy šanci jeho výstup změnit. Prázdná hodnota je zde proto, že defaultní konfigurace proháněla maily přes program t-prot, který jsem nechtěl použít.
  • editor - označuje editor, ve kterém budete psát e-maily. V mém případě jsem použil můj oblíbený emacs. Parametry nw znamenají, že se emacs pustí v terminálu a ne v dalším okně.
  • envelope_from při nastavení na yes nastaví při odesílání e-mailů obálkovou adresu na stejnou, jako from samotného mailu (který si nastavíme někde dále). Doporučuju nechat na yes - mailserverům se obvykle nelíbí, když v MAIL FROM dostanou něco typu mujpc.localdomain...
  • mail_check nastavuje interval, kdy mutt sám hledá změny ve složkách (jako nové zprávy apod) - bez jeho nastavení to obvykle udělá, až když v něm zmáčknete nějakou klávesu.
  • mark_old při nastavení na no zakáže označovat zprávy jako staré. Tedy zpráva se obvykle stává starou po tom, co přijde jako nová a vy si jí nějaký čas nevšímáte a necháte jí tam. Mně stačí pouze status zprávy nová, tak jsem toto vypnul.
  • pgp_timeout se týká doby, po kterou si mutt pamatuje heslo k privátnímu pgp klíči k podepisování/šifrování e-mailů. Po této době jej zapomene. Interval je v sekundách a toto je maximální hodnota, kterou lze nastavit.
  • pipe_decode nastavené na yes muttu řekne, že když bude mail při nějaké akci pipovat nějakému dalšímu programu, tak mu ho má předtím zpracovat. Doporučuji též nechat zapnuté - dále v konfiguraci budeme používat program urlview na vytažení URL adres z mailů a pokud mu mutt pošle nedekódovaný base64 bastl, tak s je urlview neuvidí.
  • signature udává cestu k souboru, kde je uložen náš podpis (který se bude vkládat do mailů, které budeme psát).
  • smart_wrap zapíná chytré zalamování - tedy když mutt bude zalamovat text čteného mailu, tak ho zalomí někde na hranici slova a ne v jeho prostředku.
  • wait_key zabrání tomu, aby se mutt po napipování mailu do externího programu dožadoval stisknutí libovolné klávesy po jeho skončení.
  • wrap - jelikož slušní e-mailový klienti, kteří dodržovali pevnou šířku řádků, už patrně vymřeli, tak se vám velice lehce stane, že řádky mailů, které budete číst, se budou táhnout až ke konci okna s muttem. A pokud ho máte na fullscreenu monitoru s rozlišením 1920x1200, tak se to opravdu číst nedá. Nastavení na 120 znamená, že mutt bude po 120 znacích řádky zalamovat sám (s dodržením smart_wrap). Někdo může namítat, že jediná správná šířka je 72 znaků, ale mně osobně to připadá už jako moc velká nudle a plýtvání prostorem...

Poslední část nedělá nic jiného, než importuje ty ostatní soubory s dalším nastavením. Mezi nima je i soubor aliases - proměnná aliases nastavená výše totiž jen ukazuje na místo, kam mutt uloží alias v případě, že mu řeknete, že ho má uložit. Pokud chcete (a to nejspíš chcete :) ) uložené adresy používat i při psaní mailů, musíte soubor prohnat i přes source.

Nyní se tedy podíváme, jak alias soubor vypadá:

  1.   alias nick [případné dlouhé jméno] e-mailová_adresa

Začátek slovem alias je povinný, do nick si napíšete něco, pod čím to pak vy v muttu budete hledat, dále můžete napsat celé jméno (ale nemusíte) a na konec řádku přijde samotná e-mailová adresa.

Nyní se podíváme na soubor bindings, který obsahuje pár přemapování kláves. Obsah:

  1. bind pager <up> previous-line
  2. bind pager <down> next-line
  3.  
  4. # makra
  5. macro pager \cb <pipe-entry>'urlview'<enter> 'Ukaz odkazy'

První dva řádky nedělají nic jiného, než že v režimu čtení e-mailu namapují šipku nahoru/dolu tak, aby posouvala řádek nahoru/dolu. Poslední makro pak jen na klávesovou zkratku Ctrl+b spustí program urlview (musíte ho mít nainstalovaný) a rourou mu pošle obsah mailu. Urlview je dobrý k tomu, že vám ukáže seznam URL adres v daném e-mailu a vy můžete libovolnou z nich otevřít v prohlížeči (jejím výběrem).

Dále mám v konfiguraci soubor colors, ve kterém, jak už název napovídá, nastavuji barvy. Obsah je následující:

  1. color indicator brightyellow red # selector
  2. color index yellow black "~N" # nove zpravy
  3. color status cyan blue
  4. color signature brightred black
  5. color quoted green black
  6. color quoted1 brightgreen black
  7. color quoted2 white black

Syntaxe je taková, že se uvede klíčové slovo color, dále místo, kde se barva bude aplikovat, potom barva popředí, pozadí a nakonec volitelný pattern. Do konfigurace lze použít několik základních barev (viz dokumentace) a k nim bright varianta. První řádek nastavuje barvu indikátoru - tedy zvýrazněné položce. Druhá seznamu zpráv odpovídající patternu ~N - což znamená pouze na nové zprávy. Status nastavuje barvu stavového řádku, signature barvu podpisu v e-mailech a quotedX nastaví barvu X-té úrovně citace.

V souboru headers mám přidanou jednu vlastní hlavičku + nastavení from. Obsah:

  1. my_hdr X-Operating-System: `uname -a`
  2. set from = "Jan Krajdl <<a href="mailto:spm@spamik.cz">spm@spamik.cz</a>>"

my_hdr přidá do odesílaných mailů hlavičku X-Operating-System s hodnotou shodnou s výstupem příkazu uname -a. From nastaví jméno odesílatele.

Teď soubor hooks pro nastavení hooků:

  1. folder-hook +INBOX.Prace   'set from = "Jan Krajdl <<a href="mailto:jan.krajdl@firma.com">jan.krajdl@firma.com</a>>"'
  2. folder-hook +INBOX.Prace 'set signature = "~/.mutt/signature_prace"'
  3. folder-hook !+INBOX.Prace 'set from = "Jan Krajdl <<a href="mailto:spm@spamik.cz">spm@spamik.cz</a>>"'
  4. folder-hook !+INBOX.Prace 'set signature = "~/.mutt/signature"

Všechny 4 tyto řádky používám defakto jen jako alternativu pro nastavení identit, jak jsou známy v jiných mailových klientech. Význam je takový, že pokud otevřu složku Prace, tak se nastaví moje adresa odesílatele na jan.krajdl@firma.com a použitý podpis na soubor ~/.mutt/signature_prace. Pokud naopak otevřu jakoukoliv jinou složku, než Prace, nastaví se moje standardní from a můj běžný podpis. Stejného efektu by šlo docílit nastavením nějakého makra a identity si tak přepínat třeba jen nějakou klávesovou zkratkou.

Soubor sidebar nastavuje pouze věci týkající se sidebaru, který je v opatchované verzi muttu (mutt-patched na debianích systémech). Pokud nemáte verzi se sidebarem, žádná z těchto voleb nebude fungovat. Obsah souboru:

  1. set sidebar_width = 45
  2. set sidebar_visible = yes
  3. set sidebar_delim = '|'
  4. set sidebar_sort = no
  5.  
  6. color sidebar_new yellow default
  7.  
  8. bind index k sidebar-prev
  9. bind index j sidebar-next
  10. bind index \CO sidebar-open
  11. bind index \CN sidebar-scroll-down
  12. bind index \CP sidebar-scroll-up
  13. bind pager k sidebar-prev
  14. bind pager j sidebar-next
  15. bind pager \CO sidebar-open
  16. bind pager \CN sidebar-scroll-down
  17. bind pager \CP sidebar-scroll-up
  18. macro index b '<enter-command>toggle sidebar_visible<enter>'
  19. macro pager b '<enter-command>toggle sidebar_visible<enter>'
  20.  
  21. source ~/.mutt/mailboxes

Na začátku se nastavují obecné vlastnosti - šířka sidebaru, zda bude viditelný, oddělovač od okolí a jestli složky v něm zobrazené se budou řadit. Dále se nastavuje barva složek, ve kterých je nová zpráva a namapování kláves pro ovládání. Tento zápis docílí toho, že klávesy k a j pohybují v seznamu složek nahoru / dolu. Ctrl+n a Ctrl+p udělají page down a page up v seznamu složek, Ctrl+o složku otevře. A stiskem tlačítka b se zapíná/vypíná viditelnost sidebaru. Poslední řádek importuje soubor mailboxes, kde se definují složky, které budou také vidět v sidebaru. Soubor se skládá z jednoho řádku začínajícím slovem mailboxes a za ním seznamem složek, které chceme v sidebaru mít, odděleném mezerou. Složky lze uvádět se znakem + nebo = na začátku, aby nebylo nutné vypisovat celou cestu. Jen tak mimochodem - pokud používáte pro stahování pošty offlineimap a chcete vidět všechny složky, které offlineimap stahuje, dá se v jeho nastavení (viz dokumentace) nastavit, že automaticky tento soubor vytváří podle aktuálně existujících složek.

To je zhruba vše, co se týče konfigurace muttu. Avšak v konfiguraci je naznačeno použití několika dalších programů. Začneme třeba emacsem. Těm, kdo jej budou používat, se možná bude hodit fakt, že emacs v sobě nese tzv. mail mód, tedy mód určený pro psaní emailů (například barevně odlišuje citovaný text). Kooperace s muttem vypadá tak, že mutt nechá emacsem otevřít nějaký textový soubor v /tmp a po jeho skončení jej otevře a použije jako tělo zprávy. Tento soubor vždy začíná slovem mutt a tedy můžeme emacs nastavit, že pokud toto zjistí, zapne mail mód automaticky. Dále je také vhodné nastavit auto-fill-mode s nějakou rozumnou hodnotou pro automatické zalamování řádek po x znacích (já mám v konfiguraci opět nastaveno 120 znaků, těm co se to nelíbí, nechť si nastaví 72 :) ). Konfigurační část emacsu vypadá takto:

  1. (defun mutt-mail-mode-hook ()
  2.    (flush-lines "^\\(> \n\\)*> -- \n\\(\n?> .*\\)*") ; kill quoted sigs
  3.    (not-modified)
  4.    (mail-text)
  5.    (auto-fill-mode 1)
  6.    (set-fill-column 120)
  7.    (setq make-backup-files nil))
  8.  (or (assoc "mutt-" auto-mode-alist)
  9.      (setq auto-mode-alist (cons '("/tmp/mutt.*" . mail-mode) auto-mode-alist)))
  10.  (add-hook 'mail-mode-hook 'mutt-mail-mode-hook)

Dále jsme použili program urlview, který nám zobrazí všechny URL adresy, které najde v mailu a jednoduše nám umožní je otevřít. Urlview by měl správně otevírat adresy ve výchozím prohlížeči. Pokud je chcete otevírat v jiném (nebo urlview je otevírá v jiném, než co si myslíte, že máte jako výchozí), zapište do souboru ~/.urlview tohle:

  1. COMMAND příkaz_na_spuštění_vašeho_prohlížeče %s

Posledním detailem je ještě to, co mutt dělá s různými přílohami a vůbec jinými mime typy, než čistý text. Obvykle by měl danou část zprávy otevřít ve výchozí aplikaci. Pokud to chcete změnit (či dokonce přímo v muttu zobrazovat nějak přefiltrovaný obsah jinak nečitelných částí zprávy), můžete se zaměřit na soubor ~/.mailcap. Můj vypadá takhle:

  1. text/html;                      firefox %s; nametemplate=%s.html
  2. text/html;elinks -dump %s; nametemplate=%s.html; copiousoutput
  3. image/jpeg; xli %s; nametemplate=%s.jpg
  4. image/pjpeg; xli %s; nametemplate=%s.jpg

První řádek říká, že pokud vysloveně otevřu část s mime typem text/html, tak ji otevře ve firefoxu. Nicméně v HTML často chodí samo tělo mailu, aby jste ho alespoň nějak zobrazili, můžeme zneužít program elinks (potřeba nainstalovat). Elinks s parametrem -dump nedělá nic jiného, než že tu HTML hrůzu projede a vyplivne nějak zpracovaný text ven (už bez HTML značek). Parametr copiousoutput pak už jen muttu řekne, že výstup má vzít a zobrazit - v souvislosti s parametrem auto_view text/html v muttrc bude takhle mutt sám zobrazovat v sobě HTML maily čitelně. Zbylé dva řádky pak už jen říkají, že jpeg obrázky se budou otevírat v programu xli.

To by z konfigurace, alespoň pro začátek :), mělo být vše. Nyní se můžete ještě podívat na krátký přehled používání.

Tags: