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
Hi,
Thank for your tutorial, it was helpful for me.
However there is an error in the config file
Line 65:
account deine@mailadresse.tld
should be replaced by
account default: deine@mailadresse.tld
As „account“ is already defined in line 22.
Regards
Michele
Hi Michele,
Thank you for your comment. I immediately corrected the error in the instructions.
I’m glad the tutorial was able to help you.
I wish you the best of luck and have fun.
Sascha