Discussion:
fonction mail() sous linux/apache ==> sendMail renvoie une erreur sur le From
(trop ancien pour répondre)
sloubi
2009-03-09 21:28:35 UTC
Permalink
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='***@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 ***@emailvalide.fr ***@domaine.fr
....), ca marche, donc, sendmail fonctionne.

J'avoue être perdu :-/

Merci d'avance de votre aide.

sloubi
Pascal PONCET
2009-03-09 22:07:45 UTC
Permalink
Post by sloubi
Or, lorsque j'envoie un mail avec la fonction mail(), j'ai dans la log
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 :
"-***@example.com" (soit "-f" + adresse, sans espaces).

Cordialement,
Pascal
Olivier Miakinen
2009-03-10 09:10:44 UTC
Permalink
Post by Pascal PONCET
Je ne suis pas un as de linux, mais je crois qu'il faut passer le
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.>
Aurelgadjo
2009-03-10 22:38:06 UTC
Permalink
Post by sloubi
$headerMsg = "From: $nom <$email>\r\n";
$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-***@toto (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)

Loading...