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