PHP 5.3 se asignó para obtener un mejor seguimiento del correo, pero no estoy seguro de si eso sucedió. (editar: sí, php 5.3 tiene el registro incorporado ahora - php.ini tiene la variable de configuración mail.log que registrará el uso del correo desde el código php).
Resolvimos el problema haciendo que sendmail sea un script de shell envoltorio.
En php.ini establece un nuevo anuncio publicitario. P.ej:
sendmail_path = /usr/local/bin/sendmail-php -t -i
El script sendmail-php simplemente usa el registrador para obtener información y luego llama al sistema sendmail del sistema:
#!/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 $*
Esto registrará lo que sea que su mail.info esté configurado en el archivo syslog.conf.
Otra sugerencia es instalar la extensión suhosin php para ajustar las lagunas en PHP, a menos que esté ejecutando Debian o Ubuntu donde esto ya es el predeterminado.
La solución a esto realmente requiere unos pocos pasos. La solución anterior de labradort en realidad no funciona, ya que el script del registrador es un script bash, no php, y el script bash no tiene acceso a las variables de php, por lo que los registros quedan en blanco. Básicamente, lo que desee registrar debe guardarse en las variables de entorno en php antes de enviar el correo electrónico para que el registrador tenga acceso a los datos. Como está tratando de detectar los scripts de otros usuarios, no necesariamente los suyos, no tiene control sobre el código php, por lo que debe usar la función auto_prepend_file de PHP para asegurarse de que todo el php ejecutado ejecute su código de inicialización antes que todo lo demás. Antepongo el siguiente código a través de php.ini para asegurarme de que tengo los datos que necesito en el registrador:
He preparado un tutorial completo sobre cómo hacer que esto funcione aquí: http://mcquarrie.com.au/wordpress/2012/10/tracking-down-malicious-php-spam-scripts/
fuente
Hay un parche para PHP que mostrará qué script está generando los correos electrónicos agregando un encabezado al correo electrónico que se envía. No lo he probado ya que no estoy interesado en parchar el núcleo de PHP, pero he escuchado cosas buenas.
fuente
Tendrá que seleccionar los registros de acceso para obtener algo que se ajuste al período de tiempo en que se agregaron los mensajes a la cola.
fuente
¿Puede ser simplemente buscar en los archivos de origen la subcadena "mail ("?
fuente
Simplemente habilítelos en su php.ini
luego cree ese archivo y otorgue el permiso de escritura. Échale un ojo después de eso.
fuente