Ongeveer vier jaar geleden ben ik volledig overgestapt van Evolution naar NeoMutt voor zowel prive als zakelijke e-mail. E-mail is onderdeel van mijn dagelijkse workflow en aangezien die alleen maar op de command-line bestaat, was dit het enige wat nog ontbrak.
Alhoewel NeoMutt erg snel en intuitief is, kan het in het begin een vrij stijle leercurve hebben en kost het inrichten ervan best wat tijd.
Om je op weg te helpen laat ik hier stap voor stap zien hoe je NeoMutt van scratch installeert en configureert op Linux.
Pre-installatie (optioneel)#
Voor deze tutorial installeer ik Ubuntu met behulp van Docker, maar de stappen werken voor iedere distributie dat apt
gebruikt voor pakketbeheer, zoals Debian of Linux Mint.
Liever geen Docker gebruiken, of installeren op je eigen systeem? Ga naar NeoMutt Distributies voor installatie instructies.
Docker container opzetten#
Zorg er eerst voor dat je Docker geinstalleerd hebt. Op de Docker website kan je hiervoor de instructies vinden. Als je geen Docker wilt gebruiken ga je direct door naar het volgende hoofdstuk.
Maak een Dockerfile
met de volgende inhoud:
FROM ubuntu:24.04
RUN apt update && apt install -y vim
Bouw een eigen image:
docker build . -t system83.org/muttdemo:1.0.0
En start de container op:
docker run -it --rm system83.org/muttdemo:1.0.0 /bin/bash
NeoMutt installatie#
Download en installeer neomutt
met apt
.
apt install neomutt
Directory structuur aanmaken#
Om de configuratie te laden kijkt NeoMutt standaard in de ~/.config/neomutt
directory naar het bestand neomuttrc
.
Maak de volgende directories aan, waarbij $USER
je eigen username is.
├─ /home DIR
├─── $USER DIR
├─── .config DIR
├───── neomutt DIR
├─────── accounts DIR
├───────── account1.muttrc FILE
├─────── neomuttrc FILE
└─────── themes DIR
mkdir -p ~/.config/neomutt/{accounts,themes}
cd ~/.config/neomutt
Basis configuratie maken#
We splitsen de configuratie voor nu op in een tweetal bestanden:
- Globale configuratie,
neomuttrc
. - Account configuratie,
accounts/account1.muttrc
.
Globale configuratie#
Maak het neomuttrc
bestand aan en plaats onderstaande:
# Gebruik 'account1' als standaard account bij het opstarten
source ~/.config/neomutt/accounts/account1.muttrc
#
# Globale instellingen
#
# Sorteer op threads
set sort = "threads"
# Sorteer daarna op datum
set sort_aux = "last-date-received"
# Datum formaat
set date_format = "%d-%m-%y %T"
# Gebruik het standaard index formaat
set index_format="%4C %Z %{%b %d} %-15.15L (%<l?%4l&%4c>) %s"
# Controleer iedere 5 minuten voor nieuwe berichten
set mail_check=5
# Verstuur e-mail op de achtergrond
set sendmail_wait=-1
#
# Keybindings
#
# Haal handmatig nieuwe berichten op met 'G'
bind index "G" imap-fetch-mail
Account configuratie#
Maak het accounts/account1.muttrc
bestand aan en plaats onderstaande configuratie. Pas deze daarna aan met je eigen gegevens.
set realname="Voornaam Achternaam"
set my_server="mail.jouwserver.nl"
set my_username="v.achternaam@jouwserver.nl"
set my_password="my-secret-plain-text-password"
#set my_password=`pass ls Email/account1`
set my_imap_port=993
set my_smtp_port=587
set from="$my_username"
set imap_user="$my_username"
set imap_pass="$my_password"
set folder="imaps://$my_server:$my_imap_port/"
set spoolfile="+INBOX"
set record="+Sent"
set postponed="+Drafts"
set trash="+Trash"
unmailboxes *
mailboxes $spoolfile $record $postponed $trash
set smtp_url="smtp://$my_username@$my_server:$my_smtp_port"
set smtp_pass="$my_password"
NeoMutt starten#
Met de nieuwe configuration op de plek is het tijd om deze te testen. Start NeoMutt op met neomutt
.
De eerste keer krijg je een scherm te zien met de vraag of je het server certificaat wilt accepteren. Kies o
om deze eenmalig te accepteren of a
voor altijd.
Als alles goed is gegaan, zie je nu de Inbox van je account.
Basistoetsen#
De meeste toetscombinaties kan je terugvinden in het hulpscherm, deze kan je opvragen met ?
.
Toets | Doel |
---|---|
? | Laat help scherm zien |
k | 1 regel omhoog |
j | 1 regel omlaag |
Enter | Open bericht |
m | Stel een nieuw bericht op |
r | Beantwoord een bericht |
g | Stuur bericht door naar alle ontvangers |
d | Markeer bericht voor verwijderen |
/ | Zoeken |
$ | Bevestig wijzigingen (bijv verwijderen) |
q | Afsluiten |
E-mail versturen#
We gaan een bericht naar onszelf versturen om te kijken of de SMTP server ook werkt.
- Toets
m
- Voer het e-mailadres van de ontvanger in
- Voer een onderwerp in
- Schrijf je bericht (sla op en sluit de editor)
Vervolgens krijg je een scherm te zien met een overzicht van de afzender, ontvanger, onderwerp etc. Je kan deze waar nodig nog aanpassen.
De sneltoetsen hiervoor vindt je boven in je scherm of druk op ?
om de volledige toetscombinaties te zien.
- Toets
y
om het bericht te versturen.
Als het bericht verstuurd is, keer je terug naar de Inbox.
E-mail ophalen#
NeoMutt zal periodiek op de achtergrond controleren of er nieuwe berichten zijn. Bekijk neomuttrc
om de frequentie aan te passen. Je kunt ook handmatig controleren of er nieuwe berichten zijn met de G
toets.
Extras#
Handtekening toevoegen#
Je kunt automatisch je handtekening toevoegen. Maak hiervoor eerst je handtekening aan in een apart bestand, bijvoorbeeld accounts/account1.sig
Met vriendelijke groet,
De Mutt Demo User
Vervolgens pas je accounts/account1.muttrc
aan om de handtekening bij te voegen:
set signature = "~/.config/neomutt/accounts/account1.sig"
Elke keer als je nu een nieuw bericht maakt, zal je handtekening toegevoegd worden.
Uiterlijk aanpassen#
Thema’s#
Het ziet er allemaal nogal vrij standaard uit, dus laten we daar wat verandering in aanbrengen. Elke kleur kan worden aangepast en er zijn ook verschillende thema’s beschikbaar die je direct kunt toepassen.
Als je een thema gevonden hebt, dan plaats je deze in ~/.config/neomutt/themes/theme1.muttrc
. Vervolgens voeg je het volgende toe aan je neomuttrc
:
source ~/.config/neomutt/themes/theme1.muttrc
Enkele voorbeelden van thema’s kan je hier vinden:
- Thema’s vanaf NeoMutt.org
- Catppuccin / download Je kunt ook je eigen thema maken, bekijk dan deze pagina om meer te lezen over kleurcodes en hoe je deze kunt toepassen.
Index formaat#
Het index formaat bepaalt hoe je Inbox weergegeven wordt. In onze basis configuratie hebben we het standaard formaat van NeoMutt overgenomen en ziet er als volgt uit:
set index_format="%4C %Z %{%b %d} %-15.15L (%<l?%4l&%4c>) %s"
Het ziet er misschien wat cryptisch uit, dus ik zal hier uitleggen wat het doet.
Voor de complete beschrijving en alle mogelijkheiden is er een index-format reference beschikbaar op de NeoMutt website.
Parameter | Beschrijving |
---|---|
%4C | Huidige bericht nummer |
%Z | Bericht vlaggen. Zie to chars en crypt chars voor meer uitleg over de vlaggen. |
%b | Bestandsnaam van de originele berichtfolder |
%d | Datum en tijd |
%-15.15L | Naam afzender of ontvanger als je zelf de afzender bent. -15 reserveert 15 karakters ruimte en .15 geeft 15 karakters weer. |
%<l?%4l&$4c> | Als aantal regelnummers %l beschikbaar is, toon deze. Anders de grootte van het bericht %4c in bytes. Dit wordt een conditional genoemd. |
%s | Het onderwerp van het bericht |
Voorbeeld van een aangepast formaat:
set index_format="%4C | %Z [%d] %y %-20.20F %-30.30a %?M?(#%03M)&(%4l)? %?y?(%.20Y) ?%s"
In dit voorbeeld toon ik bijvoorbeeld altijd naast de naam van de afzender, ook het echte e-mailadres dat gebruikt werd. Het datum formaat is aangepast naar Nederlands en er is wat extra ruimte toegevoegd.
Zie de volledige referentie om het formaat aan te passen naar je eigen voorkeur.
Wachtwoorden versleutelen#
Om wachtwoorden te versleutelen kunnen we een extern programma gebruiken. Op deze manier hoef je geen plain-tekst wachtwoorden in de configuratie op te slaan. Op die manier houdt je je configuration vrij van gevoelige gegevens.
Om dit te kunnen doen gaan we Password Store gebruiken. Dit is een super gave wachtwoord kluis waarmee wachtwoorden met GPG versleuteld kunnen worden.
Zodra NeoMutt een wachtwoord nodig heeft, roept het pass
aan om het wachtwoord op te halen.
GPG#
Maak eerst een nieuwe GPG key aan als je er nog geen hebt. Op GPG Key informatie kan je meer informatie vinden hoe je dit doet.
In het kort maak je een nieuwe key aan met gpg --full-generate-key
.
Wil je je key ook gebruiken om e-mailberichten te ondertekenen of te versleutelen? Zorg er dan voor dat je je e-mailadres opgeeft die je ook voor je e-mail gebruikt.
Password Store (pass)#
Password Store is een programma op de command line om wachtwoorden te versleutelen. En het doet nog meer dan dat. Het kan een directory structuur aanmaken om overzicht te behouden, het kan nieuwe wachtwoorden voor je genereren en er zijn een tal van plugins beschikbaar zodat je bijvoorbeeld een intergratie met je browser kunt maken.
Installeer pass met apt install pass
. Na de installatie moet je je eerste kluis initialiseren. Hiervoor ben je je GPG KeyId nodig.
gpg --list-keys
/root/.gnupg/pubring.kbx
------------------------
pub ed25519 2024-12-04 [SC]
FB67E860818F5B7231A46ABF28DB93A3C12DCE77
^^^ Dit is je GPG KeyID ^^^
uid [ultimate] Demo (Demo Key) muttseries1@system83.org
sub cv25519 2024-12-04 [E]
Vervolgens maak je de password store aan:
pass init FB67E860818F5B7231A46ABF28DB93A3C12DCE77
pass edit Email/account1
Op het moment dat je je wachtwoord gaat bewerken, zal je standaard editor gestart worden. Voer hier je bestaande wachtwoord in en sla het bestand op.
Om dit wachtwoord te lezen, het enige wat je hoeft te doen is pass Email/account1
. Het wachtwoord zal dan ontcijfert en weergegeven worden op de command line. Onthoudt dit commando, deze hebben we straks nodig als we de NeoMutt configuratie gaan aanpassen.
NeotMutt configuratie aanpassen#
Open het bestand accounts/account1.muttrc
en maak de volgende wijziging:
#set my_password='plain-text-password'
set my_password=`pass Email/account1`
Vanaf nu zal NeoMutt pass
gebruiken om het wachtwoord op te halen.
Labels en filters#
Komend van Evolution maakte ik gebruik van labels. Op deze manier kon ik snel onderscheid maken tussen TODO of DONE labels op basis van een kleur. Daarnaast kon je ook filters toepassen op basis van deze labels.
Filters#
Standaard heeft NeoMutt erg veel opties aan boord om filters toe te kunnen passen. Met de l
toets kan een patroon worden ingevoerd.
Als voorbeeld als je alle berichten wilt laten zien die de afgelopen 2 weken zijn ontvangen:
Limit to messages matching: ~d <2w
Meerdere filters kan je ook toepassen, in onderstaand geval: Toon alle berichten die geen DONE
label hebben en de afgelopen 2 weken zijn ontvangen:
Limit to messages matching: !(~y DONE) ~d <2w
Om alle filters weer te verwijderen voer je het filter all
in.
Nu kunnen filters ook toegepast worden om berichten te verwijderen. Maar wees hier voorzichtig mee! Met de D
toets kan je het filter toepassen om berichten te markeren om te verwijderen.
Bekijk het complete hoofdstuk over patronen voor alle opties die je in een filter kunt toepassen.
Labels en macros#
In het vorige voorbeeld hebben we gebruik gemaakt van een label. Om deze labels te kunnen toepassen kan je macros defineren.
Voeg het volgende toe aan neomuttrc
macro index ,T "<edit-label>TODO<enter>" "Set X-Label to TODO"
macro index ,D "<edit-label>DONE<enter>" "Set X-Label to DONE"
macro index ,W "<edit-label>WAIT<enter>" "Set X-Label to WAI(TING)"
macro index ,I "<edit-label>IMPO<enter>" "Set X-Label to IMPO(RTANT)"
Nu vanuit de index in NeoMutt kan je ,T
gebruiken om het TODO
label toe te kennen aan het geselecteerde bericht. Als je het aangepaste index formaat ook hebt ingesteld, dan zie je het label ook verschijnen bij je bericht.
Sidebar#
Een sidebar geeft je een overzicht van alle beschikbare folder die NeoMutt gebruikt. Persoonlijk gebruik ik hem niet, maar het is beschikbaar. Om de folders te zien zou je ook c
kunnen gebruiken, gevolgd door ?
om alle folder te tonen.
Om de sidebar beschikbaar te maken voeg je de volgende configuratie toe aan neomuttrc
# Laat standaard geen sidebar zien
set sidebar_visible = no
set sidebar_format = "%B%<F? [%F]>%* %<N?%N/>%S"
set mail_check_stats
# CTRL+P Scroll 1 item naar boven
bind index,pager \CP sidebar-prev
# CTRL+N Scroll 1 item naar beneden
bind index,pager \CN sidebar-next
# CTRL+O Open geselecteerde folder
bind index,pager \CO sidebar-open
# Toggle zichtbaarheid van de sidebar
bind index,pager B sidebar-toggle-visible
Slotwoord#
Ik hoop dat je tot dit punt bent gekomen en nu een werkende NeoMutt installatie hebt draaien. Natuurlijk is dit nog maar het begin, maar het heeft je denk ik genoeg handvaten om verder te gaan.
Bedankt voor het lezen, happy nerding en tot de volgende keer!