Feedback.cgi von Schlund bzw. 1&1 und nms Formmailer Ersatz


1&1 welche dieses Jahr voll Schlund integriert haben, hat eigentlich zum 1.4.2007 die Unterstützung für das feedback.cgi, über welches man frühers E-Mails versenden konnte, eingestellt.

Allerdings ist das feedback.cgi zum aktuellen Zeitpunkt noch nicht abgeschaltet, allerdings bekommt man mit jeder E-Mail welche darüber versandt wird, immer eine lästige Benachrichtigung das die Unterstützung aufgekündigt ist.

From: support@kundenserver.de
To: mail@xyz.de
Sent: Wednesday, April 11, 2007 1:30 AM
Subject: Abschaltung Feedback-Formular-Script
Sehr geehrte Damen und Herren,

Sie setzen in Verbindung mit Ihrer Webseite

http://www.xyz.de/Hauptseite.htm

ein über die URL
http://service.kundenserver.de/cgi-bin/feedback/feedback.cgi bereit
gestelltes CGI-Script („Feedback-Formular“) ein, über das in den letzten
Tagen 1 E-Mail(s) an Ihre E-Mail-Adresse versandt wurden.

Da das Script immer häufiger von Dritten zum Versand sogenannter Spam-Mails
genutzt wird, sehen wir uns gezwungen, das Script zum Schutz vor Missbrauch
zum Monatsende zu deaktivieren.
 
Als Alternative stehen Ihnen in Ihrem Konfigurationsmenü / Control-Center
z.B. die CGI-Programme oder die WebElements zur Verfügung.

Wenn Sie eine eigene Lösung bevorzugen, können wir den Einsatz des
NMS-Formmail-CGI-Scripts (http://nms-cgi.sourceforge.net) empfehlen.
Bitte beachten Sie, dass Sie diese E-Mail mehrfach erhalten können, sofern
weiterhin E-Mails über das Script an Ihre Adresse versandt werden.
 
Vielen Dank für Ihr Verständnis.

Mit freundlichen Grüßen

Ihr kundenserver.de-Team

Eigentlich hätte man etwas mehr Unterstützung erwarten können, vor allem wenn man bedenkt dass ursprünglich als Provider extra Schlund gewählt wurde um eine optimale Unterstützung zu erhalten. Aber weit gefehlt. Hier läßt sich noch jemand zum Thema aus: http://www.perl-archiv.de/cgi-bin/forum/forum_thread.cgi?tid=19881&mid=40313&fid=&show=30&showthread=2 derselbige nochmal hier: http://forum.de.selfhtml.org/archiv/2007/4/t149633/ und hier:  http://www.nabble.com/nms-Formmailer-als-Ersatz-f%C3%BCr-feedback.cgi-von-Schlund-verwenden-tf3502752.html#a9782470. Unter google wird man zum Thema unter http://www.google.de/search?q=schlund+feedback.cgi+felder fündig.

Das war nun der Punkt sich mit Perl oder PHP Auseinanderzusetzen. Da der NMS-Formmailer genannt wurde, sollte zuerst dieser eingespielt werden. Allerdings ist das was auf der Seite http://nms-cgi.sourceforge.net geboten wird, nicht gerade erhellend.

Selbst ist der Mann, wenn man schon Perl ans Laufen bekommen soll, dann kann man die Sache auch gleich selber schreiben. Leider gibt es keine Beschreibung mehr zu allen Feldern und die Vorgehensweise, da der Link http://hilfe-center.1und1.de/sp-service/service/tools/tools_feedback.php3 ins Leere führt. Allerdings sind auf diesen Seiten die Felder und Vorgehensweisen beschrieben: http://www.michaelkaufmann.net/html/formulare_allg_.html
http://www.michaelkaufmann.net/html/formulare_fusion.html

Unter Zuhilfename von http://www.perl.org/books/library.html, http://perldoc.perl.org/, generell http://www.perl.org, http://perl.about.com/, http://www.unix.org.ua/orelly/perl/  sowie http://de.selfhtml.org/perl/index.htm entstand dann folgendes Perl Script welches die benötigten Punkte des ursprünglichen feedback.cgi unterstützt.

#
# Ansatz für PERL-Script als Ersatz für Schlund/1&1-feedback.cgi
#
#!/usr/bin/perl
use CGI;
my $cgi = new CGI;

# bestimmt ob Debugausgaben erzeugt werden 0=nein, 1=ja
my $debugOn = 0;

# Zeichenkette für Felder die Pflicht sind
my $requiredID = "_R";
# Flag wo bestimmt ob ein Pflichtfeld fehlt (1) oder nicht (0)
my $fieldrequired = 0;

# bekannte variablen aus dem Feedback.cgi
my $fbsubject = "Feedback"; # Mailsubject
my $fbmail = "";
my $fbfrom = "";
my $fburl = "danke.html"; # Danke
my $fbbackurl = "fehler.html"; # Feld fehlt

my $fbtext = "";

if ($debugOn)
{
  # damit kein internal Error angezeigt wird!
  print "Content-type: text/html\n\n";

  print "Alle Parameter: ".$cgi->param()."<br><br>";

  my @Namen = $cgi->param();
  my $Elements = scalar (@Namen);

  for (my $i = 0; $i < $Elements; $i++)
  {
    print "$Namen[$i]: $element = ". $cgi->param($Namen[$i])."<br>";
  }

  print "<br><br>";
  print "Parameterauflistung :\n <br>";
}

# Form-Parameter in Hashliste übertragen
my %args = map {$_ => $cgi->param($_) } $cgi->param;

# alle Form-Felder durchgehen und prüfen ob welche mit _R angegeben wurden
# und wenn ja flag setzen damit eine Fehlermeldung angezeigt werden kann
while (($key, $value) = each %args)
{

  # key in Großbuchstaben wandeln und neuer Variablen zuweisen
  my $fieldname = uc ($key);

  # prüfen ob der Identifer für required am Ende des Feldnamen angegeben wurde
  if (rindex ($fieldname, $requiredID) == length ($fieldname) - length ($requiredID))
  {
    # nun überprüfen ob ein Wert angegeben ist
    if ("" eq $value)
    {
      $fieldrequired = 1;
    }
  }
  if ($debugOn)
  {
    print "$key = $value\n<br>";
  }
}
if ($debugOn)
{
  print "ParameterauflistungEnde\n <br>";
}

# nun noch die benötigten Felder für den E-Mailversand überprüfen
if (defined $cgi->param ('FBSUBJECT'))
{
  $fbsubject = $cgi->param ('FBSUBJECT');
}
if (defined $cgi->param ('FBURL'))
{
  $fburl = $cgi->param ('FBURL');
}
if (defined $cgi->param ('FBBACKURL'))
{
  $fbbackurl = $cgi->param ('FBBACKURL');
}
if (defined $cgi->param ('FBMAIL'))
{
  $fbmail = $cgi->param ('FBMAIL');
}
else
{
  $fieldrequired = 1;
}

# fbtext mit den angegebenen Werten erzeugen, wird für den E-Mail Body benötigt
my @Namen = $cgi->param();
my $Elements = scalar (@Namen);
my $value = "";

for (my $i = 0; $i < $Elements; $i++)
{
  $value = $cgi->param($Namen[$i]);

  if ($debugOn)
  {
    print "Index $Namen[$i]:", index ("FBURL FBBACKURL FBMAIL FBSUBJECT", $Namen[$i]), "<br>";
  }

  # nur Wertepaare aufnehmen in denen ein Wert hinterlegt wurde
  if ("" ne $value && index ("FBURL FBBACKURL FBMAIL FBSUBJECT", $Namen[$i]) == -1)
  {
    $fbtext .= "$Namen[$i]=".$value."\n";
  }
}

if ($debugOn)
{
  print "<br><br>$fbtext<br>";
}

if ($fieldrequired == 1)
{
  if ($debugOn)
  {
    print "Würde nun nach Backurl springen!";
  }
  else
  {
    print "Location: $fbbackurl\n\n";
  }
}
else
{
  if ($debugOn)
  {
    print "Email senden!";
  }

  # perfekt, alles Paletti und nun E-Mail erzeugen und versenden
  sendEmail ($fbmail, "absender\@xyz.de", $fbsubject, $fbtext);

  # und auf Dankeseite weiterspringen
  if ($debugOn)
  {
    print "auf Dankeseite weiterspringen: $fburl";
  }
  else
  {
    print "Location: $fburl\n\n";
  }
}

# Simple Email Function
# ($to, $from, $subject, $message)
# frei nach http://faq.1und1.de/access//internet_profi_faq/homepage/eigene_scripte/perl/6.html
sub sendEmail
{
  my ($to, $from, $subject, $message) = @_;
  my $sendmail = '/usr/sbin/sendmail';
  open(MAIL, "|$sendmail $to") || die "Fehler bei Mailversand!";
  print MAIL "From: $from\n";
  print MAIL "To: $to\n";
  print MAIL "Subject: $subject\n\n";
  print MAIL "$message\n";
  close(MAIL);
}

#EOF: feedback.pl
#################

Die Fehlerbehandlungen könnten sicherlich besser sein, aber für den benötigten Zweck reicht es erstmal aus. Wenn es Probleme gibt, kann man DebugOn auf 1 setzen, dann werden verscheidene Zusatzinfos ausgegeben.

Was momentan noch fehlt ist die Template Unterstützung für Dateien, sowie alle Mailfelder wie CC und ReplyTo aber ein Anfang ist gemacht.

5 Antworten to “Feedback.cgi von Schlund bzw. 1&1 und nms Formmailer Ersatz”

  1. Nate Says:

    Danke für diese info. Wie muss man den zusatzlichen Skript einbinden? In dem Skript von nms-formmailer? Das ist nicht so klar von dem Eintrag.

  2. Nate Says:

    Oh I see! Das ist ein stand alone Skript, so zu sagen. Alles Klar. Danke!

  3. Tom Says:

    Vielen Dank doch leider kommt immer die Fehlermeldung:
    Error 500 – Internal server error
    Ein interner Fehler ist aufgetreten!
    Bitte versuchen Sie es zu einem späteren Zeitpunkt.

    Der CGI-Ausgabe-Monitor liefert folgendes Ergebnis:
    – 2 CGI returned nonzero status
    /kunden/homepages/30/d16724651/htdocs/cgi-bin/feedback.pl: : command not found
    /kunden/homepages/30/d16724651/htdocs/cgi-bin/feedback.pl: use: command not found
    /kunden/homepages/30/d16724651/htdocs/cgi-bin/feedback.pl: : command not found
    /kunden/homepages/30/d16724651/htdocs/cgi-bin/feedback.pl: my: command not found
    /kunden/homepages/30/d16724651/htdocs/cgi-bin/feedback.pl: : command not found
    /kunden/homepages/30/d16724651/htdocs/cgi-bin/feedback.pl: : command not found
    /kunden/homepages/30/d16724651/htdocs/cgi-bin/feedback.pl: my: command not found
    /kunden/homepages/30/d16724651/htdocs/cgi-bin/feedback.pl: : command not found
    /kunden/homepages/30/d16724651/htdocs/cgi-bin/feedback.pl: : command not found
    /kunden/homepages/30/d16724651/htdocs/cgi-bin/feedback.pl: my: command not found
    /kunden/homepages/30/d16724651/htdocs/cgi-bin/feedback.pl: : command not found
    /kunden/homepages/30/d16724651/htdocs/cgi-bin/feedback.pl: my: command not found
    /kunden/homepages/30/d16724651/htdocs/cgi-bin/feedback.pl: : command not found
    /kunden/homepages/30/d16724651/htdocs/cgi-bin/feedback.pl: : command not found
    /kunden/homepages/30/d16724651/htdocs/cgi-bin/feedback.pl: my: command not found
    /kunden/homepages/30/d16724651/htdocs/cgi-bin/feedback.pl: my: command not found
    /kunden/homepages/30/d16724651/htdocs/cgi-bin/feedback.pl: : command not found
    /kunden/homepages/30/d16724651/htdocs/cgi-bin/feedback.pl: my: command not found
    /kunden/homepages/30/d16724651/htdocs/cgi-bin/feedback.pl: : command not found
    /kunden/homepages/30/d16724651/htdocs/cgi-bin/feedback.pl: my: command not found
    /kunden/homepages/30/d16724651/htdocs/cgi-bin/feedback.pl: my: command not found
    /kunden/homepages/30/d16724651/htdocs/cgi-bin/feedback.pl: : command not found
    /kunden/homepages/30/d16724651/htdocs/cgi-bin/feedback.pl: my: command not found
    /kunden/homepages/30/d16724651/htdocs/cgi-bin/feedback.pl: : command not found
    /kunden/homepages/30/d16724651/htdocs/cgi-bin/feedback.pl: : command not found
    /kunden/homepages/30/d16724651/htdocs/cgi-bin/feedback.pl: line 26: syntax error near unexpected token `($debugOn)‘
    /kunden/homepages/30/d16724651/htdocs/cgi-bin/feedback.pl: line 26: `if ($debugOn)‘
    STDOUT OK STDERR OK

    Wer kann helfen? Der Support von Schlund hat leider keine Ahnung… Vielen Dank!

  4. newyear2006 Says:

    Das Problem bei der Fehlermeldung dürfte an den Anführungsstrichen liegen, denn diese werden leider von WordPress immer in schönere links und rechtsgeschwungene Anführungszeichen umgesetzt.

    Daher kommt nachher kein vernünftiger Code beim Kopieren über die Zwischenablage heraus, teilweise liegt es auch noch an Umlauten und deren Codierung. Im Zweifel einfach mal das Script mit dem alten DOS-Edit anschauen dann werden viele Probleme schnell offensichtlich.

  5. Tom Says:

    @newyear2006: Vielen Dank für die schnelle Antwort!
    Ich habe die geschwungenen Anführungszeichen und Hochkommas im Editor durch SHIFT2 durch SHIFT# ersetzt. Daher kommt dieses Problem eigentlich nicht in Frage. Der „supertolle“ Support von Schlund meinte, dass er auf die Schnelle jetzt keinen Fehler im Script erkennen kann. Es liegt wohl an irgendwelchen Zugriffen auf den Server die beschränkt seien.

    Was ist eigentlich mit der Fehlermeldung:
    /kunden/homepages/30/d16724651/htdocs/cgi-bin/feedback.pl: line 26: syntax error near unexpected token `($debugOn)’
    /kunden/homepages/30/d16724651/htdocs/cgi-bin/feedback.pl: line 26: `if ($debugOn)’ ???

    Gibt es jemanden der das obere Script bereits erfolgreich und ohne Probleme einsetzt? Vielen Dank!

Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s


%d Bloggern gefällt das: