Ankündigung

Einklappen
Keine Ankündigung bisher.

SMTP via TLS

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

    [wiregate] SMTP via TLS

    Hallo zusammen,

    um mir smart ein paar Warn-Meldungen per Mail zu schicken habe ich mir hier das Plugin zum Senden einer Mail bei GA-Aufruf als Basis genommen. Konfiguriert etc.

    wenn ich nun die GA mit einer 1 beschreibe erhalte ich eine Fehlermeldung im wiregate_plugin.log

    Code:
    2013-07-25 14:43:52.918,email_triggered_by_ga,Fehler beim verbinden zu v082599.kasserver.com:587 ; Net::SMTP::SSL: SSL connect attempt failed with unknown errorerror:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol,0.3s,
    daher habe ich das mal versucht genauer zu analyiseren.

    Code:
    WIREGATE:/var/log# openssl s_client -connect v082599.kasserver.com:587 -debug
    CONNECTED(00000003)
    write to 0x8617958 [0x86179a0] (121 bytes => 121 (0x79))
    0000 - 80 77 01 03 01 00 4e 00-00 00 20 00 00 39 00 00   .w....N... ..9..
    0010 - 38 00 00 35 00 00 16 00-00 13 00 00 0a 07 00 c0   8..5............
    0020 - 00 00 33 00 00 32 00 00-2f 03 00 80 00 00 05 00   ..3..2../.......
    0030 - 00 04 01 00 80 00 00 15-00 00 12 00 00 09 06 00   ................
    0040 - 40 00 00 14 00 00 11 00-00 08 00 00 06 04 00 80   @...............
    0050 - 00 00 03 02 00 80 00 00-ff 7c c9 88 c6 dd 43 bc   .........|....C.
    0060 - a8 a2 eb 5d 1f 85 13 96-05 bc 56 46 74 95 d6 a9   ...]......VFt...
    0070 - 10 37 49 42 92 da 88 79-6d                        .7IB...ym
    read from 0x8617958 [0x861cf00] (7 bytes => 7 (0x7))
    0000 - 32 32 30 20 64 64 32                              220 dd2
    8363:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:s23_clnt.c:583:
    Ergebnis gleiche Fehlermeldung

    hingegen:
    Code:
    wiregate:/var/log# openssl s_client -connect v082599.kasserver.com:587 -debug -starttls smtp
    bringt einen vernünftigen Output mit Server-Zertifikat und der Meldung SSL Handshake erfolgreich

    lässt sich dem Perl-Plugin angewöhnen ebenso diese Info mitzugeben?

    hier mal noch mein aktuelles Plugin:
    Code:
    # email_triggered_by_ga.pl
    # email triggert bei GA=1 wenn vorher GA=0
    # 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 = '*********'; #Anpassen! Username fuer SMTP-Server
    my $password = '*********'; #Anpassen! Passwort fuer SMTP-Server
    $mailserver='v082599.kasserver.com:25'; # SMTP-Relay mit SSL: das muss natuerlich angepasst werden!
    
    
    
    my $Msg = $plugin_info{'email.pl.Stoerung'}; # wird von einen anderen Plugin befuellt
    #
    $plugin_info{$plugname.'_cycle'} = 3600;
    
    my @actionGA;
    push @actionGA, { name => "Einbruch", email_adress => 'adress@provider.de', email_subject => "Einbruch", email_text => "Alarm um $hour:$min ausgelöst.", trigger_ga => "7/2/11", 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_info{$plugname."_".$trigger_ga} == 0) {        
           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 $!";
           #
           $plugin_info{$plugname."_".$trigger_ga} = 1; # E-Mail wurde versandt,GA=1
           # return;    # keine Logausgabe
           return "eMail von $Absender an $email_adress\ Betreff $email_subject gesendet: $email_text";    
        }elsif($msg{'apci'} eq "A_GroupValue_Write" && $msg{'dst'} eq $trigger_ga && defined $msg{'value'} && $msg{'value'} == 0){
           $plugin_info{$plugname."_".$trigger_ga} = 0; # GA=0
        }    
    }
    vielen Dank für Eure Hilfe!

    Viele Grüße
    Stefan

    #2
    libnet-smtp-ssl-perl installiert?

    Das ist glaub das neuste was ich mal zusammen geschustert hab SourceForge.net Repository - [openautomation] Contents of /wiregate/plugin/generic/email_triggered_by_ga.pl

    Kommentar


      #3
      Zitat von daviid Beitrag anzeigen
      libnet-smtp-ssl-perl installiert?

      Das ist glaub das neuste was ich mal zusammen geschustert hab SourceForge.net Repository - [openautomation] Contents of /wiregate/plugin/generic/email_triggered_by_ga.pl
      Hi Daviid,

      ja das package ist installiert, sonst würde ich ja eine Fehlermeldung bekommen, dass er das nicht finden kann.

      Ich glaube mein Plugin basiert im Wesentlichen auf deinem aus dem Repository. An der ein oder anderen Stelle etwas angepasst.

      Im WWW finde ich des öfteren eine Perl-Klasse Net::SMTP::TLS, aber die bekomme ich irgendwie nicht sauber auf dem WG installiert. zumindest nicht übers Webmin und um Packages lokal zu installieren fehlt mir etwas KnowHow.

      cheers
      Stefan

      Kommentar


        #4
        Ehrlich gesagt versteh ich den Fehler nich.

        Aber bei sowas geh ich immer folgendermaßen vor:

        Erstmal versuchen das "Grundplugin" zum laufen bekommen, also das von hier, und dann erst den Rest drum rum basteln, dann merkt man schnell wo das Problem liegt.

        Ansonsten mal den Thread durchschauen, da haben wir auch relativ lang Fehler gesucht, vlt ist ja was dabei.

        Kommentar


          #5
          Zitat von daviid Beitrag anzeigen
          Ehrlich gesagt versteh ich den Fehler nich.
          Mein Problem ist: ich glaube der Fehler liegt im Verbindungsaufbau. Allerdings bekomme ich den Fehler genauso, wenn ich mich versuche an gmail oder web.de zu verbinden.

          gibt es denn sonst eine Möglichkeit zu prüfen, ob die perl-library sauber installiert ist und wirklich funktioniert? Das skript funktioniert bei mir auch nicht, wenn ich direkt deines nehme und nur die Konfig-Parameter ändere

          Kommentar


            #6
            Mach doch auf der Konsole einfach mal:
            apt-get install libnet-smtp-ssl-perl

            dann steht dann da obs schon drauf ist oder nicht.

            Wenns schon drauf ist evtl. mal folgendes probieren:
            apt-get --purge remove libnet-smtp-ssl-perl
            und danach
            apt-get install libnet-smtp-ssl-perl

            Kommentar


              #7
              danke für den Tip. Leider geht das immer noch nicht

              was mir jedoch bei der Installation aufgefallen ist, ist folgende Zeile:
              Code:
              debconf: Schiebe die Paket-Konfiguration auf, da apt-utils nicht installiert ist
              Wähle vormals abgewähltes Paket libnet-smtp-ssl-perl.
              ist das so richtig?

              Kommentar

              Lädt...
              X