Mutt

Z HelpDesk

Mutt je emailový konzolový klient. Jde o podobnou záležitost jako je Alpine (pine), ale s jinou filosofií ovládání a vysokou mírou možností konfigurace. Tento klient není přímo podporován CIVem, ale vzhledem ke znalostem zde uvádíme jeho základní konfiguraci. Jeho velkou výhodou je používání regulárních výrazů při vyhledávání a dalších hromadných operací s emaily. V současnosti nevyřešeným problémem je šifrování a podepisování emailů certifikátem uloženým na zaměstnaneckých JIS kartách, to je ale způsobeno chybou v cizí knihovně, která emaily nedokáže podepsat.

Toto nastavení předpokládá mutt verze 1.5.21 nebo vyšší, ideálně s rozšířeními. V Debianu je pod názvem mutt-patched, nutná je podpora SMTP a Trash.

Základní nastavení

Všechny konfigurační úpravy budou prováděny v domovském adresáři uživatele, na linuxu se předpokládá ~/.mutt/ Základní konfigurace se uvádějí do souboru muttrc, ostatní jako je obarvování, nastavení klávesových zkratek nebo dalších rozšíření se doporučuje nastavit do samostatných souborů a v muttrc je na konec připojit parametrem source.

Pošta pro odesílání

Vhodné uvést do souboru muttrc, zde je komentovaný konfigurační soubor, zvýrazněné hodnoty je třeba upravit dle vašeho nastavení:

#
# SMTP
#
set smtp_url="smtps://civenka@smtp.zcu.cz:465/" # pro odesilani pouzivam tento ucet
set from = "Civenka <civenka@civ.zcu.cz>" # vas email pro hodnotu 'From:' v emailech
set envelope_from = "yes" # nastaveni odesilatele na hodnotu z 'From:'

Při prvním odeslání emailu se vás Mutt zeptá na heslo k vašemu účtu, do doby než jej ukončíte si vaše heslo zapamatuje.

Příjem pošty

#
# folders
#
#set imap_authenticators="gssapi:login"
#set ssl_starttls=yes
set mbox_type=Maildir
set folder="imaps://civenka@imap.zcu.cz/" # vase schranka, na tuto polozku se odkazuje dale znakem '='
set spoolfile="=INBOX"  # zde se nachazi nova posta
set mbox="="             # kde je mailbox 
set record="=Sent"      # odchozi posta
set postponed="=Drafts" # rozepsana posta
set trash="=Trash"      # kde je zahozena posta, nutno povolit nize
set imap_list_subscribed=yes 

V této chvíli by se měl Mutt dokázat připojit k vaší emailové schránce a dokázat odeslat poštu. Pro lepší uživatelský komfort pokračujte v konfiguraci dále.

Další nastavení pro vhodnější chování

Tato nastavení zlepšují standardní nastavení Muttu, pro základní funkcionalitu nejsou nezbytná, ale doporučená:

#
# obecne
#
set maildir_trash = yes # ukladat smazane maily do kose, nutne rozsireni Trash
set mail_check = 30     # jak casto kontrolovat novou postu v sekundach
set mark_old = no       # oznacovat neprectenou postu jako starou pri ukonceni Muttu, priste bude zvyraznena
set pipe_decode = "yes" # umozni preprocessing zpravy jinymi programy
set signature = "~/.signature" # pripoji signaturu z urceneho souboru
set smart_wrap = "yes"  # zalamovani na mezerach, pokud se nevejde email do radku
#set wrap = "120" # po kolika znacich se ma lamat text v browseru, defaultne dle nastaveni terminalu
set date_format="%d. %b (%A) v %H:%M:%S %Z %Y" # cesky format datumu
set wait_key = "no" # pokud se vola ext. program, pri navratu nechtit 'Press any key to continue ...'

#
# Chovani pri Re: a Fwd:
#
set include                     # automaticke vkladani predchozi zpravy
set attribution="%D, %a wrote:" # nastaveni uvodniho textu zpravy
set forward_format="Fwd: %s"    # uprava Subject: pri preposilani zpravy
set forward_edit=yes            # chceme preposilanou zpravu upravovat, tj. automaticky otevrit editor
set forward_quote=yes           # preposlana zprava bude oznacena uvozenim

#
# jake casti zahlavi mailu chceme zobrazovat
#
ignore *                              # nic nezobrazovat
unignore From: To: Cc: Date: Subject: # z hlavicky mailu ukazat tyto polozky

Cache

Umožní rychleji prohledávat emaily, to co již stáhl ukládá do nastaveného adresáře:

#
# cache
#
set header_cache="~/.mutt/cache"
set message_cachedir="~/.mutt/cache"
set message_cache_clean=yes

Rozšířená konfigurace

Sidebar

Doporučuji nastavit v samostatném souboru .mutt/sidebar a v hlavním souboru .mutt/muttrc jej volat direktivou:

source ~/.mutt/sidebar 

Jde o rozšíření, v kterém jsou vidět jednotlivé foldry, jestli je v nich nová pošta a kolik. Všechny volby jsou dobře zdokumentovány, proto jen jedna z vhodných konfigurací:

#
# sidebar 
#
# set up the sidebar, default not visible
set sidebar_width=25
set sidebar_visible=yes
set sidebar_delim='|'
set sidebar_sort=yes

# which mailboxes to list in the sidebar
mailboxes =INBOX =Sent =Sent/SentOld =Drafts =Templates =Trash =my/friends =my/family

# color of folders with new mail
color sidebar_new yellow default

# ctrl-n, ctrl-p to select next, prev folder
# ctrl-o to open selected folder
bind index \CP sidebar-prev
bind index \CN sidebar-next
bind index \CO sidebar-open
bind pager \CP sidebar-prev
bind pager \CN sidebar-next
bind pager \CO sidebar-open

# I don't need these.  just for documentation purposes.  See below.
# sidebar-scroll-up
# sidebar-scroll-down

# b toggles sidebar visibility
#macro index b '<enter-command>toggle sidebar_visible<enter>'
#macro pager b '<enter-command>toggle sidebar_visible<enter>'

# Remap bounce-message function to "B"
bind index B bounce-message

Jediná důležitá část je položka mailboxes, kde jsou vyjmenované foldry, které chcete zobrazovat a to včetně subfoldrů. Ovládání je klávesovými zkratkami ctrl+n (next folder), ctrl+p (previous folder) a ctrl+o (open folder).

Kombinace vyhledávání kontaktů ze ZČU LDAP serveru a z vlastních emailů

Je založeno na balíku lbdb, který je nutné nastavit, pro Mutt stačí nastavit jeden řádek:

set query_command="lbdbq '%s'" # prohledavani adressbooku pres LDAP

Nastavení lbdb

Tento program se nastavuje v adresáři ~/.lbdb/, hlavní část se nachází v souboru rc, kde stačí nastavit 2 hodnoty:

METHODS="m_ldap m_inmail"
LDAP_NICKS="zcu.cz"

To znamená, že lbdb bude pro správu kontaktů používat dva moduly, jeden na LDAP (kontakty ZČU) a druhý vytvářet na základě příchozích emailů, oba moduly je třeba nastavit zvlášť.

modul m_ldap

Konfigurace je uložena v ~/.lbdb/ldap.rc a je třeba, aby vypadal takto (poslední řádek musí končit na "1;"):

%ldap_server_db = (
  'zcu.cz' => ['ldap.zcu.cz',
            'ou=rfc2307,o=zcu,c=cz',
            'givenname sn cn mail', 'givenname cn sn mail o',
            '${mail}', '${givenname} ${sn}', '${o}' ]
);

# hostname of your ldap server
$ldap_server = 'ldap.zcu.cz';
# ldap base search
$search_base = 'ou=rfc2307,o=zcu,c=cz';
# list of the fields that will be used for the query
$ldap_search_fields = 'uid cn sn ircnick';
# list of the fields that will be used for composing the answer
$ldap_expected_answers = 'uid cn sn ircnick';
# format of the email result based on the expected answers of the ldap query
$ldap_result_email = '${mail}';
# format of the realname result based on the expected answers of the ldap query
$ldap_result_realname = '${cn} ${sn}';
# format of the comment result based on the expected answers of the ldap query
$ldap_result_comment = '(${ircnick})';
# Don't use wildchars on searching
$ignorant = 1;
# Do an anonymous bind to the LDAP server:
$ldap_bind_dn = '';
$ldap_bind_password = '';
1;

modul m_inmail

Tento modul prohledá vaše emaily a vytvoří z ní databázi kontaktů v souboru ~/.lbdb/m_inmail.list, stačí do konfiguračního souboru Mutt (doporučuji do samostatného .mutt/bindings a přilinkovat jej příkazem source ~/.mutt/bindings v hlavním konfiguráku) tyto dva řádky:

# lbdb-fetchaddr
macro index ",a" "<enter-command>set pipe_split=yes<enter><tag-prefix><pipe-message>lbdb-fetchaddr<enter><enter-command>unset pipe_split<enter>" "Add email address into contacts"
macro pager ",a" "<enter-command>set pipe_split=yes<enter><tag-prefix><pipe-message>lbdb-fetchaddr<enter><enter-command>unset pipe_split<enter>" "Add email address into contacts"

Postupným stiskem kláves , (čárka) a a (malé písmeno 'a') se prohledá v daném emailu hlavička a vloží se emailové adresy do databáze. Pokud chcete více emailů současně, musíte je označit (tag) a pak přes ; (středník) vyvolat hromadnou operaci pro ,a

Pozor: aby program mohl prohledat emaily, bude je muset stáhnout, pokud jej necháte prohledávat například všechny emaily v Trash před tím, než je smažete. Stažení emailu může zahltit vaši linku a určitou dobu trvat. Po tuto dobu bude Mutt nedostupný, po ukončení prohledávání se automaticky vrátí jeho rozhraní. Počítejte přibližněš 10 vteřin na každých 100 emailů při rozumné konektivitě.

Problém je, že to uloží i kontakty pro ZČU, kde máme aktuálnější z LDAPu, proto je potřeba databázový soubor očistit o tyto kontakty. To nám nejlépe provede cron s tímto záznamem (pustí se denně v 19:17 a odebere všechny duplicity a adresy z domény zcu.cz):

17 19 * * * ( cd ~/.lbdb/ ; cp m_inmail.list m_inmail.list.tmp && cat m_inmail.list.tmp | sort -u -d -f -i -k 1,1 | egrep -v '[@\.]zcu.cz' > m_inmail.list && rm -f m_inmail.list.tmp )

Použití

Při dotazu na adresu příjemce stačí napsat část emailové adresy nebo jména a stisknout ctrl+t, pak si z nabídnutého seznamu stačí vybrat správnou volbu. Pokud je emailová adresa z modulu m_inmail, pak je u ní uvedeno datum poslední aktualizace. Více emailových adres se odděluje čárkou.

Formátování html emailu

#
# formatovani html emailu, nutno nastavit ~/.mailcap, viz
# http://www.debian-administration.org/articles/75
#
auto_view text/html

Do souboru ~/.mailcap přidáme nebo upravíme řádky:

text/html;                      links %s; nametemplate=%s.html
text/html;                      links -width 180 -dump %s; nametemplate=%s.html; copiousoutput

Šířku používaného terminálu lze zjistit příkazem:

$ echo $COLUMNS
211

Ale je potřeba odečíst šírku sidebaru a oddělovače, což je 26 znaků, takže jsme přidali malou rezervu.

Automatická tvorba kontaktů z vlastních emailů

Bez konektivity - offline

Příchozí pošta

Odchozí pošta