$ msmtp.de
# /usr/bin/msmtp

Der schlanke SMTP-Client für die Kommandozeile

msmtp verschickt E-Mails über einen SMTP-Server – nichts weiter. Kein eigener Mail-Queue-Dämon, keine komplexe MTA-Konfiguration. Eine Textdatei, ein Aufruf, fertig. Diese Seite bündelt eine deutschsprachige Einführung, Konfigurationsbeispiele und Referenzen zur offiziellen Dokumentation.

  • Lizenz: GPLv3
  • Erste Veröffentlichung: 2003
  • Sprache: C
  • Autor: Martin Lambers
  • sendmail-kompatibel
~/.msmtprc
1# Standardeinstellungen für alle Accounts
2defaults
3auth on
4tls on
5tls_trust_file /etc/ssl/certs/ca-certificates.crt
6logfile ~/.msmtp.log
7 
8# Account für Gmail
9account
10host smtp.gmail.com
11port 587
12from ich@gmail.com
13user ich@gmail.com
14passwordeval "gpg2 -q --decrypt ~/.msmtp-gmail.gpg"
15 
16# Wird verwendet, wenn kein Account angegeben ist
17account default : gmail

Warum msmtp? — die Grundidee

msmtp löst genau ein Problem: E-Mails, die lokal auf einem System entstehen (von Cron, Git, PHP-Skripten, Mutt oder Systembenachrichtigungen), zuverlässig an einen SMTP-Server auszuliefern — ohne einen vollständigen Mailserver wie Postfix oder Exim betreiben zu müssen.

sendmail -t

sendmail-kompatibel

msmtp versteht die klassische sendmail-Befehlszeile und lässt sich als Drop-in-Ersatz für /usr/sbin/sendmail einsetzen — Programme wie Cron oder PHP bemerken keinen Unterschied.

tls on

TLS & Authentifizierung

Verschlüsselte Verbindungen über GnuTLS, dazu Authentifizierung per PLAIN, LOGIN, CRAM-MD5, SCRAM oder OAUTHBEARER — je nach Anbieter.

account <name>

Mehrere Profile

Beliebig viele Accounts in einer Konfigurationsdatei, jeder mit eigenem Server, Absender und Zugangsdaten. Auswahl per -a oder automatisch anhand der Absenderadresse.

keine Queue

Kein eigener Dämon

msmtp liefert synchron aus und beendet sich. Es gibt keinen Hintergrundprozess, keine Warteschlange und keine lokale Zustellung zu verwalten.

~/.msmtprc

Eine Textdatei

Die gesamte Konfiguration liegt in einer einzigen, gut lesbaren Datei — versionierbar, kommentierbar, ohne grafische Oberfläche.

GPLv3

Freie Software

Entwickelt von Martin Lambers seit 2003, quelloffen unter der GNU General Public License v3, gepflegt auf git.marlam.de.

Installation

msmtp ist in den Paketquellen aller gängigen Linux-Distributionen sowie über Homebrew für macOS verfügbar. Für sendmail-Kompatibilität unter Debian/Ubuntu wird zusätzlich das Paket msmtp-mta benötigt.

sudo apt update
sudo apt install msmtp msmtp-mta
# msmtp-mta legt den sendmail-Symlink unter /usr/sbin/sendmail an
sudo dnf install msmtp
# RHEL/CentOS: ggf. zuvor das EPEL-Repository aktivieren
sudo pacman -S msmtp
# optional für mutt-Integration: msmtp-mta aus der AUR
brew install msmtp
git clone https://git.marlam.de/git/msmtp.git
cd msmtp
autoreconf -fi
./configure
make
sudo make install
# Build-Abhängigkeiten: autoconf, automake, libtool, gettext, texinfo, pkg-config, libgnutls-dev

Konfiguration

Die Standard-Konfigurationsdatei ist ~/.msmtprc (alternativ $XDG_CONFIG_HOME/msmtp/config). Leere Zeilen und Kommentare (beginnend mit #) werden ignoriert. Jede Zeile enthält einen Befehl, optional mit Argument.

# Werte gelten für alle nachfolgenden Accounts
defaults
auth           on
tls            on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
logfile        ~/.msmtp.log

account        gmail
host           smtp.gmail.com
port           587
from           ich@gmail.com
user           ich@gmail.com
passwordeval   "gpg2 -q --decrypt ~/.msmtp-gmail.gpg"

account default : gmail
  • defaults

    Setzt Vorgabewerte, die von allen danach folgenden account-Blöcken geerbt werden, sofern nicht überschrieben.

  • tls / tls_trust_file

    Aktiviert TLS und legt fest, welchen Zertifikaten vertraut wird. Ohne gültiges Zertifikat bricht msmtp die Verbindung ab, statt unverschlüsselt zu senden.

  • passwordeval

    Führt einen Befehl aus, dessen Ausgabe als Passwort verwendet wird — so landet kein Klartext-Passwort in der Konfigurationsdatei, z. B. via GnuPG oder einem Passwort-Manager mit CLI.

  • account default : gmail

    Definiert, welcher Account verwendet wird, wenn beim Aufruf kein -a-Parameter angegeben ist.

Wichtig: Die Konfigurationsdatei enthält Zugangsdaten oder Verweise darauf. msmtp verweigert den Start, wenn die Datei für andere Benutzer lesbar ist. Rechte entsprechend einschränken: chmod 600 ~/.msmtprc.

Verwendung in der Praxis

Weil msmtp die sendmail-Schnittstelle nachbildet, lässt es sich in nahezu jedes Werkzeug einbinden, das E-Mails lokal übergibt.

Direkter Aufruf

E-Mail testen

Eine Testnachricht über einen bestimmten Account verschicken:

echo -e "Subject: Test\n\nHallo Welt" | msmtp -a gmail empfaenger@example.com
Cron

Systembenachrichtigungen

Nach Installation von msmtp-mta zeigt /usr/sbin/sendmail auf msmtp — Cron-Ausgaben landen automatisch dort. set_from_header on hilft, wenn der Absender fehlt.

Mutt / NeoMutt

E-Mails aus dem Terminal-Client

In der .muttrc festlegen:

set sendmail = "/usr/bin/msmtp"
PHP

mail()-Funktion umleiten

In der php.ini:

sendmail_path = "/usr/bin/msmtp -t"

Fehlersuche

Statt wiederholt zu versuchen, ob eine Nachricht ankommt, direkt die Fehlerausgabe und das Logfile prüfen — msmtp meldet Verbindungs- und Authentifizierungsfehler unmittelbar.

msmtp --debug -a gmail empfaenger@example.com < testmail.txt
# zeigt den kompletten SMTP-Dialog inkl. TLS-Handshake

tail -n 30 ~/.msmtp.log
# bei aktivem "logfile"-Eintrag: letzte Zustellversuche mit Zeitstempel und Status
MeldungUrsache & Abhilfe
TLS certificate verification failed Der Server-Zertifikatspfad in tls_trust_file ist falsch oder veraltet. Systemzertifikate prüfen oder tls_fingerprint als Alternative setzen.
authentication failed Falsches Passwort, oder der Anbieter verlangt ein App-Passwort statt des normalen Kontopassworts (z. B. bei aktivierter Zwei-Faktor-Authentifizierung).
could not connect / Verbindung verweigert Falscher Port oder eine Firewall blockiert ausgehende Verbindungen auf Port 587/465. Mit msmtp --host --serverinfo die Serverfähigkeiten abfragen.
msmtprc: permission denied / ignored Die Konfigurationsdatei ist für andere lesbar. Mit chmod 600 ~/.msmtprc beheben.

Referenzen

Diese Seite ersetzt nicht die offizielle Dokumentation — für verbindliche Angaben gelten die folgenden Quellen.