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.