• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

(gelöst)Mailversand per PHP

Status
Für weitere Antworten geschlossen.
Hallo Leute.
Irgendwie habe ich da ein mehr oder minder mittelschweres Problem.
Zunächst mal zu den Rahmenbedingungen:
Suse 9.3 Pro
apache 2.0.50
PHP 4.3.8
Postfix 2.5.1-3 Mailserver

Webserver läuft, das PHP Modul arbeitet (zumindest im Browser) korrekt und postfix führt seinen Dienst ebenfalls aus.

Nun zu meinem Problem:
Ein Webformular, welches im Browser ausgefüllt wird, soll per E-mail an den Empfänger verschickt werden.Diese E-mail verschwindet irgendwo im Daten Nirvana.Daher poste ich das ganze auch mal in dieses Forum, da es aus meiner Sicht um das Thema E-mail geht. Das PHP Script lief bereits erfolgreich auf meinem Webserver. Ist allerdings schon einiges her, so dass ich mir vorstellen kann die register_globals in der php.ini auf on gestellt zu haben. Aktuell arbeite ich mit register_globals = off. Aus Sicherheitsgründen denke ich sollte man das auch so belassen.Absolut gleiches Script möchte ich nun wieder verwenden. Jetzt allerdings ohne Erfolg.

Hier mal die mail() Funktion meines php Scripts:
script_anfang->

// Formulardaten verschicken
$header = "From: $Name <$Email>\n";
$header .= "Reply-To: $Email\n";
$header .= "Content-Type: text/plain";
mail("musteradresse@musterweb.de", "Kontaktformular"," Folgende Nachricht wurde vom Kontaktformular
aus gesendet am $date
--------------------------------------------------------

Name: $Name
Vorname: $Vorname
PLZ: $Postleitzahl
Ort: $Ort
Straße: $Strasse
Email: $Email
Nachricht:
$Nachricht

$ip
--------------------------------------------------------
","$header");
<-sript_ende

Die für diese Funktion zuständigen Parameter in der php.ini (meines wissens nach):
sendmail_path = /usr/sbin/sendmail -t -i (habe ich auch schon ohne den Parameter -i versucht)
SMTP = smtp.1und1.de
smtp_port = 25

Zunächst habe ich über sendmail gearbeitet. Dieses sowohl mit dem Parameter -i als auch ohne diesen in der php.ini.

Der MTA in Yast hat von mir folgende Einstellungen erhalten:
Für den ausgehenden Server: smtp.1und1.de mit Benutzernamen und Password.
Für den mailversand: pop.1und1.de mit entferntem Benutzer und Password, auf lokalem Benutzer "lehrling".
Diese Einstellungen sind nach wie vor gültig.

Es war dann meine Vermutung, dass sendmail nicht für die oben beschriebene Aufgabe nicht geiegnet sei. Also habe ich sendmail deinstaliert und postfix per Yast instaliert. Folgende How To's habe ich dazu hier aus diesem Board zur konfiguration durchgearbeitet:

HOW-TO Postfix Grundeinstellung ! Dann alles Andere!
HOW-TO amavis-new & spamassassin einbauen SuSE 9.3

Aufgrund dieser How To's stelle ich hier mal einen Auszug aus /etc/postfix/main.cf ein:

proxy_interfaces = 192.168.0.1
sendmail_path = /usr/sbin/sendmail
myhostname = linvisio.Dragonheart
inet_interfaces = all
mynetworks = 192.168.0.2/60,127.0.0.0/4
relayhost = [smtp.1und1.de]
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
double_bounce_sender = lehrling@localhost
empty_adress_recipient = lehrling@localhost

Darauf hin habe ich die diversen Tests durchgeführt, die da wären:
Mailversand als root von der Konsole - funktioniert,
Mailversand als lehrling mit K-Mail über die Versandart Name:meinrechner und Typ:sendmail(standard) - funktioniert. Dann auch noch mal als root mit K-Mail eine E-mail abgeschickt bei gleichen Einstellungen - funktioniert auch.

Jetzt wollte ich wissen ob das php Script eine E-mail generieren kann und schritt zur tat über. Den Internet Explorer geöffnet und das Formular ausgefüllt und abgeschickt. Dabei habe ich auch wieder in der php.ini den Parameter -i ein- und ausgesetzt. So habe ich mehrmals versucht eine E-Mail zu erhalten. Alle natürlich an mich selbst adressiert (im php Script). Das sind die letzten Mail aktionen auf Linux.

Nun schaute ich mir die verschiedenen log-files an:

Unter /var/log/mail.err findet sich als letzten Eintrag:
Dec 9 21:33:57 linvisio postfix/cleanup[6564]: fatal: open /ets/postfix/header_checks: No such file or directory
Dabei ist leicht erkennbar das der Pfad mit /ets/ und nicht mit /etc/ beginnt. Alle anschließenden Aktionen sind hier nicht aufgeführt. Gleiches gilt für /var/log/mail. Auch hier sind die letzten Aktionen (weder das Versenden, noch das Nichtversenden) nicht dokumentiert.

Unter /var/log/mail finden sich in der Textdatei keinerlei Hinweise darauf ob eine vom PHP Script generierte E-mail das System verlassen hat.

Der Mailqueue ist leer. Das habe ich als root mit dem Befehl mailq noch während der Laufzeit überprüft.

Lediglich der apache hat zu dieser ganzen Sache eine Fehlermeldung parat, auf die ich mir allerdings keinen Reim machen kann.
Im apache error_log findet sich folgender Eintrag:
sh: /usr/sbin/sendmail-t: No such file or directory
Der apache läuft unter dem lokalen Benutzer "lehrling" mit GID 100.

Diese ganze Sache hat mich jetzt zwei ein halb Tage gekostet, und es funktioniert immer noch nicht. Vor lauter configs, nutzen der SuFu sowohl hier im Board als auch per Google und lesen von Literatur weiß ich nicht mehr wo ich weiter machen soll. Dabei stellt sich mir noch eine ganz andere Frage: Ist ein Handelsüblicher PHP-fähiger Webspace ebenso Umfangreich konfiguriert?? Oder nicht?? Wäre nämlich schön zu wissen das der probe Webserver daheim eine änliche Umgebung darstellt wie die offiziellen Webspaces.

An alle die hier angekommen sind, vielen Dank fürs lesen und auch schon mal vorab für die Hilfe.

MfG
guklplatzwart
 

crazyrolf

Advanced Hacker
mynetworks = 192.168.0.2/60,127.0.0.0/4


Das steht da in der Anleitung doch anders oder?!!!!!!

http://www.linux-club.de/viewtopic.php?t=34574

mynetworks = 192.168.0.0/24, 127.0.0.0/8


Du solltest das schon so machen wie es da steht.


Ob dies dein Problem löst kann ich ncoht nicht sagen.
 
OP
G

guklplatzwart

Newbie
Danke für die prompte Hilfe.

Es war wirklich der banale Fehler in der php.ini. mit dem nicht gesetzten Leerzeichen.

Folgendes habe ich allerdings nicht editiert:
mynetworks = 192.168.0.2/60,127.0.0.0/4

Meiner Meinung nach wird hier ein Netzwerkadressbereich definiert. Dieser Netwerkbereich umfasst mein Netzwerk. Denn die Netzwerkadressen in meinem Netzwerk gehen über die 192.168.0.24 hinaus. Obendrein habe ich mit dem Eintrag proxy_interfaces = 192.168.0.1 meinen Router angegeben.

Es lag lediglich an der falschen Syntax des sendmail_path in der php.ini.

Nochmals vielen Dank für die Hilfe.

MfG
guklplatzwart
 

nbkr

Guru
Äh, also ne /60 macht als Netzmaskenangabe von IPv4 jetzt mal gar keinen Sinn. Sollte das evtl. ein Tippfehler sein?
 

crazyrolf

Advanced Hacker
192.168.0.1/24 192.168.0.1 255.255.255.0 192.168.0.1 bis 192.168.0.254 192.168.0.255


http://de.wikipedia.org/wiki/IP-Adresse

http://www.elektronik-kompendium.de/sites/net/0907201.htm

Du solltest dich da mal ein wenig einlesen!
 
OP
G

guklplatzwart

Newbie
Hallo crazyrolf.
Jepp, OK, gebe mich geschlagen und du hast gewonnen. :oops:
Es lag daran, dass ich einem Gedankenfehler gefolgt bin. Irgendwie habe ich wohl den Schrägstrich als Komma oder ähnliches Interpretiert. Hab das jetzt bei mir in der main.cf editiert.

Bleibt für mich allerdings immer noch eine Frage offen:

Ist ein Handelsüblicher Webspace ähnlich aufwendig konfiguriert oder muß ich mir das ganz anders voerstellen?
Oder stelle ich diese Frage besser in einem anderem Forenbereich?

MfG
guklplatzwart
 
OP
G

guklplatzwart

Newbie
Hallo Leute.
Mir geht es um die Funktionalität eines Webservers bei ir daheim.
Es ist mir natürlich klar das Sicherheitseinstellungen von Webhostern nicht oder nur schwer nachzubilden sind. Das ist auch nicht meine Absicht.

Mir geht es darum, ob ein Webhoster auch mit postfix arbeitet, ebenfalls verschiedene PHP Module für einen Webspace zur Verfügung stellt oder einfach nur das Basismodul für PHP. Denn wenn man dann mit sessions arbeitet und dieses nicht als PHP Modul zur Verfügung steht sehen PHP Coder/Entwickler/Schreiber alt aus.
Wird weder sendmail noch postfix für den Webspace zur Verfügung gestellt, kann ich noch so tolle PHP Script für den E-mail versand eines Formulares nutzen, es wird mit Sicherheit keine E-mail verschickt.
Wenn postfix benutzt wird, ist dieses ebenfalls so aufwändig konfiguriert wie aufgrund der beiden How To's die ich durchgearbeitet habe oder nicht, oder noch umfangreicher?
Gibt es vielleicht noch andere Einstellungen für den apache die ich nutzen sollte um einem Webspace eines Hosters nahe zu kommen?

Für jeden der in diesem Bereich, ob privat oder kommerziell, etwas macht, sieht es ganz blöd aus, wenn die Entwickelte/Entworfene Internetpräsenz dann auf dem "ofiziellen" Webspace nicht das tut was es auf dem heimischen Probeserver getan hat.

Wenn ich die Werbung der verschiedenen Hoster durchgehe, bemerke ich immer wieder das wohl eine PHP-fähigkeit angepriesen wird, aber für mich immer noch nicht klar ist ob der angepriesene Webspace die Vorausetzungen erfüllt, die ein PHP Schreiberling braucht.

Ich hoffe ich konnte deine Frage beantworten und du kannst dir jetzt vielleicht vorstellen was ich meine.

MfG
guklplatzwart
 

crazyrolf

Advanced Hacker
In der Regel kannst du die Einstellungen eines Anbieters mit phpinfo sehen. Wenn er das Script nicht selbst auf seinem Server anbietet kannst du es auf deinen Webspace laden und aufrufen.

Da sollte dann alles zu sehen sein.

<?
phpinfo();
?>
Die Ausgabe sieht dann so aus:
http://www.hambach-web.de/testphp.php


Bitte
 
OP
G

guklplatzwart

Newbie
Hallo crazyrolf.
Das ist eine Antwort mit der ich was anfangen kann, wenn ich bereits zugang zu einem Webspace bei einem Hoster habe. Bisher habe ich nur mit 1und1 zu tun gehabt. Von daher weiß ich nicht wie es bei anderen Hostern aussieht.

Aber die Antwort hilft mir auch so schon weiter. Danke.

MfG
guklplatzwart
 
Status
Für weitere Antworten geschlossen.
Oben