E-Mail-Anhänge über die eigene Nextcloud senden

Photo by Brett Jordan on Unsplash

Mit Nextcloud lassen sich sehr einfach Dateien auf dem eigenen Server hosten und mit anderen Personen teilen. Man kann sich die Teilen-Funktion auch zu nutze machen und seine E-Mail-Anhänge über die eigene Nextcloud mit Dritten teilen. Mit der Thunderbird-Erweiterung *cloud lassen sich Anhänge sehr einfach anstatt per E-Mail über die eigene Nextcloud versenden.

Raspberry Pi – Systemstatus per E-Mail versenden

Gemeinfrei-ähnlich freigegeben durch unsplash.com - Louis Reed

Seit einigen Jahren verwende ich auf all meinen Raspberry Pis das gleiche Skript, um mir in regelmäßigen Abständen Informationen über das System und Hardware per E-Mail zu zusenden.

Ich habe vor kurzem das Skript ein wenig angepasst und zwei weitere Abschnitte hinzugefügt.

Im ersten Abschnitt werden nun die Details über die verwendete Raspberry Pi Hardware mit gesendet:

echo "Raspberry Pi Hardware" >> ${LOGFILE}
cat /sys/firmware/devicetree/base/model >> ${LOGFILE}

Es wird genau angegeben welches Raspberry Pi Model in welcher Revision verwendet wird. Das ist ganz praktisch, wenn man z.B. ein neues Netzteil, SD-Karte oder ein neues Gehäuse für den Pi benötigt.
Eine Übersicht über alle Pi-Generationen gibt es auf der offiziellen Website
https://www.raspberrypi.org/products/

Im zweiten Abschnitt werden Infos zum verwendeten Betriebssystem mitgeschickt:

echo "Raspberry Pi OS Informationen" >> ${LOGFILE}
cat /etc/os-release >> ${LOGFILE}

Das sieht dann z.B. so aus:

Raspberry Pi OS Informationen
PRETTY_NAME="Raspbian GNU/Linux 10 (buster)"
NAME="Raspbian GNU/Linux"
VERSION_ID="10"
VERSION="10 (buster)"
VERSION_CODENAME=buster
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"

Die anderen Abschnitte des Skripts habe ich nicht geändert. Es werden nach wie vor Informationen zu

  • aktuell eingeloggte Benutzer
  • Temperatur
  • Festplattenauslastung
  • Festplattenkapazität
  • versendete Bits über die Netzwerkschnittstellen Eth0 und WLAN0
  • usw.

ausgegeben.

Das Skript habe ich im Ordner „/etc/scripts“ angelegt, wo ich meine gesamten Shell-Skripte abgelegt habe.

sudo nano /etc/scripts/sysstatus.sh

Ich habe die Rechte für das Skript noch ein wenig angepasst, dass nur ein Benutzer mit „sudo“ das Skriptändern und ausführen kann.

sudo chown root:root /etc/scripts/sysstatus.sh
sudo chmod 0600 /etc/scripts/sysstatus.sh

Das Skript ist dann ausführbar zu machen:

sudo chmod +x /etc/scripts/sysstatus.sh

Damit das Skript auch zu einer festgelegten Zeit ausgeführt wird und euch die Informationen zu gesendet werden, ist noch ein Eintrag in der crontab zu erstellen.

sudo crontab -e

0 8 * * * /bin/bash /etc/scripts/sysstatus.sh

Das Skript setzt voraus, dass auf dem Raspberry Pi E-Mail mit „mutt“ versendet werden kann. Eine detaillierte Anleitung zum Einrichten gibts hier
E-Mail-Versand für den Raspberry Pi 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


Und hier das gesamte Skript:

#!/bin/bash

# Stefan´s Weblog
# by strobelstefan.org
# Rasperry Pi Status per E-Mail
# https://strobelstefan.de/?p=13252&preview=true

# E-Mail Address
EMAIL="email@mydomain.de"

# Remove log file to make sure we have the correct to send out via EMAIL
LOGFILE="/var/log/status.log"

rm ${LOGFILE}


echo "Raspberry Pi Hardware" >> ${LOGFILE}
cat /sys/firmware/devicetree/base/model >> ${LOGFILE} 
echo "" >> ${LOGFILE}
echo "" >> ${LOGFILE}
echo "Raspberry Pi OS Informationen" >> ${LOGFILE}
cat /etc/os-release >> ${LOGFILE}
echo "" >> ${LOGFILE}
echo "" >> ${LOGFILE}
echo "Status Panel" >> ${LOGFILE}
date >> ${LOGFILE}
uname -a >> ${LOGFILE}
uptime >> ${LOGFILE}
echo "" >> ${LOGFILE}
echo "" >> ${LOGFILE}
echo "Temperature (1/1000)" >> ${LOGFILE}
cat /sys/devices/virtual/thermal/thermal_zone0/temp >> ${LOGFILE}
echo "" >> ${LOGFILE}
echo "" >> ${LOGFILE}
echo "Hard drive" >> ${LOGFILE}
free >> ${LOGFILE}
echo "" >> ${LOGFILE}
echo "" >> ${LOGFILE}
df -h >> ${LOGFILE}
echo "" >> ${LOGFILE}
echo "" >> ${LOGFILE}
echo "CPU Frequency Kilohertz" >> ${LOGFILE}
cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq >> ${LOGFILE}
echo "" >> ${LOGFILE}
echo "CPU Voltage" >> ${LOGFILE}
vcgencmd measure_volts core >> ${LOGFILE}
echo "" >> ${LOGFILE}
echo "" >> ${LOGFILE}
echo "Loads" >> ${LOGFILE}
echo "[1min] - [5min] - [15min]" >> ${LOGFILE}
cat /proc/loadavg >> ${LOGFILE}
echo "" >> ${LOGFILE}
echo "" >> ${LOGFILE}
echo "Memory" >> ${LOGFILE}
cat /proc/meminfo >> ${LOGFILE}
echo "" >> ${LOGFILE}
echo "" >> ${LOGFILE}
echo "Eth0 sent & received" >> ${LOGFILE}
cat /sys/class/net/eth0/statistics/tx_bytes /sys/class/net/eth0/statistics/rx_bytes >> ${LOGFILE}
echo "" >> ${LOGFILE}
echo "" >> ${LOGFILE}
echo "WLAN0 sent & received" >> ${LOGFILE}
cat /sys/class/net/wlan0/statistics/rx_bytes /sys/class/net/wlan0/statistics/tx_bytes >> ${LOGFILE}


# This line sends out the LOGFILE to defined EMAIL
# Please refer to https://strobelstefan.de/2020/12/01/e-mail-versand-fuer-den-raspberry-pi-konfigurieren/
# You need to install some additional packages and you have to configure them.
echo 'Your Nextcloud reports its status.' | mutt ${EMAIL} -a ${LOGFILE} -s "Nextcloud - Reports its System Status"

Bildquelle: Gemeinfrei-ähnlich freigegeben durch unsplash.comLouis Reed

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

Crontab-Meldungen per E-Mail versenden

Auf meinem kleinen Raspberry Pi habe ich einige Crontabs eingerichtet, die unterschiedliche Skripte automatisiert starten. Bei ein paar dieser Skripte wollte ich eine kurze Nachricht über den Erfolg per E-Mail erhalten.

In einem früheren Beitrag habe ich bereits ausführlich erklärt, wie man den Mail-Server Postfix installiert und konfiguriert ➡ Motion mit E-Mail-Versand. Der funktionierende Postfix soll auch die Grundlage für das Versenden von Crontab-Nachrichten sein.

Eigentlich ist es dann ganz einfach, einfach die crontab-Datei öffnen und ein paar Einträge vornehmen.

crontab -e

In diesem Beispiel soll der Pi eine Nachricht senden, wenn das Skript autodelete.sh erfolgreich gestartet wurde. ( ➡ Dateien automatisch mit Cron-Jobs löschen, die älter als X-Tage sind)

@daily /bin/bash /home/pi/scripte/autodelete.sh | mail -s "Dateien wurden gelöscht" 

Damit E-Mails versendet werden, ist einfach an den Cron-Befehl der Befehl über den E-Mail-Versand anzuhängen. ist gegen die Empfänger-E-Mail-Adresse auszutauschen.

Möchte man nicht Postfix installieren und konfigurieren nur um kleine Nachrichten per E-Mail zu versenden, kann man auch au ssmtp zurückgreifen. Eine Anleitung findet man hier ➡ http://linuxundich.de/gnu-linux/system-mails-ohne-einen-mail-server-mit-ssmtp-verschicken/

E-Mail via VBA aus Excel versenden

Mit Hilfe von VBA lässt sich sehr einfach eine Tabelle einer Arbeitsmappe als E-Mail versenden. Die Besonderheit hier, hat man mehrere Konten im Outlook angelegt kann man mittels dem Parameter .Session.Accounts.Item das Absendekonto auswählen. Voraussetzung ist dafür natürlich das Recht, dass man auch von diesem Konto E-Mails versenden darf.

Rasperry Pi Status per E-Mail

In meinem Beitrag ➡ Systeminformationen beim Login auf der Konsole ausgeben beschreibe ich, wie man Systemstatusinformationen bei jedem Login auf der Konsole ausgegeben bekommt. Da man aber nicht immer die Konsole zu Hand hat ist oftmals etwas unpraktisch. Da einer meiner Pis als Überwachungskameras im Einsatz ist, wollte ich in regelmäßigen Abständen einen Statusbericht per E-Mail erhalten.

Bevor ihr hier weitermachen könnt, wird ein funktionierender MTA auf dem Pi benötigt, der für euch die E-Mail an ein definiertes Postfach versenden kann. Falls ihr das noch nicht konfiguriert habt, schaut euch doch mal die folgende Anleitung hier im Blog an ➡ Motion mit E-Mail-Versand, dort wird die Installation und Konfiguration von Postfix beschrieben.

Funktioniert der E-Mail-Versand, dann könnt ihr das folgende Skript auf euren Pi kopieren. Es ist dabei zu beachten, dass manche Befehle nur als sudo/root auszuführen sind. Ihr könnt das Script damit z.B. in das Verzeichnis /bin/status kopieren.
Ich habe das Skript jedoch in das home-Verzeichnis des Pi-Nutzers gelegt. Hierbei ist darauf zu achten, dass zum editieren keine besonderen Rechte vorhanden sind und ggf. andere Benutzer das Skript um weitere Befehle erweitern könnten.

Also Skript anlegen und den Inhalt hinein kopieren:

sudo nano /bin/status/syssstatus.sh

#!/bin/bash

rm /var/log/status.log

echo "Statusanzeige" >> /var/log/status.log
date >> /var/log/status.log
uname -a >> /var/log/status.log
uptime >> /var/log/status.log
echo "" >> /var/log/status.log
echo "" >> /var/log/status.log
echo "Logged In Users" >> /var/log/status.log
users >> /var/log/status.log
echo "" >> /var/log/status.log
echo "Temparature (1/1000)" >> /var/log/status.log
cat /sys/devices/virtual/thermal/thermal_zone0/temp >> /var/log/status.log
echo "" >> /var/log/status.log
echo "" >> /var/log/status.log
echo "Hard drive" >> /var/log/status.log
free >> /var/log/status.log
echo "" >> /var/log/status.log
echo "" >> /var/log/status.log
df -h >> /var/log/status.log
echo "" >> /var/log/status.log
echo "" >> /var/log/status.log
echo "CPU Frequency Kilohertz" >> /var/log/status.log
cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq >> /var/log/status.log
echo "" >> /var/log/status.log
echo "CPU Voltage" >> /var/log/status.log
vcgencmd measure_volts core >> /var/log/status.log
echo "" >> /var/log/status.log
echo "" >> /var/log/status.log
echo "Loads" >> /var/log/status.log
echo "[1min] - [5min] - [15min]" >> /var/log/status.log
cat /proc/loadavg >> /var/log/status.log
echo "" >> /var/log/status.log
echo "" >> /var/log/status.log
echo "Memory" >> /var/log/status.log
cat /proc/meminfo >> /var/log/status.log
echo "" >> /var/log/status.log
echo "" >> /var/log/status.log
echo "Eth0 sent & received" >> /var/log/status.log
cat /sys/class/net/eth0/statistics/tx_bytes /sys/class/net/eth0/statistics/rx_bytes >> /var/log/status.log
echo "" >> /var/log/status.log
echo "" >> /var/log/status.log
echo "WLAN0 sent & received" >> /var/log/status.log
cat /sys/class/net/wlan0/statistics/rx_bytes /sys/class/net/wlan0/statistics/tx_bytes >> /var/log/status.log

echo 'Your Raspispy reports its status.' | mail -a /var/log/status.log -s "Raspispy - Sysstatus"  < /var/log/status.log

Das Skript ausführbar machen

sudo chmod +x /bin/status/syssstatus.sh

Zum Abschluss tragt ihr noch einen Cron-Job ein, damit das Skript in regelmäßigen Abständen ausgeführt wird.

sudo crontab -e

In diesem Beispiel wird das Skript automatisch um 8 Uhr ausgeführt und sendet eine Nachricht an die angegebenen E-Mail-Adresse:

0 8 * * * /bin/bash /bin/status/syssstatus.sh

Weitere Hilfe zum Anlegen von Cron-Jobs findet ihr in meinem Beitrag ➡ Automatisches Update mit Reboot mit Hilfe eines Cron-Jobs


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


Nachtrag vom September 2019

Kürzlich habe ich bei all meinen Raspberry Pis ein Upgrade auf das aktuellste Betriebssystem "Raspbian Buster" durchgeführt. Bei dieser Gelegenheit habe ich das obige Skript angepasst, so dass ich künftig in der Statusmeldung auch die Distributionsinformationen erhalte.
Ich habe die folgenden zwei Zeilen eingegeben:

echo "Raspbian Informationen"
cat /etc/os-release >> /var/log/status.log

Aktualisiertes Skript zum Oktrober 2018 mit Variablen

#!/bin/bash

# E-Mail Address
EMAIL='mail@mail.de'

#Location of Log File
LOGFILE='/var/log/status.log'

rm ${LOGFILE}

echo "Statusanzeige" >> ${LOGFILE}
date >> ${LOGFILE}
uname -a >> ${LOGFILE}
uptime >> ${LOGFILE}
echo "" >> ${LOGFILE}
echo "" >> ${LOGFILE}
echo "Logged In Users" >> ${LOGFILE}
users >> ${LOGFILE}
echo "" >> ${LOGFILE}
echo "Temparature (1/1000)" >> ${LOGFILE}
cat /sys/devices/virtual/thermal/thermal_zone0/temp >> ${LOGFILE}
echo "" >> ${LOGFILE}
echo "" >> ${LOGFILE}
echo "Hard drive" >> ${LOGFILE}
free >> ${LOGFILE}
echo "" >> ${LOGFILE}
echo "" >> ${LOGFILE}
df -h >> ${LOGFILE}
echo "" >> ${LOGFILE}
echo "" >> ${LOGFILE}
echo "CPU Frequency Kilohertz" >> ${LOGFILE}
cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq >> ${LOGFILE}
echo "" >> ${LOGFILE}
echo "CPU Voltage" >> ${LOGFILE}
vcgencmd measure_volts core >> ${LOGFILE}
echo "" >> ${LOGFILE}
echo "" >> ${LOGFILE}
echo "Loads" >> ${LOGFILE}
echo "[1min] - [5min] - [15min]" >> ${LOGFILE}
cat /proc/loadavg >> ${LOGFILE}
echo "" >> ${LOGFILE}
echo "" >> ${LOGFILE}
echo "Memory" >> ${LOGFILE}
cat /proc/meminfo >> ${LOGFILE}
echo "" >> ${LOGFILE}
echo "" >> ${LOGFILE}
echo "Eth0 sent & received" >> ${LOGFILE}
cat /sys/class/net/eth0/statistics/tx_bytes /sys/class/net/eth0/statistics/rx_bytes >> ${LOGFILE}
echo "" >> ${LOGFILE}
echo "" >> ${LOGFILE}
echo "WLAN0 sent & received" >> ${LOGFILE}
cat /sys/class/net/wlan0/statistics/rx_bytes /sys/class/net/wlan0/statistics/tx_bytes >> ${LOGFILE}

echo 'Your Raspispy reports its status.' | mail -a ${LOGFILE} -s "Raspispy - Sysstatus"  ${EMAIL} < ${LOGFILE}

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