Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 5 sur 5
  1. #1
    Invité de passage
    Inscrit en
    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.

  2. #2
    Membre confirmé
    Inscrit en
    janvier 2004
    Messages
    242
    Détails du profil
    Informations forums :
    Inscription : janvier 2004
    Messages : 242
    Points : 242
    Points
    242

    Par défaut

    normal, il faut le spécifier a la fonction mail, pas a la ligne de commande sendmail -t -i...

  3. #3
    Invité de passage
    Inscrit en
    septembre 2007
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : septembre 2007
    Messages : 2
    Points : 0
    Points
    0

    Par défaut

    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 ?

  4. #4
    Invité de passage
    Profil pro Kenny Kill
    Inscrit en
    janvier 2010
    Messages
    1
    Détails du profil
    Informations personnelles :
    Nom : Kenny Kill

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

    Par défaut

    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.

  5. #5
    Invité de passage
    Homme Profil pro Grégory
    Webdesigner
    Inscrit en
    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

    Par défaut

    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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •