Linux: Einfach E-Mails versenden mit msmtp
Oft ist es sinnvoll, wenn man sich von seinem Linux System Benachrichtigungsmails versenden lassen kann. Anwendungsbeispiele wären zum Beispiel der Versand einer Email, wenn ein Cronjob fehlschlägt oder wenn eine Anmeldung auf dem eigenen VPN-Server stattgefunden hat.
In meiner Vergangenheit habe ich u.a. sSMTP genutzt. Jedoch wird diese Software nicht mehr weiterentwickelt. Wenn Sicherheitslücken bzw. Bugs gefunden werden, ist fraglich, ob diese noch gefixt werden.
Installation und Konfiguration von msmtp
Zuerst bringe ich das System auf den neuesten Stand:
apt-get update && apt-get upgrade
Anschließend installiere ich msmtp:
apt-get install msmtp msmtp-mta mailutils
Das Paket mailutils ist jetzt nicht mega wichtig, jedoch ist es beim späteren Verwenden von Mails sehr hilfreich.
Für die Konfiguration gibt es zwei unterschiedliche Konfigurations-Dateien:
– eine systemweite Konfiguration
– eine benutzerspezifische Konfiguration
Wo diese unterschiedlichen Konfigurations-Dateien gespeichert sind, kann man ganz einfach ermitteln:
msmtp --version
Ich persönlich nutze die systemweite Konfiguration, da ich nur Mails vom System aus versenden lasse.
Beide Dateien sind nach einer Neuinstallation leider noch nicht erstellt, sodass man diese den Wünschen entsprechend anpassen könnte. Mit
nano /etc/msmtprc
erstelle ich eine systemweite Konfiguration. Diese Konfiguration ist bestens für mein Vorhaben geeignet. Mit dieser Konfig ist es aber nur Root-Usern vorbehalten Emails zu versenden. Möchten andere User Mails versenden, müssen User-spezifische Konfigurationen her.
nano ~/.msmtprc
Inhaltlich sind beide Dateien ziemlich gleich aufgebaut. Hier eine beispielhafte Konfigurationsdatei meinerseits:
# Set default values for all following accounts. defaults # Use the mail submission port 587 instead of the SMTP port 25. port 587 # Always use TLS. tls on # Set a list of trusted CAs for TLS. The default is to use system settings, but # you can select your own file. tls_trust_file /etc/ssl/certs/ca-certificates.crt # Mail account account root # Host name of the SMTP server host smtp.host.de # Envelope-from address from sender@mail.de # Authentication. The password is given using one of five methods, see below. auth on # Use your own user name fpr the mail account user sender@mail.de # loginpassword password PASSWORD # Set a default account account default: root # Map local users to mail addresses (for crontab) aliases /etc/aliases
Nun speichere ich die Konfiguration ab. Als nächstes schaue ich, dass nicht jeder Zugriff auf diese Datei bekommt.
chmod 600 /etc/msmtprc
Auch bei einer benutzerspezifischen Konfiguration müssen die Rechte angepasst werden:
chmod 600 ~/.msmtprc
Zum Schluss wird noch ein Alias angelegt, so dass die Empfänger-Adresse des Root-Accounts (oder des Accounts, mit dem später E-Mail versendet werden sollen) bekannt ist. Dies wird in der Datei angegeben, die auch schon ganz am Ende der Konfiguration von msmtp aufgeführt wurde:
nano /etc/aliases
Hier trage ich nun die Empfängeradresse des Root-Accounts ein. Dazu trage ich noch eine allgemeine Empfänger-Adresse ein, falls mal eine Systemmeldung nicht im Kontext des Root Accounts auftritt.
root: empfaenger@mail.de default: empfaenger@mail.de
Bevor nun eine erste Test-Mail versendet werden kann, muss noch das Mail-Programm definiert werden:
nano /etc/mail.rc
Der Inhalt ist folgender:
set sendmail="/usr/bin/msmtp -t"
Nach der Konfiguration kann ich nun meine erste Mail über die Kommandozeile verschicken.
echo "Ich bin ein Test" | mail -s "Betreff" empfaenger@mail.de
Fazit
Wer auf einfachen Wege Mails vom System versenden lassen möchte ohne gleich einen “schwergewichtigen” Mailserver wie Postfix o.ä. aufzusetzen, macht mit dieser Software wirklich nichts falsch. Ich nutze es u.a. für meinen VPN-Server, um mich über Anmeldungen benachrichtigen zu lassen.