[PHP] edit : est-ce que la fonction mail() de PHP est un MUA ?

edit : est-ce que la fonction mail() de PHP est un MUA ? [PHP] - PHP - Programmation

Marsh Posté le 21-09-2004 à 11:10:32    

salut,
 j'administre un serveur Apache sur du GNU/Linux, qui est sur une DMZ avec un serveur smtp (pas sur la même machine!). Je voudrais utiliser la fonction mail() de PHP. J'ai lu le manual et regardé le /etc/php.ini. Souvent, ça parle de serveur SMTP à spéficier dans le php.ini, car sendmail ou postfix ou qmail etc ... peuvent/doivent être déja installé. Donc avoir un serv SMTP sur la même machine que l'interpréteur PHP.
 
Question : Pourquoi carrément installer un serveur SMTP sur la même machine que l'interpréteur PHP pour envoyer un simple message avec la fonction mail() ?
 
Un simple MUA sur le serv Web (interpréteur PHP) pourrait balancer le mail à mon SMTP de la DMZ ...  
 
Comment faire ?
 
Merci d'avance
 
ps edit : je spécifierais bien le SMTP dans le php.ini, mais :
 
 
[mail function]
; For Win32 only.
SMTP = localhost
 
 
donc je suppose qu'il faut forcement avoir un stmp localhost ... *confusion*  ?!?!?!?!


Message édité par gentoouser le 28-09-2004 à 16:42:19
Reply

Marsh Posté le 21-09-2004 à 11:10:32   

Reply

Marsh Posté le 21-09-2004 à 14:10:26    

up

Reply

Marsh Posté le 21-09-2004 à 14:11:59    

en fait sous win32, l'envoi de mail fait appel a une api. ya pas d'equivalent sous unix :/
il faut monter un sendmail ou qmail en relais sur la machine
c lourd si kk1 a une meilleur solution ?


Message édité par DjobaDjobi le 21-09-2004 à 14:12:33
Reply

Marsh Posté le 21-09-2004 à 14:15:41    

hmm, ça colle pas trop avec ce que je vois pour le fichiers de conf et le manual. Je vois qu'avec win32 tu peux spéficier un smtp, mais parceque ils supposent qu'il n'y a pas d'smtp localhost installé. Donc les utilisateurs de win mettent smtp.wanadoo.fr etc ...
 
Sur phpManual :
 
 The Windows implementation of mail() differs in many ways from the Unix implementation. First, it doesn't use a local binary for composing messages but only operates on direct sockets which means a MTA is needed listening on a network socket (which can either on the localhost or a remote machine).

Reply

Marsh Posté le 22-09-2004 à 17:34:01    

uuup

Reply

Marsh Posté le 22-09-2004 à 17:49:18    

euhh je pense que tu peux setter le SMTP depuis le php.ini sans que ca pose de problèmes.
Si ce n'est pas le cas, le codeur le fera via son script php


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 22-09-2004 à 18:22:25    

drapal

Reply

Marsh Posté le 23-09-2004 à 08:14:46    

bah ils mettent "win32 only", donc je suppose qu'une plat. unix n'en tiendra pas compte. Ils disent que ça "use a local binary for composing messages" sur une plat. unix. Ouais ok, mais pourquoi pas un MUA (mail? ) plutôt qu'un MTA (smtp etc ..). Ils disent que par défaut, c'est "sendmail" qui va être utilisé, et sendmail *est* du postfix, même les man pages n'en disent pas vraiment long il me semble ..

Reply

Marsh Posté le 23-09-2004 à 15:58:46    

j'ai déjà monté un serveur apache avec php sur debian sans sendmail (pour un intranet) tout en utilisant la fonction mail....:o
 
du reste :  
 

simogeo a écrit :

euhh je pense que tu peux setter le SMTP depuis le php.ini sans que ca pose de problèmes.
Si ce n'est pas le cas, le codeur le fera via son script php


 
 
et si tu ne veux rien entendre alors pourquoi tu postes ici ...(?)
 


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 23-09-2004 à 16:03:02    

simogeo a écrit :

j'ai déjà monté un serveur apache avec php sur debian sans sendmail (pour un intranet) tout en utilisant la fonction mail....:o
 
du reste :  
 
 
 
 
et si tu ne veux rien entendre alors pourquoi tu postes ici ...(?)


 
tout ca nous dis pas comment tu t'y est pris  :ange:  
 
steupléé

Reply

Marsh Posté le 23-09-2004 à 16:03:02   

Reply

Marsh Posté le 23-09-2004 à 16:20:37    

DjobaDjobi a écrit :

tout ca nous dis pas comment tu t'y est pris  :ange:  
 
steupléé


 
 
 
J'utilisais la classe phpmailer (http://phpmailer.sourceforge.net/) en précisant que j'envoyais mon mail en smtp et en lui précisant évidemment l'host.
Il me semble que je n'avais rien setté au niveau du php.ini (sté sur un intranet chez un ancien employeur et j'ai plus accès à ce php.ini[:itm])


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 23-09-2004 à 16:44:15    

simogeo a écrit :

j'ai déjà monté un serveur apache avec php sur debian sans sendmail (pour un intranet) tout en utilisant la fonction mail....:o
 
du reste :  
 
et si tu ne veux rien entendre alors pourquoi tu postes ici ...(?)


 
doucement, je disais juste, en gros, que le php manual ne parlait que de spéficier le chemin vers le SMTP ("sendmail_path" dans php.ini), donc ça suppose qu'il est localhost le smtp, et qu'il faut ce smtp pour envoyer un mail. Mais bon, je vais essayer quand même de préciser le SMTP de la DMZ dans le php.ini, même si ya écrit FOR WIN32 USER ONLY à coté en gros.

Reply

Marsh Posté le 23-09-2004 à 16:49:50    

simogeo a écrit :

J'utilisais la classe phpmailer (http://phpmailer.sourceforge.net/) en précisant que j'envoyais mon mail en smtp et en lui précisant évidemment l'host.
Il me semble que je n'avais rien setté au niveau du php.ini (sté sur un intranet chez un ancien employeur et j'ai plus accès à ce php.ini[:itm])


 
oké donc tu n'utilisais pas la fonction mail de php :/

Reply

Marsh Posté le 23-09-2004 à 17:09:07    

DjobaDjobi a écrit :

oké donc tu n'utilisais pas la fonction mail de php :/


 
phpmailer (c'est une classe) utilise la fonction mail() de php ! Elle simplifie et étend son usage.
 
 
gentoouser > oki oki  ;)  


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 23-09-2004 à 17:30:03    

non je viens de matter le code de la class en question, elle utilise les socket pour se connecter au serv smtp
 
 

      $this->smtp_conn = fsockopen($host,    # the host of the server
                                     $port,    # the port to use
                                     $errno,   # error number if any
                                     $errstr,  # error message if any
                                     $tval);   # give up after ? secs

Reply

Marsh Posté le 23-09-2004 à 17:34:30    

exacto, autant pour moi.
 
Mais quel problème cela te pose à l'utilisation ?


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 23-09-2004 à 17:34:52    

le pb est d'envoyer des mails depuis une appli (phpbugtracker par ex) sans  avaoir a rentrer dans le code.
 
la solution est peut être de dééactiver la fonction mail(), la rrecrire avec la class par exemple, puis de l'include dans l'index.php de l'appli


Message édité par DjobaDjobi le 23-09-2004 à 17:37:05
Reply

Marsh Posté le 23-09-2004 à 17:42:51    

Le problème c'est de l'inclure, ca rends moins portable le code écrit pour ce serveur web :(  
Niveau performances, c'est certainement un peu moins bon aussi (enfin ca dépends du nombre de mails envoyés chaque jour, si c'est dix ou dix milles c'est pas la meme chose...)

Reply

Marsh Posté le 23-09-2004 à 17:49:51    

DjobaDjobi > c'est une solution ué
 
aspegic500mg > pour la portabilité, tu peux dans ton code tester l'activation de la fonction mail()


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 23-09-2004 à 18:13:24    

simogeo a écrit :

DjobaDjobi > c'est une solution ué
 
aspegic500mg > pour la portabilité, tu peux dans ton code tester l'activation de la fonction mail()


 
Oui c'est vrai, mais si elle est vraiment necéssaire au fonctionnement du site, c'est génant :/
(je me vois mal laisser l'inscription de certains site sans vérifier le mail)

Reply

Marsh Posté le 28-09-2004 à 10:37:27    

la question que je me pose en fait c'est "est-ce que la fonction mail() de PHP est un MUA ?"
 
Je viens de faire plusieurs test, en mettant le smtp (dans /etc/php.ini) d'une machine distante (dans la DMZ)  . Si postfix est lancé sur la machine locale, les mails arrivent a destination, si postfix est stopped, les mails n'arrivent pas. Dès que je relance postfix, les mails partent (ils étaient queued dans /var/spool/postfix/maildrop)


Message édité par gentoouser le 28-09-2004 à 10:40:36
Reply

Marsh Posté le 28-09-2004 à 18:30:28    

gentoouser a écrit :

la question que je me pose en fait c'est "est-ce que la fonction mail() de PHP est un MUA ?"
 
Je viens de faire plusieurs test, en mettant le smtp (dans /etc/php.ini) d'une machine distante (dans la DMZ)  . Si postfix est lancé sur la machine locale, les mails arrivent a destination, si postfix est stopped, les mails n'arrivent pas. Dès que je relance postfix, les mails partent (ils étaient queued dans /var/spool/postfix/maildrop)


 
Mais alors il est sur la meme machine que le serveur web ou pas  :??: (jpense que non parce qu'installer postfix sous windows euh bof :whistle: )

Reply

Marsh Posté le 28-09-2004 à 20:05:37    

aspegic500mg a écrit :

(jpense que non parce qu'installer postfix sous windows euh bof :whistle: )


 
Sous win, tu n'as pas le problème, tu règles le SMTP dans le fichier de config comme bon te semble (par exemple sur ma bécane perso, c'est celui de mon FAI)

Reply

Marsh Posté le 28-09-2004 à 21:46:22    

naceroth a écrit :

Sous win, tu n'as pas le problème, tu règles le SMTP dans le fichier de config comme bon te semble (par exemple sur ma bécane perso, c'est celui de mon FAI)


 
ah ben oui exact :o  
 
Enfin je me pose les question à titre indicatif car de toutes facons je n'ai qu'une seule bécane linux donc tout sera sur le mmee, mais en entreprise il pourait m'arriver de devoir utiliser un serveur mail externe donc ca m'interresse :)

Reply

Marsh Posté le 30-09-2004 à 10:30:32    

aspegic500mg a écrit :

Mais alors il est sur la meme machine que le serveur web ou pas  :??: (jpense que non parce qu'installer postfix sous windows euh bof :whistle: )


 
ok, il y a une DMZ. Dans cette DMZ, il y a un serv SMTP (Exchange..), et un serv WEB (Apache/php/mysql) sous MDK.
 
Dans la config de /etc/php.ini, je dois mettre un smtp. J'avais localhost avant, car partout dans le php manual ils parlent de "postfix" ou "sendmail", et il y a postfix qui est installé, et qui tourne. De cette façon, ça marche, les mails sont envoyés du smtp local (le postfix!), vers le smtp exchange.  
Ce que je voudrais, et voudrais comprendre, c'est pourquoi il faut installer forécement un SMTP sur la même machine (le postfix la... je veux pas de 2 smtp pour balancer des mails en local quand même!) ?!?!?!  
 
DONC, dans /etc/php.ini, j'ai changé "localhost", par le nom du serv SMTP exchange. La ça marche, SAUF QUE  postfix doit être "actif" (loaded) sur la machine locale. je fais un "/etc/init.d/postfix stop", les mails n'arrivent plus a destination, et je les retrouve dans /var/spool/postfix/maildrop ... Biensûr, dès que je redémare le postfix, les mails sont balancés (ils étaient queued dans maildrop).  
 
D'où ma question "est-ce que la fction mail() de PHP est un MUA à part entière ?!" et si oui comment faire en sorte que toute cette m***** s'harmonise ;)


Message édité par gentoouser le 30-09-2004 à 10:32:04
Reply

Marsh Posté le 30-09-2004 à 13:34:52    

je sais pas si ça peut aider, mais j'ai un outil qui tourne sur une DMZ en Redhat et j'ai mis le nom d'une machine dans SMTP de php.ini. En effet, c'est sur cette machine que tourne mon serveur de mail et ça marche.

Reply

Marsh Posté le 30-09-2004 à 14:17:14    

ok. Donc tu as 2 machines, l'une ton SMTP(1), et l'autre où est installé PHP(2), avec le SMTP(1) dans php.ini, c'est bien ça?
Si oui, as-tu un SMTP sur la machine où est installé PHP(2) ?
Si oui, si tu arrêtes ce service SMTP sur (2), ça marche toujours ?
 
Merci


Message édité par gentoouser le 30-09-2004 à 14:17:51
Reply

Marsh Posté le 01-10-2004 à 13:39:51    

c'est bien comme tu dis. n'étant pas maître de la conf du serveur, je ne pourrais pas te certifier qu'il n'y a pas de smtp, mais à mon avis, il n'y en a pas sur la machine où y'a php.ini.

Reply

Marsh Posté le 04-10-2004 à 13:59:45    

tu peux essayer de vérifier cette hypothèse s'il te plaît ?

Reply

Marsh Posté le 06-10-2004 à 09:02:24    

upppp !

Reply

Marsh Posté le 07-10-2004 à 12:34:05    

Donc sur ma machine je n'ai que sendmail (donc son smtp à lui, mais pas d'autre smtp). C'est dans le fichier de conf de sendmail qu'il faut donner l'adresse du serveur smtp distant. Pareil dans php.ini. C'est tout ce qu'il faut faire :)

Reply

Marsh Posté le 07-10-2004 à 16:14:37    

rufo a écrit :

Donc sur ma machine je n'ai que sendmail (donc son smtp à lui, mais pas d'autre smtp). C'est dans le fichier de conf de sendmail qu'il faut donner l'adresse du serveur smtp distant. Pareil dans php.ini. C'est tout ce qu'il faut faire :)


 
Ah ok, merci d'avoir regardé, ca pourrait me servir plus tard :)

Reply

Marsh Posté le 11-10-2004 à 09:38:38    

mais pourquoi y aurait-il besoin d'un MTA pour envoyer un mail ???!!!

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed