perlunity.de - PERL | JAVASCRIPT | PHP | MySQL | APACHE



#!/COMMUNITY

Members: 5374
davon online: 1
weitere User: 25
Click for quality!




10.02.2012 / 20:11

Community-Member werden   |   Paßwort vergessen   |   OnlineMonitor (1) Wer ist online ... OnlineMonitor starten !
     

 

Home


PERLscripts


PHPscripts


JAVAscripts


Hilfreiches


Links2www


Newscenter


Community


Interna




Community  »  CGI: Allgemeines Forum zur Themenübersicht Themensuche Themenansicht in Thread-Modus


BeitragMailversand via sendmail aus apache nicht machbar.
Seitenanfang
Hallo Leute,

ich habe eine Frage. Ich habe folgendes CGI-Skript zum Versenden einer Email über eine meiner HTML-Seiten:

#!/usr/bin/perl -w

use strict;
use CGI::Carp qw(fatalsToBrowser);
use CGI;

my $cgi;

open (SENDMAIL, "|/usr/sbin/sendmail -t") || die("Unable to open the mail program");
print SENDMAIL "To: mail\@gmx.de\n";
print SENDMAIL "From: Gästebuch <mail\@web.de>\n";
print SENDMAIL "Subject: Neuer Gästebucheintrag\n";
print SENDMAIL "Jemand hat ein falsches Passwort eingegeben. Informationen:\n\n";
print SENDMAIL "URL:\n";
print SENDMAIL "http://www.foeder.de/dyn-frame.shtml?ID=guestbook\n";
close(SENDMAIL);

$cgi = CGI->new();
print $cgi->redirect(-uri => '../../kontaktOK.html');

Wenn ich das Skript über die Konsole aufrufe:

$ perl send_email.pl

funktioniert es einwandfrei. Wenn ich das gleiche jedoch über meinen Browser/Web-Server aufrufe, sprich die Webseite aufrufe und dann den Button drücke, mit dem das Script ausgelöst wird, wird keine Email gesendet. Es wird auch keine Fehlermeldung ausgegeben. In access.log und error.log steht nichts.

Was kann da faul sein?

Vielen Dank und viele Grüße
Johannes

PS: Es läuft alles auf einem Daper Drake Ubuntu-Server

Datum: 31.05.2007-18:26

Beitragre: Mailversand via sendmail aus apache nicht machbar.
Seitenanfang
Hallo!

Bei einer pipe kommt die Fehlermeldung nicht beim open-Befehl, sondern erst beim close. Versuche es also folgendermaßen:


open (SENDMAIL, "|/usr/sbin/sendmail -t");
#print SENDMAIL zeugs...
close(SENDMAIL) or die "Sendmail schlug fehl: $!";

Dann solltest du erfahren, was das Problem ist.

Grüße, Skrilax

Datum: 01.06.2007-10:04

Beitragre: Mailversand via sendmail aus apache nicht machbar.
Seitenanfang
Ich habe bei der Close-Anweisung ein "or die" hinzugefügt. Leider ohne Erfolg. Ich bekomme immer noch die Meldung, dass die Email ordentlich versendet wurde. Aber eine Email wird in Wirklichkeit nie weggeschickt. Komisch ist, dass es über die Konsole mit diesem Programm super funktioniert. Nur im Zusammenhang mit dem Apache läuft der Zugriff auf sendmail nicht.

Zur Vorgeschichte:
Ich habe ursprünglich ein Kontaktformular mit php programmiert und dann versucht mit der mail()-Methode Emails zu verschicken. Das ging ein Tag lang und danach ging es aus ungeklärten Gründen nicht mehr, obwohl ich nichts angefasst habe. Auch kann ich immer noch über die Konsole Mails verschicken:
mail -s "testbetreff" mail@gmx.de < /home/johannes/test.pl

Dann wollte ich wieder auf Perl/CGI umschwenken und dachte mir, dass es bestimmt mit Perl weniger Ärger gibt. Und jetzt stehe ich vor demselben Problem, nämlich dass es immer über Konsole geht, aber nie über Umwegen, nämlich über den Apache. Weder in PHP noch in Perl programmiert. Der Apache scheint ein Problem damit zu haben auf den externen Prozess, nämlich Postfix zuzugreifen. Die Skripte haben aber auch immer die jeweiligen Rechte nämlich ein "chmod 755".

Ich danke Dir auf jeden Fall für Deine Aufmerksamkeit und Deine Hilfe.

Viele Grüße
Johannes

Datum: 01.06.2007-10:37

Beitragre: Mailversand via sendmail aus apache nicht machbar.
Seitenanfang
Generell wuerde ich empfehlen du verwendest zum Versenden von E-Mails eines der Module von CPAN, da waere zum Beispiel MIME::Lite, Beispiele lassen sich hier im Forum, aber auch im restlichen WWW finden.

>> In access.log und error.log steht nichts.

Das kann ich nicht glaube ;), im AccessLog sollte zumindest die Anfrage verzeichnet sein, ob erfolgreich oder nicht, da steht auf jeden Fall etwas, ansonsten siehst du ins falsche Log.

Setzt mal ein 'die;' an den Anfang deines Scripts, zumindest bevor du 'sendmail' aufrufst und schau ob eine entsprechende Fehlermeldung im ErrorLog auftritt, wenn nicht beobachtest du definitiv das falsche Log.

Um genau herauszufinden was nicht stimmt, kannst du auch eine Shell als $ApacheBenutzer ('www-data', 'apache' oder 'httpd') starten in dem du ueber root den Befehl 'su -s /bin/bash - www-data' aufrufst, www-data ist durch den ApacheBenutzer zu ersetzten.

Datum: 01.06.2007-19:36

Beitragre: Mailversand via sendmail aus apache nicht machbar.
Seitenanfang
Ich habe jetzt folgende Fehlermeldungen bekommen aus der syslog-Datei:

Jun 1 20:02:42 localhost postfix/pickup[6125]: A0820120073: uid=33 from=<www-data>
Jun 1 20:02:42 localhost postfix/cleanup[6466]: A0820120073: message-id=<20070601180242.A0820120073@localhost>
Jun 1 20:02:42 localhost postfix/qmgr[4898]: A0820120073: from=<www-data@localhost>, size=415, nrcpt=1 (queue active)
Jun 1 20:02:42 localhost postfix/smtp[6468]: warning: mail.gmx.net[213.165.64.21] offered AUTH option multiple times
Jun 1 20:02:42 localhost postfix/smtp[6468]: A0820120073: to=<mail@gmx.de>, relay=mail.gmx.net[213.165.64.21], delay=0, status=bounced (host mail.gmx.net[213.165.64.21] said: 550 5.1.8 Cannot resolve your domain {mp036} (in reply to MAIL FROM command))
Jun 1 20:02:42 localhost postfix/cleanup[6466]: C6781120074: message-id=<20070601180242.C6781120074@localhost>
Jun 1 20:02:42 localhost postfix/qmgr[4898]: C6781120074: from=<>, size=2175, nrcpt=1 (queue active)
Jun 1 20:02:42 localhost postfix/qmgr[4898]: A0820120073: removed
Jun 1 20:02:42 localhost postfix/local[6532]: C6781120074: to=<www-data@localhost>, relay=local, delay=0, status=bounced (Command died with status 127: "procmail -a "$EXTENSION"". Command output: sh: procmail: command not found )
Jun 1 20:02:42 localhost postfix/qmgr[4898]: C6781120074: removed

Es muss also am Header, sprich am From: -Abschnitt liegen. Aber warum wird meine From:-Abschnitt überschrieben, obwohl ich den From:-Abschnitt hinzugefügt habe???

Datum: 01.06.2007-20:01

Beitragre: Mailversand via sendmail aus apache nicht machbar.
Seitenanfang
Johannes proudly present the solution of all worries:

Folgendes hat bei mir in der Postfix-Konfiguration gefehlt:

In der Konfig-Datei /etc/postfix/sender_concial hat der folgende Eintrag gefehlt:

www-data meine-email@gmx.de

Danach wieder mit:

sudo postmap /etc/postfix/sender_conical

in die Datenbank schreiben.

Jetzt geht wieder alles. Ich hoffe jemand der das liest hatte das selbe Problem und ihm wird dadurch geholfen

Viele Grüße
Johannes

Datum: 02.06.2007-15:14

Beitragre: Mailversand via sendmail aus apache nicht machbar.
Seitenanfang
-----8<-----
Bei einer pipe kommt die Fehlermeldung nicht beim open-Befehl, sondern erst beim close. Versuche es also folgendermaßen:
----->8-----

Das ist nicht ganz richtig, es heiszt einfach nur man soll sowohl bei open() als auch bei close() den Rueckgabewert ueberpruefen. open() sagt nur etwas darueber aus ob das 'fork'en des Kindprozesses geklappt hat, also der Prozess erfolgreich erzeugt werden konnte.
close() liefert dir das Ergebnis ob der Prozess erfolgreich ausgefuehrt wurde, beim 'close' ist es aber meist schon zu spaet daher sollte man das SIGPIPE-Signal behandeln.

-----8<-----
Be careful to check both the open() and the close() return values. If you're writing to a pipe, you should also trap SIGPIPE. Otherwise, think of what happens when you start up a pipe to a command that doesn't exist: the open() will in all likelihood succeed (it only reflects the fork()'s success), but then your output will fail--spectacularly. Perl can't know whether the command worked because your command is actually running in a separate process whose exec() might have failed. Therefore, while readers of bogus commands return just a quick end of file, writers to bogus command will trigger a signal they'd better be prepared to handle.
----->8-----

Trotzdem guter Hinweis von dir, denn die meistens wissen ueberhaupt nicht 'dass close() auch fehlschlagen kann'.

Datum: 01.06.2007-19:04

Beitragre: Mailversand via sendmail aus apache nicht machbar.
Seitenanfang
Das hilft mir aber nicht weiter. Bitte nicht mit dem Erbsenzählen anfangen, sondern das Problem versuchen zu lösen. Mit open und close hat das überhaupt nichts zu tun.

Datum: 01.06.2007-19:08

Beitragre: Mailversand via sendmail aus apache nicht machbar.
Seitenanfang
Sorry, aber dass solltest du mir ueberlassen ob ich den zum OP relevanten Post zu erst schreibe. Dass wuerde anders aussehen wenn ich fuer die Arbeite die ich hier reinstecke bezahlt werden wuerde.

Danke.

Datum: 01.06.2007-19:40

Beitragre: Mailversand via sendmail aus apache nicht machbar.
Seitenanfang
Diese Foren sind dazu da, Probleme zu lösen. Vielleicht sucht jemand irgendwann nach einem ähnlichen Problem. Ich habe das 1000mal gemacht. Es wäre dann schön, wenn man das Problem ohne viel bla bla, sachlich lösen könnte.

Datum: 01.06.2007-19:43

Beitragre: Mailversand via sendmail aus apache nicht machbar.
Seitenanfang
Das Blabla verursachst du im Moment, die Info zum close() sollte nicht unerwaehnt bleiben da es durchaus fuehr dieses Problem relevant sein koennte.

Over and out.

Datum: 01.06.2007-19:53

Beitragre: Mailversand via sendmail aus apache nicht machbar.
Seitenanfang
Johannes proudly present the solution of all worries:

Folgendes hat bei mir in der Postfix-Konfiguration gefehlt:

In der Konfig-Datei /etc/postfix/sender_concial hat der folgende Eintrag gefehlt:

www-data meine-email@gmx.de

Danach wieder mit:

sudo postmap /etc/postfix/sender_conical

in die Datenbank schreiben.

Jetzt geht wieder alles. Ich hoffe jemand der das liest hatte das selbe Problem und ihm wird dadurch geholfen

Viele Grüße
Johannes

Datum: 03.06.2007-11:24

-






-
-