linux-l: Sendmail-Problem ????
Manuel Tennert
mtennert at meta-systems.de
Di Feb 20 09:59:29 CET 2001
Hallo liebe Linuxer, ich habe ein grosses Problem. Ich habe bei mir hier
2 Formular-Scripts, dabei funktioniert das eine und das andere nicht,
Problem ist, dass es beim 2. Script auf dem Server gar eine Fehlermeldung
ergibt die wie folgt lautet:
Feb 20 09:26:08 metagate sendmail[12099]: JAA12099: Losing qfJAA12099:
savemail panic
Feb 20 09:26:08 metagate sendmail[12099]: JAA12099: SYSERR(nobody):
savemail: cannot save rejected email anywhere: Permission denied
Das erste Script sieht wie folgt aus:
#!/usr/local/bin/perl
######################################################################
# BEFORE TRYING TO EDIT THIS SCRIPT, READ THE README FILE
######################################################################
#
# Dream Catchers CGI Scripts Feel free to modify
# Form Return 4.0 this script to your
# Created by Seth Leonard needs, but please
# for Dream Catchers Technologies, Inc. keep this portion so
# that I get credit.
# http://dreamcatchersweb.com/scripts The same goes for
# distribution.
#
# (c)1996/1997 Dream Catchers Technologies, Inc.,
# All Rights Reserved
#
######################################################################
#ONLY EDIT THIS PART OF THE SCRIPT!!!!
#use strict;
use CGI qw(:standard);
$backurl = "http://www.meta-systems.de/home.html";
$backname = 'Meta Systems GmbH HomePage';
$mailprog = '/usr/bin/mailx';
$youmail = 'webmaster at meta-systems.de';
# DO NOT EDIT BELOW THIS LINE!!!!
#################################################################
read(STDIN, $namevalues, $ENV{'CONTENT_LENGTH'});
open (MAIL, "|$mailprog -s Internet-Anfrage $youmail") || die "Can't open
$mailprog!\n";
# print MAIL ("To: $youmail\n");
# print MAIL ("From: Internet\@meta-systems\.de\n");
# print MAIL ("Internet Anfrage\n\n");
# Process info from Fill in Form
@namevalues = split(/&/, $namevalues);
foreach $namevalue (@namevalues) {
($name, $value) = split(/=/, $namevalue);
$name =~ tr/+/ /;
$value =~ tr/+/ /;
$name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$INPUT{$name} = $value;
unless ($value eq "") {
print MAIL ("$name: $value\n");
}
}
close (MAIL);
# Print Follow up HTML
print ("Content-Type: text/html\n\n");
print ("<html><head><title>Vielen Dank</title></head>\n");
print ("<body><h1>Vielen Dank. Ihre Anfrage wurde aufgenommen.</h1>\n");
print ("Ihre Anfrage und persönlichen Daten zur Prüfung:<hr>\n");
foreach $namevalue (@namevalues) {
($name, $value) = split(/=/, $namevalue);
$name =~ tr/+/ /;
$value =~ tr/+/ /;
$name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$INPUT{$name} = $value;
unless ($value eq "") {
print ("$name: $value<br>\n");
}
}
print ("<hr>\n");
##print ("<a href=\"$backurl\">Zurück zur $backname</a><hr>\n");
print ("</body></html>\n");
exit;
Das zweite sieht wie folgt aus:
#!/usr/local/bin/perl -w
$backurl = "http://www.meta-systems.de/docstest/docs/home.html";
$backname = "'Meta Systems GmbH Homepage'";
$sendmail = '/usr/bin/mailx';
# Pfad zum SENDMAIL-Programm Ihres Servers.
$recipient = 'webmaster at meta-systems.de';
# Empfaenger-Adresse des Formulars.
$sender = 'http://www.meta-systems.de/docstest/docs/information.html';
# Formular wurde von dieser Seite gesendet.
# kann auch der Name der Homepage sein.
$subject = 'Informations Anfrage';
# Betreff/Subject des Formulars.
$danke = 'http://www.meta-systems.de/danke.htm';
# Die Seite die nach dem Versand des Formulars angezeigt wird.
# Kann auch der relative Pfad zum Dokument sein
'/home/www/hippo/danke.htm'
# >> KEINE URL ANBEBEN <<
######################################################
### AB HIER BITTE NICHTS VERAENDERN ###
######################################################
use CGI qw(:standard);
$query = new CGI;
foreach $field (sort ($query->param)) {
foreach $value ($query->param($field)) {
if ($field eq "Name") {
$n1 .= "$value";
}
if ($field eq "Vorname") {
$n2 .= "$value";
}
$mail_body .= "$field: $value\n";
}
}
if (($email = $query->param('07_email')) and
($query->param('07_email') =~ /@/)) {
if ($name = $query->param('01_name')) {
$name =~ s/"//g; # lose any double-quotes in name
$sender = "\"$name\" <$email>";
} else {
$sender = "$email";
}
}
if ((not $n1 eq "") and (not $n1 eq " ") and (not $n2 eq "") and (not $n2
eq " ")) {
open(MAIL, "|$sendmail -s Internet-Anfrage $recipient") or die "FEHLER
$sendmail\n";
print MAIL "To: $recipient\n";
print MAIL "From: $sender\n";
print MAIL "Subject: $subject\n\n";
print MAIL "$mail_body";
close(MAIL) or die "FEHLER $sendmail: $!\n";
print ("Content-Type: text/html\n\n");
print ("<html><head><title>Vielen Dank</title></head>\n");
print ("<body><h1>Vielen Dank. Ihre Anfrage wurde aufgenommen.</h1>\n");
print("<a href=\"$backurl\">Zur’ck zur $backname</a><hr>\n");
#open (dankefile, "$danke");
#@dankefile = <dankefile>;
#print "@dankefile\n";
}
else {
print ("Content-Type: text/html\n\n");
print ("<html><head><title>Eingabe Fehlerhaft</title></head>\n");
print ("<body><h2>Bitte kontrollieren Sie, ob das Feld: Name, Vorname,
Strasse, PLZ, Ort und Telefonnumer ausgefuellt wurde. Bitte beachten Sie,
dass bei dem Feld Telefonnumer und PLZ auch eine Nummer und kein
Buchstabe eingegeben wurde ! Wir werden Ihre Angaben nicht weiterleiten
und Ihnen auch keine Werbung zusenden ! Wir bedanken uns fuer Ihr
Vertrauen ! Bitte benutzen Sie nun den Zurueck-Button Ihres Browsers
!</h2>\n");
}
Mehr Informationen über die Mailingliste linux-l