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)
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()
Tant que tu y es, tu peux vérifier que d'éventuels n dans to et dans subject sont forcéments suivis d'une espace ou d'une tabulation, et refuser l'envoi sinon. Cela permet de ne pas détourner ces champs de leur utilisation première, tout en n'interdisant pas le « Folding White Space ». Rien que ça devrait réduire énormément le spam sans gêner l'utilisation normale.
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 ^^
Ce n'est pas une erreur de compilation, mais d'édition de liens. Il te faut inclure la bibliothèque (library en anglais) contenant la fonction getmyuid().
Tant que tu y es, tu peux vérifier que d'éventuels n dans to et dans
subject sont forcéments suivis d'une espace ou d'une tabulation, et
refuser l'envoi sinon. Cela permet de ne pas détourner ces champs de
leur utilisation première, tout en n'interdisant pas le « Folding
White Space ». Rien que ça devrait réduire énormément le spam sans
gêner l'utilisation normale.
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
^^
Ce n'est pas une erreur de compilation, mais d'édition de liens. Il te
faut inclure la bibliothèque (library en anglais) contenant la fonction
getmyuid().
Tant que tu y es, tu peux vérifier que d'éventuels n dans to et dans subject sont forcéments suivis d'une espace ou d'une tabulation, et refuser l'envoi sinon. Cela permet de ne pas détourner ces champs de leur utilisation première, tout en n'interdisant pas le « Folding White Space ». Rien que ça devrait réduire énormément le spam sans gêner l'utilisation normale.
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 ^^
Ce n'est pas une erreur de compilation, mais d'édition de liens. Il te faut inclure la bibliothèque (library en anglais) contenant la fonction getmyuid().
Benjamin
Bonjour,
Tant que tu y es, tu peux vérifier que d'éventuels n dans to et dans subject sont forcéments suivis d'une espace ou d'une tabulation, et refuser l'envoi sinon. Cela permet de ne pas détourner ces champs de leur utilisation première, tout en n'interdisant pas le « Folding White Space ». Rien que ça devrait réduire énormément le spam sans gêner l'utilisation normale.
bonne idée,
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
^^ Ce n'est pas une erreur de compilation, mais d'édition de liens. Il te faut inclure la bibliothèque (library en anglais) contenant la fonction getmyuid().
j'ai rajouté #include "ext/standard/pageinfo.h" dans mail.c, pageinfo.h contient la définition de getmyuid, je pensais que ça suffisait, qu'est-ce qu'il faut que je rajoute en plus ?
PHPAPI void php_statpage(TSRMLS_D); PHPAPI long php_getlastmod(TSRMLS_D); extern long php_getuid(void); extern long php_getgid(void);
#endif
merci de votre réponse,
Bonjour,
Tant que tu y es, tu peux vérifier que d'éventuels n dans to et dans
subject sont forcéments suivis d'une espace ou d'une tabulation, et
refuser l'envoi sinon. Cela permet de ne pas détourner ces champs de
leur utilisation première, tout en n'interdisant pas le « Folding
White Space ». Rien que ça devrait réduire énormément le spam sans
gêner l'utilisation normale.
bonne idée,
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
^^
Ce n'est pas une erreur de compilation, mais d'édition de liens. Il te
faut inclure la bibliothèque (library en anglais) contenant la fonction
getmyuid().
j'ai rajouté #include "ext/standard/pageinfo.h" dans mail.c,
pageinfo.h contient la définition de getmyuid,
je pensais que ça suffisait, qu'est-ce qu'il faut que je rajoute en
plus ?
Tant que tu y es, tu peux vérifier que d'éventuels n dans to et dans subject sont forcéments suivis d'une espace ou d'une tabulation, et refuser l'envoi sinon. Cela permet de ne pas détourner ces champs de leur utilisation première, tout en n'interdisant pas le « Folding White Space ». Rien que ça devrait réduire énormément le spam sans gêner l'utilisation normale.
bonne idée,
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
^^ Ce n'est pas une erreur de compilation, mais d'édition de liens. Il te faut inclure la bibliothèque (library en anglais) contenant la fonction getmyuid().
j'ai rajouté #include "ext/standard/pageinfo.h" dans mail.c, pageinfo.h contient la définition de getmyuid, je pensais que ça suffisait, qu'est-ce qu'il faut que je rajoute en plus ?
PHPAPI void php_statpage(TSRMLS_D); PHPAPI long php_getlastmod(TSRMLS_D); extern long php_getuid(void); extern long php_getgid(void);
#endif
merci de votre réponse,
Olivier Miakinen
collect2: ld returned 1 exit status ^^
Ce n'est pas une erreur de compilation, mais d'édition de liens. Il te faut inclure la bibliothèque (library en anglais) contenant la fonction getmyuid().
j'ai rajouté #include "ext/standard/pageinfo.h" dans mail.c, pageinfo.h contient la définition de getmyuid, je pensais que ça suffisait, qu'est-ce qu'il faut que je rajoute en plus ?
Tu peux essayer d'appeler plutôt la fonction php_getuid().
collect2: ld returned 1 exit status
^^
Ce n'est pas une erreur de compilation, mais d'édition de liens. Il te
faut inclure la bibliothèque (library en anglais) contenant la fonction
getmyuid().
j'ai rajouté #include "ext/standard/pageinfo.h" dans mail.c,
pageinfo.h contient la définition de getmyuid,
je pensais que ça suffisait, qu'est-ce qu'il faut que je rajoute en
plus ?
Ce n'est pas une erreur de compilation, mais d'édition de liens. Il te faut inclure la bibliothèque (library en anglais) contenant la fonction getmyuid().
j'ai rajouté #include "ext/standard/pageinfo.h" dans mail.c, pageinfo.h contient la définition de getmyuid, je pensais que ça suffisait, qu'est-ce qu'il faut que je rajoute en plus ?
Tu peux essayer d'appeler plutôt la fonction php_getuid().
Bobe
Olivier Miakinen nous a dit le 16.03.2007 14:41:
Tant que tu y es, tu peux vérifier que d'éventuels n dans to et dans subject sont forcéments suivis d'une espace ou d'une tabulation, et refuser l'envoi sinon. Cela permet de ne pas détourner ces champs de leur utilisation première, tout en n'interdisant pas le « Folding White Space ». Rien que ça devrait réduire énormément le spam sans gêner l'utilisation normale.
PHP le fait déjà (mais seulement pour les entêtes to et subject passés en argument).
Voir la fonction SKIP_LONG_HEADER_SEP définie au début de ext/standard/mail.c
-- Aurélien Maille
Olivier Miakinen nous a dit le 16.03.2007 14:41:
Tant que tu y es, tu peux vérifier que d'éventuels n dans to et dans
subject sont forcéments suivis d'une espace ou d'une tabulation, et
refuser l'envoi sinon. Cela permet de ne pas détourner ces champs de
leur utilisation première, tout en n'interdisant pas le « Folding
White Space ». Rien que ça devrait réduire énormément le spam sans
gêner l'utilisation normale.
PHP le fait déjà (mais seulement pour les entêtes to et subject passés
en argument).
Voir la fonction SKIP_LONG_HEADER_SEP définie au début de
ext/standard/mail.c
Tant que tu y es, tu peux vérifier que d'éventuels n dans to et dans subject sont forcéments suivis d'une espace ou d'une tabulation, et refuser l'envoi sinon. Cela permet de ne pas détourner ces champs de leur utilisation première, tout en n'interdisant pas le « Folding White Space ». Rien que ça devrait réduire énormément le spam sans gêner l'utilisation normale.
PHP le fait déjà (mais seulement pour les entêtes to et subject passés en argument).
Voir la fonction SKIP_LONG_HEADER_SEP définie au début de ext/standard/mail.c
-- Aurélien Maille
Benjamin
Bonjour,
Ah, ben c'est la définition d'une fonction PHP, ça, pas celle de la fonction C que tu dois appeler.
Petite recherche avec Google...http://gcov.php.net/PHP_HEAD/lcov_html/ext/standard/pageinfo.c.gcov.php