Re-salut tout le monde;
Je reviens vers ce sujet que j’ai délaissé un peut pour d’autres projets.
bon, je viens de trouver une idées basé sur ce qu’a dit “Niloo” et sur les options du demon sendmail, l’option “-f” pour préciser qui surcharge la valeur “Return-Path” si je me trompe pas.
J’ai besoin un peut d’aide dans l’écriture d’un code php qui parse la sortie “stdin” au moment de l’appel de la fonction php mail() par apache et force l’ajout d’un ‘-f $from’ dans les arguments de la fonction mail et puis renvoyer le tous vers sendmail.
Voici mon php d’envoi d’un test mail:
Les adresses sont factices 
<?php
$from = 'de_test@gmail.com';
$to = 'vers_test@gmail.com';
$subject = 'Test Mail via php';
$message = 'Bonjour, ceci est un test via un script php!';
$headers = 'From:'.$from. "\r\n" .
'Reply-To: ' .$from. "\r\n" .
'X-Mailer: PHP/' . phpversion();
mail($to, $subject, $message, $headers);
echo 'Mail sent.';
?>[/code]
en fait, par défaut sendmail va mettre le user qui lui a fait appel comme "Return-path" ça veut dire www-data + @$mydomaine ce qui donne [www-data@domaine.local](mailto:www-data@domaine.local) dans notre cas.
dans la config du php.ini j'ai surchargé la valeur "sendmail path" comme suit et ceci afin de parser la sortie "stdin":
[code]sendmail_path = /usr/local/bin/phpsendmail[/code]
Je me suis inspirais d'un tuto qui m'a aidé a retracé un script spameur sur mon serveur suivez le lien pour mieux comprendre:
[url]http://www.directadmin.com/forum/showthread.php?t=36311&page=1[/url]
Voici mon code qui va faire la surcharge:
[code]#!/usr/local/bin/php
<?php
$sendmail_bin = '/usr/sbin/sendmail';
$from = '';
//* Get the email content
$logline = '';
$pointer = fopen('php://stdin', 'r');
while ($line = fgets($pointer))
{
if(preg_match('/^from:/i', $line))
{
$from .= trim($line);
}
$mail .= $line;
}
//* compose the sendmail command
$command = 'echo ' . escapeshellarg($mail) . ' | '.$sendmail_bin.' -t -i -f '. $from;
for ($i = 1; $i < $_SERVER['argc']; $i++)
{
$command .= escapeshellarg($_SERVER['argv'][$i]).' ';
}
//* Execute the command
return shell_exec($command);
?>[/code]
Voici ce ça donne au niveau log postfix:
[code]Nov 4 15:49:59 debian postfix/pickup[7090]: CFF531D348: uid=33 from=<From:de_test@gmail.com>
Nov 4 15:49:59 debian postfix/cleanup[7756]: CFF531D348: message-id=<20121104144959.CFF531D348@debian.localdomain>
Nov 4 15:49:59 debian postfix/qmgr[5940]: CFF531D348: from=<From:de_test@gmail.com>, size=407, nrcpt=1 (queue active)
Nov 4 15:50:05 debian postfix/smtp[7759]: CFF531D348: to=<vers_test@gmail.com>, relay=smtp.relay.com[19.55.12.25]:25, delay=5.6, delays=0.07/0/5.2/0.34, dsn=2.0.0, status=sent (250 171755007 message accepted for delivery)
Nov 4 15:50:05 debian postfix/qmgr[5940]: CFF531D348: removed
C’est OK, j’ai bien réussi

pour finir voila l’entête mail reçu par Gmail:
[code]Delivered-To: vers_test@gmail.com
Received: by 10.58.211.199 with SMTP id ne7csp150795vec;
Sun, 4 Nov 2012 07:04:25 -0800 (PST)
Received: by 10.180.84.41 with SMTP id v9mr9553948wiy.8.1352041465245;
Sun, 04 Nov 2012 07:04:25 -0800 (PST)
Return-Path: From:de_test@gmail.com
Received: from ***************************************************************** // Je cache cette partie, c’est mon serveur relay 
by mx.google.com with ESMTP id y49si648781wen.114.2012.11.04.07.04.24;
Sun, 04 Nov 2012 07:04:25 -0800 (PST)
Received-SPF: neutral (google.com: .***.***. is neither permitted nor denied by best guess record for domain of From:de_test@gmail.com) client-ip=***.***.***.***;
Authentication-Results: mx.google.com; spf=neutral (google.com: .***.***. is neither permitted nor denied by best guess record for domain of From:de_test@gmail.com) smtp.mail=From:de_test@planet.tn
Received: from ************************************************ // Je cache cette partie, c’est mon serveur relay 
by .***.***. (Postfix) with SMTP id 938D1BD805C
for vers_test@gmail.com; Sun, 4 Nov 2012 16:04:24 +0100 (CET)
X-Junk-Score: 2 [X]
X-SpamCatcher-Score: 2 [X]
Received: from [***.***.***.***] (HELO debian.localdomain)
by ************************************************ // Je cache cette partie, c’est mon serveur relay 
with ESMTP id 171667601 for vers_test@gmail.com; Sun, 04 Nov 2012 16:04:07 +0100
Received: by debian.localdomain (Postfix, from userid 33)
id BAB181D348; Sun, 4 Nov 2012 15:40:15 +0100 (CET)
To: vers_test@gmail.com
Subject: Test Mail via php
From: de_test@gmail.com
Reply-To: de_test@gmail.com
X-Mailer: PHP/5.3.3-7+squeeze3
Message-Id: 20121104144015.BAB181D348@debian.localdomain
Date: Sun, 4 Nov 2012 15:40:15 +0100 (CET)
Bonjour, ceci est un test via un script php![/code]
Reste maintenant a optimisé le code, je l’es pas encore tester en Prod et je ne sais pas trop ce que les webmaster utilisent comme autres arguments dans la fonction mail() et si ça sera compatible ou non.
Alors si vous avez un avis, merci de participer
en plus ça pourrait aider d’autres.