Bonjour,

Je suis actuellement en stage pour construire un site web, et je cherche a activer la fonction mail() sur mon ordi et en localhost.

Je sais que c'est un problème de configuration et qu'il (ne) faut (pas) modifier le fichier php.ini.

A l'installation d'apache sur mon ordinateur, j'ai créé un fichier monsite.conf dans /etc/httpd/conf.d

voici ce qu'il contient :
# activation des hôtes virtuels
NameVirtualHost *:80

# Hôte virtuel par défaut
<VirtualHost *:80>

        # Activation des sites utilisateurs : http://localhost/~nomutilisateur
        UserDir public_html
        <Directory /home/*/public_html>
                AllowOverride all
                Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
        </Directory>

        # Activation de l'adresse : http://localhost/server-status
        <Location /server-status>
                SetHandler server-status
                Order deny,allow
                Deny from all
                Allow from 127.0.0.1
        </Location>

        # Activation de l'adresse : http:// localhost/server-info
        <Location /server-info>
                SetHandler server-info
                Order deny,allow
                Deny from all
                Allow from 127.0.0.1
        </Location>
</VirtualHost>

ScriptAlias /cgi-bin/ "/home/*/public_html/cgi-bin/"

#
# "/var/www/cgi-bin" should be changed to whatever your ScriptAliased
# CGI directory exists, if you have that configured.
#
UserDir public_html
<Directory "/home/*/public_html/cgi-bin">
AllowOverride None
    Options None
    Order allow,deny
    Allow from all
</Directory>
Que dois-je rajouter pour pouvoir envoyer des mail via la fonction mail()?
et sachant que je suis en localhost, je ne suis pas encore sur un serveur.
Bonjour,

il te faut un server mail : postfix est le + simple à installer et configurer :
su -
yum install postfix
service postfix start
Même en localhost tu peux avoir un serveur smtp (postfix par exemple)i en te servant du smtp de ton FAI.

Paramétrer Postfix n'est pas très compliqué, et te permet en outre de router les mail Unix/Linux de ta machine vers des utilisateurs de ton FAI.


La maintenance de /etc/php.ini ou plutôt des /etc/php.dxxxx.ini correspond à la personnalisation que tu désires ssaie de créer ton propre fichier .ini et de créer une ligne SMTP = le_smtp_de_ton_fai pour voir.
Ok, j'ai installé Postfix et je l'ai lancé.

Pour la ligne smtp dans le php.ini, je veux bien mais à priori, la ligne SMTP, c'est uniquement pour Windows :
; For Win32 only.
SMTP = localhost
smtp_port = 25

; For Win32 only.
;sendmail_from = me@example.com

; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
sendmail_path = /usr/sbin/sendmail -t -i
ne dois-je pas plutôt modifier la ligne sendmail_path de cette manière?
; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
sendmail_path = /usr/sbin/sendmail.postfix
la ligne SMTP, c'est uniquement pour Windows :
Oui SMTP c'est pour windows. car sous Linux la fonction 'mail' de ph est censée utiliser la commande sendmail (celle définie avec sendmail_path), qui enverra bien les courriels si postfix (ou autre) est correctement paramétré sur ton localhost. Mais c'est dans postfix que tu pourras dire qu'en fait tu utilises le smtp de ton FAI.
Ok merci, il me reste plus qu'à configurer tout ça, sauf que je vais vite être perdu je crois...
Car je travail sur le lieu de mon stage, ce qui veut dire que mon PC est branché sur leur réseau, donc nom d'hôte, DNS,...

Ca va altérer quelque chose à ma configuration de postfix ou pas?
Tu peux très bien rester en localhost et utiliser postfix uniquement pour envoyer les courriels locaux (ceux de php notamment) sans faire une configuration complète (donc plus ou moins complexe) de Postfix.

J'ai un de mes PC en localhost, et ils utilisent le SMTP de mon FAI (pas de DNS, de nom d'hôte, ...).
Tu trouveras des exemples ICI ou bien par ici en français
Pour une config simple de Postfix, il y a 1 ou 2 lignes à modifier dans /etc/postfix/main.cf :
myorigin = tondomaine (celui ci doit exister pour que le server de tes destinataires accepte ton mail)
relayhost = le_smtp_de_ton_provider : permet de passer par le relay de ton FAI si tu n'as pas de nom de domaine
Voici ce que j'ai mis :

myorigin = neuf.fr
relayhost=smtp.neuf.fr

Ca ne fonctionne pas, j'ai pourtant configurer sendmail de cette façon :

sendmail=/sbin/usr/sendmail.postfix

Mais est-ce que le fait que je sois sur un réseau avec nom d'hôte, DNS, etc.... altère à ma configuration, car j'ai mis mon FAI de chez moi mais pas du lieu où je travail...
Il se peut qu'il y ait un filtrage de la part du firewall de ton lieu de travail qui refuse d'accéder à un autre smtp.

Quand à mettre le nom 'sendmail.postfix' je ne suis pas sûr que ce soit un bonne idée de mettre le nom de commande 'sendmail.postfix' car il existe des liens symboliques entre sendmail.postfix' pour résoudre les noms de commande. Et certaines commandes réagissent à leur nom d'appel différemment du nom réel.

sendmail_path = /usr/sbin/sendmail -t -i


Peux-tu regarder dans /var/log/maillog juste après l'envoi d'un message :

tail /var/log/maillog


Tu peux tester sendmail manuellement (en dehors de php), sous root :
sendmail -ti <<FIN
To:ton_adresse_destinataire
Subject: Essai
blablabla...
blablabla blablabla ...
FIN

Postes le résultat du sendmail direct et de la réception ou non du message avec le 'tail /var/log/maillog'.
voici ce que j'ai dans /var/log/maillog (il s'agit des dernières erreurs) :
Mar 17 18:06:17 molmodel5 postfix/smtp[22302]: 7C26733D98D: to=<gaelle.marquant@neuf.fr>, orig_to=<root@molmodel5.sa.u-picardie.fr>, relay=none, delay=617, delays=587/0.01/30/0, dsn=4.4.1, status=deferred (connect to smtp.neuf.fr[84.96.92.4]: Connection timed out)
Mar 17 18:06:17 molmodel5 postfix/smtp[22303]: 54DDC33D98F: to=<gaelle.marquant@neuf.fr>, orig_to=<root@molmodel5.sa.u-picardie.fr>, relay=none, delay=535, delays=505/0.01/30/0, dsn=4.4.1, status=deferred (connect to smtp.neuf.fr[84.96.92.4]: Connection timed out)
Mar 18 09:03:03 molmodel5 sendmail[3242]: NOQUEUE: SYSERR(duprad): can not chdir(/var/spool/mqueue/): Permission denied
Je comprend pas tout ...
Bonjour,
connect to smtp.neuf.fr[84.96.92.4]: Connection timed out
tu n'as pas accès en sortie vers ton relay Neuf.
As tu ouvert le port 25 en sortie sur ton routeur ou Box ?
@proxy
As tu ouvert le port 25 en sortie sur ton routeur ou Box ?

Je pense que gazelle essaie d'envoyer des courriels à partir d'un PC d'entreprise.

Le problème est aussi à rechercher dans le firewall d'entreprise :
Le réseau d'entreprise dispose-t-il d'un Proxy, firewall ...
Le réseau d'entreprise dispose-t-il d'un serveur smtp.
pmarion wrote:@proxy
As tu ouvert le port 25 en sortie sur ton routeur ou Box ?
Oui bien sur, d'ailleurs chez Free il est fermé par défaut !!!!
pmarion wrote:@proxy
As tu ouvert le port 25 en sortie sur ton routeur ou Box ?

Je pense que gazelle essaie d'envoyer des courriels à partir d'un PC d'entreprise.

Le problème est aussi à rechercher dans le firewall d'entreprise :
Le réseau d'entreprise dispose-t-il d'un Proxy, firewall ...
Le réseau d'entreprise dispose-t-il d'un serveur smtp.
merci pmarion, je savais pas comment vous l'expliquer mais voilà toutes ces infos là, je ne les connais pas, et là où je travail, ils ne savent pas quoi me répondre lorsque je pose des questions sur le serveur smtp par exemple...
Ok, donc il faut que tu utilises le relay de ton entreprise, mais il faut aussi que celui-ci accepte de te servir de relay.
Difficile de configurer un serveur lorsqu'on n'a aucune info sur le fonctionnement du réseau...
Il faut impérativement que tu trouves un interlocuteur qui sache te répondre !
Oui si toutefois ces infos ne sont pas considérées comme confidentielles, ce qui est la plupart du temps le cas des paramètres du proxy.
Si tu a besoin de php pour envoyer des courriels et que c'est pour un projet d'entreprise, ils doivent au moins de donner un accès au smtp ou te laisser sortir vers ton smtp.
Mais si ton smtp est 9, il n'acceptera peut-être pas un connexion de type professionnel.