PHP 5.3 wurde gesteckt, um eine bessere Mail-Verfolgung zu erreichen, aber ich bin mir nicht sicher, ob das passiert ist. (edit: yes php 5.3 hat jetzt eine integrierte Protokollierung - php.ini hat die Konfigurationsvariable mail.log, die die Verwendung von Mail aus PHP-Code protokolliert.)
Wir haben das Problem gelöst, indem wir sendmail zu einem Wrapper-Shell-Skript gemacht haben.
In php.ini einen neuen Mailer einstellen. Z.B:
sendmail_path = /usr/local/bin/sendmail-php -t -i
Das sendmail-php-Skript verwendet einfach den Logger, um Informationen abzurufen, und ruft dann sendmail des Systems auf:
#!/bin/bash
logger -p mail.info -t sendmail-php "site=${HTTP_HOST}, client=${REMOTE_ADDR}, script=${SCRIPT_NAME}, filename=${SCRIPT_FILENAME}, docroot=${DOCUMENT_ROOT}, pwd=${PWD}, uid=${UID}, user=$(whoami)"
/usr/sbin/sendmail -t -i $*
Dadurch wird protokolliert, auf was Ihre mail.info in der Datei syslog.conf eingestellt ist.
Ein weiterer Vorschlag ist die Installation der Suhosin-PHP-Erweiterung, um Lücken in PHP zu schließen, es sei denn, Sie führen Debian oder Ubuntu aus, wo dies bereits die Standardeinstellung ist.
Die Lösung hierfür erfordert tatsächlich einige Schritte. Die obige Lösung von labradort funktioniert nicht wirklich, da das Logger-Skript ein Bash-Skript und kein PHP ist und das Bash-Skript keinen Zugriff auf die PHP-Variablen hat, sodass die Protokolle leer sind. Grundsätzlich muss alles, was Sie protokollieren möchten, vor dem Senden der E-Mail in Umgebungsvariablen in PHP gespeichert werden, damit der Logger Zugriff auf die Daten hat. Da Sie versuchen, die Skripte anderer Benutzer zu erkennen, nicht unbedingt Ihre eigenen, haben Sie keine Kontrolle über den PHP-Code. Daher müssen Sie die Funktion auto_prepend_file von PHP verwenden, um sicherzustellen, dass alle ausgeführten PHPs Ihren Initialisierungscode vor allem anderen ausführen. Ich habe den folgenden Code über php.ini vorangestellt, um sicherzustellen, dass ich die benötigten Daten im Logger habe:
Ich habe hier ein vollständiges Tutorial zusammengestellt, wie dies funktioniert: http://mcquarrie.com.au/wordpress/2012/10/tracking-down-malicious-php-spam-scripts/
quelle
Es gibt einen Patch für PHP, der anzeigt, welches Skript die E-Mails generiert, indem der gesendeten E-Mail ein Header hinzugefügt wird. Ich habe es nicht getestet, da ich nicht daran interessiert bin, Core-PHP zu patchen, aber ich habe gute Dinge gehört.
quelle
Sie müssen die Zugriffsprotokolle nach etwas durchsuchen, das dem Zeitrahmen entspricht, in dem die Nachrichten zum Spool hinzugefügt wurden.
quelle
Vielleicht suchen Sie einfach in Quelldateien nach "mail (" - Teilzeichenfolge?
quelle
Aktivieren Sie diese einfach auf Ihrer php.ini
Erstellen Sie dann diese Datei und erteilen Sie die Schreibberechtigung. Behalte es danach im Auge.
quelle