O php 5.3 foi introduzido no slot para obter um melhor rastreamento de e-mail, mas não tenho certeza se isso aconteceu. (edit: yes O php 5.3 possui registro incorporado agora - o php.ini possui a variável de configuração mail.log, que registrará o uso do correio a partir do código php.)
Resolvemos o problema transformando o sendmail em um script de shell wrapper.
No php.ini, defina um novo mailer. Por exemplo:
sendmail_path = /usr/local/bin/sendmail-php -t -i
O script sendmail-php simplesmente usa o logger para obter informações e depois chama o sendmail do 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 $*
Isso registrará o que seu mail.info estiver definido no arquivo syslog.conf.
Outra sugestão é instalar a extensão suhosin php para reforçar brechas no PHP, a menos que você esteja executando o Debian ou Ubuntu, onde este já é o padrão.
A solução para isso realmente requer algumas etapas. A solução do labradort acima não funciona, pois o script logger é um script bash, não php, e o script bash não tem acesso às variáveis do php; portanto, os logs ficam em branco. Basicamente, o que você deseja registrar precisa ser salvo nas variáveis de ambiente em php antes de enviar o email para que o criador de logs tenha acesso aos dados. Como você está tentando detectar os scripts de outros usuários, não necessariamente os seus, você não tem controle sobre o código php; portanto, você precisa usar o recurso auto_prepend_file do PHP para garantir que todo o php executado execute seu código de inicialização antes de tudo. Anexei o código a seguir via php.ini para garantir que tenho os dados necessários no criador de logs:
Eu montei um tutorial completo sobre como fazer isso funcionar aqui: http://mcquarrie.com.au/wordpress/2012/10/tracking-down-malicious-php-spam-scripts/
fonte
Existe um patch para PHP que mostra qual script está gerando os emails adicionando um cabeçalho ao email que está sendo enviado. Eu não o testei desde que não estou interessado em corrigir o núcleo do PHP, mas ouvi coisas boas.
fonte
Você precisará grep os logs de acesso para algo que se ajuste ao prazo de quando as mensagens foram adicionadas ao spool.
fonte
Pode ser apenas pesquisar nos arquivos de origem a substring "mail ("?
fonte
Simplesmente habilite-os no seu php.ini
em seguida, crie esse arquivo e dê a permissão de gravação. Dê uma olhada nisso depois disso.
fonte