Matthias: form mail skript

Hallo,
habe zuhause xampp installiert. Damit wollte ich folgendes perl script ausführen:

#!C:/xampp/xampp/perl/bin/perl.exe
$Sendmail_Prog = "C:/xampp/xampp/sendmail/sendmail.exe";
$mailto = "info@meine_adresse.de";

Modul für CGI-Scripts einbinden:

use CGI::Carp qw(fatalsToBrowser);

read(STDIN, my $mailtext, $ENV{CONTENT_LENGTH});

E-Mail versenden:

open(MAIL,"|$Sendmail_Prog -t") || print STDERR "Mailprogramm konnte nicht gestartet werden\n";
print MAIL "To: $mailto\n";
print MAIL "Subject: $subject\n\n";
print MAIL "$mailtext\n";
close(MAIL);

aber das klappt nicht. Der Aufruf des Skripts erfolgt ganz normal in html über "action=..."  Mein Webserver kommt damit auch nicht zurecht, dabei ist das doch nur ein einfaches email Formular! Kann mir jemand sagen, ob an der Syntax was falsch ist oder was ich einstellen muß, damit der xampp Server tatsächlich eine solche email verschicken kann.
Danke,
matthias

  1. Hallo Matthias,

    $Sendmail_Prog = "C:/xampp/xampp/sendmail/sendmail.exe";

    kurze Zwischenfrage: Gibt es die Datei?
    Soweit ich gesehen habe, wird bei XAMPP Mercury Mail als Mailserver installiert. Hast Du diesen Mailserver auch konfiguriert? Tipps dazu könntest Du im Archiv finden, insbesondere von "Der Martin".

    $mailto = "info@meine_adresse.de";

    Für Beispiel-Adressen oder auch URLs verwende bitte die Domain example.org. Die ist dafür da, auch wenn "meine_adresse.de" kein gültiger Name darstellt.

    aber das klappt nicht. Der Aufruf des Skripts erfolgt ganz normal in html über "action=..."  Mein Webserver kommt damit auch nicht zurecht, dabei ist das doch nur ein einfaches email Formular! Kann mir jemand sagen, ob an der Syntax was falsch ist oder was ich einstellen muß, damit der xampp Server tatsächlich eine solche email verschicken kann.

    Nächste Frage: An wen willst Du eine Mail verschicken. Zuallererst würde ich Dir raten, Mails, die Du zum Testen nutzt, lokal zu verschicken, d.h. an einen anderen Empfänger, den Du auf Deinem Mailserver konfiguriert hast.

    Weiter empfehle ich Dir, bevor Du Deinen Formmailer online stellst, diesen auf die Möglichkeit des Missbrauches zu testen. Ein paar Threads in der aktuellen Forumshauptdatei beschäftigen sich mit diesem Thema, auch wenn es nicht immer um Perl geht:

    https://forum.selfhtml.org/?t=119384&m=765776
    https://forum.selfhtml.org/?t=119369&m=765586
    https://forum.selfhtml.org/?t=119195&m=764425

    Recherchen im Archiv zum Thema Formmailer und Sicherheit kann ich Dir wärmstens empfehlen.

    Freundliche Grüße

    Vinzenz

    1. hallo Vinzenz,

      $Sendmail_Prog = "C:/xampp/xampp/sendmail/sendmail.exe";
      kurze Zwischenfrage: Gibt es die Datei?

      Ja. In xampp-win32-1.5.0-pl1.zip ist ein sendmail-Verzeichnis mit einer ganz aufschlußreichen readme.html enthaltern, in der unter anderem nachzulesen ist: "sendmail.exe is a simple windows console application that emulates sendmail's "-t" option to deliver emails piped via stdin. it is intended to ease running unix code that has /usr/lib/sendmail hardcoded as an email delivery means. it doesn't support deferred delivery, and requires an smtp server to perform the actual delivery of the messages".

      Soweit ich gesehen habe, wird bei XAMPP Mercury Mail als Mailserver installiert.

      Dann hast du dir die aktuellen Windows-Sourcen noch nicht geholt. Ich habs mir grade eben nochmal runtergeladen.

      Generell ist es keine gute Idee, unter Windows einen PERL-Formmailer bauen und testen zu wollen.

      Grüße aus Berlin

      Christoph S.

      --
      Visitenkarte
      http://www.christoph-schnauss.de
      ss:| zu:) ls:& fo:) va:) sh:| rl:|
      1. Hallo Christoph,

        ich stehe da noch am Anfang, aber vielleicht kannst du mir weiterhelfen. Also mit sendmail kann man gar nichts verschicken, sondern mna braucht noch den mercury mailserver, richtig? Ich will ja für meine webseite ein Kontaktformular, über das die Benutzer der Seite an info@example.org emails schicken können und das möchte ich erst mit xampp testen.  Wie soll ich den mercury mailserver dann konfigurieren, um Test-Mails zu verschicken? Kann der an info@example.org was verschicken oder nur lokal auf meinem Rechner? Was muss man da einstellen?
        Danke und Gruß,
        Matthias

        hallo Vinzenz,

        $Sendmail_Prog = "C:/xampp/xampp/sendmail/sendmail.exe";
        kurze Zwischenfrage: Gibt es die Datei?

        Ja. In xampp-win32-1.5.0-pl1.zip ist ein sendmail-Verzeichnis mit einer ganz aufschlußreichen readme.html enthaltern, in der unter anderem nachzulesen ist: "sendmail.exe is a simple windows console application that emulates sendmail's "-t" option to deliver emails piped via stdin. it is intended to ease running unix code that has /usr/lib/sendmail hardcoded as an email delivery means. it doesn't support deferred delivery, and requires an smtp server to perform the actual delivery of the messages".

        Soweit ich gesehen habe, wird bei XAMPP Mercury Mail als Mailserver installiert.

        Dann hast du dir die aktuellen Windows-Sourcen noch nicht geholt. Ich habs mir grade eben nochmal runtergeladen.

        Generell ist es keine gute Idee, unter Windows einen PERL-Formmailer bauen und testen zu wollen.

        Grüße aus Berlin

        Christoph S.

        1. Hallo Christoph,

          ich stehe da noch am Anfang, aber vielleicht kannst du mir weiterhelfen. Also mit sendmail kann man gar nichts verschicken, sondern mna braucht noch den mercury mailserver, richtig? Ich will ja für meine webseite ein Kontaktformular, über das die Benutzer der Seite an info@example.org emails schicken können und das möchte ich erst mit xampp testen.  Wie soll ich den mercury mailserver dann konfigurieren, um Test-Mails zu verschicken? Kann der an info@example.org was verschicken oder nur lokal auf meinem Rechner? Was muss man da einstellen?
          Danke und Gruß,
          Matthias

          Hi... ich habe mal ein perl script programmiert, welches sendmail unter windows immitiert, dort kann ich wie auf meinem webserver mittels
          open(MAIL,"|/usr/bin/sendmail -t") wobei /usr/bin/sendmail der pfad ist, den ich unter windows auch entsprechend angelegt hab.

          das ganze nutzt die die pakete pop3 uns smtp das müßte in perl noch installiert werden...

  2. Tag Matthias.

    Nur am Rande:

    $mailto = "info@meine_adresse.de";

    Sollte eigentlich einen Fehler ergeben, da alles in Doublequotes als Variable interpretiert wird, so also auch @meine_adresse. Du musst entweder das @ maskieren oder du verwendest einfache Anführungszeichen.

    read(STDIN, my $mailtext, $ENV{CONTENT_LENGTH});

    Sowas sollte dringend vermieden werden, wer weiß, was da irgendein Widerling an STDIN eingibt. Wenn du es schon so machen willst, dann überprüfe die Eingabe auch, bevor du sie als Mailtext verwendest.

    Ansonsten sollte der XAMPP doch auch irgendwo ein Errorlog haben, was steht da drin?

    Siechfred

  3. habe zuhause xampp installiert. Damit wollte ich folgendes perl script ausführen:

    Das Skript enthält ummengen von Nachlässigkeiten und vermeidet alles was Perl anbietet um dir die Fehlersuche zu erleichtern.

    Aber das wichtigste dürfte sein, falls du deis als CGI Programm ausführst, es sendet keinen gültigen Header und wird daher im Erfolgsfall einen 500er Fehler erzeugen. Aber "klappt nicht" ist keine gültige Fehlerbeschreibung

    Du solltest, bevor du weitermachst, auf jeden Fall die Perl Kapitel in selfhtml lesen. Ansonsten wirst du kaum weiterkommen und für dieses Skript wird dir jeder Spammmer, Hacker oder sonstige unfreundliche Mensch dankbar sein

    Struppi.