php Mail - Log wird nicht geschrieben

Nuck Nuck

Member
Hallo,

stehe vor folgendem Problem und sehe wahrscheinlich nur wieder den Wald vor lauter Bäumen nicht.

Gemäß PHP Manual habe ich meiner php.ini folgende Zeilen ergänzt bzw. die Änderungen vorgenommen:

Code:
mail.add_x_header = On           
mail.log = /var/log/php/mail.log

Apache neu gestartet und PHP-Mailskript auf den Server gepackt. Mail kommt an, Log bleibt leer.

Was kann ich hierbei falsch machen?

Rahmenbedingung:

- Debian 6
- PHP 5.3.10-1 (dotdeb)
- php via fastcgi (Virtual Host auf welchem ich das PHP-Mailskript getestet habe)

Gruß
Marcus
 
Dem Mail.log auch die passenden Schreibrechte zugewiesen?

Wenn es ein Mehrbenutzer System ist, würde ich für jeden Benutzer eine eigene Mail.log file anlegen, z.B. so:

/var/log/mail-log/example-user1.log -> chown user1:user1
/var/log/mail-log/example-user2.log -> chown user2:user2
/var/log/mail-log/example-user3.log -> chown user3:user3
 
Hmmm. Das wird wahrscheinlich das Problem sein.

Hätte gerne das Logfile global für alle User. Möchte den Überblick behalten über den Mailversand via PHP.

Da PHP dann unter der User ID ausgeführt wird, müsste dieser also Schreibrechte haben?! Reicht es dann alle User in eine Gruppe zu packen?
 
Nicht ganz zur Frage passend aber zum Thema passend;
Beachte dass man bei aktiviertem fsockopen/fopen eine Telnet-Verbindung nach localhost:25 herstellen kann und die Emails ueber diese direkte Schnittstelle einliefern kann sofern es nicht firewall-maessig blockiert wird.
 
@virtual2

Den Link habe ich auch schon via Google gefunden. War mir aber nicht sicher, ob ich das so umsetzen soll. Aufgrund der Unsicherheit fand ich dann noch die Variante via dem Flag in der php.ini.

Wenn Du die Aufgabenstellung hättest "globale Logdatei für php mail für alle User" würdest Du dann auf den Wrapper setzen?
Oder gar einen drauf setzen und dann auch ein "rate limit" mit implementieren? http://www.iezzi.ch/archives/258


@d4f

Habe viele gute Beiträge von Dir gelesen und Hut ab vor Deinem Wissen - aber sorry - ich kann da gerade nicht viel mit anfagen. Magst Du mir kurz erläutern wie ich entsprechendes Verhalten testen kann?
 
Hier ist beschrieben wie man ueber Telnet eine Email an einen Mailserver einliefern kann;
http://support.microsoft.com/kb/153119

Ob diese nun von einer Shell kommt oder einem PHP-Skript ist irrelevant, somit kannst du das Verhalten manuell testen indem du mit "telnet 127.0.0.1 25" eine Verbindung zum SMTP-Server aufstellt.
Grund des Verhaltens ist dass in der Regel Mailserver-Setups Verbindungen aus vertrauenswuerdigen IP-Ranges (127.0.0.1/24 mindestens) ohne Authentifizierung annehmen.
Je nachdem welche Header man dabeisetzt kann man (je nach Setup) zT sogar Spamfilter umgehen und Server-Administratoren verwirren indem man eine externe Einlieferung oder einen anderen Kunden vortaeuscht.

Gern kann ich dir ein entsprechendes automatisiertes Test-Skript basteln, aber solche sollten sich auch im Internet zur Genuege finden.

Als einzige wirkliche Gegenloesung kannst du mit iptables xt_owner nur bestimmte UID's zur lokalen Verbindung auf den Nameserver erlauben was aber je nach Setup auch wieder Probleme bereiten kann.
 
Ok, nach den Ausführungen wird mir das ein wenig klarer. Denke mal ich werde das bei der Umsetzung mal antesten, ein wenig damit spielen und versuchen die Materie nachzuvollziehen. Würde mich freuen, wenn ich ggfs. auf das Angbeot noch später zurückkommen darf, wenn ich selbst nichts geeignetes finde oder gebastelt bekomme.

Möchte noch die Antwort von virtual2 abwarten, bevor ich weitermache bzw. vielleicht noch die ein oder andere Meinung lesen...

Danke!
 
Ich beantworte mal die eigentlich an virtual2 gestellte Frage aus meiner Sicht:

Wenn Du die Aufgabenstellung hättest "globale Logdatei für php mail für alle User" würdest Du dann auf den Wrapper setzen?
Oder gar einen drauf setzen und dann auch ein "rate limit" mit implementieren? http://www.iezzi.ch/archives/258
Ja und ja. Ausserdem sollte der Wrapper dich (und evtl den Kunden) benachrichtigen wenn das Limit ueberschritten wurde.
Ersteres um Missbrauch einfach zu erkennen und zweiteres damit der Kunde auch weiss dass seine Rundmail an 5k Forenteilnehmer nur an die ersten 50 ausgeliefert wurde - denn php's mail() liefert technisch bedingt keinerlei Fehlermeldung bei Verweigerung durch den Wrapper.

Du musst nur darauf achtgeben dass die Kunden nicht mit shell_exec die sendmail-Binary selber aufrufen koennen oder zB in einer individuellen php.ini wieder den Wrapper auf das Original zurueckbiegen koennen.
 
Sorry, dass ich mich erst ein wenig spät wieder melde, habe den Thread direkt übersehen.

Ich kann d4f in seiner Aussage zustimmen, ähnliches hättest du auch von mir gehört ;)
 
Back
Top