Drupal en localhost : comment bien configurer pour obtenir les mails au début de l'application?

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

J'ai installé Drupal sous Linux en local sur ma machine avec Apache2.
Pour le fonctionnement :je vois l'application et une requète SQL montre sur la base drupal montre que la table users contient l'utilisateur que j'ai déclaré avec un mot de passe cryté par la fonction PASSWORD de MySQL. La gestion des mails se fait en local en utilisant postfix.
L'envoi du mail à l'utilisateur local se passe mal : postfix voit bien passer un mail mais sans origine (le From des gestionnaires de mail)
et sans destinataire (il voit nobody) : Le mail n'arrive donc.
Il doit donc y a avoir des problèmes de configuration.
Voici des éléments de config.
Nom de machine (hostname) : nounours
Nom du domaine : home
Compte Linux (user) : faites_des_maths

Mysql : déclaration d'un utilisateur faites_des_maths sur le host : localhost.

Php.ini : un essai avec sendmail_from = faites_des_maths@nounours.home
et sendmail_path =/usr/sbin/sendmail.postfix

un autre avec sendmail_from = faites_des_maths@nounours.home
et sendmail_path =/usr/sbin/sendmail
(les deux donnent le même résultat)

http.conf : ServerAdmin faites_des_maths@nounours.home
ServerName nounours.home:80
Listen 127.0.0.1:80
commentaire : 127.0.0.1 est l'adresse IP de localhost.

Voyez vous avec ces éléments quelquechose qui ne va pas?
y a t il d'autres config à faire (par exemple settings.php ou .htaccess)?

Dans un premier temps il faut être certains que ton serveur de mail soit opérationnel en envoyant un mail avec la commande mail. Si déjà tu n'arrive pas à envoyé un mail avec cette commande, drupal n'y arrivera pas. Une fois que cela est fait, normalement tu n'a rien d'autre à faire.

Je rebondis sur cette remarque pour poser ma question :
J'essaie d'installer Drupal sur online.fr. Tout fonctionne jusqu'à ce que j'envoie le premier mail d'ouverture de compte administrateur. Le mail n'arrive pas. L'erreur se situe au niveau d'un header invalide : "me@localhost.com". Dans le phpinfo du site, je trouve sendmail_from : me@localhost.com. Est-ce que l'erreur vient de là ? Comment modifier correctement ces paramètres pour que ça fonctionne en sachant que je n'ai pas accès au php.ini du serveur.
(mais peut-être que je comprends mal le problème...)
Merci d'avance,
Surfette

Merci pour l'info. Mais non... Message : ini_set() has been disabled for security reasons.

Je viens de tester la fonction mail() sur le serveur online.fr :
mail('moi@domaine.org', 'Envoi test', $message);
et ça fonctionne très bien.

Qu'est qui pourrait empêcher l'envoi d'un message via drupal par conséquent?

Merci d'avance

Surfette

Moi en une soirée j'ai essayé d'installer : Joomla, Cleardot puis Drupal sur mon hébergement online et tous ont foirés, j'ai cherché sur le net et souvent la réponse c'est online.net ou free.fr : pas facile ! Solution simple : change d'hébergeur..

Super donc pour l'instant je n'ai rien mis.

Si tu trouves et que ça fonctionne bien, merci de le dire ici.

Je suis d'accord avec toi. L'installation chez cet hébergeur n'est pas simple.

Toutefois, j'aimerais vraiment comprendre pourquoi, lorsque je fais un test simple avec la fonction mail(), à partir d'un page php placée sur le serveur online.fr, je reçois le message, et que, lorsque j'utilise par exemple l'interface "contact" de drupal, je ne reçois rien.

Est-ce que quelqu'un connait suffisamment les fonctions mail de drupal pour m'expliquer à quel niveau ça pourrait bloquer ?

Merci d'avance,

Surfette

Bin perso je vois pas trop le probleme, car si tu regardes la fonction qui envoit le mail user_mail, il y a juste ca :

<?php
   
return mail(
     
$mail,
     
mime_header_encode($subject),
     
str_replace("\r", '', $message),
     
"MIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8; format=flowed\nContent-transfer-encoding: 8Bit\n" . $header
   
);
?>

Donc drupal utilise la fonction standard de mail php.
Perso j'ai juste change str_replace("\r", '', $message), par str_replace("\n", "\r\n", $message), pour que ca marche sous eaysphp / win2000.

Essaye peut etre qqch, change cette fonction par la meme que tu viens de tester et qui fonctionne. Y a ptet un truc qui embete online au niveau du formatage du corps du texte ou des mimes...

Merci pour ta réponse.
Ca fonctionne lorsque je mets en commentaire la ligne MIME... Est-ce que c'est conseillé ?

PS : En fait apparemment il y a une erreur sur un header qui l'appelle Errors-to: . D'où sort-il ? Peut-on faire un test en supprimant juste ce header sans mettre en commentaire toute la ligne ?

Apres qques recherches, a priori ce header "Errors-to" pourrait etre source de problemes voir cette doc :

Under V8 sendmail the Errors-To: header is ignored unless the UseErrorsTo (l) option (see Section 34.8.74) is true. It does this because the Errors-To: header violates RFC1123. Errors-To: was needed only to take the place of the envelope sender in the days when most UNIX delivery agents couldn't differentiate between header and envelope.

Donc peut etre que online restreint l'ecriture des headers et n'aime pas celui la.
A mon avis il n'a pas bcp d'importance, donc enleve le du module user.