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.
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.
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.
Verschlüsselte Verbindungen über GnuTLS, dazu Authentifizierung per PLAIN, LOGIN, CRAM-MD5, SCRAM oder OAUTHBEARER — je nach Anbieter.
Beliebig viele Accounts in einer Konfigurationsdatei, jeder mit eigenem Server, Absender und Zugangsdaten. Auswahl per -a oder automatisch anhand der Absenderadresse.
msmtp liefert synchron aus und beendet sich. Es gibt keinen Hintergrundprozess, keine Warteschlange und keine lokale Zustellung zu verwalten.
Die gesamte Konfiguration liegt in einer einzigen, gut lesbaren Datei — versionierbar, kommentierbar, ohne grafische Oberfläche.
Entwickelt von Martin Lambers seit 2003, quelloffen unter der GNU General Public License v3, gepflegt auf git.marlam.de.
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
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
Setzt Vorgabewerte, die von allen danach folgenden account-Blöcken geerbt werden, sofern nicht überschrieben.
Aktiviert TLS und legt fest, welchen Zertifikaten vertraut wird. Ohne gültiges Zertifikat bricht msmtp die Verbindung ab, statt unverschlüsselt zu senden.
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.
Definiert, welcher Account verwendet wird, wenn beim Aufruf kein -a-Parameter angegeben ist.
chmod 600 ~/.msmtprc.
Weil msmtp die sendmail-Schnittstelle nachbildet, lässt es sich in nahezu jedes Werkzeug einbinden, das E-Mails lokal übergibt.
Eine Testnachricht über einen bestimmten Account verschicken:
echo -e "Subject: Test\n\nHallo Welt" | msmtp -a gmail empfaenger@example.com
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.
In der .muttrc festlegen:
set sendmail = "/usr/bin/msmtp"
In der php.ini:
sendmail_path = "/usr/bin/msmtp -t"
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
| Meldung | Ursache & 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. |
Diese Seite ersetzt nicht die offizielle Dokumentation — für verbindliche Angaben gelten die folgenden Quellen.
msmtp(1).
Distribution
Debian Wiki: msmtp
Praxisnahe Hinweise zur Einrichtung als System-MTA unter Debian.
Man-Page
msmtp(1)
Kommandozeilenoptionen und Kurzreferenz der Konfigurationsbefehle.
Quellcode
git.marlam.de
Primäres Git-Repository für Quellcode und Versionsgeschichte.