ambras: Sendmail CGI

Hallo.

Ich muss dringend ein Kontaktformular wieder in Gang bekommen:

Der Server hat sendmail unter /usr/lib/sendmail

Das Kontaktformular hat folgende Inhalte:

<form name="Kontakt" action="http://www.grafex.de/cgi-bin/selfmail.pl" method="post">
<input type="hidden" name="mailto" value="cj@namexy.de">
<input type="hidden" name="return" value="http://www.namexy.de/content/000.html">
<input type="hidden" name="delimiter" value=":">
<input type="hidden" name="subject" value="Kontakt Formular Internet">

Habe Ordner cgi-bin eingerichtet mit der Datei selfmail.pl mit folgendem Inhalt:

#!/usr/bin/perl

-------> SMTP-Programm zum Versenden der Mail:

$Sendmail_Prog = "/usr/lib/sendmail";

-------> Modul für CGI-Scripts einbinden:

use CGI;

-------> Modul für CGI-Scripts zum Einlesen der Formulardaten anwenden:

$query = new CGI;
@names = $query->param;

-------> interne Daten aus den erwarteten hidden-Feldern auslesen:

$delimiter = $query->param('delimiter'); # ---> Begrenzerzeichen zwischen name und value
$mailto = $query->param('mailto'); # ---> Empfängeradresse
$returnhtml = $query->param('return'); # ---> URL für Dankeseite
$subject = $query->param('subject'); # ---> E-Mail-Subject

-------> Text der E-Mail aus den Formulardaten ermitteln:

$mailtext = "";
foreach(@names) {
$name = $_;
@values = "";
@values = $query->param($name);
if($name ne "mailto" && $name ne "return" && $name ne "subject" && $name ne "delimiter") {
foreach $value (@values) {
$mailtext = $mailtext.$name;
$mailtext = $mailtext.$delimiter;
$mailtext = $mailtext.$value."\n";
}
}
}

-------> 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);

-------> Dankeseite an Browser senden:

print "Location: $returnhtml\n\n";

SO. ABER DAS FUNKTIONIERT ALLES NICHT. UND EIGENTLICH HABE ICH SCHON FEIERABEND. HILFEHILFEHILFE

danke
ambras

  1. Hallo,

    SO. ABER DAS FUNKTIONIERT ALLES NICHT. UND EIGENTLICH HABE ICH SCHON FEIERABEND. HILFEHILFEHILFE

    Zur Diagnose von Fehlern sind die zugehoerigen Fehlermeldungen im allgemeinen ganz hilfreich, ebenso wie Eintragungen in Logdateien, ...

    Gruss
    Thomas

    1. Internal Server Error
      The server encountered an internal error or misconfiguration and was unable to complete your request.

      Please contact the server administrator,  webmaster@www.grafex.de and inform them of the time the error occurred, and anything you might have done that may have caused the error.

      More information about this error may be available in the server error log.

      Apache/1.3.27 Server at www.grafex.de Port 80

      UND

      Method Not Allowed
      The requested method POST is not allowed for the URL /cgi-bin/selfmail.pl.

      Apache/1.3.27 Server at www.grafex.de Port 80

      ----------
      Beim 1. ist das cgi unter dem bereits angelegtem Verzeichnis www.namexy.de/cgi/selfmail.pl

      Beim 2. unter www.namexy.de/cgi-bin/selfmail.pl (Ordner von mir angelegt.

      1. Internal Server Error
        The server encountered an internal error or misconfiguration and was unable to complete your request.

        Das kann alles sein.
        fehlender CGI Header evtl. verursacht durch eine Ausgabe oder Warnung bevor du ihn im Skript sendest.
        Ein Syntax Fehler (Das Programm in einer Konsole starten)

        Ansonsten sind CGI Programme nicht so einfach zu debuggen, eine Möglichkeit ist noch use CGI::Carp qw/fatalsToBrowser/ einbinden.

        Zumal das Skript Fallstricke birgt, da es nicht strict programmiert ist, d.h. du solltest use strict verwenden um z.b. Tippfehler oder unitialierte Werte zu vermeiden.

        Struppi.

    2. Logdateien? Was für Logdateien? Die einzigen die ich finden kann enden mit .gz. Und das kein Programm auf meinem Mac öffnen.

      1. Hallo.

        Die einzigen die ich finden kann enden mit .gz. Und das kein Programm auf meinem Mac öffnen.

        Dann hast du entweder werkseitig installierte Software gelöscht oder dein System ist dringend reparaturbedürftig.
        MfG, at

  2. Hallo ambras,

    Ich muss dringend ein Kontaktformular wieder in Gang bekommen:

    <input type="hidden" name="mailto" value="cj@namexy.de">
    $mailto = $query->param('mailto'); # ---> Empfängeradresse

    Zuerst musst du das Script auswechseln oder diesen Design-Fehler
    fixen.
    Du öffnest hier Spammern Tür und Tor, ein solcher muss nur ein
    eigenes Formular schreiben, in der dieses Feld vom Type Text ist
    und schon kann er lustig SPAM über deinen Server verschicken.

    Gruß
    Alexander Brock

    --
    SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:? ss:| de:> js:( ch:| sh:( mo:} zu:}
    http://againsttcpa.com