Précédent   Forum du club des développeurs et IT Pro > PHP > Outils
Outils Forum d'entraide sur les outils pour développeurs PHP : EDI, installation, administration... Avant de poster : FAQ outils, toutes les FAQ PHP et les comparatifs
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 20/09/2007, 12h07   #1
iansolo
Invité de passage
 
Inscription : septembre 2007
Messages : 2
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 2
Points : 0
Points : 0
Par défaut [Configuration] sendmail_path et sender

Bonjour à tous,

J'ai un souci avec l'envoi des emails en php via la fonction mail qui elle-même utilise sendmail.

Les serveur en question est un RedHat Enterprise 5, la fonction mail est utilisée depuis un apache qui utilise une queue locale et la fonction sendmail. Aucun souci de sécurité, les emails passent très bien en ligne de commande, même sur les adresses externes.

Maintenant, pratiquement tous les systèmes email font un reverse lookup pour vérifier que la provenance de l'email est valide, et c'est là que j'ai un problème.

Avec la fonction mail, je n'arrive pas à spécifier un expéditeur depuis le code php en utilisant par exemple ini_set avec sendmail_from. Pour éviter que l'envoi d'email se fasse avec un sender autre que user@monserveur.mondomaine.com (et vu que cette adresse est inconnue, elle est rejetée), j'ai carrément spécifié dans /etc/php.ini, l'option -f avec une adresse email valide dans le paramètre "sendmail_path".

Néanmoins, cette méthode n'est pas élégante car le développeur n'a pas moyen de la changer dans le code php... c'est à l'administrateur système (donc moi) de la setter.

Est-ce que quelqu'un a une idée sur comment on peut utiliser cette fonction avec un sender défini dans le php ? Spécifier le sender dans les headers ne change rien au problème.

Merci d'avance.
iansolo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2007, 12h21   #2
chaced
Membre confirmé
 
Inscription : janvier 2004
Messages : 242
Détails du profil
Informations forums :
Inscription : janvier 2004
Messages : 242
Points : 242
Points : 242
normal, il faut le spécifier a la fonction mail, pas a la ligne de commande sendmail -t -i...
chaced est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2007, 14h04   #3
iansolo
Invité de passage
 
Inscription : septembre 2007
Messages : 2
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 2
Points : 0
Points : 0
Citation:
Envoyé par chaced Voir le message
normal, il faut le spécifier a la fonction mail, pas a la ligne de commande sendmail -t -i...
Tu peux préciser STP ?
iansolo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2010, 19h17   #4
KillKenny
Invité de passage
 
Kenny Kill
Inscription : janvier 2010
Messages : 1
Détails du profil
Informations personnelles :
Nom : Kenny Kill

Informations forums :
Inscription : janvier 2010
Messages : 1
Points : 3
Points : 3
Salut.

Je déterre ce post, mais je pense que cela pourra servir à d'autres.
Le but du jeu est de spécifier proprement l'adresse mail de l'expéditeur.

Tout d'abord, il faut écrire le header du mail.
Code :
$headers = "Content-type: text/\r\nFrom: " . $mail_expediteur . "\r\n";
Mais cela ne suffit pas. Deux solutions.

- Sous windows
La fonction mail() utilise le paramètre sendmail_from du php.ini.
Dans ce cas, on peut le changer dynamiquement via le ini_set() :
Code :
1
2
3
 
ini_set("sendmail_from", $mail_expediteur);
mail($mail_destinataire, $sujet_du_mail, $corps_du_mail, $headers);

- Sous linux
Dans ce cas, la fonction mail() utilise le paramètre sendmail_path, qui localise le programme sendmail installé sur la machine.
On peut lui spécifier l'expediteur dans le php.ini de la manière suivante :
Code :
sendmail_path = /usr/sbin/sendmail -t -i -f expediteur@toto.fr
Malheureusement pour nous, ce paramètre ne peut être changé dynamiquement avec un ini_set() (sendmail_path est PHP_INI_SYSTEM).
Du coup, on est obligé de faire autrement. Heureusement, la fonction mail() peut accepter un 5ème paramètre, passé en ligne de commande à sendmail cf. la doc.

Ce qui donne :
Code :
mail($destinataire, $sujet, $corps, $headers, "-f".$mail_expediteur);
Et voilà. Avec ça, on est capable de spécifier proprement l'adresse de l'expéditeur et d'éviter les filtres antispam.
KillKenny est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 14/11/2012, 19h59   #5
HDready
Invité de passage
 
Homme Grégory
Webdesigner
Inscription : novembre 2012
Messages : 1
Détails du profil
Informations personnelles :
Nom : Homme Grégory
Localisation : France

Informations professionnelles :
Activité : Webdesigner

Informations forums :
Inscription : novembre 2012
Messages : 1
Points : 1
Points : 1
Bonjour,
je déterre également ce sujet car c'est exactement ma problématique.
J'ai le sendmail_path configuré dans le php.ini pour le site en question.
Mais pour un sous-domaine, l'adresse du sender doit être différente. J'essaie donc de mettre la bonne adresse dans le 5eme paramètre de mail, mais la fonction s’arrête de fonctionner :/
J'ai regardé les logs d'erreur, mais il n'y a rien par rapport à ce problème

Code :
mail($to,$subject,$message,$header,"-f".$from);
J'ai essayé aussi le
Code :
ini_set("sendmail_from", $from);
mais ça ne marche pas non plus (au cas où, on sait jamais…)

Bref, c'est la galère :/

PHP 5.3.6

Merci à tous
HDready est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 22h09.


 
 
 
 
Partenaires

Hébergement Web