Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Ajout d'en tetes

10 réponses
Avatar
Aurelgadjo
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. aurelgadjo@gmail.com pour m'ecrire

10 réponses

Avatar
Olivier Miakinen
Bonjour,

Le 11/05/2009 21:46, Aurelgadjo a écrit :

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.

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, ...) ?

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
Avatar
Aurelgadjo
Olivier Miakinen a écrit :
Bonjour,

Le 11/05/2009 21:46, Aurelgadjo a écrit :
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

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)


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.

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

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


Cordialement,


Avatar
Olivier Miakinen
Le 12/05/2009 20:47, Aurelgadjo a écrit :

[...] 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



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. ;-)
Avatar
Aurelgadjo
Olivier Miakinen a écrit :
Le 12/05/2009 20:47, Aurelgadjo a écrit :
[...] 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



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 ?)

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 :)

[...] 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. pour m'ecrire
Avatar
Olivier Miakinen
Le 12/05/2009 23:02, Aurelgadjo a écrit :

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.

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.

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
Avatar
Sylvain SF
Olivier Miakinen a écrit :

[...] 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



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.
Avatar
Aurelgadjo
Olivier Miakinen a écrit :
Le 12/05/2009 23:02, Aurelgadjo a écrit :
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) ?

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.

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. pour m'ecrire
Avatar
Olivier Miakinen
Le 14/05/2009 00:25, Aurelgadjo a écrit :

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.

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.

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.

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.
Avatar
Aurelgadjo
Olivier Miakinen a écrit :
Le 14/05/2009 00:25, Aurelgadjo a écrit :
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

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")

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. pour m'ecrire
Avatar
John GALLET
Bonjour/soir,

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) :




[...]
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 "

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