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:

ParameterBedeutung
defaultsGilt für alle nachfolgenden Accounts als Standard
auth onAuthentifizierung beim SMTP-Server aktivieren
tls onTLS-Verschlüsselung aktivieren
tls_starttls offBei off: Implicit TLS (Port 465); bei on: STARTTLS (Port 587)
tls_trust_fileSystemweite CA-Zertifikate zur Validierung des Serverzertifikats
logfilePfad zur Log-Datei
hostSMTP-Server-Hostname
portPort des SMTP-Servers (465 für Implicit TLS, 587 für STARTTLS)
fromAbsenderadresse
userSMTP-Benutzername (meist die E-Mail-Adresse)
passwordSMTP-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

Comments

No comments yet. Why don’t you start the discussion?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert