E-Mails mit GNU Emacs und mu4e

  tux0r   Lesezeit: 7 Minuten  🗪 8 Kommentare Auf Mastodon ansehen

Wie man aus GNU Emacs einen alltagstauglichen E-Mail-Client macht.

e-mails mit gnu emacs und mu4e

In der heutigen Zeit ist, wie bekannt ist, die Unabhängigkeit von US-amerikanischen E-Mail-Anbietern gar keine so schlechte Idee. Noch besser ist es natürlich, wenn man nicht nur beim Server, sondern auch beim Client maximale Freiheiten hat. Wie gut, dass es GNU Emacs gibt.

Der in GNU Emacs eingebaute "Mail- und Newsreader" Gnus, was für "good news" steht, macht zwar als Newsreader (für die Jüngeren: so nennt man "Usenetbrowser"; für die noch Jüngeren: Wikipedia) seinem Ruf als eierlegende Wollmilchsau einige Ehre, als Mailprogramm ist er aber eher rustikal. Zum Glück gibt es mu4e. mu4e steht für "mu for Emacs" und ist - wie sollte es anders sein - ein Teil von mu, einer freien Mailsuite, entwickelt und gepflegt von dem in Finnland lebenden Niederländer Dirk-Jan Binnema, mithin äußerst europäisch.

Zwar ist mu auch auf der Kommandozeile bereits sehr mächtig und verfügt etwa über eine großartige Suchfunktion, aber auch diese setzt erst mal eine Einrichtung der Mailinfrastruktur voraus. Weil diese Einrichtung aber doch nicht ganz so leicht ist, erläutere ich im Folgenden eine mögliche Konfiguration. Ihr solltet schon GNU Emacs installiert haben, den Rest machen wir jetzt.

mu installieren und einrichten

Normalerweise bekommt ihr mu mit mu4e am einfachsten direkt aus eurer Paketverwaltung. Zu beachten ist, dass mu4e manchmal nicht automatisch Teil des Pakets ist. Unter Debian GNU/Linux ist mu4e ein eigenes Paket, in Gentoo Linux könnt ihr die Installation beider Komponenten über eine USE-Flag steuern:

sudo USE='emacs' emerge -av net-mail/mu

Natürlich kann das in der von euch benutzten Distribution wiederum ganz anders aussehen.

Ist mu nun installiert (zu mu4e komme ich weiter unten), dann müsst ihr einmalig euer Mailverzeichnis initialisieren. Dieses kann überall liegen und einen beliebigen Namen tragen (im Beispiel nehmen wir der Einfachheit halber ~/Maildir), enthält aber später all eure E-Mails (siehe Maildir), achtet daher unbedingt auf den freien Speicherplatz. Es ergibt Sinn, direkt eure Mailadresse anzugeben, damit mu sie euch automatisch zuordnen kann:

mu init --maildir=~/Maildir --personal-address=foo@beispiel.org

E-Mails rein

Um eure E-Mails von eurem Mailserver in dieses Mailverzeichnis zu bekommen, braucht ihr eine Software wie isync. isync ruft eure E-Mails von einem IMAP4-Server eurer Wahl ab und legt sie in euer Mailverzeichnis, auch isync findet ihr normalerweise in eurer Paketverwaltung. Lasst euch nicht irritieren: das Programm, um Mailboxen zu synchronisieren, ist Teil von isync, heißt aber mbsync.

Nach der Installation von isync müsst ihr mbsync mitteilen, was es überhaupt tun soll. Hierfür müsst ihr in eurem Benutzerverzeichnis eine Konfigurationsdatei namens .mbsyncrc anlegen, die zum Beispiel folgenden Inhalt hat (die Werte müsst ihr natürlich für euren Anbieter anpassen, den Namen "rhabarber" könnt ihr frei vergeben):

################################
#### Meine Hauptmailadresse
################################

IMAPAccount rhabarber
Host mail.euer-mailanbieter.de
User foo@beispiel.org
Pass euerMailpasswort
Port 993
TLSType IMAPS
TLSVersions -1.1
AuthMechs LOGIN
SystemCertificates yes
# oder zum Beispiel: CertificateFile /etc/ssl/certs/ca-certificates.crt

IMAPStore rhabarber-remote
Account rhabarber

MaildirStore rhabarber-local
SubFolders Verbatim
Path ~/Maildir/rhabarber/
Inbox ~/Maildir/rhabarber/INBOX

Channel rhabarber
Far :rhabarber-remote:
Near :rhabarber-local:
Patterns *
Create Both
Expunge Both
SyncState *

Übrigens: Statt das Klartextpasswort direkt in die Datei zu schreiben, könnt ihr mit PassCmd auch einen Befehl angeben, der das Passwort ausgibt. Wenn euer Passwort zum Beispiel in einer GnuPG-verschlüsselten Datei steht, dann geht das so:

PassCmd "gpg --no-tty --for-your-eyes-only -dq ~/mailpasswort.gpg"

Ein beherztes mbsync -a ruft jetzt eure Mails ab. Das kann jetzt ein bisschen dauern. Wenn ihr alles richtig gemacht habt, landen währenddessen all eure E-Mails in eurem Mailverzeichnis. Wenn nicht, dann könnt ihr der Sache mit mbsync -aV näher auf den Grund gehen.

Falls eure Installation von isync nicht automatisch mit einem Systemdienst daherkommt, könnt ihr hierfür auch einen Cronjob einrichten, etwa alle fünf Minuten (dabei könnt ihr auch gleich vermeiden, dass parallele Abrufe stattfinden):

*/5  *  *  *  *   killall mbsync &>/dev/null ; mbsync -a > /tmp/mbsync.log

Ist alles so weit eingerichtet, müsst ihr mu mitteilen, dass sich etwas Wesentliches geändert hat und die erstmalige Indizierung nötig ist:

mu index

Das war's auch schon.

E-Mails raus

Rein wäre damit erledigt. Raus geht wiederum mit einem anderen Programm, nämlich msmtp. Auch diese Software bekommt ihr normalerweise in eurem Paketmanager, und auch sie braucht eine Konfiguration, bevorzugt unter ~/.msmtprc:

defaults
logfile /tmp/msmtp.log
auth on
tls on
protocol smtp

account rhabarber
host mail.euer-mailanbieter,de
port 465
from foo@beispiel.org
user foo@beispiel.org
password euerMailpasswort
# oder: passwordeval gpg --no-tty --for-your-eyes-only -dq ~/mailpasswort.gpg

Der Abschnitt defaults gilt hierbei für all eure SMTP-Konten (mehr dazu weiter unten). Wenn ihr nur eines einrichten wollt, können die Einträge stattdessen auch direkt ans Ende der Datei gestellt werden. Zum Testen, ob alles geklappt hat, könnt ihr versuchen, euch selbst eine Mail zu schicken:

set sendmail="/usr/bin/msmtp -t"
echo "Alles tiptop hier!" | mail -s "Testbetreff" foo@beispiel.org

Falls nun Login- oder TLS-Fehler auftreten, müsst ihr wahrscheinlich STARTTLS ausschalten und/oder eure Zertifikatsdatei (analog zu isync) angeben. Die Manpage zur Konfiguration ist hier außerordentlich sinnvoll zu lesen. Wenn ihr aber die Mail bekommen habt, ist das Schwerste geschafft. Wirklich. Versprochen. :-)

mu4e einrichten

Jetzt kommen wir zum schönsten Teil, nämlich dem, in dem ihr mehr zu sehen bekommt als bloß ein paar olle Terminalfenster. Öffnet eure Emacs-Konfigurationsdatei (oder legt eine neue an) und schreibt Folgendes hinein:

(use-package mu4e
  ;; ---------------------
  ;; Weil mu4e kein Emacspaket ist, sondern vom System kommt, müsst ihr Emacs
  ;; mitteilen, wo es mu4e finden kann. Dies ist der Ordner, in dem sich die
  ;; Datei mu4e.el befindet. Beispiel:
  ;; ---------------------
  :load-path "/usr/share/emacs/site-lisp/mu/mu4e/"
  :commands (mu4e mu4e-update-index)
  :config
  (require 'smtpmail)
  (require 'mu4e-contrib)

  ;; ---------------------
  ;; Ein bisschen Konfiguration:
  ;; ---------------------
  (add-to-list 'display-buffer-alist
               `(,(regexp-quote mu4e-main-buffer-name)
                 display-buffer-same-window))

  (setq mu4e-maildir "~/Maildir"
        mu4e-get-mail-command (concat (executable-find "mbsync") " -a")
        mu4e-update-interval 300
        mu4e-index-cleanup t

        ;; ---------------------
        ;; Dateianhänge werden hier gespeichert:
        ;; ---------------------
        mu4e-attachment-dir "~/Downloads"

        mu4e-org-support t
        mu4e-use-fancy-chars t
        mu4e-confirm-quit t
        mu4e-change-filenames-when-moving t

        ;; ---------------------
        ;; format=flowed:
        ;; ---------------------
        mu4e-compose-format-flowed t

        ;; ---------------------
        ;; Standardmäßig hätte GNU Emacs gern Gnus.
        ;; Das können wir ihm für E-Mails austreiben:
        ;; ---------------------
        mail-user-agent 'mu4e-user-agent
        sendmail-program (executable-find "msmtp")
        send-mail-function 'message-send-mail-with-sendmail
        message-send-mail-function 'message-send-mail-with-sendmail

        message-kill-buffer-on-exit t
        message-sendmail-f-is-evil t
        message-sendmail-extra-arguments '("--read-envelope-from")
        message-sendmail-envelope-from 'header))

Jetzt könnt ihr - nach einem Neustart von Emacs - mu4e starten (M-x mu4e) und solltet schon eure E-Mails sehen. Wenn nicht, habt ihr vielleicht eine Fehlermeldung bekommen - dann stimmt etwas in eurer Konfiguration noch nicht. Keine Sorge: auch die müsst ihr nur einmal machen.

Fertig!

Erweiterung: Viele, viele Mailadressen?

Es ist möglich, mit diesem Setup beliebig viele E-Mail-Adressen zu verwalten, ich selbst nutze derzeit sechs, habe mich in diesem Beitrag aber auf eine einzige Mailadresse beschränkt. Die grundlegende Vorgehensweise ist:

  1. In mu lassen sich beliebig viele Adressen hinzufügen. Hierfür muss mu init bei jeder Änderung der gewünschten Adresse(n) mit mehr als einem Adressparameter aufgerufen werden:
    mu init --maildir=~/Maildir \
        --personal-address=foo@beispiel.org \
        --personal-address=bar@beispiel.org
    mu index
  2. In eurer .mbsyncrc einen neuen Abschnitt für die neue Adresse hinzufügen.
  3. In eurer .msmtprc ebenso. Achtet dabei unbedingt darauf, dass ihr den Abschnitt defaults nicht kopiert. Das mag msmtp nicht.
  4. In eurer mu4e-Konfiguration könnt ihr anhand eures Mailverzeichnisses - das legt ihr ja pro Account in mbsync fest - verschiedene Kontexte (das entspricht ungefähr Accounts in anderen Mailprogrammen) festlegen. Diese Anleitung empfehle ich hierfür weiter.

Erweiterung: HTML-Mail

Ihr habt euch an HTML-Mail gewöhnt und wollt es nicht missen? Hierfür gibt es das Paket org-msg, das euch neue Beiträge im Org-mode-Format schreiben lässt und diese vor dem Versenden in HTML umwandelt. Mit folgendem Eintrag in eurer Konfiguration ruft ihr zum Beispiel automatisch einen HTML-Editor auf, wenn ihr eine neue E-Mail verfasst:

(use-package org-msg
  :after org
  :hook (mu4e-compose-pre . org-msg-mode)
  :config
  (setq org-msg-options "html-postamble:nil H:5 num:nil ^:{} toc:nil author:nil email:nil \\n:t"
        org-msg-startup "hidestars indent inlineimages"
        org-msg-greeting-name-limit 3
        org-msg-default-alternatives '((new           . (text html))
                                       (reply-to-html . (text html))
                                       (reply-to-text . (text)))
        org-msg-convert-citation t))

Das soll erst mal genügen. Fragen, Wünsche und konstruktive Kritik sind natürlich gern gesehen.

Titelbild: https://www.gnu.org/software/emacs/

Quelle: https://joeclark.org/ffaq.html

Tags

E-Mail-Client, Email, Emacs

Tim
Geschrieben von Tim am 14. Januar 2026 um 11:01

Wenn sich fragt, warum so viele Menschen bei den "bequemen" Apps bleiben, muss man sich nur diese Anleitung anschauen. Spätestens ab den Absatz "mu installieren" denkt sich doch der "normale" Anwender: "Häh" oder "Och nö, das tu ich mir nicht an".

Nicht falsch verstehen, ich kritisiere hier nicht den Artikel, den Artikelverfasser oder die Programme. Und sicher ist der Artikel auch nicht unbedingt für Einsteiger gedacht. Was ich ansprechen möchte, ist, das man schon beim Lesen der Anleitung die nicht technik-affinen Personen komplett verliert und ihnen zeigt, die ganze "gute" Sache ist sehr kompliziert und nur etwas für Nerds. Privatsphäre hin oder her. Für mich hat dies eher etwas von "warum einfach, wenn es auch kompliziert geht"

Ich als Interessierter bin beim Lesen hier sehr schnell raus gewesen. So viele Begriffe, Programmnamen, Kürzel, was man braucht, was nicht, wo man aufpassen muss, welche Abhängkeiten man nicht aus dem Auge verlieren muss usw..

Mal davon abgesehen, dass ich dieses gebashe der US-Anbieter nur zum Teil nachvollziehen kann (als wenn die EU-Anbieter die reinsten Lämmer wären - und die EU-Bevormundung hat ja gerade erst angefangen), ich frage mich schon, was z.B. an Betterbird oder Thunderbird so falsch sein soll. Um was geht es denn genau? Den Inhalt der E-Mail oder die Metadaten? Welchen Vorteil genau habe ich hinsichtlich Metadaten, wenn ich den o.g. Weg nutze um meinen mailbox.org-Mails abzurufen anstatt den via Betterbird?

Wenn ich kein Vertrauen zu meinem E-Mail-Anbieter habe, sollte ich dort ansetzen.

Wie geschrieben, sicher eine interessante und mögliche Variante. Aber ich habe zunehmend den Eindruck, wir verkomplizieren zunehmend die ganze Situation um den "sicheren und datenschutzfreundlichen" Umgang mit dem Internet, einfach nur, um beinah paranoid US-Anbieter loszuwerden. Dabei verliert man m.E. aber auch ein wenig das Augenmass und "verteufelt" auch funktionierende und simple Lösungen. Ich bin der Meinung, 100% Sicherheit oder Anonymität wird es nie geben - und damit kann/sollte man leben.

tux0r
Geschrieben von tux0r am 14. Januar 2026 um 14:52

Ich gehe davon aus, dass die, die nicht Zielgruppe des Artikels sind, schon in der Überschrift bei „Emacs“ aussteigen.

Naja
Geschrieben von Naja am 14. Januar 2026 um 16:33

Ich verstehe dein Lamento nicht ganz. Du musst es doch nicht so machen wie beschrieben.

Der Artikel zeigt eine weitere Möglichkeit, Mails zu versenden und zu empfangen neben den bekannten.

Er zeigt weiterhin, welche Vielzahl an spezialisierten Programmen, es kostenlos (!) und ganz problemlos installierbar in der Opensource-Welt gibt, die sich untereinander dank der offenen Plattform verknüpfen lassen, ganz im Sinne von ein "Programm für den Job".

Ich finde den Artikel sehr interessant.

Keiner muss es so machen wie beschrieben, aber man kann es so machen wenn man will, und das ist doch cool, oder nicht? Das ist einer der Gründe warum ich schon seit langer Zeit der GNU/Linux Welt verfallen bin, die unglaubliche Vielfalt und Freiheit.

Markus
Geschrieben von Markus am 14. Januar 2026 um 15:26

GNU Emacs ist weitaus mehr als nur ein simpler Texteditor und fast schon so etwas wie ein eigenes Betriebssystem. Der eingebaute Lisp Interpreter ermöglicht die Erstellung (und Installation) von beliebigen Erweiterungen. Mich verwundert das nicht auf das Package Archive http://elpa.gnu.org/packages/ hingeweisen wird, wo auch das Packet MINIMAIL http://elpa.gnu.org/packages/minimail.html angeboten wird, mit dessen Hilfe man ebenfalls - und vermutlich sogar einfacher - einen IMAP E-Mail Client in Emacs einrichten kann.

Wer sich noch nie mit GNU Emacs beschäftigt hat, sollte berücksichtigen das alleine die Basis-Anleitung um die 1000 Seiten umfasst: https://www.gnu.org/software/emacs/manual/html_mono/emacs.html Nur die Anleitung für den Teil der Org Mode (ist eingebaut) betrifft sind etwa 500 zusätzliche Seiten: https://www.gnu.org/software/emacs/manual/html_mono/org.html Und die Anleitung für den hier im Artikel erwähnten Gnus Newsreader (mit Mail ebenfalls eingebaut) hat nochmals ganze 600 Seiten: https://www.gnu.org/software/emacs/manual/html_mono/gnus.html Hier wundert mich dann, dass diese standardmässig schon vorhandene Funktionalität ohne direkten Vergleich einfach als "eher rustikal" abgetan wird. Und dem Screenshot von mu4e nach zu urteilen, erscheint mir das nicht gerade weniger rustikal zu sein.

tux0r
Geschrieben von tux0r am 14. Januar 2026 um 19:29

Die Oberfläche von mu4e ist abgesehen von der Tastaturbedienung intuitiv zu verstehen. Von Gnus kann ich das (ohne weitere Konfiguration) nicht behaupten. Auf Paketarchive verweise ich persönlich, wenn sie relevant für das behandelte Thema sind.

klausb
Geschrieben von klausb am 14. Januar 2026 um 21:08

Ich finde es gut, wenn unterschiedliche Niveaus bedient werden. Wem es reicht, wenn er erfährt wie man Spam aus seinem Thunderbird rausfiltert, gut, der muss das ja nicht nachvollziehen. Aber auch solche Beiträge - ich sage mal, abseits ausgetretener Wege - sind wertvoll und interessant. Und Emacs-User gibt es wahrscheinlich mehr als man denkt.

Da ich aber am Anfang über den Zusammenhang von mu und mu4e gestolpert bin (bzw. ein Paket mu gibt unter Debian nicht), nur der hoffentlich richtige Hinweis, dass mu in Debian als Paket maildir-utils genannt wird. Es reicht aber mu4e zu installieren, dass zieht maildir-utils (= mu) als Abhängigkeit nach.

Dies ist wohl auch der Sinn des Satzes "Normalerweise bekommt ihr mu mit mu4e am einfachsten direkt aus eurer Paketverwaltung", bei dem mir anfangs nicht klar war, ist nun mu4e Teil von mu oder umgekehrt? Und wo bekomme ich mu her, da es bei der Paketsuche nicht auftaucht? Hat sich ja jetzt geklärt.

klt
Geschrieben von klt am 14. Januar 2026 um 21:51

Ich verwende den Emacs schon seit vielen Jahren zum lesen und schreiben von Emails. Zum schrieben von reinen Textnachrichten und lesen von einfachen HTML-Mails ist er super. Leider werden immer mehr Mails mit komplexer HTML-Formatierung versendet, womit der Emacs so seine Probleme hat, auch wenn man w3m installiert hat.

Zuerst haben ich den Gnus Newsreader verwendet: Hat super Funktionalität, ausser dass er nicht immer alle Emails anzeigt (was am cachen liegt) Daher bin ich auf Wanderlust umgestiegen, das auch besseres Browsing durch die Mails erlaubt.

Vielleicht sollte ich mal einen Artikel dazu schreiben.

Christoph
Geschrieben von Christoph am 14. Januar 2026 um 23:22

Also ich bin vor einigen Jahren an Email mit Emacs gescheitert und habe es seitdem nicht wieder versucht. Ich bin nicht sicher, ob ich es nochmal in Angriff nehmen werde, aber ich finde es grundsätzlich gut, dass Emacs-Themen in GNU/Linux.ch behandelt werden