MSMTP - E-Mails einfach versenden unter Linux
MSMTP ist eine sehr gute Alternative zu SSMTP. Mit diesem Tool ist es Möglich ohne einen kompletten Mailserver wie Postfix oder Exim zu installieren und konfigurieren, lokal E-Mails zu versenden. So bekommt man auch alle Systemmails von zum Beispiel cron
oder fail2ban
. Ich habe das bei mir auf dem Raspberry Pi installiert um Mails via Script verschicken zu können und natürlich um mit zubekommen ob die cronjobs irgendwelche Fehler werfen. Als "Relay" Mailserver habe ich eine Installation von Mailcow im Einsatz. An diesem muss ich um Mails versenden zu können mich via TLS, Benutzername und Passwort anmelden.
Installation msmtp unter Debian / Ubuntu
Die Installation machen wir mittels apt
:
apt update && apt install msmtp msmtp-mta mailutils -y
Konfiguration msmtp
Die Konfigurationsdatei muss frisch angelegt werden. Es gibt zwar eine Sample Datei, diese ist jedoch sehr dürftig. Also einfach die Datei mit dem folgenden Inhalt anlegen:
/etc/msmtprc
# Example for a system wide configuration file # A system wide configuration file is optional. # If it exists, it usually defines a default account. # This allows msmtp to be used like /usr/sbin/sendmail. account YOURMAILADRESS # The SMTP smarthost host YOURMAILSERVER # Use TLS on port 587 port 587 tls on tls_starttls on # Construct envelope-from addresses of the form "user@oursite.example" auto_from on maildomain yourdomain.tld # Syslog logging with facility LOG_MAIL instead of the default LOG_USER syslog LOG_MAIL from YOURMAILADRESS auth on user YOURUSERNAME password YOURPASSWORD # Set a default account # TODO: Use your own mail address account default: YOURMAILADRESS # Map local users to mail addresses (for crontab) aliases /etc/aliases
Nun vergeben wir noch aus Sicherheitsgründen die Dateiberechtigung, das nur Root die Datei lesen und schreiben darf:
chmod 600 /etc/msmtprc
Nun sagen wir dem System noch das es zum Mailen Standardmäßig msmtp nutzen soll, dafür folgende Zeile einfügen:
/etc/mail.rc
set sendmail="/usr/bin/msmtp -t"
Test
Testen können wir das ganze mit dem mail command:
echo "test 1" | mail -s "test 1" YOUREMAILADRESS
Cron Mails Problematik
Falls ihr cron mails versenden wollt und dies im syslog mit dem folgenden Fehler endet:
sendmail: /etc/aliases: line 2: invalid address 'postmaster'
dann gibt es einen kleinen Trick, ihr müsst an alle User in der /etc/aliases
ein @
hängen:
/etc/aliases
# /etc/aliases mailer-daemon: postmaster@ postmaster: root@ nobody: root@ hostmaster: root@ usenet: root@ news: root@ webmaster: root@ www: root@ ftp: root@ abuse: root@ noc: root@ security: root@ root: YOURMAILADRESSE default: YOURMAILADRESSE