Emails mit FHEM: Unterschied zwischen den Versionen

Aus Fidis Wiki
Zur Navigation springen Zur Suche springen
Jochen (Diskussion | Beiträge)
Die Seite wurde neu angelegt: „Basis ist ein Raspberry Pi mit installiertem Debian 7 (Wheezy) und lauffähigem FHEM. Die Infos stammen primär von dieser Seite: [http://heinz-otto.blogspot.d…“
 
Jochen (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
Basis ist ein Raspberry Pi mit installiertem Debian 7 (Wheezy) und lauffähigem FHEM.
Basis ist ein Raspberry Pi mit installiertem Debian 7 (Wheezy) und lauffähigem FHEM.
Die Infos stammen primär von dieser Seite: [http://heinz-otto.blogspot.de/2015/02/email-senden-von-fhem-und-raspberrypi.html] .
Die Infos stammen primär von den Seiten [http://heinz-otto.blogspot.de/2015/02/email-senden-von-fhem-und-raspberrypi.html Otto's Technik Blog] und [http://www.fhemwiki.de/wiki/E-Mail_senden FHEM-Wiki].


Mit dem pi-User im Terminal anmelden (Putty), dann zuerst dem Email-Client nachinstallieren
Mit dem pi-User im Terminal anmelden (Putty), dann zuerst den Email-Client nachinstallieren:


sudo apt-get update
sudo apt-get update
sudo apt-get install sendEmail
sudo apt-get install sendEmail


Da alle Email-Dienstleister mittlerweile auf TLS umgestellt haben müssen jetzt noch 2 Dateien der Distribution angepasst werden.
Da alle Email-Dienstleister mittlerweile auf TLS umgestellt haben müssen jetzt noch 2 Dateien der Distribution angepasst werden.
Zeile 11: Zeile 11:
In der Datei SSL.pm muss in Zeile 1490 ein $ entfernt werden:
In der Datei SSL.pm muss in Zeile 1490 ein $ entfernt werden:


sudo nano /usr/share/perl5/IO/Socket/SSL.pm
sudo nano /usr/share/perl5/IO/Socket/SSL.pm


Wir suchen die erste Textkette in der nächsten Box und löschen das $ am Ende (siehe 2. Zeile):
Wir suchen die erste Textkette in der nächsten Box und löschen das $ am Ende (siehe 2. Zeile):


m{^(!?)(?:(SSL(?:v2|v3|v23|v2/3))|(TLSv1[12]?))$}i
m{^(!?)(?:(SSL(?:v2|v3|v23|v2/3))|(TLSv1[12]?))$}i
m{^(!?)(?:(SSL(?:v2|v3|v23|v2/3))|(TLSv1[12]?))}i
m{^(!?)(?:(SSL(?:v2|v3|v23|v2/3))|(TLSv1[12]?))}i


Dann noch die Datei /usr/bin/sendEmail die Zeile 1907 editieren:
Dann noch die Datei /usr/bin/sendEmail die Zeile 1907 editieren:


sudo nano /usr/bin/sendEmail
sudo nano /usr/bin/sendEmail


Einfach die obere Zeile in der folgenden Box suchen und durch die zweite Zeile ersetzen:
Einfach die obere Zeile in der folgenden Box suchen und durch die zweite Zeile ersetzen:


SSLv3 TLSv1
SSLv3 TLSv1
TLSv1_0:TLSv1_1:TLSv1_2
TLSv1_0:TLSv1_1:TLSv1_2


Test auf der Kommandozeile (Daten in < > entsprechend ersetzen):
Test auf der Kommandozeile (Daten in < > entsprechend ersetzen):


sendEmail -f '<von@domain.tld>' -t '<an@domain.tld> -u 'Hallo Welt' -m 'Das ist ein Test' -s '<smtp.domain.tld>' -xu '<konto@domain.tld>' -xp '<Passwort>' -o tls=auto
sendEmail -f '<von@domain.tld>' -t '<an@domain.tld> -u 'Hallo Welt' -m 'Das ist ein Test' -s '<smtp.domain.tld>' -xu '<konto@domain.tld>' -xp '<Passwort>' -o tls=auto
 
 
Jetzt noch die notwendigen Schritte in FHEM:
Die Datei 99_myUtils "leer" anlegen, dass klappte wie im [http://www.fhemwiki.de/wiki/99_myUtils_anlegen Wiki] ganz gut.
Anschließend in der 99_myUtils folgende Unterroutine einfügen und der eigentlichen Befehlszeile ''tls=auto'' bzw. ''=yes'' einsetzen:
 
######## DebianMail  Mail auf dem RPi versenden ############
sub
DebianMail
{
  my $rcpt = shift;
  my $subject = shift;
  my $text = shift;
  my $attach = shift;
  my $ret = "";
  my $sender = "absender\@account.de";
  my $konto = "kontoname\@account.de";
  my $passwrd = "passwrd";
  my $provider = "smtp.provider.de:25";
  Log 1, "sendEmail RCP: $rcpt";
  Log 1, "sendEmail Subject: $subject";
  Log 1, "sendEmail Text: $text";
  Log 1, "sendEmail Anhang: $attach";;
  $ret .= qx(sendEmail -f '$sender' -t '$rcpt' -u '$subject' -m '$text' -a '$attach' -s '$provider' -xu '$konto' -xp '$passwrd' -o tls='''no''' -o message-charset=utf-8);
  $ret =~ s,[\r\n]*,,g;    # remove CR from return-string
  Log 1, "sendEmail returned: $ret";
}
 
Bei folgenden Feldern müssen die eigenen Daten eingetragen werden, für GMX gilt:
 
$sender    muss eine gültige Email-Adresse sein
 
$konto    die eigene GMX-Adresse
 
passwrd    das GMX-Passwort
 
$provider  mail.gmx.net
 
 
Dann kann man das Versenden einer Email testen, diese Zeile definiert ein temporären Emailversand in einer Minute.
 
define Testmail at +00:01:00 { DebianMail('<name@domain.tld>','Info vom FHEM System','Das EMail Modul funktioniert');;}
 
Wenns nicht ankommt, kann man das Logfile anschauen, wenn dort "Email was sent successfully!" steht sollte man noch in den Spamordner schauen.

Version vom 4. November 2015, 18:31 Uhr

Basis ist ein Raspberry Pi mit installiertem Debian 7 (Wheezy) und lauffähigem FHEM. Die Infos stammen primär von den Seiten Otto's Technik Blog und FHEM-Wiki.

Mit dem pi-User im Terminal anmelden (Putty), dann zuerst den Email-Client nachinstallieren:

sudo apt-get update
sudo apt-get install sendEmail

Da alle Email-Dienstleister mittlerweile auf TLS umgestellt haben müssen jetzt noch 2 Dateien der Distribution angepasst werden.

In der Datei SSL.pm muss in Zeile 1490 ein $ entfernt werden:

sudo nano /usr/share/perl5/IO/Socket/SSL.pm

Wir suchen die erste Textkette in der nächsten Box und löschen das $ am Ende (siehe 2. Zeile):

m{^(!?)(?:(SSL(?:v2|v3|v23|v2/3))|(TLSv1[12]?))$}i
m{^(!?)(?:(SSL(?:v2|v3|v23|v2/3))|(TLSv1[12]?))}i

Dann noch die Datei /usr/bin/sendEmail die Zeile 1907 editieren:

sudo nano /usr/bin/sendEmail

Einfach die obere Zeile in der folgenden Box suchen und durch die zweite Zeile ersetzen:

SSLv3 TLSv1
TLSv1_0:TLSv1_1:TLSv1_2

Test auf der Kommandozeile (Daten in < > entsprechend ersetzen):

sendEmail -f '<von@domain.tld>' -t '<an@domain.tld> -u 'Hallo Welt' -m 'Das ist ein Test' -s '<smtp.domain.tld>' -xu '<konto@domain.tld>' -xp '<Passwort>' -o tls=auto


Jetzt noch die notwendigen Schritte in FHEM: Die Datei 99_myUtils "leer" anlegen, dass klappte wie im Wiki ganz gut. Anschließend in der 99_myUtils folgende Unterroutine einfügen und der eigentlichen Befehlszeile tls=auto bzw. =yes einsetzen:

######## DebianMail  Mail auf dem RPi versenden ############ 
sub 
DebianMail 
{ 
 my $rcpt = shift;
 my $subject = shift; 
 my $text = shift;
 my $attach = shift; 
 my $ret = "";
 my $sender = "absender\@account.de"; 
 my $konto = "kontoname\@account.de";
 my $passwrd = "passwrd";
 my $provider = "smtp.provider.de:25";
 Log 1, "sendEmail RCP: $rcpt";
 Log 1, "sendEmail Subject: $subject";
 Log 1, "sendEmail Text: $text";
 Log 1, "sendEmail Anhang: $attach";;

 $ret .= qx(sendEmail -f '$sender' -t '$rcpt' -u '$subject' -m '$text' -a '$attach' -s '$provider' -xu '$konto' -xp '$passwrd' -o tls=no -o message-charset=utf-8);
 $ret =~ s,[\r\n]*,,g;    # remove CR from return-string 
 Log 1, "sendEmail returned: $ret"; 
}

Bei folgenden Feldern müssen die eigenen Daten eingetragen werden, für GMX gilt:

$sender muss eine gültige Email-Adresse sein

$konto die eigene GMX-Adresse

passwrd das GMX-Passwort

$provider mail.gmx.net


Dann kann man das Versenden einer Email testen, diese Zeile definiert ein temporären Emailversand in einer Minute.

define Testmail at +00:01:00 { DebianMail('<name@domain.tld>','Info vom FHEM System','Das EMail Modul funktioniert');;}

Wenns nicht ankommt, kann man das Logfile anschauen, wenn dort "Email was sent successfully!" steht sollte man noch in den Spamordner schauen.