Ankündigung

Einklappen
Keine Ankündigung bisher.

suche E-Mail Plugin

Einklappen
Dieses Thema ist geschlossen.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • mikeeyy
    antwortet
    Hi nipponichi ...

    bist Du bei Deiner Fehlersuche schon etwas weiter gekommen? Ich stehe nach wie vor vor dem gleichen Problem.. Allerdings nur wenn ich das aktuelle Logikprozessor Script laufen lasse.. dann läuft mein Email Plugin mit der Meldung Thread eiblisten Caught TERM, exiting:TIMEOUT running PLUGIN email_triggered_by_ga gegen die Wand...

    An den timeout Werten hatte ich bereits geschraubt, leider ohne Verbesserung....

    Beste Grüße und schöne Feiertage weiterhin,

    Mike

    Einen Kommentar schreiben:


  • nipponichi
    antwortet
    Verwende ich das abgespeckte SMTP-eMail.pl, endet das Plugin wie gehabt zwangsweise bei Timeout.
    Lasse ich das identische Script auf der Kommandozeile laufen, schickt es innerhalb von 2 Sekunden erfolgreich eine Email.
    Warum dieser Unterschied?

    Einen Kommentar schreiben:


  • nipponichi
    antwortet
    Ich habe das Script neu aufgesetzt, ohne beim alten abzugucken, leider wieder kein Erfolg.

    Beim Aufruf "$smtp = Net::SMTP::SSL->new($mailserver, Timeout => 10)" bleibt er hängen und nach 60-120 Sekunden gibt es einen Timeout, der zum Neustart führt:
    /usr/sbin/wiregated.pl: INFO
    Thread eiblisten Caught TERM, exiting:TIMEOUT running PLUGIN SendEmailTrig.pl
    *** reading config
    connected to eibd local:/tmp/eib


    Den (gmx) Mail Server kann ich anpingen und mittels "openssl s_client -connect mail.gmx.net:465 -debug" eine Verbindung aufbauen.

    Einen Kommentar schreiben:


  • nipponichi
    antwortet
    Hallo,
    ich habe das Script email_triggered_by_ga_once.pl weitgehend unverändert übernommen.

    Nur, es passiert nichts und ich bekomme keine Fehlermeldung.
    Ich habe mir dann mal "printfs" eingebaut unf festgestellt, daß das Script bis
    Net::SMTP::SSL->new($mailserver, Timeout => 10) kommt, aber dort weder einen Fehler generiert noch drüber hinwegkommt. Kein Rückgabewert in der Script-Übersicht oder Fehler im Plugin-Log.
    Ich habe sowohl einen GMX- als auch einen Gmail-Account getestet - kein Unterschied. Internetzugang ist vorhanden.
    Desweiteren:
    - nehme ich einen ungültigen Servernamen, erhalte ich "bad hostname"
    - verwende ich einen blödsinnigen Port, erhalte ich "connection timeout"
    - verwende ich port 587, erhalte ich "unknown protocol" (aus den vorhandenen Beiträgen ist mir nicht klar geworden, ob Port 587 überhaupt geht.)
    Damit kann man einige Fehler wohl schon ausschließen.

    Timeout 10 ist doch eigentlich schon zu groß, da das Script dann zwangsabgeschossen wird (sieht man das irgendwie?). Mit 5 bleibt es aber genauso hängen.
    Gibt es noch irgendwelche Debuginformationen, die man sich angucken könnte?
    Grüße, Manuel

    Einen Kommentar schreiben:


  • mikeeyy
    antwortet
    Jetzt funktioniert es. Habe das Logikprozessor Script gelöscht und seit dem klappt es. Warum auch immer. Fehler hatte das Logikprozessor Script im Log zwar keine aufgeführt, aber scheint reproduzierbar in Zusammenhang zu stehen. Warum ist mir allerdings ein Rätsel (??).

    Grüße,
    Mike

    Einen Kommentar schreiben:


  • mikeeyy
    antwortet
    Hi daviid,

    habe das Standard EMail Plugin nur Minimal angepasst. Code sieht wie folgt aus

    Code:
    #Plugin zum versenden von Emails beim Empfang eines definierten Werts auf einer definierten GA
    #Mehrere Mails an einer GA sind derzeit nicht möglich! 
    # - benoetigt Paket libnet-smtp-ssl-perl
    # Aufbau moeglichst so, dass man unterhalb der Definitionen nichts aendern muss!
    
    my ($sec,$min,$hour,$day,$month,$yr19,@rest) = localtime(time);
    my $hostname = `hostname`;
    
    ##################
    ### DEFINITION ###
    ##################
    
    my $Absender = 'WireGate '; # unbedingt anpassen, die Absenderadresse sollte gültig sein um Probleme zu vermeiden
    my $username = 'xxx@gmx.de'; #Anpassen! Username fuer SMTP-Server
    my $password = 'xxx'; #Anpassen! Passwort fuer SMTP-Server
    my $mailserver='mail.gmx.net:465'; # SMTP-Relay mit SSL: das muss natuerlich angepasst werden!
    #my $mailserver='smtp.gmail.com:465'; # SMTP-Relay mit SSL: das muss natuerlich angepasst werden!
    
    $plugin_info{$plugname.'_cycle'} = 3500;
    
    my @actionGA;
    push @actionGA, { name => "Alarmanlage", email_adress => 'xxx@gmx.de', email_subject => "ALARM", email_text => "Alarmanlage hat um $hour:$min ausgelöst.", trigger_ga => "5/1/1", value => 1 };
    #push @actionGA, { name => "test", email_adress => 'email@gmx.de', email_subject => "test2", email_text => "Test 2", trigger_ga => "1/1/1", value => 0 };
    #push @actionGA, { name => "test", email_adress => 'email@gmx.de', email_subject => "test3", email_text => "Test 3", trigger_ga => "1/1/2", value => 1 };
    
    #######################
    ### ENDE DEFINITION ###
    #######################
    
    use Net::SMTP::SSL;
    use MIME::Base64;
    
    foreach my $element (@actionGA) {
    my $email_adress = $element->{email_adress};
    my $email_subject = $element->{email_subject};
    my $email_text = $element->{email_text};
    my $trigger_ga = $element->{trigger_ga};
    my $value = $element->{value};
    
    $plugin_subscribe{$trigger_ga}{$plugname} = 1;
    
    if ($msg{'apci'} eq "A_GroupValue_Write" && $msg{'dst'} eq $trigger_ga && defined $msg{'value'} && $msg{'value'} == "$value" ) {
    plugin_log($plugname, "Trigger erfolgt.");
    my $smtp = Net::SMTP::SSL->new($mailserver, Timeout => 10) or return "Fehler beim verbinden zu $mailserver $!; $@";
    $smtp->auth($username,$password) or return "SASL Auth failed $!;$@"; # try SASL
    $smtp->status() < 5 or return "Auth failed: $!; $@ ". $smtp->status();
    $smtp->mail($Absender) or return "Absender $Absender abgelehnt $!";
    $smtp->to(split(',',$email_adress)) or return "Empfaenger $email_adress abgelehnt $!"; 
    $smtp->data() or return "Data failed $!";
    $smtp->datasend("To: $email_adress\n") or return "Empfanger $email_adress (Header-To) abgelehnt $!";
    $smtp->datasend("Subject: $email_subject\n") or return "Subject $email_subject abgelehnt $!";
    $smtp->datasend("\n") or return "Data failed $!";
    $smtp->datasend("$email_text\n") or return "Data failed $!";
    $smtp->dataend() or return "Data failed $!";
    $smtp->quit or return "Quit failed $!";
    
    return;# keine Logausgabe
    return "eMail von $Absender an $email_adress\ Betreff $email_subject gesendet: $email_text";
    
    }
    else {
            plugin_log($plugname, "Unbekannter Aufruf.");
            }
    }
    Nutze parallel noch das Logikprozessor Script zur Erfassung und Auswertung der Fenster Kontake und der Aktiven Alarmierung via CV. Das funzt auch soweit. Die GA 5/1/1 wird gesendet, sobald ein Fenster auf geht. Habe im Email Script auch das Logging aktiv, so dass erkennbar der Trigger ausgelöst wird. Nur wird keine Mail gesendet und ich stehe auf dem Schlauch woran es liegt und wo ich ggf. nach weiteren Mailproblemen suchen kann. Gibt es noch ein Logfile aus dem ggf. die Kommunikation mit dem Provider hervorgeht? Der private Mailversand via Outlook und verschlüsselter Übertragung klappt.
    Die verwendete GA ist in der eibga.conf hinterlegt. WG wurde bereits durchgestartet. Test mit aktivem exim4 Dienst und ohne brachte keine Änderung. Wobei der Dienst wohl auch nicht benötigt wird (oder ist das ein Irrtum?)


    Grüße,
    Mike

    Einen Kommentar schreiben:


  • daviid
    antwortet
    Zeig doch mal den Code, dann kann man besser folgen

    Einen Kommentar schreiben:


  • mikeeyy
    antwortet
    So. neues Problem oder besser, neue Herausforderung ;-)

    Ich plane eine Email Signalisierung bei geöffneten Fenstern während der Abwesenheit. Also wenn ein Fenster auf geht, dann Alarmierung. Folgendes existiert. Sammel GA Plugin zur Überwachung alle Fenster und Meldung an eine GA -> funktioniert. Anzeige in der CV ist korrekt.

    Zweites Sammel GA Plugin prüft die GA aus dem ersten Sammel GA Script UND eine zweite GA für einen Alarmierungs Button in der CV. Damit soll erreicht werden, dass eine Alarmierung nur bei Aktiviertem Alarm Button ausgelöst wird. Ich will ja nicht bei jedem geöffneten Fenster eine Mail erhalten. Die GA aus dem zweiten Script wird dem Email Plugin Script mitgegeben. In der ETS Diagnose werden alle GAs korrekt erzeugt und via KNX übertragen. Nur das Email Plugin reagiert nicht. Keine Email. Setze ich eine Status GA eines Aktors in das Mail Plugin ein, dann kommt auch die Email. Frage. Gibt es einen Grund warum aus den Plugins heraus generierte GAs nicht durch das EMail Plugin berücksichtigt werden? Oder gibt es eine Alternative zur Steuerung der Email Benachrichtigung, so dass eine Aktive Überwachung gesteuert werden kann?

    Danke im Voraus und Grüße,
    Mike

    Einen Kommentar schreiben:


  • mikeeyy
    antwortet
    Ok. Lösung gefunden. Habe im Wiregate unter der root Anmeldung und dann unter Sonstiges -> Perl Module (CPAN) das Modul Authen::SASL installiert. War offenbar nicht vorhanden. Danach klappt es.

    Einen Kommentar schreiben:


  • mikeeyy
    antwortet
    Hallo zusammen,

    habe mich jetzt auch am email plugin versucht. die apt-get update meldung erhalte ich auch. laut anderen foren beiträgen hier soll diese ja zu vernachlässigen sein. aber.... ich habe noch ein ganz anderes problem. bei empfang einer ga wird das script zwar angestoßen, bricht aber mit einem fehler ab. meldung lautet auf:

    SASL Auth failed No such file or directory;Can't locate Authen/SASL.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.10.0 /usr/local/share/perl/5.10.0 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .) at /usr/share/perl/5.10/Net/SMTP.pm line 117.

    Gibt es hierzu Ideen wo das Problem liegen könnte?

    Danke und Grüße!
    Mike

    Einen Kommentar schreiben:


  • Plusch
    antwortet
    Danke für den Tipp. Laut dieser Seite sollte SSL funktionieren.
    Habe nun versucht libnet-smtp-ssl-perl neu zu installieren, bekomme aber nun folgende Fehlermeldung:

    W: GPG error: Index of / lenny/updates Release: The following signatures were invali d: KEYEXPIRED 1356982504 W: You may want to run apt-get update to correct these problems
    Gruß Plusch

    Einen Kommentar schreiben:


  • Sandman60
    antwortet
    Schuß ins Blaue bei freenet.de... Kann es sein das da gar kein SSL angeboten wird Du aber im Plugin SSL anforderst. Bin nur mal auf die schnelle die Konf.empfehlung von freenet.de durchgegangen und da sind IMHO keine Haken bzgl. SSL oder TLS gesetzt...

    Wie gesagt, auf die schnelle... aber vielleicht hilft's Dir...
    Cheers,
    Oliver

    Einen Kommentar schreiben:


  • Plusch
    antwortet
    Hallo,

    habe mir nun Aufgrund des Posts von lio auch mal das Plugin installiert.
    Bekomme unten stehende Fehlermeldung bei zwei verschiedenen Emailkonten.
    Hat jemand einen Hinweis für mich wo hier der Fehler eventuell zu suchen ist?

    Danke!

    Gruß Plusch

    Code:
    Fehler beim verbinden zu mx.freenet.de:587 ; Net::SMTP::SSL: SSL connect  attempt failed with unknown errorerror:140770FC:SSL  routines:SSL23_GET_SERVER_HELLO:unknown protocol

    Einen Kommentar schreiben:


  • lio123
    antwortet
    Hallo Zusammen, das Wiregate brauchte wohl die Nacht um darüber nachzudenken, ob es das Plugin nicht doch arbeiten lässt. Heute morgen erfolgte dann die Arbeitsaufnahme und funktioniert bisher ganz gut. Warum diese Verzögerung? Egal, hauptsache es funktioniert nun! Danke und Grüße, Lio

    Einen Kommentar schreiben:


  • XueSheng
    antwortet
    Zitat von lio123 Beitrag anzeigen
    Irgendwie denke ich, dass es am Trigger liegt?!
    Der Trigger ist vermutlich der richtige Ansatz. Es kommt vermutlich erst gar nicht zum Senden der Mail, da die Bedigung dafür nicht gegeben ist.

    Hast Du denn Deine eibga.conf gepflegt mit passenden DPTs?

    Wenn Du ein paar grundlegende perl Kenntnisste hast, dann pfleg doch einfach in Dein Skript eine log Ausgabe ein.
    z.B. in der "email_triggered_by_ga.pl" (Änderung Fett/rot markiert):
    Code:
    if ($msg{'apci'} eq "A_GroupValue_Write" && $msg{'dst'} eq $trigger_ga && defined $msg{'value'} && $msg{'value'} == "$value" && $plugin_info{$plugname."_".$trigger_ga} == 0) {
    [COLOR=Red][B]plugin_log($plugname, "Trigger erfolgt.");[/B][/COLOR]
    Und dann noch eine "else" Bedingung dazu:

    Code:
        return;    # keine Logausgabe 
        return "eMail von $Absender an $email_adress\ Betreff $email_subject gesendet: $email_text";     
         
        } [COLOR=Red][B]else {
            plugin_log($plugname, "Unbekannter Aufruf.");
            }[/B][/COLOR]
    In der log Datei siehst Du dann, ob der Trigger funktioniert oder nicht.

    Einen Kommentar schreiben:

Lädt...
X