Benjamin
2007-03-16 13:19:30 UTC
Bonjour à tous,
j'avais déja essayé il y a quelques mois, et après pas mal de
recherches j'ai pas réussi à trouver une solution satisfaisante, je me
tourne donc vers vous.
Sur un serveur debian que j'administre (des pages perso d'étudiants)
j'ai des utilisateurs qui utilisent des scripts avec la fonction mail,
certains sont pas du tout sécurisés et sont exploités pour envoyer
du spam (et donc queue de qmail avec des milliers de mails...).
J'aimerais bien "taguer" les mails envoyés avec la fonction mail en
rajoutant une ligne contenant l'user qui execute le script ; puisque
sur le serveur les scripts sont éxécutés sous l'user du proprietaire
du compte. L'interet serait d'isoler tout de suite le compte d'origine
en repérant cette ligne dans la source des mails, pour ensuite
analyser le compte et arréter l'envoi de spam.
Pour cela je souhaite modifier les sources de php,
j'ai donc fais la manip suivante (sous php-4.4.4)
Dans la fonction php_mail de ext/standard/mail.c
j'ai rajouté :
int tagspamtl1;
tagspamtl1= getmyuid();
Puis dans la section :
fprintf(sendmail, "To: %s\n", to);
fprintf(sendmail, "Subject: %s\n", subject);
if (headers != NULL) {
fprintf(sendmail, "%s\n", headers);
}
fprintf(sendmail, "\n%s\n", message);
ret = pclose(sendmail);
j'ai rajouté fprintf(sendmail, "Tagspamtl1: %d \n", tagspamtl1);
le but étant de taguer l'email avec l'uid qui lance le script.
En statique (avec tagspamtl1 = 1234 par exemple donc sans utiliser
getmyuid()
) ça fonctionne, le champ est bien rajouté au mail.
En utilisant getmyuid() j'ai une erreur de compilation :
"ext/standard/mail.o(.text+0x448): In function `php_mail':
/usr/local/src/php-4.4.4/ext/standard/mail.c:185: undefined reference
to `getmyuid'
collect2: ld returned 1 exit status
make: *** [sapi/cgi/php] Error 1"
J'ai donc rajouté dans les includes en haut du fichier mail.c :
#include "ext/standard/pageinfo.h"
pageinfo.h contenant la définition de la fonction getmyuid()
mais toujours la même erreur.
si vous avez une idée je suis un peu coincé la ;)
merci pour vos infos,
j'avais déja essayé il y a quelques mois, et après pas mal de
recherches j'ai pas réussi à trouver une solution satisfaisante, je me
tourne donc vers vous.
Sur un serveur debian que j'administre (des pages perso d'étudiants)
j'ai des utilisateurs qui utilisent des scripts avec la fonction mail,
certains sont pas du tout sécurisés et sont exploités pour envoyer
du spam (et donc queue de qmail avec des milliers de mails...).
J'aimerais bien "taguer" les mails envoyés avec la fonction mail en
rajoutant une ligne contenant l'user qui execute le script ; puisque
sur le serveur les scripts sont éxécutés sous l'user du proprietaire
du compte. L'interet serait d'isoler tout de suite le compte d'origine
en repérant cette ligne dans la source des mails, pour ensuite
analyser le compte et arréter l'envoi de spam.
Pour cela je souhaite modifier les sources de php,
j'ai donc fais la manip suivante (sous php-4.4.4)
Dans la fonction php_mail de ext/standard/mail.c
j'ai rajouté :
int tagspamtl1;
tagspamtl1= getmyuid();
Puis dans la section :
fprintf(sendmail, "To: %s\n", to);
fprintf(sendmail, "Subject: %s\n", subject);
if (headers != NULL) {
fprintf(sendmail, "%s\n", headers);
}
fprintf(sendmail, "\n%s\n", message);
ret = pclose(sendmail);
j'ai rajouté fprintf(sendmail, "Tagspamtl1: %d \n", tagspamtl1);
le but étant de taguer l'email avec l'uid qui lance le script.
En statique (avec tagspamtl1 = 1234 par exemple donc sans utiliser
getmyuid()
) ça fonctionne, le champ est bien rajouté au mail.
En utilisant getmyuid() j'ai une erreur de compilation :
"ext/standard/mail.o(.text+0x448): In function `php_mail':
/usr/local/src/php-4.4.4/ext/standard/mail.c:185: undefined reference
to `getmyuid'
collect2: ld returned 1 exit status
make: *** [sapi/cgi/php] Error 1"
J'ai donc rajouté dans les includes en haut du fichier mail.c :
#include "ext/standard/pageinfo.h"
pageinfo.h contenant la définition de la fonction getmyuid()
mais toujours la même erreur.
si vous avez une idée je suis un peu coincé la ;)
merci pour vos infos,