E-Mail-Versand für den Raspberry Pi konfigurieren

Postfix konfigurieren

Hier im Blog habe ich bereits einige Beiträge zum Versand von Statusmeldungen und Dateien von einem Raspberry Pi verfasst.
Damit auch Nachrichten an eine Empfänger-E-Mail versendet werden können, sind einige Pakete und ein paar Anpassungen erforderlich.
Der Artikel zum Einrichten und Konfigurieren ist in die Jahre gekommen, deshalb gibt es ein Update.
Motion mit E-Mail-Versand


Inhaltsverzeichnis

MTA Postfix

Installation Pakete

Postfix Konfigurieren

main.cf konfigurieren
main.cf – Einstellungen für Stato AG
main.cf – Einstellungen für GMail

Zugangsdaten eintragen

Absender anpassen

E-Mail-Versand testen


MTA Postfix

Für den E-Mail-Versand auf den Raspberry Pi verwende ich den Mail Transfer Agent (=MTA) Postfix.

Postfix verwendet zum Versenden von Nachrichten ein bereits bestehendes E-Mail-Konto. In der folgenden Konfiguration teilen wir genau das dem MTA mit. Für diese Anleitung verwende ich ein E-Mail-Konto, dass bei der Strato AG gehostet wird.
Nutzt ihr ein GMail-Konto und möchtet darüber E-Mails versenden, ist lediglich der Eintrag „relayhost“ anzupassen.

Eine genaue detaillierte Beschreibung von „postfix“ gibt es auf der offiziellen Website:
https://de.postfix.org/

Installation Pakete

Damit der E-Mail-Versand auch funktioniert, sind noch einige Pakete zu installieren.

sudo apt install postfix libsasl2-modules mutt

Der Versand von E-Mail läuft bei mir nur noch über „mutt„. Damit lassen sich sämtliche Statusmeldungen und sonstige Nachrichten einfach über Skripte versenden.

Weitere Informationen zu mutt findet ihr hier

  1. http://www.mutt.org/
  2. https://de.wikipedia.org/wiki/Mutt
Pakete für E-Mail-Versand installieren
Pakete für E-Mail-Versand installieren

Während der Installation werden ein paar Dinge abgefragt. Die könnt ihr wie in den Screenshots dargestellt beantworten.

Postfix konfigurieren
Postfix konfigurieren
Postfix konfigurieren
Postfix konfigurieren
Postfix konfigurieren
Postfix konfigurieren

Gib mir gerne einen Kaffee ☕ aus!

Wenn dir meine Beiträge gefallen und geholfen haben, dann kannst du mir gerne einen Kaffee ☕ ausgeben.

PayPal Logo


liberapay.com/strobelstefan.org


Kaffee via Bitcoin

bc1qfuz93hw2fhdvfuxf6mlxlk8zdadvnktppkzqzj


Postfix Konfigurieren

Postfix und die dazugehörigen Pakete sind nun auf dem Raspberry Pi installiert und müssen noch angepasst werden.

In der Datei „/etc/postfix/main.cf“ wird der MTA konfiguriert.

sudo nano /etc/postfix/main.cf

main.cf – Einstellungen für Stato AG

Die Strato E-Mail-Server sind auf der Seite abzurufen:
https://www.strato.de/faq/mail/so-lauten-die-strato-e-mail-server/

Tragt die folgenen Zeilen einfach am Ende der Datei ein.

relayhost= smtp.strato.de:587
smtp_sasl_auth_enable = yes
sender_canonical_maps = hash:/etc/postfix/sender_canonical
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_use_tls = yes
smtp_enforce_tls = no
smtp_tls_enforce_peername = no
smtpd_tls_security_level = may

main.cf – Einstellungen für GMail

Die Google E-Mail-Server sind auf der Seite abzurufen:
https://support.google.com/mail/answer/7104828?hl=de

relayhost= smtp.gmail.com:587
smtp_sasl_auth_enable = yes
sender_canonical_maps = hash:/etc/postfix/sender_canonical  # Absender definieren
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd     # Passwort des E-Mail-Kontos
smtp_sasl_security_options = noanonymous
smtp_use_tls = yes
smtp_enforce_tls = no
smtp_tls_enforce_peername = no
smtpd_tls_security_level = may

Es kann sein, dass in der Original-Datei bereits eine Zeile mit „relayhost“ zu finden ist. Diese könnt ihr einfach aus kommentieren mit „#„.
Belasst ihr den doppelten Eintrag, dann taucht das ständig als Warnmeldung im Log File auf.

Doppelter Eintrag relayhost aus kommentieren
Doppelter Eintrag relayhost aus kommentieren

In der Konfiguration wird auf zwei Dateien verwiesen, die von euch noch anzulegen sind.

  1. /etc/postfix/sasl_passwd: In dieser Datei werden die Anmeldedaten (Benutzername und Passwort) gespeichert.
  2. /etc/postfix/sender_canonical: In dieser Datei werden die Absendernamen definiert.

Zugangsdaten eintragen

Ein sehr wichtiger Punkt in der ganzen Konfiguration ist das richtige eintragen der Zugangsdaten für euer E-Mail-Konto in der „/etc/postfix/sasl_passwd„-Datei.

Die Informationen sind in diesem Format in der Datei einfach ganz oben als neue Zeile einzutragen.

E-Mail-Server:Port E-Mail-Adresse:Passwort

In einem Beispiel sieht das dann so aus:

sudo nano /etc/postfix/sasl_passwd
smtp.strato.de:587 :passwort

Die Datei speichert ihr anschließend ab. Damit Postifx nun auch die Daten lesen kann, ist die Datei in eine db-Datei umzuwandeln. Das ist nach jeder Anpassung der Datei erforderlich.

Das erledigt ihr mit dem Befehl:

sudo postmap /etc/postfix/sasl_passwd

Eine kleine Anpassung der Zugriffsrechte auf die Datei ist notwendig, damit nur Benutzer mit sudo-Rechten einen Lese-/Schreibzugriff auf den Dateiinhalt bekommen.

sudo chown root:root /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db
sudo chmod 0600 /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db

Versucht ein Benutzer ohne Zugriffsrechte auf die Datei zuzugreifen erhält er die Meldung:

Error reading /etc/postfix/sasl_passwd: Permission denied

Damit die Änderung auch wirksam wird, ist Postfix neuzustarten.

sudo systemctl restart postfix

Absender anpassen

In der Datei /etc/postfix/sender_canonical werden die Aliase, also die Absender definiert.

sudo nano /etc/postfix/sender_canonical

In der Datei tragt ihr einfach fortlaufend die Aliase nach diesem Schema ein

pi 

In einem Beispiel sieht das dann so aus

pi 
user1 
user2 

Auch diese Datei muss nach jeder Anpassung in eine db-Datei umzuwandeln.

sudo postmap /etc/postfix/sender_canonical

Da in dieser Datei normalerweise keine sensiblen Zugangsdaten enthalten sind, ist das Anpassen der Zugriffsrechte optional.

sudo chown root:root /etc/postfix/sender_canonical /etc/postfix/sender_canonical.db
sudo chmod 0600 /etc/postfix/sender_canonical /etc/postfix/sender_canonical.db

Damit die Änderung auch wirksam wird, ist Postfix neuzustarten.

sudo systemctl restart postfix

E-Mail-Versand testen

Zum Abschluss ist der Versand von E-Mails noch zu prüfen.

Der einfachste Befehl zum Versand einer E-Mail lautet.

echo 'Test E-Mail' | mutt  -s "Test-Email ohne Anhang"

Der Versand mit einem Anhang ist wie folgt:

echo 'Test-Email mit Anhang' | mutt e-mail-adresse -a /home/pi/datei.txt -s "Test-Email mit Anhang"

Es muss natürlich eine Datei vorhanden sein, die versendet werden kann. Dazu erstellen wir einfach eine neue Datei im Verzeichnis des Benutzers „pi

touch datei.txt

Möchtet ihr den Versand der E-Mail in einem Log File protokollieren, dann geht das so.

mutt e-mail-adresse -a /home/pi/datei.txt -s "Test-Email mit Anhang" >> /home/pi/email.log

Ihr könnt die Datei selbst wählen, dazu einfach nach „>>“ eine Datei angeben.

Gibt es bei dem Versand von E-Mails Probleme, dann könnt ihr das in der „mail.log„-Datei nachlesen.

sudo tail -f /var/log/mail.log

Postfixs resolv.conf und wpa-supplicant

In meinem gestrigen Beitrag habe ich beschrieben, wie man den WLAN-Zugriff über wpa-supplicant.conf konfigurieren kann. Leider hatte ich dabei ein kleines Problemchen im Zusammenspiel mit Postifx. Nachdem ich meinen Pi vom LAN getrennt habe und dieser nur noch Zugriff über WLAN hatte, funktionierte der Versand von E-Mail nicht mehr. Der Zugriff auf den kleinen PC via SSH war möglich, also hatte er eine IP via DHCP erhalten.

Nach ein wenig Recherche im Netz habe ich die Ursache gefunden. Postfix benötigt anscheinend einen deckungsgleichen Nameserver-Eintrag in den beiden Dateien

  • /etc/resolv.conf
  • /var/spool/postfix/etc/resolv.conf

Die Einträge lassen sich mit den wie folg anzeigen

/etc/resolv.conf


und

/var/spool/postfix/etc/resolv.conf

Bei mir hat der Nameserver in der Datei /var/spool/postfix/etc/resolv.conf gefehlt. Manuell konnte ich die /etc/resolv.conf kopieren und Postfix neustarten.

sudo cp -f /etc/resolv.conf /var/spool/postfix/etc/resolv.conf
sudo service postfix restart

Eine Überprüfung von Postfix ergab dann keinen Fehler mehr

sudo postfix check

Damit war das Problem behoben und Postfix konnte wieder E-Mails versenden.
Leider wurde die /var/spool/postfix/etc/resolv.conf bei jedem Neustart des Raspberry Pis wieder zurückgesetzt. Postfix konnte dann wieder keine E-Mails versenden.

Ich kann leider keine Lösung für das Problem mit der wpa-supplicant.conf anbieten. Ich habe mein Problem so gelöst, dass ich die WLAN-Zugangsdaten direkt in die /etc/network/interfaces geschrieben habe. Damit funktioniert auch nach einem Neustart des Pis der Versand von E-Mails. Die Überprüfung von Postfix ergab keinen Fehler

sudo postfix check

In meinem Beitrag ➡ WLAN – Statische IP-Adresse vergeben beschreibe ich die Konfiguration der Datei /etc/network/interfaces.

Vielleicht hat jemand eine bessere Lösung, die auch die Benutzung der wpa-supplicant.conf erlaubt. Bin für jeden Hinweis dankbar.

Motion mit E-Mail-Versand

Ich habe vor kurzem eine kleine Überwachungskamera mit meinem Pi gebastelt, die auch nach einigen Tagen noch wunderbar funktioniert. Da ich die Bilder aber nur daheim im Netzwerk betrachten kann, habe ich noch zusätzlich einen E-Mail-Versand eingerichtet. Dadurch werden die erstellten Bilder automatisch an eine E-Mail-Adresse gesendet, die ich weltweit abrufen kann.

Für das Vorhaben benötigt ihr neben dem Pi und einer Camera auch eine E-Mail-Adresse bei einem irgendeinem Provider. Ich habe mich hier für Strato entschieden, da ich meine Bilder nicht an ein ausländisches Unternehmen geben möchte.

ACHTUNG:
Es gibt eine neuen Beitrag zum E-Mail-Versand hier im Blog:
E-Mail-Versand für den Raspberry Pi konfigurieren


Inhaltsverzeichnis

MTA Postfix
Motion an E-Mail-Versand anpassen
Quellen
Nachtrag Januar 2016
Nachtrag Januar 2018
Nachtrag Oktober 2018

MTA Postfix

Der E-Mail-Versand funktioniert bei mir über den Mail Transfer Agent (MTA) Postfix, der in den Repositories enthalten ist und sich einfach und flexibel anpassen lässt.

Ich habe die folgenden Pakete installiert.

sudo aptitude install postfix libsasl2-modules bsd-mailx cyrus-imapd-2.2 cyrus-admin-2.2 sasl2-bin

postfix-Konfiguration
postfix-Konfiguration
postfix-Konfiguration
postfix-Konfiguration
postfix-Konfiguration
postfix-Konfiguration

Damit über Postfix auch Anhänge versendet werden können ist das Paket „heirloom-mailx“ unbedingt zu installieren. Fehlt dies, wird nur reiner Text per E-Mail versendet.

sudo aptitude install heirloom-mailx

Nach dem Herunterladen der Pakete werden die Programme installiert. Dabei ist bei Postfix anzugeben, dass ihr eure Mails über einen ISP versenden wollt.

Die Konfiguration von Postfix ist über ein paar Dateien im Verzeichnis /etc/postfix/ vorzunehmen. Die Hauptkonfigurationsdatei ist die main.cf die wir mit dem Editor nano bearbeiten.

sudo nano /etc/postfix/main.cf

Scrollt ganz an das Ende der Datei und fügt dort die folgenden Zeilen ein.

relayhost= smtp.strato.de:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_use_tls = yes
smtp_enforce_tls = no
smtp_tls_enforce_peername = no
smtpd_tls_security_level = may


Schließt und Speichert die Datei dann ab.

Sollten beim Versuch des E-Mail-Versands Meldungen zu IPv6 kommen, dann könnt ihr in der main.cf die Zeile

inet_protocols = ipv4


eintragen, um das zu lösen.

ipv6 - Fehlermeldung deaktivieren
ipv6 – Fehlermeldung deaktivieren

Nach der Bearbeitung der main.cf ist eine neue Datei mit dem Namen sasl_passwd im gleichen Verzeichnis anzulegen, worauf wir auch mit dem Eintrag smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd verweisen. Die Datei enthält den Benutzernamen und das Passwort eurer E-Mail-Adresse.

sudo nano /etc/postfix/sasl_passwd


Der Inhalt der Datei setzt sich zusammen aus

E-Mail-Server:Port E-Mail-Adresse:Passwort


An einem Beispiel ist das recht einfach darzustellen:

smtp.strato.de:587 :passwort


Ganz wichtig hierbei ist, dass der E-Mail-Server-Eintrag gleich dem Eintrag der main.cf entspricht. Schließt und speichert die Datei dann ab. Die sasl_passwd ist anschließend noch in eine db-Datei umzuwandeln, bevor Postfix neugestartet werden kann.

sudo postmap /etc/postfix/sasl_passwd
sudo /etc/init.d/postfix restart


Den Status von postfix könnt ihr euch jederzeit mit dem Befehl anzeigen lassen:

sudo service postfix status

Wird euch keine Fehlermeldung ausgegeben, können wir den ersten Versuch zum Versenden einer E-Mail unternehmen. Gebt dazu den folgenden Befehl auf der Konsole ein:

echo "Das Leben ist schön." | mailx -s "Hello World" e-mail-adresse


Wenn alles richtig konfiguriert ist solltet ihr eine Nachricht in eurem Postfach finden. Kommt dort keine Mail an, dann ist die Log-Datei zu analysieren, die sich im Verzeichnis /var/log findet.

cat /var/log/mail.info


Gib mir gerne einen Kaffee ☕ aus!

Wenn dir meine Beiträge gefallen und geholfen haben, dann kannst du mir gerne einen Kaffee ☕ ausgeben.

PayPal Logo


liberapay.com/strobelstefan.org


Kaffee via Bitcoin

bc1qfuz93hw2fhdvfuxf6mlxlk8zdadvnktppkzqzj


Motion an E-Mail-Versand anpassen

Funktioniert der E-Mail-Versand über Postfix, ist Motion noch anzupassen.
Öffnet die Konfigurationsdatei der Applikation mit einem Editor uns sucht dort nach dem Entrag on_picture_save. Ersetzt die Zeile durch:

echo 'webcam alert' | mail -a %f -s "Webcam Alert" e-mail-adresse


Die Nachricht könnt ihr auch noch personalisieren.

  • Betreff = Webcam Alert
  • Body = webcam alert

Ihr müsst beachten, dass bei dieser Konfiguration nur Bilder per E-Mail versendet werden. Standardmäßig erstellt die angepasste motion-Konfiguration (motion.mmalcam.con) jedoch nur Video-Dateien. Da ich die Video zum Anschauen aber angenehm finde, habe ich noch den Eintrag editier:

output_pictures off


wird zu

output_pictures on


Hier gibt es auch mehrere Möglichkeiten, was als Bild gespeichert werden kann. Die Beschreibung aus der Konfig-Datei lautet:
# Output ’normal‘ pictures when motion is detected (default: on)
# Valid values: on, off, first, best, center
# When set to ‚first‘, only the first picture of an event is saved.
# Picture with most motion of an event is saved when set to ‚best‘.
# Picture with motion nearest center of picture is saved when set to ‚center‘.
# Can be used as preview shot for the corresponding movie.

Hat man einen Fehler bei der Konfiguration gemacht, kann man Postfix auf Werkseinstellungen zurücksetzen. Dafür einfach den Befehl auf der Konsole ausführen:

sudo dpkg-reconfigure postfix 

Quellen

Nachtrag Januar 2016

Nachdem seit einigen Wochen Raspbian Jessie zur Verfügung steht, wollte ich wie oben beschrieben Motion installieren. Leider scheinen noch nicht alle benötigten Pakete für Jessie in den Repositories vorhanden zu sein.
Möchte man aber trotzdem Jessie und Motion zusammen verwenden, dann sollte das evtl. mit V4L2-Treiber für das Raspberry Pi-Kameramodul möglich sein. Eine Anleitung gibts hier im Blog ➡ Motion mit UV4L auf dem Raspberry Pi

Nachtrag Januar 2018

Die beiden Pakete „cyrus-imapd-2.2 cyrus-admin-2.2“ sind nicht mehr über die Standard-Repositories zu installieren, werden aber für dieses Vorhaben nicht zwingend benötigt.
Der Installationsbefehl lt. also

sudo aptitude install postfix libsasl2-modules bsd-mailx sasl2-bin

Nachtrag Oktober 2018

Im oben beschrieben Manual ist es nach wie vor möglich, dass andere Benutzer die Möglichkeit haben die Anmeldedaten für eure E-Mail-Adresse zu sehen. Damit ich Zukunft das nur privilegierte User können (= sudo nano …) können die Rechte mit diesen Befehlen angepasst werden:

sudo chown root:root /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db
sudo chmod 0600 /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db

Zudem wir als Absender der Benutzername und der Hostname des Pi verwendet.
Beispiel:
Benutzername pi
Hostname: raspberry
Als Absender der E-Mail wird dann pi@raspberry angezeigt.
Mit einer weiteren Datei kann für jeden Benutzer eine eigene Absenderkennung hinterlegt werden. Dazu ist folgendes zu machen:

Öffnet die main.cf und fügt die folgende Zeile hinzu

sender_canonical_maps = hash:/etc/postfix/sender_canonical

Damit sieht der einzufügenden Block so aus

relayhost= smtp.strato.de:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
sender_canonical_maps = hash:/etc/postfix/sender_canonical
smtp_sasl_security_options = noanonymous
smtp_use_tls = yes
smtp_enforce_tls = no
smtp_tls_enforce_peername = no
smtpd_tls_security_level = may

Anschließend erstellt ihr die Datei „sender_canonical“ im Verzeichnis „/etc/postfix/

sudo nano /etc/postfix/sender_canonical

In dieser Datei tragt ihr dann für jeden Benutzernamen eine Absender-Adresse ein, z.B.

pi

Speichert die Datei und erstellt die db-Datei

sudo postmap /etc/postfix/sender_canonical
sudo service postfix restart

oder für ausführlichere Informationen

sudo systemctl restart postfix.service

Das wars, nun sollten die E-Mails von der Adresse kommen

Nagios versendet E-Mails, wirklich?

Nagios versendet E-Mails, wirklich?
Der E-Mail-Versand von Meldungen ist ein zentraler Bestandteil von Nagios. Irgendjemand sollte über kritische Dinge in der IT-Infrastruktur informiert werden, um rechtzeitig reagieren zu können.

Nagios bietet ja die Möglichkeit an einzelne User oder an ganze Gruppen Mails zu versenden. Wo und wie das Ganze konfiguriert wird, findet sich in Contacts und Services in Nagios.
Das Eintragen von Mail-Adressen in die contacts.cfg ist aber noch nicht ausreichend, damit das Monitoringsystem die Mails auch versenden kann. Man benötigt also noch einen Mail Transfer Agent (MTA). Da mein Nagios auf einem Ubuntu Server läuft ist es naheliegend den MTA Postfix zu verwenden.

Installation

Die Installation ist denkbar leicht auszuführen, da alle benötigten Pakete in den Repositories enthalten sind. Es werden die Pakete benötigt:

  • postfix
  • libsasl2-modules
  • bsd-mailx

Die Installation über die Konsole geht so

sudo aptitude install postfix libsas12-modules bsd-mailx

Konfiguration

Nach der Installation gehts an die Konfiguration des MTAs. Was man sich im voraus überlegen sollte, welche Art von MTA möchte ich verwenden. Es gibt mehrere Möglichkeiten. Eine Übersicht findet ihr hier wiki.ubuntuusers.de
Ich habe mich dazu entschieden einen Relayhost zu verwenden, d.h. der Nagios Server sendet mittels MTA seine Notifications an den richtigen Mail-Server und der sendet dann an die definierten Empfänger.

Die Konfiguration von Postfix ist anzupassen. Die main.cfg-Datei liegt im Verzeichnis /etc/postfix und muss angepasst werden.
Bevor ich hier lange herumrede, hier meine geänderte Passage

myhostname = server.netzwerk.de
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mydonaim = netzwerk.de
myorigin = $mydomain
mydestination = server.netzwerk.de, localhost
relayhost = 192.168.2.1
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 200
recipient_delimiter = +
inet_interfaces = all
inet_protocols = all

Achtung:
In meiner Konfiguration ist keine Authentifizierung am Relayhost notwendig. Der Nagios-Server wurde fest dort eingetragen.
Die Konfiguration von Postfix für eine Authentifizierung ist im wiki.ubuntuusers.de zu finden.
Gebt auch darauf acht, dass ihr nicht den Postfix als Relayhost für andere Geräte konfiguriert. Wenn das passiert, dann kann es passieren das ihr eine Spamschleuder im eigenen Netzwerk habt, die über eure Domain die Werbemails versenden darf. Was das dann bedeutet, könnt ihr euch vorstellen … Blacklist für euere Domain … Mailannahme wird von Empfängern geblockt … HORROR.

Nun gut. Gehen wir davon aus, die Konfiguration von Postfix passt. Es muss aber noch gestestet werden.

Testphase

Öffnet als erstes ein Terminal, um in Echtzeit die geschriebenen Logeinträge zu verfolgen.

tail -f /var/log/mail.log

In einem zweiten Konsolenfester könnt ihr nun den Postfix steuern. Zuerst startet den MTA neu, damit er die geänderte Konfiguration (main.cfg) einlesen kann.

sudo /etc/init.d/postfix restart

Im letzten Schritt gehts darum, E-Mails an eine richtige E-Mail-Adresse zu versenden. Auf der Konsole den Befehl eingeben

mail 

Subject: Test Mail von meinem neuen Postfix
Hallo Admin,
dies ist eine Testmail von meinem neuen Postfix, der auf dem Nagios-Server läuft


Drückt nun Strg+D

Cc:

Kontrolliert beim Empfänger, ob eine Nachricht von Postfix eingetroffen ist.

Hat alles funktioniert, dann dauert es nur noch ein kleines Weilchen, bis die ersten Nagios Notifications eintreffen, je nachdem, wie das halt im Monitoring-System hinterlegt ist und welche Fehler es in eurer IKT-Struktur gibt.