7
2013
Logger les mails envoyés par la fonction mail
Dans cet article nous allons voir comment tracer les mails envoyer par un site web utilisant la fonction mail.
Cette procédure est très utile pour traquer le site qui spam sur un serveur mutualisé.
Procédure :
Créer le fichier /usr/sbin/phpsendmail et y insérer ceci :
[php]#!/usr/bin/php
<?php
$sendmail = ‘/usr/sbin/sendmail’;
$logfile = ‘/var/log/mail_php.log’;
/* Get email content */
$logline = ”;
$mail = ”;
$fp = fopen(‘php://stdin’, ‘r’);
while ($line = fgets($fp))
{
if(preg_match(‘/^to:/i’, $line) || preg_match(‘/^from:/i’, $line))
{
$logline .= trim($line).’ ‘;
}
$mail .= $line;
}
/* Build sendmail command */
$cmd = ‘echo ‘ . escapeshellarg($mail) . ‘ | ‘.$sendmail.’ -t -i’;
for ($i = 1; $i < $_SERVER[‘argc’]; $i++)
{
$cmd .= escapeshellarg($_SERVER[‘argv’][$i]).’ ‘;
}
/* Log line */
$path = isset($_ENV[‘PWD’]) ? $_ENV[‘PWD’] : $_SERVER[‘PWD’];
file_put_contents($logfile, date(‘Y-m-d H:i:s’) . ‘ ‘ . $logline .’ ==> ‘ .$path."\n", FILE_APPEND);
/* Call sendmail */
return shell_exec($command);
?>[/php]
Creer le fichier log et changer les droits des deux fichiers :
[shell]
touch /var/log/mail_php.log
chmod 777 /var/log/mail_php.log
chmod 777 /usr/sbin/phpsendmail
[/shell]
Editez le fichier /etc/php.ini et modifier le chemin de sendmail pour qu’il pointe sur notre script phpsendmail :
[shell]
[mail function]
;SMTP = localhost
;smtp_port = 25
sendmail_path = /usr/sbin/phpsendmail
[/shell]
Redémarrez Apache et visualisez le log /var/log/mail_php.log
Articles similaires
Laissez un commentaire
Publicité :)
Articles récents
- Configuration de Nginx pour Obtenir l’IP Réelle des Visiteurs avec CloudFlare
- Récupérer les informations d’un Ordinateur Terra à partir du numéros de série avec Python
- Grep – Extraire toutes les adresses IP d’un fichier text, Json, etc…
- Failed to Start File System Check – Vcenter 7
- Powershell – Se connecter à l’active directory depuis un poste windows 11