E-Mails versenden mit msmtp

In seiner Grundkonfiguration ist es deinem Pi noch nicht möglich Mails zu versenden. – Dies kann aber ganz hilfreich sein, damit du bspw. Benachrichtungen von Cronjobs erhältst, aber vor allem auch dann, wenn du auf deinem Webserver Systeme wie WordPress, oder Nextcloud einsetzt. Diese greifen i.d.R. auf die „sendmail“-Funktion des Systems zurück.

Du hast die Option einen eigenen Mail-Server aufzusetzen, oder du nutzt die Möglichkeit Mails über ein bereits vorhandenes Mailkonto zu versenden, welches du vllt. bei GMail, Microsoft, etc. hast. Letzteren Weg werden wir hier in der Anleitung gehen.

Vorab benötigst du auf jeden Fall die SMTP-Daten für dein Mailkonto von deinem E-Mailanbieter.


Anzeige

Installation & Konfiguration von msmtp

Für das Vorhaben, installierst du dir das Paket msmtp.

sudo apt install -y msmtp msmtp-mta mailutils

Im Anschluss müssen zwei Konfigurationsdateien angelegt werden, welche an sich den gleichen Inhalt haben können:

sudo nano /etc/msmtprc
sudo nano ~/.msmtprc

Der Inhalt beider Dateien ist wie folgt augebaut, natürlich musst du hier deine eigenen Daten hinterlegen.

# 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
tls_starttls 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

# If you select your own file, you should also use the tls_crl_file command to
# check for revoked certificates, but unfortunately getting revocation lists and
# keeping them up to date is not straightforward.
#tls_crl_file ~/.tls-crls

# Name for your Account
account Accountname1

# Host name of the SMTP server
# TODO: Use the host of your own mail account
host smtp.mailserver.tl

# As an alternative to tls_trust_file/tls_crl_file, you can use tls_fingerprint
# to pin a single certificate. You have to update the fingerprint when the
# server certificate changes, but an attacker cannot trick you into accepting
# a fraudulent certificate. Get the fingerprint with
# $ msmtp --serverinfo --tls --tls-certcheck=off --host=smtp.freemail.example
#tls_fingerprint 00:11:22:33:44:55:66:77:88:99:AA:BB:CC:DD:EE:FF:00:11:22:33

# Envelope-from address
# TODO: Use your own mail address
from deine@mailadresse.tld

# set Authentication on
auth on

# TODO: Use your own user name fpr the mail account
user SMTP-BENUTZER

# Password method 1: Add the password to the system keyring, and let msmtp get
# it automatically. To set the keyring password using Gnome's libsecret:
# $ secret-tool store --label=msmtp \
#   host smtp.freemail.example \
#   service smtp \
#   user joe.smith

# Password method 2: Store the password in an encrypted file, and tell msmtp
# which command to use to decrypt it. This is usually used with GnuPG, as in
# this example. Usually gpg-agent will ask once for the decryption password.
#passwordeval gpg2 --no-tty -q -d ~/.msmtp-password.gpg

# Password method 3: Store the password directly in this file. Usually it is not
# a good idea to store passwords in plain text files. If you do it anyway, at
# least make sure that this file can only be read by yourself.
# TODO: Use the password of your own mail account
password PASSWORT0815

# Set a default account
# TODO: Use your own mail address
account default : Accountname1

# Map local users to mail addresses (for crontab)
aliases /etc/aliases

Die Änderungen in der Datei per STRG+O speichern und per STRG+X die Datei schließen.

Die Berechtigungen beider Dateien sollten angepasst werden, damit nicht nur Root diese einlesen kann. – Dies ist wichtig, damit angesprochene Systeme wie WordPress, oder Nextcloud die Einstellungen lesen können, um Mails zu versenden.

sudo chmod 755 /etc/msmtprc
sudo chmod 755 ~/.msmtprc

Teile dem System nun noch für die einzelnen Benutzer deines Pi die E-Mail-Aliase mit:

sudo nano /etc/aliases

Ein Beispiel, was du hinterlegen kannst:

root: deine@mailadresse.tld
default: deine@mailadresse.tld

Die Änderungen in der Datei per STRG+O speichern und per STRG+X die Datei schließen.

Nun teilst du dem System noch den Pfad zu msmtp mit:

sudo nano /etc/mail.rc

Hier hinterlegst du folgenden Inhalt:

set sendmail="/usr/bin/msmtp -t"

Die Änderungen in der Datei per STRG+O speichern und per STRG+X die Datei schließen.

Versende mit folgendem Befehl eine Test-Mail und sie dann nach, ob sie angekommen ist.

echo "Mail zum Testen von msmtp" | mail -s "Betreff" test@mail.de

Anzeige

msmtp für PHP freigeben

Rufe hierzu die PHP-Konfigurationsdatei auf:

sudo nano /etc/php/AKTUELLEVERSION/apache2/php.ini

Suche hier die folgenden Zeilen im Abschnitt [mail function] und passe sie entsprechend an:

; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
; http://php.net/sendmail-path
sendmail_path = "/usr/bin/msmtp -t"

Die Änderungen in der Datei per STRG+O speichern und per STRG+X die Datei schließen.

Nun noch den Webserver neustarten.

sudo service apache2 restart

Nun sind auch Systeme, die auf PHP setzen in der Lage Mails über deine hinterlegten Konfigurationen Mails zu versenden.

Eine bequeme Lösung für die CLI oder Scripte bietet der ShellMailer, der den Mailversand per PHP durchführt.


Anzeige

2 Kommentare

Schreibe einen Kommentar

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

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.