Da wir mittlerweile das aktuelle Raspberry Pi OS (Debian 12) auf dem Raspberry Pi 4+ nutzen, gab es natürlich wieder einige Probleme beim einrichten der Alarmmails.
Wir sind nach der Anleitung in der Teichsteuerung vorgegangen, haben allerdings ein paar Änderungen vorgenommen die ich hier mal darauf aufbauend anführen möchte.
Alarm per E-Mail versenden
AnleitungAnliegenTreten ungewöhnliche oder gefährliche Situationen am Teich auf, zum Beispiel Ausfall oder Fehlfunktionen von Geräten, so kannst Du Dich per E-Mail davon in Kenntnis setzen lassen, sofern der Raspi eine Verbindung ins Internet hat.
Alle Zeilen, die im Protokoll rot markiert sind, lassen sich zusätzlich per Mail versenden.
Hardware Außer der Verbindung ins Internet ist keine zusätzliche Hardware erforderlich.
Software Zu installieren ist das Debian-Paket sendEmail. Findet die Software dieses Paket vor, dann lässt sich die Alarmierung per E-Mail aktivieren.
Solange dieses Paket noch nicht vorhanden ist, kann die Alarmierung per Mail nicht aktiviert werden.
Gib in der Konsole diesen Befehl zur Installation ein:
Code:
sudo apt-get install sendemail libio-socket-ssl-perl libnet-ssleay-perl
Durch diesen Befehl wird alle Software installiert, die zum Versand von Mails erforderlich ist.
Die früher notwendige Bearbeitung der Datei " /usr/share/perl5/IO/Socket/SSL.pm" zum entfernen des Dollarzeichens in der Zeile 1490 ist seit geraumer Zeit nicht mehr notwendig.
ZugangsdatenDu benötigst ein Postfach bei einem Mailprovider, in dem der Raspi die zu versendenden E-Mails einliefern darf. Bei Bedarf legt man bei Google eine Mailadresse kostenlos an.
Die Zugangsdaten für dieses Mailkonto schreiben wir in die Datei
Code:
joe /var/www/html/steuerung/quellen/rechnerdaten.php
Unter den bisher in dieser Datei enthaltenen Angaben ergänzen wir diese Zeilen, die für eine Mailadresse beim Provider Strato funktionieren sollten:
Code:
$g_sendemail = array(
'sender' => 'raspi@wunschname.de', // Absenderadresse der Alarmmails
'ziel' => 'privat@wunschname.de', // Empfaengeradresse der Alarmmails
'server' => 'smtp.strato.de', // SMTP-Server, der Mail annimmt
'tls' => 'yes', // yes oder no gibt an, ob tls unterstuetzt wird
'user' => 'raspi@wunschname.de', // Benutzername am SMTP-Server
'pass' => 'geheimpasswort', // Kennwort dieses Benutzers
);
Diese Angaben wurden bei Googlemail erfolgreich verwendet:
Code:
$g_sendemail = array(
'sender' => 'raspi@gmail.com', // Absenderadresse der Alarmmails
'ziel' => 'privat@beispiel.de', // Empfaengeradresse der Alarmmails
'server' => 'smtp.gmail.com', // SMTP-Server, der Mail annimmt
'tls' => 'yes', // yes oder no gibt an, ob tls unterstuetzt wird
'user' => 'raspi@gmail.com', // Benutzername am SMTP-Server
'pass' => 'geheimpasswort', // Kennwort dieses Benutzers
);
Achtung!
Man benötigt nur einen dieser hier vorgestellten Definitionsblöcke!
Das Geheimpasswort muss ggf. erst einmalig erzeugt werden. Bei Verwendung eines Google-Kontos als Absender, loggt man sich in sein Google-Konto ein und gibt in das Suchfeld "Google-Konto durchsuchen", "App-Passwörter" ein. Nachdem man sich ggf. erneut in seinem Google-Konto anmelden muss, kann man nun für den Raspi ein App-Passwort erstellen, das nun nur einmalig angezeigt wird. Dieses Passwort muss man sich nicht merken, oder speichern, jedoch muss es in die Datei "rechnerdaten.php" als 'geheimpasswort' eingetragen werden.
Je nach Anwendungszweck kann der 'sender' auch gleichzeitig das 'ziel' sein.
Die Funktion von sendEmail kann mit folgendem Befehl überprüft werden:
Code:
sendEmail -vv -f 'sender' -t 'ziel' -u Testnachricht -m Das ist ein Test -s 'server' -xu 'user' -xp 'pass' -o tls=yes
Die Platzhalter
'sender' , 'ziel' , 'server' , 'user' und 'pass' sind durch die eigenen Angaben zu ersetzen, die gerade in der rechnerdaten.php vorgenommen wurden.
Sollte der Test nicht erfolgreich sein, sondern den Fehler
"ERROR => TLS setup failed: hostname verification failed" anzeigen, bearbeitet man die Datei "
Code:
sudo joe /usr/bin/sendEmail
" und ersetzt folgenden Textblock:
Code:
## Start TLS if possible
if ($conf{'tls_server'} == 1 and $conf{'tls_client'} == 1 and $opt{'tls'} =~ /^(yes|auto)$/) {
printmsg("DEBUG => Starting TLS", 2);
if (SMTPchat('STARTTLS')) { quit($conf{'error'}, 1); }
if (! IO::Socket::SSL->start_SSL($SERVER, SSL_version => 'SSLv23:!SSLv2')) {
quit("ERROR => TLS setup failed: " . IO::Socket::SSL::errstr(), 1);
}
printmsg("DEBUG => TLS: Using cipher: ". $SERVER->get_cipher(), 3);
printmsg("DEBUG => TLS session initialized :)", 1);
durch diesen Patch:
Code:
## Start TLS if possible
if ($conf{'tls_server'} == 1 and $conf{'tls_client'} == 1 and $opt{'tls'} =~ /^(yes|auto)$/) {
printmsg("DEBUG => Starting TLS", 2);
if (SMTPchat('STARTTLS')) { quit($conf{'error'}, 1); }
if (! IO::Socket::SSL->start_SSL($SERVER,
SSL_version => 'TLSv12:!SSLv2',
SSL_verifycn_scheme => 'smtp',
SSL_verifycn_name => $conf{'server'})) {quit("ERROR => TLS setup failed: " . IO::Socket::SSL::errstr(), 1);
}
printmsg("DEBUG => TLS: Using cipher: ". $SERVER->get_cipher(), 3);
Nun sollte es wieder möglich sein Alarmmails vom Raspi zu empfangen.