ubuntuusers.de

NeoMutt

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:


Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.

neomutt.png NeoMutt 🇬🇧 ist ein textbasierter E-Mail-Client für die Konsole. Das Programm ist ein Fork 🇬🇧 von Mutt, welcher einige Patches der Community integriert.

Es handelt sich in erster Linie um MailUserAgents, die externe Programme für das Senden (MTA) bzw. den Empfang (MDA und MRA) verwenden. Die in den Ubuntu Quellen bereitgestellten binaries sind mit IMAP bzw. SMTP Support compiliert, sodass diese externen Programme nicht mehr zwingend zum Einsatz kommen müssen.

Der vorliegende Artikel konzentriert sich auf NeoMutt, ist aber in weiten Teilen für Mutt ebenso anwendbar. Er zielt darauf ab, die Einstiegshürde zu entschärfen und die anfängliche Verwirrung in Bezug auf die Funktionsweise zu minimieren.

Um die ganze Breite vorhandener Konfigurationsmöglichkeiten auszuschöpfen, empfiehlt sich eine Konsultation der Manual Page von neomuttrc und der zahlreichen in den Links angegebenen Quellen, wobei insbesondere das Arch wiki einen reichen Born sinnvoller Einstellungen bietet.

./Bildschirmfoto.png

Einrichtung

Installation

NeoMutt befindet sich in den Quellen.

  • neomutt (universe)

Befehl zum Installieren der Pakete:

sudo apt-get install neomutt 

Oder mit apturl installieren, Link: apt://neomutt

Um in Erfahrung zu bringen, mit welchen Optionen kompiliert wurde, nutzt man die Option -v

neomutt -v 

Das Programm mutt ist über das Paket mutt ebenfalls aus den offiziellen Paketquellen installierbar.

Konfiguration von NeoMutt

Neomutt wird über die Datei .neomuttrc gesteuert und es lohnt sich, einen Blick in die manpage und die Beispielkonfiguration in /usr/share/doc/neomutt/examples zu werfen. Die Datei wird an verschiedenen Orten gesucht, wobei in der manpage der Ubuntu Version nur ein Teil davon angegeben ist. Eine robuste Lösung ist es, die Datei unter ~/.neomutt/neomuttrc anzulegen und die Konfiguration in mehrere Dateien aufzuteilen.

Hinweis:

NeoMutt sucht in einer bestimmten Reihenfolge🇬🇧 nach Konfigurationsdateien, sodass Mutts Konfigurationsdateien benutzt werden, sofern keine NeoMutt-Dateien gefunden werden.

Die Reihenfolge der Schritte ist nicht beliebig, weil Variablen gesetzt werden, die ihre Gültigkeit so lange behalten, bis ihnen ein neuer Wert zugewiesen wird. Alle Einstellungen lassen sich testen, indem man die Variablen im laufenden Betrieb nach vim-Manier setzt: Die Eingabe eines Doppelpunktes gefolgt von dem Kommando, also Beispielsweise :set wrap=100

~/.neomutt/neomuttrc

source ~/.neomutt/global

# die zuletzt eingebundene Konfiguration wird beim Start geöffnet sein
source ~/.neomutt/gmailrc
source ~/.neomutt/posteorc

# source ~/.neomutt/color

~/.neomutt/global

set ssl_starttls=yes

set sendmail="/usr/bin/msmtp"               # Falls externer MTA benutzt wird
set envelope_from=yes                       # übergibt msmtp den richtigen Absender
set edit_hdrs                               # Header im Editor mitbearbeiten
set signature ="~/.neomutt/signatur"        # Text der Signatur
set attribution="%f schrieb am %d:"         # Zitatkennzeichnung

set sort=threads                            # E-Mails werden nach Gesprächsverlauf und nach Datum sortiert
set sort_aux=date-sent
#set sort=date                              # würde alternativ zuerst nach Datum sortieren

set wrap=100                                # Zeilenumbruch im Pager
set sidebar_short_path                      # imap pfade im sidepanel kürzen
set sidebar_visible                         # sidebar

#set mail_check_stats                       # regelmäßig auf neue Mails prüfen (POP3)
unset imap_passive                          # nicht nur bestehende IMAP Verbindung auf neue Mails prüfen


#unset allow_8bit                                               # u.U. verbesserte Darstellung von Umlauten
set date_format="%a, %d. %b %y %H:%M"                           
#set index_format="%4C %Z %D %-22.22F (%?l?%4l&%4c?) %s"	# Format der Mail-Übersicht
#set folder_format="%2C %8s %d %t %N %f"                        # Format des Datei-Browsers

set pager_index_lines=10                                        # Anzahl der angezeigten Mails in der Übersicht

set alias_file=~/.neomutt/alias        # Kontakte. Normalerweise ~/.neomuttrc
source ~/.neomutt/alias                
set reverse_alias                      # Im Index Name statt Absender-Adresse anzeigen, wenn er gefunden wird

# Editor ist Vim im Einfügemodus auf der ersten Leerzeile mit Zeilenumbruch bei 80 Zeichen
set editor="vim -c 'startinsert' -c 'set tw=80 et' -c 'set wrap' '+/^$'" 

~/.neomutt/gmailrc

set from="login@gmail.com"                                    # Absender Adresse
set realname="Log In"                                         # Absender Name

set imap_login="login@gmail.com"
set imap_pass="`secret-tool lookup user login@gmail.com`"

# falls kein externer MTA genutzt wird
#set smtp_url="smtps://login@smtp.example.com:587/"
#set smtp_pass="`secret-tool lookup user login@gmail.com`"

set folder="imaps://login@imap.web.de/"                       # Nur wenn mehrere accounts auf dem selben Server liegen, muss das login zwingend angegeben werden. 
set spoolfile="=INBOX"                                        # Posteingang
mailboxes =INBOX                                              # Auf neue Mails prüfen. Kann mehrere Pfade definieren

# falls ein externer MRA genutzt wird
#set folder="$HOME/Mail"
#set spoolfile="="
#mailboxes =

set postponed="=[Google Mail]/Entwürfe"                       # Entwürfe
set record="=[Google Mail]/Gesendet"                          # Gesendet  
set mbox="=[Google Mail]/Archiv"                              # Gespeichert

account-hook $folder "set imap_user=login@gmail.com imap_pass=$imap_pass"
folder-hook $folder 'source ~/.neomutt/gmailrc'

# makro setzen, wenn gewünscht
#macro index <esc>1 "<change-folder>$folder<enter>"

~/.neomutt/posteorc

set from=login@posteo.de
set realname="Log In"

set imap_login="login@posteo.de"
set imap_pass="`secret-tool lookup user login@posteo.de`"

# falls kein externer MTA genutzt wird
#set smtp_url="smtps://login@posteo.de:587/"
#set smtp_pass="`secret-tool lookup user login@posteo.de`"

set folder="imaps://posteo.de/"
set spoolfile="=INBOX"
mailboxes =INBOX

# falls ein externer MRA genutzt wird
#set folder="$HOME/Mail"
#set spoolfile="="
#mailboxes =

set postponed="=Entwürfe"
set record="=Gesendet"
set mbox="=Archiv"

account-hook $folder "set imap_user=login@gmail.com imap_pass=$imap_pass"
folder-hook $folder 'source ~/.neomutt/gmailrc'

#macro index <esc>2 "<change-folder>$folder<enter>"

Tastatur-Abkürzungen

Um im NeoMutt-Pager Vim-Tastatur-Einstellungen zu haben, Folgendes am besten in einer via source ~/.neomutt/bindings eingebundenen Datei definieren:

~/.neomutt/bindings

bind index G imap-fetch-mail
bind pager j next-line
bind pager k previous-line
bind pager g top
bind pager G bottom

Es ist mit (groß) J K noch möglich, gleichzeitig durch den Index zu scrollen.

Mit dieser Syntax lassen sich auch andere Tatstatur-Abkürzungen definieren. Details dazu in der Dokumentation 🇬🇧.

OAuth2

Es gibt aktuell kaum noch Provider, die reine Nutzername/Passwort-Authentifizierung erlauben. NeoMutt kann aber mit OAuth2 umgehen – es empfiehlt sich, die aktuelle Version des Scripts herunterzuladen. Anbei befindet sich auch eine (englische) Anleitung, wie man die Einrichtung beim Provider durchführt: https://github.com/neomutt/neomutt/tree/main/contrib/oauth2

Passwörter

Grundsätzlich kann man Passwörter auf verschiedene Weise bereitstellen:

Hinweis:

Falls sich Sonderzeichen wie $, ' oder " im Passwortstring befinden, kann das zu unvorhergesehenen Problemen führen, die unspezifische Fehlermeldungen produzieren.

GNOME Keyring

Um den Schlüsselbund von der Kommandozeile nutzen zu können, muss das entsprechende Werkzeug installiert sein:

  • libsecret-tools (universe)

Befehl zum Installieren der Pakete:

sudo apt-get install libsecret-tools 

Oder mit apturl installieren, Link: apt://libsecret-tools

Folgender Befehl fügt exemplarisch ein Passwort in den Schlüsselbund ein. Die Angabe des Schlüssel-Wert-Paares service smtp ist für msmtp von Belang. Sollte das IMAP-Passwort abweichen, ändere man im Duplikat einfach zu service imap und --label=mutt.

secret-tool store --label=msmtp host smtp.example.com service smtp user user@example.com 

Das Auslesen via Kommandozeile erfolgt adäquat

secret-tool lookup user user@example.com 

Alternativ kann auch Seahorse verwendet werden.

GPG

Folgender Befehl erstellt exemplarisch eine Passwortdatei. Zunächst wird der GPG-Agent nach dem Masterpasswort fragen. Dann gibt man das Passwort im Klartext auf der Konsole ein, gefolgt von Return (für neue Zeile) und STRG-D (für EOF)

gpg2 --output ~/config/mutt/password.my_account.gpg -c 
Klartext

Das Speichern von Passwörtern im Klartext (via Konfigurationsoptionen <Protokoll>_pass) ist nur auf als absolut sicher eingestuften Computern zu empfehlen, jeder Nutzer mit Root-Zugriff kann diese problemlos auslesen. Falls gewünscht, sollten die Zugangsdaten auf jeden Fall in einer separaten Datei mit beschränkten Zugriffsrechten vorgehalten werden.

externer MTA

NeoMutt (und auch Mutt) sind in Ubuntu mit smtp-Unterstützung kompiliert, es kann aber auch ein externes Programm als MTA eingesetzt werden, wie beispielsweise msmtp. Die manpage ist informativ und enthält neben Beispielen auch Hinweise für die Konfiguration von NeoMutt.

Hinweis:

Die meisten Provider beenden ihre Unterstützung für Nutzername/Passwort-Authentifizierung. Es ist aber grundsätzlich möglich, msmtp mit oauth2 zu konfigurieren (siehe https://wiki.archlinux.org/title/Msmtp#OAuth2_Setup)

  • msmtp (universe)

  • msmtp-gnome (universe)

Befehl zum Installieren der Pakete:

sudo apt-get install msmtp msmtp-gnome 

Oder mit apturl installieren, Link: apt://msmtp,msmtp-gnome

Die Konfiguration geschieht über eine Datei. Es wird zunächst die benutzerspezifische, dann die systemweite Datei gesucht. Die entsprechenden Pfade bringt man per --version in Erfahrung:

msmtp --version 

Die Benutzerkonfigurationsdatei liegt unter $HOME/.msmtprc. Der einfachste Weg ist, sie von /usr/share/doc/msmtp/examples/msmtprc-user.example zu kopieren und anzupassen:

cp /usr/share/doc/msmtp/examples/msmtprc-user.example ~/.msmtprc
editor ~/.msmtprc 
#Exemplarische Konfiguration für einen posteo und einen google account
defaults
tls on
tls_starttls on                        # Ausschalten falls Test mit »Server schickte leere Antwort« fehlschlägt
auth on

# auskommentieren, wenn gewünscht:
#logfile ~/.msmtp.log
# logging auf stdout
#logfile -
# journal
#syslog on

account gmail
host smtp.gmail.com
from login@gmail.com
user login@gmail.com
# setzen, wenn gpg2 als Methode benutzt wird
#passwordeval gpg2 --no-tty -q -d ~/.msmtp-password.gmail.gpg

account posteo
host posteo.de
from login@posteo.de
user login@posteo.de

# setzen, wenn gpg2 als Methode benutzt wird
#passwordeval gpg2 --no-tty -q -d ~/.msmtp-password.gmail.gpg

# posteo alias

account alias : posteo
from alias@posteo.de

#Das Posteo Konto soll das Standard-Konto werden:
account default: posteo

# vim: set ft=msmtp:

Hinweis:

Wenn das Passwort im gnome-keyring korrekt abgelegt ist, fragt msmtp dieses automatisch ab.

Der Mailversand kann wie folgt getestet werden

msmtp -a posteo --logfile=- -- empfänger@adresse.de <<EOT
n/T
EOT 

oder, in bash, kürzer

msmtp -a gmail --logfile=- -- empfänger@adresse.de <<< n/T 

Mit dem Schalter -a wird der Account angegeben, bei fortlassen der als default hinterlegte gewählt.

externer MRA

NeoMutt aus den Quellen ist mit IMAP-Unterstützung kompiliert, kann aber auch für die Benutzung eines externen MRA, wie beispielsweise Fetchmail oder OfflineIMAP 🇬🇧, konfiguriert werden. In diesem Fall empfielt sich der Einsatz von Procmail zum Filtern der eingehenden Nachrichten.

Das Programm Procmail verteilt E-Mails nach definierten Regeln in verschiedene Mailboxen. So kann die Post im lokalen Postfach gefiltert werden. Dazu wird im Home-Verzeichnis der Ordner Mail angelegt. Dieser dient später auch NeoMutt als Arbeitsverzeichnis. Die Steuerung von Procmail geschieht über die Datei .procmailrc, welche im Home-Verzeichnis liegt. Der folgende Quelltext wird in einen Editor eingegeben [3] und unter .procmailrc gespeichert. Der Quelltext beschreibt eine einfache Filterung nach Begriffen im Kopf einer E-Mail. Die erkannten E-Mails werden dann in verschiedene Mailboxen (hier im Beispiel: freunde, arbeit, chef und spam) nach ~/Mail/ kopiert.

MAILDIR=$HOME/Mail                # Dieses Verzeichnis muss existieren
LOGFILE=$HOME/.procmaillog        # Name der Protokolldatei
LOGABSTRACT=no
VERBOSE=off

# E-Mails von diesen Personen immer erlauben (Whitelist)
                        # eine Filterregel (Rezept genannt) beginnt immer mit :0 , ohne die Angabe von weiteren Parameteren
:0                      # wird der Mail-Header mittels egrep durchsucht
* person                # Suchmuster beginnen immer mit einem * , gefolgt vom Suchbegriff
$MAILDIR/freunde        # gibt die Mailbox an, in welche eine entsprechende Mail verschoben wird

:0                      # enthält ein Rezept mehrere Suchbegriffe, so werden diese durch ein logisches UND verknüpft
* @arbeit.de            # eine logische ODER-Verknüpfung gibt es leider nicht
* chef
$MAILDIR/chef

:0 
* @arbeit.de
$MAILDIR/arbeit

# Spam aussortieren 
:0
* cash
$MAILDIR/spam

:0                      
* money
$MAILDIR/spam

:0
* credit
$MAILDIR/spam

:0
* @werbung.de
$MAILDIR/spam    

Nun kann man Fetchmail und Procmail schon einmal testen. Dazu den folgenden Befehl in ein Terminal eingeben[2]:

fetchmail -kv -m "/usr/bin/procmail -d %T" 

Wenn für alle in .procmailrc definierten Regeln eine entsprechende E-Mail abgeholt wurde, existieren nun im Verzeichnis ~/Mail die entsprechenden Ordner.

HTML-E-Mails

In NeoMutt steht diese Funktion von Haus aus zur Verfügung, indem man in der entsprechenden Mail V drückt. In der Datei mailcap können Einstellungen getroffen werden, wie von Email-Clients mit verschiedenen MIME-Typen, z.B. HTML (text/html) umgegangen werden soll. Auch NeoMutt wertet diese Datei aus. Details zu den möglichen Einstellungen finden sich in der NeoMutt-Dokumentation 🇬🇧.

Anzeige mit Lynx oder w3m

Mailcap kann so konfiguriert werden, dass HTML-E-Mails in-line mit Lynx oder w3m angezeigt werden. Dazu Folgendes in der Datei ~/.mailcap eintragen:

text/html; /usr/bin/lynx -dump -width=100 -nolist %s; description=HTML Text; nametemplate=%s.html; copiousoutput; needsterminal;

oder, für w3m:

text/html; w3m -I %{charset} -T text/html; copiousoutput;

Um HTML-Emails automatisch anzuzeigen, muss in der Konfigurationsdatei

auto_view text/html

eingefügt werden. Das hat den Nachteil, dass als text/html markierte Emails auch dann als HTML angezeigt werden, wenn sich reiner Text in den Bestandteilen der Mail befindet. Dies kann man via

# Gibt chronologisch an, welche MIME-Typen bevorzugt werden und
# direkt angezeigt werden sollen
alternative_order text/enriched text/plain text/html text

korrigieren.

Hat man das Programm

  • urlscan (universe)

Befehl zum Installieren der Pakete:

sudo apt-get install urlscan 

Oder mit apturl installieren, Link: apt://urlscan

installiert, kann man die Zeilen

macro index \cb |urlscan\n
macro pager \cb |urlscan\n

zur Mutt-Konfiguration hinzufügen. Hat man jetzt eine E-Mail geöffnet, die eine Internetadresse enthält, kann man Strg B drücken und damit die Urls im Browser öffnen.

In Neomutt ist dies bereits voreingestellt.

Hooks

Über Hooks lassen sich bei verschiedenen Operationen, wie dem Senden oder Weiterleiten einer bestimmten Email, die durch einen Suchausdruck 🇬🇧 oder regulären Ausdruck bestimmt werden kann, zuvor weitere Operationen vornehmen. Eine Liste aller Hooks mit Beispielen ihrer Funktionsweise findet sich in der Dokumentation 🇬🇧.

Mehrere Identitäten

Bei vielen Anbietern kann man mehrere Identitäten haben. Bei der Beantwortung und Weiterleitung ist es bequem, gleich den richtigen Absender im Header zu haben:

set reverse_name=yes   # Einstellung steht im Konflikt zu `$my_hdr from`

alternates ^login@example\.com$ ^alias@example\.com$
message-hook ~C'login@example\.com' 'set realname="Login"'
message-hook ~C'alias@example\.com' 'set realname="Alias"'
Automatisch Verschlüsselung von E-Mails

Es kann sinnvoll sein, E-Mails an einen bestimmten Empfänger immer zu verschlüsseln. Dies lässt sich über den send-hook einstellen:

send-hook '~t ^recipient@mailserver\\.de$' 'set crypt_auto_encrypt'

Auch lässt sich eine spezifische Schlüssel-ID (auch Fingerprint, Name, E-Mail-Adresse) für eine E-Mail an einen besonderen Empfänger über einen Hook angeben:

crypt-hook '~t ^recipient@mailserver\\.de$' <keyID>

Bedienung

NeoMutt wird über den Befehl

neomutt 

gestartet [2].

Nützliche Befehle für den Einstieg

Es lohnt sich immer, einen Blick in die oberste Zeile zu werfen, dort werden einige verfügbare Befehle angezeigt. Es gilt zu beachten, dass sich die Tastenbelegungen in den verschiedenen Ansichten unterscheiden. Hat man beispielsweise eine Mail zum Lesen geöffnet, blendet T den zitierten Text ein und aus, während, wenn nur der Index sichtbar ist, die Funktion tag-pattern ausgeführt wird.

Im Index
? Befehlsübersicht für die aktive Ansicht
Mailbox/E-Mail öffnen, Eingaben bestätigen, in E-Mails eine Zeile weiterblättern
In E-Mails zurückblättern
         In E-Mails eine Seite weiterblättern bzw. nächste E-Mail öffnen
- In E-Mails eine Seite zurückblättern
Y Liste der Mailboxen aufrufen
C wechseln der Mailbox ( Tab ⇆ Liefert eine Liste aller Mailboxen bzw. vervollständigt den Namen einer Mailbox)
, bzw. K , J Zum Navigieren in Mailboxen
Tab ⇆ Zur nächsten ungelesenen Nachricht springen
= Zur ersten Nachricht springen
* Zur letzten Nachricht springen
/ Nachricht suchen
L Ansicht auf bestimmte Nachrichten begrenzen
B Bounce – Nachricht weiterleiten ohne den Inhalt zu bearbeiten
F Nachricht weiterleiten
S Nachricht in einen anderen Ordne verschieben
P GPG-Menü öffnen
A Absenderadresse in die Alias-Liste übernehmen
M Mail verfassen
$ Mailbox synchronisieren

Beim Wechseln der Mailboxen mit C Tab ⇆ blättert jedes weitere Tab ⇆ durch verschiedene Ansichten. Das selbe Verhalten zeigt die Liste der Mailboxen mit Y . Dort lassen sich auch neue IMAP Ordner anlegen und löschen. Am Einfachsten allerdings legt man Ordner an, indem man bei S einen nicht existenten Zielpfad angibt.

Hinweis:

Bei der Angabe von Zielen muss bei IMAP statt / ein . geschrieben werden. Also statt =mein/tief/verschachtelter/ordner muss es heißen =mein.tief.verschachtelter.ordner

In NeoMutt lassen sich alle Tastaturbelegungen an die persönlichen Bedürfnisse anpassen. Für detaillierte Informationen über Konfiguration und Bedienung sei auf die Links verwiesen.

Tastatur-Abkürzungen für Mail-Ordner

Beim Wechseln der Ordner ist es bequem, Tastatur-Abkürzungen einzusetzen. Beispielsweise führt C ! in den Posteingang.

Mail-Ordner Tastatur-Abkürzungen
Variable Shortcut
$folder =, +
$spoolfile !
$mbox >
$record <
last visit !!, -
$HOME ~

Adressbuch

Einen Kontakt kann man erstellen, indem man ihn einfach im Format

alias BEZEICHNUNG   NAME DES KONTAKTES   <MAIL@ADRESSE.DE> 

in die Alias-Datei (normalerweise ~/.neomuttrc) einträgt, oder in NeoMutt eine E-Mail des gewünschten Kontakts markiert und A drückt, oder mit dem Befehl

alias <nickname> [ <long name> ] <address> 

wobei das letzte leerzeichenseparierte Wort als Email-Adresse gilt.

Nun kann man in NeoMutt als Empfänger einer neuen Mail statt der Adresse die Bezeichnung des Kontakts eingeben ( Tab ⇆ zur Vervollständigung). Alternativ empfiehlt sich die Verwendung des Programmes abook, dass sich auch aus den Quellen als Paket abook beziehen lässt.

Problembehebung

Fehler bei der Anzeige von HTML-Mails mit Firefox

Gelegentlich kann es zu einem Fehler bei der Anzeige kommen. Der Browser meldet dann File not found. In diesem Fall muss in der Datei ~/.mailcap eine Verzögerung eingebaut werden:

text/html; /usr/bin/sensible-browser %s && sleep 1; description=HTML Text; nametemplate=%s.html

was der angepassten Zeile aus /etc/mailcap entspricht.

Diese Revision wurde am 16. November 2024 17:02 von karlsebal erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Kommunikation, Internet, Email