msmtp auf Linux-Servern konfigurieren
Einleitung
msmtp ist ein leichtgewichtiger SMTP-Client, der häufig als sendmail-Ersatz auf Linux-Servern eingesetzt wird. Er leitet lokale E-Mails (z. B. von Cronjobs) an einen externen Mailserver weiter. Dieser Artikel erklärt die Konfiguration und wie man sie testet.
Voraussetzungen
- msmtp ist installiert (
apt install msmtp msmtp-mta) - Zugangsdaten zu einem SMTP-Server liegen vor
Die Konfigurationsdatei /etc/msmtprc
Eine typische minimale Konfiguration sieht so aus:
defaults
auth on
tls on
tls_starttls off
tls_trust_file /etc/ssl/certs/ca-certificates.crt
logfile /var/log/msmtp.log
account default
host mail.beispiel.de
port 465
from server@beispiel.de
user server@beispiel.de
password geheimesPasswort
Erklärung der wichtigsten Parameter:
| Parameter | Bedeutung |
|---|---|
defaults | Gilt für alle nachfolgenden Accounts als Standard |
auth on | Authentifizierung beim SMTP-Server aktivieren |
tls on | TLS-Verschlüsselung aktivieren |
tls_starttls off | Bei off: Implicit TLS (Port 465); bei on: STARTTLS (Port 587) |
tls_trust_file | Systemweite CA-Zertifikate zur Validierung des Serverzertifikats |
logfile | Pfad zur Log-Datei |
host | SMTP-Server-Hostname |
port | Port des SMTP-Servers (465 für Implicit TLS, 587 für STARTTLS) |
from | Absenderadresse |
user | SMTP-Benutzername (meist die E-Mail-Adresse) |
password | SMTP-Passwort |
Port und TLS-Modus richtig wählen
Es gibt zwei gängige Verbindungsmodi:
Implicit TLS (empfohlen):
port 465
tls on
tls_starttls off
STARTTLS:
port 587
tls on
tls_starttls on
Wichtig: from und user bei Alias-Adressen
Wenn die Absenderadresse ein Alias ist, muss user trotzdem den echten Account-Namen enthalten:
from monitoring@beispiel.de # Alias als Absender (optional)
user admin@beispiel.de # Echter Account für die Authentifizierung
password geheimesPasswort
Konfiguration testen
msmtp ist kein Dienst — nach jeder Änderung an der Config ist kein Neustart nötig. Die Konfiguration wird bei jedem Aufruf neu eingelesen.
Test mit Debug-Ausgabe:
bash
echo "Testmail vom Server" | msmtp --debug empfaenger@beispiel.de
Der --debug-Parameter zeigt den kompletten SMTP-Dialog:
<-- 220 mail.beispiel.de Stalwart ESMTP at your service
--> EHLO localhost
--> AUTH PLAIN ...
<-- 235 2.7.0 Authentication succeeded.
<-- 250 2.0.0 Message queued with id abc123
Test ohne Debug (nach erfolgreicher Konfiguration):
bash
echo -e "Subject: Test\n\nTestmail" | msmtp empfaenger@beispiel.de
Log-Datei prüfen
bash
tail -20 /var/log/msmtp.log
Eine erfolgreiche Übertragung sieht so aus:
... host=mail.beispiel.de tls=on auth=on from=server@beispiel.de ...
... recipients=empfaenger@beispiel.de smtpstatus=250 smtpmsg='...' exitcode=EX_OK
