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.de


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

11 Antworten auf „Motion mit E-Mail-Versand“

  1. Hi, dein Tut hat mir sehr weitergeholfen.Interessant wär noch, wenn du erwähnen würdest, wozu die einzelnen Zusatzpakete zu Postfix dienen.Aktuell machen viele Mailhoster Probleme, wenn man etwas, mit einer nicht zum Hoster passenen Domain, über deren SMTP Server schicken will.Nach einigem Googeln habe ich eine schnelle und für mich passende Lösung gefunden.
    Da
    viele Hoster aktuell das Versenden über einen anderen/unbekannten
    Absender verbieten, bekommen wir beim versenden eine Fehlermeldung.
    Postfix
    bietet über folgenden config Eintrag (auch in main.cf) die
    Möglichkeit den Absender umzuschreiben.
    sender_canonical_maps
    = hash:/etc/postfix/sender_canonical
    Danach
    folgende Datei mit mit „nano“ erstellen und den Eintrag zum
    Umschreiben des eigenen Absenders erstellen.

    sudo
    nano /etc/postfix/sender_canonical

    Inhalt:
    1 User wird beim Maiversand durch 2. User ersetzt (User@Hostname
    User@Maildomain):

    pi@raspberrypi
    Username@web.de

    Nun
    muss die Datei noch in ein für Postfix lesbares Datenbankformat
    gebracht werden
    postmap
    /etc/postfix/sender_canonical

    sudo /etc/init.d/postfix restartEine weiter Sache ist mir noch aufgefallen.Man könnte/sollte die Dateien sasl_passwd und sasl_passwd.db nur von root lesbar machen.
    sudo chmod 600 /etc/postfix/sasl_passwdsudo chmod 600 /etc/postfix/sasl_passwd.db

  2. Hallo Stefan,

    nach viel probieren habe ich postfix nun auch zum Laufen bekommen.
    Du verweist in anderen Beiträgen auf diesen Beitrag wenn es um die Einrichtung des Email-Versand geht. Könntest Du etwas dazu sagen warum du die oben genannten Pakete installiert hast? Du installierst postfix libsasl2-modules bsd-mailx cyrus-imapd-2.2 cyrus-admin-2.2 sasl2-bin
    Im Tutorial https://wiki.ubuntuusers.de/Postfix/ werden nur die ersten 3 Pakete genannt und der Versand funktioniert. Du sagst in einem Nachtrag dass die beiden cyrus-Pakete nicht mehr benötigt werden. Für was waren die ursprünglich vorgesehen – und auch das sasl2-bin Paket – da diese 3 nirgends im Verlauf dieses Beitrages erwähnt werden.

    Vielen Dank.

  3. Hallo Stefan,Bei mir funktioniert der Befehl zum Installieren der Pakete nicht.Habe mir den Pi 4 gerade erst gekauft. Liegt das an der neusten Version von dem Betriebssystem? Gibt es da noch weitere Änderungen? LG

  4. Hallo Stefan,da kam immer die meldung, dass der befehl nicht existiert/ungültig ist.habe jetzt das aptitude durch apt ersetzt, das hat dann geklappt.

  5. Hallo ich nutze ein Gmail Konnto und bekomme immer eine Warnung das die mails blockiert werden aus Sicherheitsgründen.
    Gibt es hierzu eine Lösung?

    Gruß

    SNO

Schreibe einen Kommentar

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