Mutt - ein textbasierter Mail-Client

Aus Tuxipedia
Version vom 1. Dezember 2025, 08:56 Uhr von Admin (Diskussion | Beiträge)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Mutt ist innerhalb meiner beruflichen "Bubble" (Kirchenmusik, Gemeinden, etc.) völlig unbekannt. Für andere Branchen wird dasselbe gelten. Dabei ist das mittlerweile 25 Jahre alte Programm ausgesprochen mächtig.

Mutt: Die UI

Der "Straßenköter" 😂 (so die Übersetzung des englischen Wortes "Mutt") läuft im Terminal, ist komplett tastatur-gesteuert, superschnell, in unfassbarem Maße konfigurierbar und völlig kostenlos erhältlich (GNU General Public License).

Auf demselben Server, der u.a. dieses Wiki hier zur Verfügung stellt, läuft Mutt im Hintergrund. Zusammen mit dem Multiplexer tmux lässt sich das Terminal via SSH zu einer Multitasking-Zentrale ausbauen, in der neben den Mails (mutt) bspw. auch ein Chatti-Client laufen kann.


Hier folgt ein Spickzettel über die aktuelle Einrichtung des Mutt-Clients.

Mutt-Spickzettel (Tuxi-Edition 😊)

Dieser Spickzettel fasst die wichtigsten mutt-Kommandos zusammen, so wie sie auf Tuxi aktuell benutzt werden.

---

    1. 1. Start & Konfiguration

- Hauptkonfiguration:

 - `~/.muttrc`
 - `~/.mutt/common.rc`
 - `~/.mutt/account-*.rc`

"account-*" bedeutet hier eine beliebige Anzahl von Conf-Files: account-gmail.rc für google-Mail, account-web.rc für web.de, und so weiter, für jeden Account eine eigene account-*-Datei.

Achtung: Die account-Dateien enthalten User-ID und Provider-Passwörter im Klartext. Auf Systemen, die keinen SSH nach außen offen haben, ist das unproblematisch. Alternativ müssten die Zugangsdaten aus gesicherten, ggf. verschlüsselten Quellen in die Skripte "hineingereicht" werden. Anmerkungen dazu weiter unten.

Templete für eine Account-Datei:

Beginn, my-account-template.rc

# ~/.mutt/account-1.rc

##### Absender #####

set from = "pippi@lindgren.de" set realname = "Pippi Langstrumpf"

##### IMAP #####

  1. Hauptordner (IMAPS, Port 993, SSL/TLS)

set folder = "imaps://pippi@imap.lindgren.de:993/" set spoolfile = "+INBOX"

set imap_user = "pippi"

  1. Variante A: Passwort interaktiv eingeben (sicher & simpel)
  2. (Zeile auskommentiert lassen)
  3. set imap_pass = "DEIN_ESCAPED_PASSWORT_HIER"
  1. Variante B: Passwort in der Config (nur, wenn du wirklich willst)
  2. Achtung: \ und $ etc. sauber escapen!
  3. Beispiel:
  4. Original-Passwort: /y,g+Cz3xWV(>/*<{<S\]%L/)Y_Z
  5. mutt-Version: /y,g+Cz3xWV(>/*<{<S\\]\$L/)Y_Z
  6. set imap_pass = "DEIN_ESCAPED_PASSWORT_HIER"

set imap_pass = "PW"

  1. Auth-Methode explizit auf LOGIN setzen

set imap_authenticators = "login"

##### SMTP (Provider, Port 587 + STARTTLS) #####

set smtp_url = "smtp://lindgren@lindgren.de:587" set smtp_authenticators = "login"

  1. Auch hier: entweder interaktiv oder escaped
  2. set smtp_pass = "DEIN_ESCAPED_PASSWORT_HIER"

set smtp_pass = "PW"

set ssl_starttls = yes # für SMTP 587 set ssl_force_tls = yes

##### Mailboxen in der Sidebar #####

  1. Standardordner auf dem IMAP-Server

mailboxes "+INBOX" "+Sent" "+Drafts" "+Trash"

  1. Gesendet / Entwürfe / Papierkorb

set record = "+Sent" # gesendete Mails set postponed = "+Drafts" # Entwürfe set trash = "+Trash" # „Papierkorb“

set imap_check_subscribed = yes

Ende, my-account-template


Debug: Loggen der Hintergrund-Aktivitäten

Debug-Start (Log in `muttdebug0` im aktuellen Verzeichnis):

 ```bash
 mutt -d3
 ```

---

2. Grundlegende Tasten im Index (Listenansicht)

- `j` / `k` – eine Zeile runter / rauf - `Ctrl + F` / `Ctrl + B` – Seite runter / rauf - `=` – **zur neuesten Mail** springen - `*` – zur ältesten Mail springen - `Tab` – zur nächsten neuen/ungelesenen Mail - `Enter` – ausgewählte Mail öffnen (in den Pager wechseln) - `q` – mutt verlassen (fragt ggf. nach Löschen markierter Mails)

---

3. Grundlegende Tasten im Pager (Mail-Ansicht)

- `Space` – nächste Seite / nächste Mail - `b` – eine Seite zurück - `j` / `k` – zur nächsten / vorherigen Mail - `q` – zurück in den Index

---

4. Ordner wechseln

- `c` – *change folder*

 - `+INBOX` – Posteingang
 - `+Sent` – Gesendet
 - `+Drafts` – Entwürfe
 - `+Trash` – Papierkorb

- `c` → `?` – IMAP-Ordnerliste anzeigen

Tipp: Du hast in `account-*.rc` passende `folder`/`spoolfile`-Werte gesetzt, so dass `+INBOX` usw. auf den richtigen Serverordner zeigen.

---

5. Mails schreiben & bearbeiten

- `m` – neue Mail schreiben - `r` – Antwort an Absender - `g` – Antwort an alle (group reply) - `f` – Mail weiterleiten

Beim Schreiben:

- `Ctrl + G` – Eingabe abbrechen - `Ctrl + C` – lieber vermeiden, kann mutt komplett abbrechen - Editor ist bei dir: `vim`

---

6. Mail markieren & löschen

- `d` – Mail zum Löschen markieren - `u` – Löschmarkierung zurücknehmen - `s` (im Index) – Mail in anderen Ordner verschieben/ speichern - `q` – mutt beenden:

 - fragt ggf. „Delete messages?“ → `y` löscht markierte Mails endgültig auf dem Server

---

7. Suchen & Filtern

1.7.1 Suchen

- `/` – Suche:

 - im Index: sucht über Betreff/Absender etc.
 - im Pager: sucht im Mailtext

- `n` – nächster Treffer - `N` – vorheriger Treffer 7.2 Filtern/Limit (nur bestimmte Mails anzeigen)

- `l` – *limit* setzen (Filter) - `l` + Enter auf leerer Zeile – Filter aufheben (alle Mails anzeigen)

Wichtige Filter-Ausdrücke:

- `~N` – neue Mails - `~O` – alte, ungelesene Mails - `~f TEXT` – Absender enthält `TEXT` - `~t TEXT` – Empfänger enthält `TEXT` - `~s TEXT` – Betreff enthält `TEXT` - `~d DD/MM/YYYY` – Mails vom bestimmten Datum

Beispiele:

- `l` → `~N` → nur neue Mails - `l` → `~f Account-1` → nur Mails von Absendern mit „Account 1“ - `l` → `~s rechnung` → nur Mails mit „rechnung“ im Betreff

---

8. Anhänge

- Im Pager:

 - `v` – Anhänge-Übersicht (*view attachments*)
 - Pfeile oder `j`/`k` – Anhang auswählen
 - `Enter` – Anhang anzeigen/öffnen
 - `s` – Anhang speichern

In deiner Config:

```mutt set attach_save_dir = "~/Downloads/mutt-attachments" ```

→ Standard-Speicherort für Anhänge (einmalig anlegen mit `mkdir -p ~/Downloads/mutt-attachments`).

---

9. Accounts umschalten (Makros)

Pro Account eine eigene Config, z. B.:

- `~/.mutt/account-1.rc` - `~/.mutt/account-2.rc`

Und in `~/.mutt/common.rc`:

```mutt macro index <F1> "<enter-command>source ~/.mutt/account-1.rc<enter><change-folder>+INBOX<enter>" "Zu Account 1 wechseln" macro pager <F1> "<enter-command>source ~/.mutt/account-1.rc<enter><change-folder>+INBOX<enter>" "Zu Account 1 wechseln"

macro index <F2> "<enter-command>source ~/.mutt/account-2.rc<enter><change-folder>+INBOX<enter>" "Zu Account 2 wechseln" macro pager <F2> "<enter-command>source ~/.mutt/account-2.rc<enter><change-folder>+INBOX<enter>" "Zu Account 2 wechseln" ```

Damit gilt:

- `F1` → Account-1 aktivieren, INBOX öffnen - `F2` → Account-2 aktivieren, INBOX öffnen

---

10. Caches (Header-Cache)

In deiner `common.rc`:

```mutt set header_cache = "~/.cache/mutt/headers" ```

- Verzeichnis anlegen:

 ```bash
 mkdir -p ~/.cache/mutt/headers
 ```

- Beschleunigt das Öffnen großer IMAP-Ordner, weil mutt Header lokal cacht. - Bodies/Mailtexte selbst werden *nicht* gecacht, nur Kopfzeilen.

---

11. Eingaben abbrechen

- Befehlszeile (`:`), Suche (`/`), Prompts:

 - `Ctrl + G` – Eingabe abbrechen / raus
 - Enter auf leerer Zeile – „nichts tun“ und zurück

`Ctrl + C` lieber meiden – das kann mutt komplett beenden.

---

12. Typische Stolperfallen

- **Passwörter**: Sonderzeichen in `set imap_pass` / `smtp_pass` können Probleme machen.

 → Am bequemsten ist: Passwörter *nicht* in der rc-Datei speichern, sondern mutt bei Bedarf fragen lassen.

- **Sidebar**: Viele Dokus beziehen sich auf neomutt/Sidebar-Patches.

 Deine Version hat *keine* Sidebar-Variablen wie `sidebar_visible`.  
 → Sidebar-Beispiele aus dem Netz sind daher mit Vorsicht zu genießen.

- **IMAP-Ordner-Zoo**: Mehrere „Gesendet/Entwürfe/Papierkorb“-Ordner stammen von verschiedenen Mailclients.

 Aufräumen am besten einmal zentral in einem GUI-Client, dann sehen alle – inklusive mutt – die gleiche, übersichtliche Struktur.

---

13. Sicherheit (Passwörter & Konfiguration)

- Die Dateien `~/.muttrc`, `~/.mutt/common.rc` und `~/.mutt/account-*.rc` sind **normale Textdateien**. - `account-*` bedeutet hier: beliebig viele Account-Dateien, z. B.:

 - `account-netcologne.rc`
 - `account-dienst.rc`
 - `account-gmail.rc`
 - `account-web.rc`
 - usw.

13.1 Dateirechte

Mindestens:

```bash chmod 700 ~/.mutt chmod 600 ~/.muttrc ~/.mutt/*.rc ```

- Nur dein Benutzer darf lesen/schreiben. - Keine Gruppen-/Welt-Rechte (`rw-------`).

13.2 Passwörter in Klartext

In `account-*.rc` stehen üblicherweise:

```mutt set imap_user = "…" set imap_pass = "…" set smtp_pass = "…" ```

Varianten im Umgang damit:

1. **Komfort-Variante (wie aktuell)**

  - Passwörter stehen im Klartext in `account-*.rc`.
  - Auf einem **privaten, LUKS-verschlüsselten Server** ohne fremde User ist das ein vertretbarer Kompromiss.
  - Wichtig:
    - Home-Verzeichnis und `.mutt` nicht per NFS/Samba „für alle“ freigeben.
    - Backups nur auf ebenfalls verschlüsselten Medien (z. B. externe Platten oder NAS-Systeme).

2. **Sicherer, aber unbequemer**

  - `set imap_pass` / `smtp_pass` **weglassen**.
  - mutt fragt beim Verbindungsaufbau nach Benutzer/Passwort.
  - Vorteil: kein Passwort auf der Platte.
  - Nachteil: Tippaufwand / Passwort-Manager nötig.

3. **GPG-/Password-Store-Variante (fortgeschritten)**

  - Zugangsdaten in einer **GPG-verschlüsselten Datei** oder einem Passwort-Store wie `pass` ablegen.
  - Ein Wrapper-Skript startet mutt, entschlüsselt die Daten und schreibt temporär eine `account-*.rc` oder setzt Umgebungsvariablen.
  - Erhöht die Sicherheit, aber auch die Komplexität.  
    Für ein Single-User-System wie Tuxi meist nicht nötig.

13.3 Was *nichts* bringt

- Nur einen **Hash** der Passphrase in `account-*.rc` zu speichern, hilft nicht:

 - IMAP-/SMTP-Server benötigen das **echte Passwort** (oder ein App-Passwort), kein Hash davon.

- Einen Hash lokal zu prüfen und dann irgendwoher das Klartext-Passwort zu holen, verschiebt nur die Frage:

 - *Wo liegt das echte Passwort und wie ist es geschützt?*

13.4 Praxis-Empfehlung für Tuxi

Für ein privates Setup (LUKS-verschlüsselter Server, keine fremden User, SSH-Zugang nur intern) gilt:

- `~/.muttrc` und `~/.mutt/*.rc` mit `chmod 600` schützen. - LUKS + verschlüsselte Backups sorgen dafür, dass bei Diebstahl der Platte niemand an die Konfiguration kommt. - Wenn's später paranoider werden soll:

 - Passwörter aus den rc-Dateien entfernen
 - und mutt sie jedes Mal interaktiv abfragen lassen
 - oder einen GPG-/PGP/-pass-basierten Wrapper ergänzen.