Probleme avec les mails sous linux

Fermé
vencegak Messages postés 56 Date d'inscription vendredi 18 juillet 2008 Statut Membre Dernière intervention 27 février 2009 - 29 sept. 2008 à 12:15
[Dal] Messages postés 6194 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 11 octobre 2024 - 1 oct. 2008 à 13:06
Bonjour,
je viens de mettre en place un serveur web sous fedora , tout se passe bien , sauf que j'ai un formulaire à gerer , c'est à dire, les infos de mon formulaire sont destinées à ma boite mail,
sous windows, j'arrivais à recevoir ces données, depuis que je suis passé sur fedora, plus de reception ,
j'ai bien configuré mon client évolution avec les adresses des POP et smtp de mon fai, j'arrive à envoyer et recevoir des mails de mon client sous evolution( de ma boite).
donner moi une idée de ce qu'il peut en être s'il vous plais , ça fait 10 jours que j'y suis.
il se pourrait que ça soit un parametre à configurer dans le php.
Merci de votre apport
A voir également:

19 réponses

[Dal] Messages postés 6194 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 11 octobre 2024 1 092
29 sept. 2008 à 14:31
Salut,

1.

Si tu utilises la fonction "mail" de Php et que l'adresse de destination est une adresse externe, tu dois installer un serveur smtp sur ta machine, qui envoie lui-même les e-mails non destinés aux utilisateur locaux vers l'extérieur, ou qui relaye les e-mails au serveur smtp de ton FAI.

Sur toute distribution Linux, tu as un agent de transport de messages (MTA) qui fonctionne (Sendmail, Postfix, Qmail, etc.,...), normalement, et qui assure, au moins l'acheminement des e-mails d'un utilisateur local à un autre. La configuration nécessaire pour l'envoi vers l'extérieur dépend, bien sûr, du MTA utilisé.

2.

Si tu ne veux pas de casser la tête, et que tu as la maitrise de ton serveur, une solution pourrait consister à ce que l'utilisateur sous lequel tourne ton serveur Web envoie à un autre utilisateur local, sur la même machine, l'e-mail au lieu d'envoyer à une adresse e-mail externe.

Par exemple, ton hôte est monserveur.tld, et tu as un utilisateur dénommé "vence", tu peux envoyer l'e-mail à vence@monserveur.tld, et configurer Evolution pour récupérer les mails locaux de "vence".

3.

Enfin, si tu tiens à envoyer à une adresse externe et que tu ne veux pas de lancer dans la configuration du MTA, tu peux utiliser Pear pour envoyer ton e-mail avec PHP (le module Mail.php de PEAR), qui est autonome, et qui te permet de spécifier directement le serveur smtp de ton FAI dans ton code Php.

Il suffit d'installer PEAR et ce module, et de l'utiliser comme indiqué dans la documentation. On en parle là :

http://www.commentcamarche.net/forum/affich 1969090 configurer php pour envoi de mail


Dal
0
vencegak Messages postés 56 Date d'inscription vendredi 18 juillet 2008 Statut Membre Dernière intervention 27 février 2009
29 sept. 2008 à 15:19
Merci , Dal pour tes reperes, j'ai opté pour la configuration du pear,
je l'ai installé , tout s'est bien passé, seulement je voudrais savoir ou se trouve le chemin d'acces par defaut du fichier de config mail.php que je dois modifier.
en plus il n ya que la fonction mail.php qu'il faudrai ensuite appelée dans le fichier php du formulaire?
0
vencegak Messages postés 56 Date d'inscription vendredi 18 juillet 2008 Statut Membre Dernière intervention 27 février 2009
29 sept. 2008 à 15:46
un detail:
voici mon fichier php qui traite de mon formulaire, l'equivalent de mail.php
pourriez vous me guidez de façon precise vers la bonne configuration de pear, sachant qu'il vient d'être installeé.
MErci d'avance,
Pour resumer, l'envoie du formulaire à l'adresse indiquée ne se fait pas, par contre mon adresse créée sous evolution est bien valide et j'arrive à envoyer recevoir des mails .

<?php

$msg1 .="1.civilite:\t".$_POST['civilite']."\n";
$msg1 .="2.Nom:\t".$_POST['Nom']."\n";
$msg1 .="3.Prenom:\t".$_POST['Prenom']."\n";
$msg1 .="4.Adresse:\t".$_POST['Adresse']."\n";
$msg1 .="5.Ville:\t".$_POST['Ville']."\n";
$msg1 .="6.CP:\t".$_POST['CP']."\n";
$msg1 .="7.Pays:\t".$_POST['Pays']."\n";
$msg1 .="8.Tel:\t".$_POST['Tel']."\n";
$msg1 .="9.Mobile:\t".$_POST['Mobile']."\n";
$msg1 .="10.Email:\t".$_POST['Email']."\n";



$recipient = "exemple@nomdudomaine";
$subject = "Message";
$mail .=$_POST['Email']."\n";
$mailheaders = "From: $mail <> \n" ;
$mailheaders .= "Reply-To: ".$_POST['Email']."\n\n";


ini_set("SMTP","@ip_du_serveur_smtp_du_fai");
ini_set("sendmail_from","$Email");

( mail($recipient, $subject, stripcslashes($msg1),
$mailheaders)) ;

$nam .=$_POST['Nom']."\n";
$prename .=$_POST['Prenom']."\n";
$civil .=$_POST['civilite']."\n";


echo " <h2 align=center><font color=green> Merci,le parrainage de <font
color=green> $civil $nam $prename </font> a bien été pris en compte!
</font></h2>" ;
echo " <p align=center>";
echo " Le Plaisir de Partager son bonheur ! <br/>
Nous prendrons contact avec la personne parrainée afin de lui faire
bénéficier des privilèges de notre societé <br/> " ;

?>
0
vencegak Messages postés 56 Date d'inscription vendredi 18 juillet 2008 Statut Membre Dernière intervention 27 février 2009
30 sept. 2008 à 11:49
je suis toujours bloqué avec l'option mail
j'ai mon serveur sous fedora et je n'arrive pas à recevoir les mails qui viennent d'un des formulaires de mon site.
sur windows, tout marchais bien.
les paramettres de mon fai sont bien renseignés , la preuve en est que je vient de configurer mon clien t de messagerie sur le serveur web et j'envoie /reçois des mails.
Merci aux hommes poussés de me porter votre aide.
à bientot,
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
[Dal] Messages postés 6194 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 11 octobre 2024 1 092
30 sept. 2008 à 12:42
Salut Vence,

As-tu lu ce lien que j'ai pris la peine de t'indiquer ?

http://www.commentcamarche.net/forum/affich 1969090 configurer php pour envoi de mail
en particulier ceci :
http://www.commentcamarche.net/forum/affich 1969090 configurer php pour envoi de mail#15

Tu as un exemple fonctionnel de code utilisant le module Pear Mail.php, adapte le à tes besoins.

je l'ai installé , tout s'est bien passé, seulement je voudrais savoir ou se trouve le chemin d'acces par defaut du fichier de config mail.php que je dois modifier.

Tu ne dois pas modifier le module Mail.php et celui-ci n'a pas de fichier de configuration associé.

Si tu l'as installé avec Pear, tu dois :

- appeler le module dans ton code avec une directive "include" ou 'include_once"
- modifier ton code pour utiliser l'objet "Mail"

Le serveur SMTP de ton FAI et le port 25, sont spécifiés dans la variable passée lors de la déclaration de l'objet Mail (dans l'exemple donné $mail_object =& Mail::factory('smtp', $params); avec $params initialisé comme cela : $params["host"] = "smtp.fai.net"; $params["port"] = "25";).

Les indications pour faire tout cela figurent dans l'exemple. Lis le. Si tu ne le comprends pas, poste des questions.

les paramettres de mon fai sont bien renseignés , la preuve en est que je vient de configurer mon clien t de messagerie sur le serveur web et j'envoie /reçois des mails.

Celà n'a rien à voir et cela ne "prouve" rien.

Utiliser ini_set pour donner une valeur à SMTP dans ton php.ini ne sert à rien sauf pour Php pour Windows. La fonction php "mail" sous Linux utilise le MTA du système, comme je te l'ai dit dans mon message ci-dessus.

Utilise donc l'objet "Mail" de Pear, selon l'exemple donné, mets le contenu de tes variables dans des variables compatibles avec la déclaration de l'objet "Mail" et utilise la méthode "send" de l'objet pour envoyer l'e-mail.

Merci aux hommes poussés de me porter votre aide

C'est quoi un "homme poussé" ? Il y a des femmes aussi sur le forum.

Modifie ton code. Si cela ne fonctionne pas, poste ton code modifié si tu as besoin d'aide.

Allez, un petit effort :-D


Dal
0
vencegak Messages postés 56 Date d'inscription vendredi 18 juillet 2008 Statut Membre Dernière intervention 27 février 2009
30 sept. 2008 à 16:57
salut Dal, merci pour ton apport, j'ai exploité ton exemple seulement j'ai toujours rien en retour,
je te revoie mon code.
merci pour ta remarque , je suis bien conscient qu'il ya des hommes et des femmes , aussi ça dû être une erreur de ma part, je voulais specier le H pour englober homme et femme, merci et notre code

<?php
include("Mail.php");

$msg .="1.Nom:\t".$_POST['Nom']."\n";
$msg .="2.Prenom:\t".$_POST['Prenom']."\n";
$msg .="3.Adresse:\t".$_POST['Adresse']."\n";
$msg .="4.Ville:\t".$_POST['Ville']."\n";
$msg .="5.CP:\t".$_POST['CP']."\n";
$msg .="6.Pays:\t".$_POST['Pays']."\n";
$msg .="7.Tel:\t".$_POST['Tel']."\n";
$msg .="8.Mobile:\t".$_POST['Mobile']."\n";
$msg .="9.Email:\t".$_POST['Email']."\n";
$msg .="10.suggestions:\t".$_POST['suggestions']."\n";

$recipient = "@ipde_desstination";

$headers["subject"] = "Suggestions";
$headers["From"] =$_POST['Email']."\n";
$headers["To"] = "@ipdedestination";



$params["host"] = "smtp.de_mon_fai";
$params["port"] = "25";

$mail_object = & Mail::factory('smtp',$params);
if (PEAR::isError(mail_object))
{
print "<p> Construction de l'objet 'Mail' ratée car ";
die($mail_object->getMessage());
}
else
{
print "<p> objet 'Mail' construit !";
}
$send_result = $mail_object->send($recipient,
$headers,stripcslashes($msg));

if (PEAR::isError($send_result))
{
print "<p>vos suggestions n'ont pas été transmises, veuillez réessayer
plus tard ";
die($send_result->getMessage());
}
else
{

$nam .=$_POST['Nom']."\n";
$prename .=$_POST['Prenom']."\n";


echo " <h2 align=center><font color=green> Merci $prename $nam
</font></h2>" ;
echo " <p align=center>";
echo " Vos suggestions ont bien été prises en compte ! <br/>
Nous nous engageons auprès de vous , afin de vous offrir les meilleurs
services de notre espace <br/> " ;

}

?>
0
[Dal] Messages postés 6194 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 11 octobre 2024 1 092
30 sept. 2008 à 17:06
Salut,

As-tu un message à l'écran ? Une erreur à l'écran ? Une erreur dans les logs de ton serveur http ?


Dal
0
vencegak Messages postés 56 Date d'inscription vendredi 18 juillet 2008 Statut Membre Dernière intervention 27 février 2009
30 sept. 2008 à 17:14
je n'ai pas eu de message, juste une page page , meme pas de page de confirmation
0
vencegak Messages postés 56 Date d'inscription vendredi 18 juillet 2008 Statut Membre Dernière intervention 27 février 2009
30 sept. 2008 à 17:16
j'ai redemarré le le deamon httpd , pas de message d'erreur , mais pas d'acheminement de message,
0
[Dal] Messages postés 6194 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 11 octobre 2024 1 092
30 sept. 2008 à 17:23
Salut

juste une page page

Si tu veux dire "juste une page blanche", alors il est probable qu'il y a une erreur dans ton code Php. Une erreur de syntaxe, ou alors tu n'as pas installé le module Mail.php et l'erreur provient de l'impossibilité d'exécuter le "include".

Les erreurs vont dans les logs (vois dans /var/log/) si tu as "error_reporting = E_ALL" et "log_errors = On" dans ton php.ini.

Tu peux aussi les afficher à l'écran en mettant temporairement "display_errors = On" dans ton php.ini, le temps de déboguer ton script. Si tu fais cela, remets le à "Off" une fois le débogage terminé, c'est préférable pour des raisons de sécurité que tes visiteurs ne voient pas les erreurs générées sur le serveur.

Relance le démon http après avoir fait d'éventuels changements à php.ini


Dal
0
vencegak Messages postés 56 Date d'inscription vendredi 18 juillet 2008 Statut Membre Dernière intervention 27 février 2009
30 sept. 2008 à 17:27
j'ai installé pear vi yum, je ne pensais pas qu'il iait d'autres modules à installer , sinon comment le faire alors
Merci Dal pour ton apport , je pense qu'on est plus loin de l'issu de sortie
0
[Dal] Messages postés 6194 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 11 octobre 2024 1 092
30 sept. 2008 à 17:37
Si le module Mail de Pear n'est pas sur ton système, les logs devraient afficher l'erreur relative à l'instruction include. As-tu vérifié cela ?

Sinon, pour l'installation d'un module Pear, le moyen le plus facile est indiqué dans la documentation là :

http://pear.php.net/manual/fr/guide.users.commandline.installing.php

Dans ses versions récentes, Pear est doté d'un installateur en ligne de commande.

En ligne de commande, sous root, tapes :

pear install Mail

La liste des modules est là : https://pear.php.net/packages.php

Le module Mail est là : https://pear.php.net/package/Mail (avec sa documentation)


Dal
0
vencegak Messages postés 56 Date d'inscription vendredi 18 juillet 2008 Statut Membre Dernière intervention 27 février 2009
30 sept. 2008 à 17:40
j'ai afficher les log en decommentant ce qui est specifier ci dessus, rien de s'affiche comme message d'erreur.
0
vencegak Messages postés 56 Date d'inscription vendredi 18 juillet 2008 Statut Membre Dernière intervention 27 février 2009
30 sept. 2008 à 17:46
je viens d'installer le module Mail.php , je viens de redemarrer les services httpd ,
j'ai le message de confirmation comme quoi le mail est construit, seulement toujours rien dans ma boite.
Que Faire
Merci Dal pour ton soutien
0
[Dal] Messages postés 6194 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 11 octobre 2024 1 092
30 sept. 2008 à 18:22
Si ton script affiche "objet 'Mail' construit !" et rien après, on peut en déduire !

- que tu as installé le module Mail.php et qu'il fonctionne pour l'instantiation de l'objet Mail (félicitations !)
- qu'il y a une erreur affectant ton code Php après cette instruction, à partir de $send_result = $mail_object->send (...)
- que tu n'as pas correctement spécifié l'affichage des erreurs générées par le serveur à l'écran

C'est étrange qu'aucun message ne s'affiche, car le script est conçu pour afficher des messages que la méthode "send" soit fructueuse ou pas, ce qui devrait capturer les erreurs générées par l'objet Mail, et si "display_errors = On" dans ton php.ini, ce qui devrait afficher à l'écran les erreurs générées par Php.


Dal
0
vencegak Messages postés 56 Date d'inscription vendredi 18 juillet 2008 Statut Membre Dernière intervention 27 février 2009
30 sept. 2008 à 21:49
Merci pour ta réactivité,
je prends en compte des remarques et te tiens au courant de la suite demain de bonne heure, car je me suis deplacer pour quelques heures.
Merci bien et à demain matin.
0
vencegak Messages postés 56 Date d'inscription vendredi 18 juillet 2008 Statut Membre Dernière intervention 27 février 2009
1 oct. 2008 à 11:02
bonjour
j'ai bien mis à profit ton dernier message , en activant les messages d'erreur dans le php.ini, j'ai bien revu mon code, je ne trouve rien qui puisse poser souci.
à vous de m'orienter car je suis sans mot pour l'instant.
Merci bien
0
vencegak Messages postés 56 Date d'inscription vendredi 18 juillet 2008 Statut Membre Dernière intervention 27 février 2009
1 oct. 2008 à 11:17
en plus je suis persuadé que le mail n'est pas envoyé , car j'ai tenté d'intervertir expressement les instructions suivantes et là je n'ai plus de message de confirmation.

{
$send_result = $mail_object->send($recipient,
$headers,stripcslashes($msg));

print "<p> objet 'Mail' construit !";
}

en plus voici le message d'erreur que j'ai dans mon fichier mailog:

1Oct 1 04:20:15 localhost sendmail[5836]: NOQUEUE:
SYSERR(root): /etc/mail/submit.cf: line 554: fileclass: cannot open
'/etc/mail/trusted-users': World writable directory
0
[Dal] Messages postés 6194 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 11 octobre 2024 1 092
1 oct. 2008 à 13:06
Salut vencegak,

1.

L'erreur

"1Oct 1 04:20:15 localhost sendmail[5836]: NOQUEUE:
SYSERR(root): /etc/mail/submit.cf: line 554: fileclass: cannot open
'/etc/mail/trusted-users': World writable directory "

Est une erreur générée par sendmail, qui est visiblement mal configuré (problème de permissions sur '/etc/mail/trusted-users').

Elle n'est cependant pas liée à l'exécution du script utilisant module Pear Mail.php, car le code que tu utilises instancie la classe Mail avec le back-end "smtp" en non "sendmail", aussi les messages ne passent pas par "sendmail", que tu n'as pas bien configuré, mails vont directement au serveur smtp désigné. C'est expliqué là :

https://pear.php.net/manual/en/package.mail.mail.intro.php

2.

Mail.php se comporte comme ton client Evolution. Il ne passe pas par sendmail pour l'envoi... une question.. : ton client Evolution est sur la même machine que ton script ?

Sinon, teste que depuis ton serveur tu peux bien atteindre le port 25 de ton FAI et qu'un dialogue normal peut avoir lieu avec le serveur SMTP :

telnet smtp.de_mon_fai 25
ehlo mondomaine.com
MAIL FROM:moi@mondomaine.com
RCPT TO:destinataire@domaine.com
DATA
Subject: test
Ceci est un test
.


La dernière ligne est juste un point et <Entrée> à la suite, cela termine l'e-mail.

Si l'e-mail arrive bien, cela signifie :

- que tu n'as pas de firewall bloquant en sortie le port 25 (cela serait vraiment étonnant)
- que le serveur smtp ne nécessite aucune authentification particulière et qu'une transaction standard fonctionne

Si le serveur SMTP de ton FAI nécessite une authentification tu dois ajouter des paramètres à $params lors de la création de l'objet. Le détail des paramètres existants et leur usage figure là :

https://pear.php.net/manual/en/package.mail.mail.factory.php

3.

S'agissant de ton script, si ta syntaxe est correcte, la requête "send" devrait te retourner un message d'erreur retourné par "die($send_result->getMessage())" et visible dans les logs

Si ta syntaxe est incorrecte, c'est Php qui devrait retourner une erreur, visible dans les logs aussi.

Regarde bien tes logs, il doit y avoir autre chose, tu ne regardes surement pas au bon endroit.

Rajoute aussi :

$params["debug"] = "true";

dans ta déclaration, ce qui pourrait retourner d'avantage d'informations.


Dal
0