php 5.3 a été conçu pour un meilleur suivi du courrier, mais je ne sais pas si cela s'est produit. (edit: oui php 5.3 a intégré la journalisation maintenant - php.ini a la variable config mail.log qui enregistrera l'utilisation du courrier du code php.)
Nous avons résolu le problème en faisant de sendmail un script shell wrapper.
Dans php.ini, définissez un nouveau mailer. Par exemple:
sendmail_path = /usr/local/bin/sendmail-php -t -i
Le script sendmail-php utilise simplement l'enregistreur pour obtenir des informations, puis appelle le sendmail du système:
#!/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 $*
Cela se connectera à tout ce que votre mail.info est défini dans le fichier syslog.conf.
Une autre suggestion est d'installer l'extension suhosin php pour resserrer les failles en PHP, sauf si vous utilisez Debian ou Ubuntu où c'est déjà la valeur par défaut.
La solution à cela nécessite en fait quelques étapes. La solution de labradort ci-dessus ne fonctionne pas vraiment car le script de journalisation est un script bash, pas php, et le script bash n'a pas accès aux variables de php, donc les journaux sont vides. Fondamentalement, tout ce que vous souhaitez enregistrer doit être enregistré dans des variables d'environnement en php avant d'envoyer l'e-mail afin que l'enregistreur ait accès aux données. Puisque vous essayez de détecter les scripts d'autres utilisateurs, pas nécessairement les vôtres, vous n'avez aucun contrôle sur le code php, vous devez donc utiliser la fonction auto_prepend_file de PHP pour vous assurer que tout php exécuté exécute votre code d'initialisation avant tout le reste. J'ai ajouté le code suivant via php.ini pour m'assurer d'avoir les données dont j'ai besoin dans l'enregistreur:
J'ai mis en place un tutoriel complet sur la façon de faire fonctionner cela ici: http://mcquarrie.com.au/wordpress/2012/10/tracking-down-malicious-php-spam-scripts/
la source
Il existe un correctif pour PHP qui montrera quel script génère les e-mails en ajoutant un en-tête à l'e-mail envoyé. Je ne l'ai pas testé car je n'ai pas envie de patcher le noyau PHP, mais j'ai entendu de bonnes choses.
la source
Vous allez devoir récupérer les journaux d'accès pour quelque chose qui correspond à la période de temps où les messages ont été ajoutés au spool.
la source
Peut être simplement rechercher dans les fichiers source la sous-chaîne "mail ("?
la source
Activez-les simplement sur votre php.ini
puis créez ce fichier et accordez l'autorisation d'écriture. Jetez un œil dessus après cela.
la source