Discussion:
Ajout d'en tetes
(trop ancien pour répondre)
Aurelgadjo
2009-05-11 19:46:20 UTC
Permalink
Hello,

Dans un cadre d'hebergement mutualisé, on a souvent dans les en tetes
l'adresse du fichier qui a envoyé un mail via mail(), voir même l'ip de
la personne qui a tapé sur ce fichier.
Je n'arrive pas à trouver ce qui est utilisé pour celà (c'est coté
serveur et non coté code).
J'ai bien trouvé un début de réponse sur (
http://fr.php.net/manual/fr/mail.configuration.php ) mais ça ne répond
pas tout à fait à la question...

Des pistes ?

Merci
--
Attention, adresse d'expediteur invalide. ***@gmail.com pour m'ecrire
Olivier Miakinen
2009-05-11 21:33:38 UTC
Permalink
Bonjour,
Post by Aurelgadjo
Dans un cadre d'hebergement mutualisé, on a souvent dans les en tetes
l'adresse du fichier qui a envoyé un mail via mail(), voir même l'ip de
la personne qui a tapé sur ce fichier.
Euh... Ouate ?

De quels entêtes parles-tu ? Dans le courriel reçu ou dans la page web ?
Quels noms d'entêtes ? Quelles valeurs ? « L'adresse » du fichier, c'est
son chemin d'accès sur le disque ? Son URL ?

Je suis un peu surpris par le fait que le nom du fichier puisse se
retrouver « souvent » dans un truc envoyé sur le réseau, quel qu'il
soit.
Post by Aurelgadjo
Je n'arrive pas à trouver ce qui est utilisé pour celà (c'est coté
serveur et non coté code).
J'ai bien trouvé un début de réponse sur (
http://fr.php.net/manual/fr/mail.configuration.php ) mais ça ne répond
pas tout à fait à la question...
Autres questions : quel est l'hébergeur, et surtout sur quel OS (Linux,
Unix, FreeBSD, Windows, ...) ?
Post by Aurelgadjo
Des pistes ?
Pour le moment non, parce que ce qui semble te paraître évident ne me
l'est pas du tout.

Cordialement,
--
Olivier Miakinen
Aurelgadjo
2009-05-12 18:47:31 UTC
Permalink
Post by Olivier Miakinen
Bonjour,
Post by Aurelgadjo
Dans un cadre d'hebergement mutualisé, on a souvent dans les en tetes
l'adresse du fichier qui a envoyé un mail via mail(), voir même l'ip de
la personne qui a tapé sur ce fichier.
Euh... Ouate ?
De quels entêtes parles-tu ? Dans le courriel reçu ou dans la page web ?
Dans le mail ensuite reçu, enfin, ses en têtes
Post by Olivier Miakinen
Quels noms d'entêtes ? Quelles valeurs ? « L'adresse » du fichier, c'est
son chemin d'accès sur le disque ? Son URL ?
L'un ou l'autre, c'est un peu vague... Pour prendre un exemple, un mail
reçu envoyé depuis un site hébergé chez free.fr, j'ai deux têtes ajoutées :
XPARM: [site en question].free.fr
XPARAM2: 82.237.250.88
82.237.250.88 est mon adresse ip lors de mon inscription sur ce site

J'avais déjà vu une en tete (ailleurs que free bien sur) ajoutée avec
semble-t-il l'url du script d'origine (url ou chemin sur le disque, je
ne sais plus bien mais ma question est générale)
Post by Olivier Miakinen
Je suis un peu surpris par le fait que le nom du fichier puisse se
retrouver « souvent » dans un truc envoyé sur le réseau, quel qu'il
soit.
Post by Aurelgadjo
Je n'arrive pas à trouver ce qui est utilisé pour celà (c'est coté
serveur et non coté code).
J'ai bien trouvé un début de réponse sur (
http://fr.php.net/manual/fr/mail.configuration.php ) mais ça ne répond
pas tout à fait à la question...
Autres questions : quel est l'hébergeur, et surtout sur quel OS (Linux,
Unix, FreeBSD, Windows, ...) ?
Ci dessous free.fr (linux je crois), mais j'avais déjà vu la même chose
il me semble pour un site chez 1&1
Post by Olivier Miakinen
Post by Aurelgadjo
Des pistes ?
Pour le moment non, parce que ce qui semble te paraître évident ne me
l'est pas du tout.
J'espére que c'est mieux
Post by Olivier Miakinen
Cordialement,
Olivier Miakinen
2009-05-12 19:27:06 UTC
Permalink
[...] c'est un peu vague... Pour prendre un exemple, un mail
XPARM: [site en question].free.fr
XPARAM2: 82.237.250.88
82.237.250.88 est mon adresse ip lors de mon inscription sur ce site
Ah, tu n'es donc pas l'auteur du script, n'est-ce pas ? Qu'est-ce qui
te fait croire que ces entêtes seraient ajoutés automagiquement par
l'hébergeur du site, au lieu d'être insérés tout simplement par le
script en question ?
J'avais déjà vu une en tete (ailleurs que free bien sur) ajoutée avec
semble-t-il l'url du script d'origine (url ou chemin sur le disque, je
ne sais plus bien mais ma question est générale)
Eh bien, de façon générale, l'auteur d'un script qui fait appel à la
fonction mail() peut rajouter ce qu'il veut dans les entêtes. Et en
particulier, seul le script PHP est en mesure de récupérer l'adresse
IP du visiteur qui fait une requête HTTP : la fonction mail() ne peut
pas l'inventer si on ne la lui donne pas.
[...] ce qui semble te paraître évident ne me
l'est pas du tout.
J'espére que c'est mieux
Maintenant que j'ai compris que ta question ne porte pas sur ce que
rajoute la fonction mail() chez *ton* hébergeur pour *ton* script,
oui, je trouve ça plus clair. ;-)
Aurelgadjo
2009-05-12 21:02:36 UTC
Permalink
Post by Olivier Miakinen
[...] c'est un peu vague... Pour prendre un exemple, un mail
XPARM: [site en question].free.fr
XPARAM2: 82.237.250.88
82.237.250.88 est mon adresse ip lors de mon inscription sur ce site
Ah, tu n'es donc pas l'auteur du script, n'est-ce pas ? Qu'est-ce qui
te fait croire que ces entêtes seraient ajoutés automagiquement par
l'hébergeur du site, au lieu d'être insérés tout simplement par le
script en question ?
Ah ben tu fais un simple <?php mail('tonadresse', 'test', 'test'); ?>
depuis un espace chez free et ces headers seront ajoutés. C'est coté
serveur que c'est fait (un patch pour php ?)
Post by Olivier Miakinen
J'avais déjà vu une en tete (ailleurs que free bien sur) ajoutée avec
semble-t-il l'url du script d'origine (url ou chemin sur le disque, je
ne sais plus bien mais ma question est générale)
Eh bien, de façon générale, l'auteur d'un script qui fait appel à la
fonction mail() peut rajouter ce qu'il veut dans les entêtes. Et en
particulier, seul le script PHP est en mesure de récupérer l'adresse
IP du visiteur qui fait une requête HTTP : la fonction mail() ne peut
pas l'inventer si on ne la lui donne pas.
Ben c'est à priori ce qu'il se passe :)
Post by Olivier Miakinen
[...] ce qui semble te paraître évident ne me
l'est pas du tout.
J'espére que c'est mieux
Maintenant que j'ai compris que ta question ne porte pas sur ce que
rajoute la fonction mail() chez *ton* hébergeur pour *ton* script,
oui, je trouve ça plus clair. ;-)
En fait ma question est là pour savoir comment mettre la même chose en
place sur un serveur perso. Il m'est arrivé à plusieurs reprises d'avoir
des scripts qui envoyaient du spam à mon insu, et remonter jusqu'au
fichier qui l'envoie est parfois hardu sans ces en têtes... (sur serveur
perso, que je controle de A à Z)
--
Attention, adresse d'expediteur invalide. ***@gmail.com pour m'ecrire
Olivier Miakinen
2009-05-12 21:34:40 UTC
Permalink
Post by Aurelgadjo
Post by Olivier Miakinen
Ah, tu n'es donc pas l'auteur du script, n'est-ce pas ? Qu'est-ce qui
te fait croire que ces entêtes seraient ajoutés automagiquement par
l'hébergeur du site, au lieu d'être insérés tout simplement par le
script en question ?
Ah ben tu fais un simple <?php mail('tonadresse', 'test', 'test'); ?>
depuis un espace chez free et ces headers seront ajoutés. C'est coté
serveur que c'est fait (un patch pour php ?)
En effet, je viens de vérifier. Et aussi je crois bien que la fonction
mail() a été patchée chez Free.
Post by Aurelgadjo
En fait ma question est là pour savoir comment mettre la même chose en
place sur un serveur perso.
Le XPARM ne pose pas de problème, puisque c'est une chaîne fixe pour
un serveur donné. Quant au XPARAM2 qui contient l'adresse IP, tu peux en
principe trouver sa valeur dans $_SERVER['REMOTE_ADDR']. Mais attention,
même si cette valeur n'est en principe pas trafiquable par le client,
je te conseille quand même de la contrôler comme tout ce qui vient de
l'extérieur avant de la mettre dans un entête de courriel. En tout cas,
il faut au moins supprimer tous les sauts de ligne.
Post by Aurelgadjo
Il m'est arrivé à plusieurs reprises d'avoir
des scripts qui envoyaient du spam à mon insu, et remonter jusqu'au
fichier qui l'envoie est parfois hardu sans ces en têtes... (sur serveur
perso, que je controle de A à Z)
Ok. Pour ce qui est du nom du fichier, c'est sans danger si tu le codes
en dur par $headers = 'XFILENAME: mon_fichier_code_en_dur'; Cela dit,
tant qu'à modifier tes fichiers qui font appel à la commande mail(),
commence par vérifier tous les paramètres que tu passes à cette
fonction.

Cordialement,
--
Olivier Miakinen
Aurelgadjo
2009-05-13 22:25:09 UTC
Permalink
Post by Olivier Miakinen
Post by Aurelgadjo
Post by Olivier Miakinen
Ah, tu n'es donc pas l'auteur du script, n'est-ce pas ? Qu'est-ce qui
te fait croire que ces entêtes seraient ajoutés automagiquement par
l'hébergeur du site, au lieu d'être insérés tout simplement par le
script en question ?
Ah ben tu fais un simple <?php mail('tonadresse', 'test', 'test'); ?>
depuis un espace chez free et ces headers seront ajoutés. C'est coté
serveur que c'est fait (un patch pour php ?)
En effet, je viens de vérifier. Et aussi je crois bien que la fonction
mail() a été patchée chez Free.
C'est l'objet de ma demande : ce patch est-il public et/ou une feature
connue et/ou une modification connue (réutilisable par quiconque) ?
Post by Olivier Miakinen
Post by Aurelgadjo
En fait ma question est là pour savoir comment mettre la même chose en
place sur un serveur perso.
Le XPARM ne pose pas de problème, puisque c'est une chaîne fixe pour
un serveur donné. Quant au XPARAM2 qui contient l'adresse IP, tu peux en
principe trouver sa valeur dans $_SERVER['REMOTE_ADDR']. Mais attention,
même si cette valeur n'est en principe pas trafiquable par le client,
je te conseille quand même de la contrôler comme tout ce qui vient de
l'extérieur avant de la mettre dans un entête de courriel. En tout cas,
il faut au moins supprimer tous les sauts de ligne.
Post by Aurelgadjo
Il m'est arrivé à plusieurs reprises d'avoir
des scripts qui envoyaient du spam à mon insu, et remonter jusqu'au
fichier qui l'envoie est parfois hardu sans ces en têtes... (sur serveur
perso, que je controle de A à Z)
Ok. Pour ce qui est du nom du fichier, c'est sans danger si tu le codes
en dur par $headers = 'XFILENAME: mon_fichier_code_en_dur'; Cela dit,
tant qu'à modifier tes fichiers qui font appel à la commande mail(),
commence par vérifier tous les paramètres que tu passes à cette
fonction.
Merci pour ton aide mais je n'ai pas forcément la main sur le php que
j'héberge (sites qui ne m'appartiennent pas) : je comprends cette
méthode dans le .php mais pas celle "automatisée" (via patch de php
donc). C'est justement cette dernière précisément qui m'intéresse.

Merci
--
Attention, adresse d'expediteur invalide. ***@gmail.com pour m'ecrire
Olivier Miakinen
2009-05-14 00:42:09 UTC
Permalink
Post by Aurelgadjo
Post by Olivier Miakinen
En effet, je viens de vérifier. Et aussi je crois bien que la fonction
mail() a été patchée chez Free.
C'est l'objet de ma demande : ce patch est-il public
À priori, je ne pense pas que l'implémentation par Free de la fonction
mail() soit disponible publiquement quelque part. Je peux me tromper,
bien sûr, mais je ne vois pas pourquoi ils rendraient public le code
d'une fonction dont les spammeurs ont tout intérêt à rechercher la
moindre faille.
Post by Aurelgadjo
et/ou une feature connue
Tout dépend par qui. Par exemple tu étais au courant de l'ajout de ces
entêtes alors que je ne l'étais pas.
Post by Aurelgadjo
et/ou une modification connue (réutilisable par quiconque) ?
Il ne doit pas être très difficile d'implémenter cette fonctionnalité.
Le plus délicat consiste à vérifier que les variables que tu utilises
(par exemple $_SERVER['REMOTE_ADDR']) ne risquent pas d'être détournées
par un pirate pour spammer. Et une protection efficace commence par en
supprimer tout caractére non sûr, en particulier les sauts de ligne.
Post by Aurelgadjo
Merci pour ton aide mais je n'ai pas forcément la main sur le php que
j'héberge (sites qui ne m'appartiennent pas) : je comprends cette
méthode dans le .php mais pas celle "automatisée" (via patch de php
donc). C'est justement cette dernière précisément qui m'intéresse.
Tu n'aurais pas pu le dire dès le début, plutôt que d'attendre le 4e
article ? On aurait gagné du temps...

Bon, dans ce cas c'est dans le code en C (je crois) de la fonction
mail() de PHP que tu dois rajouter ces entêtes. Je ne l'ai jamais fait
alors je laisse la parole aux experts.
Aurelgadjo
2009-05-14 13:19:23 UTC
Permalink
Post by Olivier Miakinen
Post by Aurelgadjo
Post by Olivier Miakinen
En effet, je viens de vérifier. Et aussi je crois bien que la fonction
mail() a été patchée chez Free.
C'est l'objet de ma demande : ce patch est-il public
À priori, je ne pense pas que l'implémentation par Free de la fonction
mail() soit disponible publiquement quelque part. Je peux me tromper,
bien sûr, mais je ne vois pas pourquoi ils rendraient public le code
d'une fonction dont les spammeurs ont tout intérêt à rechercher la
moindre faille.
De free ou de n'importe qui d'autre, free n'était qu'un exemple
Post by Olivier Miakinen
Post by Aurelgadjo
Merci pour ton aide mais je n'ai pas forcément la main sur le php que
j'héberge (sites qui ne m'appartiennent pas) : je comprends cette
méthode dans le .php mais pas celle "automatisée" (via patch de php
donc). C'est justement cette dernière précisément qui m'intéresse.
Tu n'aurais pas pu le dire dès le début, plutôt que d'attendre le 4e
article ? On aurait gagné du temps...
ça me semblait clair ("Dans un cadre d'hebergement mutualisé", "c'est
coté serveur et non coté code")
Post by Olivier Miakinen
Bon, dans ce cas c'est dans le code en C (je crois) de la fonction
mail() de PHP que tu dois rajouter ces entêtes. Je ne l'ai jamais fait
alors je laisse la parole aux experts.
Merci de ton aide/débroussaillage
--
Attention, adresse d'expediteur invalide. ***@gmail.com pour m'ecrire
John GALLET
2009-05-23 10:27:47 UTC
Permalink
Bonjour/soir,
Post by Olivier Miakinen
Post by Aurelgadjo
Merci pour ton aide mais je n'ai pas forcément la main sur le php que
[...]
Post by Olivier Miakinen
Bon, dans ce cas c'est dans le code en C (je crois) de la fonction
mail() de PHP que tu dois rajouter ces entêtes.
[...]

Dans cette situation là on a à mon sens deux solutions, selon le type
d'information que l'on veut rajouter.

1) effectivement en "patchant" le code C dans ext/standard/mail.c et en
recompilant. Il faudra le "refaire" à chaque mise à jour de PHP.

2) en ajoutant des headers au moment de l'envoi par le MTA. Voici par
exemple le moyen, dans un fichier httpd.conf de forcer le return path
avec une option de sendmail.

php_admin_value sendmail_path "/bin/sendmail -t -i -f ***@my.tld"

Tout dépend surtout de qui détient l'information que l'on souhaite
ajouter, si c'est le REMOTE_ADDR (qui, rappelons le au passage, n'est
pas 100% fiable), il faudra bien patcher le C, de même pour toute
information venant du client réseau (et non pas du client hébergé).

HTH
JG

Sylvain SF
2009-05-12 21:36:58 UTC
Permalink
Post by Olivier Miakinen
[...] c'est un peu vague... Pour prendre un exemple, un mail
XPARM: [site en question].free.fr
XPARAM2: 82.237.250.88
82.237.250.88 est mon adresse ip lors de mon inscription sur ce site
Ah, tu n'es donc pas l'auteur du script, n'est-ce pas ? Qu'est-ce qui
te fait croire que ces entêtes seraient ajoutés automagiquement par
l'hébergeur du site, au lieu d'être insérés tout simplement par le
script en question ?
les faits le montrent. sur la plupart des hébergements mutualisés la
primitive mail() est remapée et sous contrôle de l'hébergeur (pour
milles raisons commerciales (ne pas utiliser un compte minimaliste
comme un compte grand envoyeur de mails) comme légales (ne pas être
spammeur à son insu)).
pour les hébergements "gratuit dans le forfait" (free, orange, ...)
mail() est remapée dans 100% des cas ou est non disponible.

Sylvain.
Continuer la lecture sur narkive:
Loading...