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

fonction mail() sous linux/apache ==> sendMail renvoie une erreur sur le From

3 réponses
Avatar
sloubi
Bonjour à tous,
J'utilise la fonction (php dernière version) mail() sur un serveur linux
hébergé chez moi.

C'est donc sendmail qui est utilisé (cf php.ini).

Or, lorsque j'envoie un mail avec la fonction mail(), j'ai dans la log
sendmail:
Sender address rejected: Domain not found (in reply to MAIL FROM command)
En effet, il me met dans "from" le user Linux qui fait tourner apache.
Et pourtant, je mets bien le from dans mon header à l'appel de mail():
-----------------------------------------------------------------
$zeemail='le.destinataire@domaine.fr';
$msgComplet = $message;
$msgComplet .= "\nNom: $nom\n";
$msgComplet .= "Email : $email\n";
$headerMsg = "From: $nom <$email>\r\n";
$headerMsg .= "Reply-To: $email\r\n";
$mail_OK=mail("$zeemail", "-- Message du site
--", $msgComplet, $headerMsg);
-----------------------------------------------------------------

Pour info: Quand j'envoie un mail en ligne de commande avec la fonction
mail (mailx -r mon.adresse@emailvalide.fr le.destinataire@domaine.fr
....), ca marche, donc, sendmail fonctionne.

J'avoue être perdu :-/

Merci d'avance de votre aide.

sloubi

3 réponses

Avatar
Pascal PONCET
sloubi a écrit :
Or, lorsque j'envoie un mail avec la fonction mail(), j'ai dans la log
sendmail:
Sender address rejected: Domain not found (in reply to MAIL FROM command)



Bonsoir,

Je ne suis pas un as de linux, mais je crois qu'il faut passer le
cinquième paramètre de la fonction mail(), sous la forme :
"" (soit "-f" + adresse, sans espaces).

Cordialement,
Pascal
Avatar
Olivier Miakinen
Le 09/03/2009 23:07, Pascal PONCET répondait à sloubi :

Je ne suis pas un as de linux, mais je crois qu'il faut passer le
cinquième paramètre de la fonction mail(), sous la forme :
"" (soit "-f" + adresse, sans espaces).



C'est en tout cas ce qui est expliqué dans la doc :

<cit. http://fr2.php.net/manual/fr/function.mail.php>
additional_parameters (optionnel)

Le paramètre additional_parameters peut être utilisé pour passer des
paramètres additionnels au programme configuré à être utilisé pour
envoyer les mails en utilisant le paramètre de configuration
sendmail_path. Par exemple, ceci peut être utilisé pour définir
l'enveloppe de l'adresse de l'expéditeur lors de l'utilisation de
sendmail avec l'option -f.

L'utilisateur sous lequel tourne le serveur web doit être ajouté en
tant qu'utilisateur de confiance dans la configuration de sendmail afin
que l'en-tête X-Warning ne soit pas ajouté au message lorsque
l'enveloppe de l'expéditeur (-f) est défini en utilisant cette méthode.
Pour les utilisateurs de sendmail, ce fichier est /etc/mail/trusted-users.
</cit.>
Avatar
Aurelgadjo
sloubi a écrit :
$headerMsg = "From: $nom <$email>rn";



$email est bien definie ?
Sinon, dans la configuration de sendmail, en nom d'hote vous devez avoir
le nom de votre machine. Si elle s'appelle toto, les mails seront
envoyés avec, *par défaut*, l'adresse (www-data étant
l'utilisateur de votre serveur web).
Il faut le changer pour avoir un domaine (sous domaine, ou utilisez le
reverse de l'ip de votre connexion) valide.
ça permet d'avoir un from valide sans le specifier manuellement (sinon
il y a l'option d'utiliser dans la config du vhost apache
php_admin_value sendmail_path et de passer le paramétre -F, cf les docs
respectives d'apache et sendmail)