Discussion:
php smtp en local
(trop ancien pour répondre)
yotta
2015-08-12 06:03:59 UTC
Permalink
slt ttlm,


j'ai regardé du côté des pseudo soft qui font office de serveur
smtp en local...

à priori un sendmail ne suffit pas MTA/MUA il faut configurer
des paramètres smtp fai par exemple...


concrètement que fait un de ces soft SMTP en local qui s'installe
en service ?

y a t-il un moyen en php de faire une boucle, ouvrir un port...
je sais pas...pour s'affranchir du fai ou d'un soft service ?


a+

yotta
Antoine Polatouche
2015-08-12 16:46:35 UTC
Permalink
Post by yotta
slt ttlm,
Bonjour Yotta,

tu écris avec Microsoft Windows Mail, précise bien que tu parles d'un
serveur sous windows.
Et bon courage ;)
yotta
2015-08-12 16:49:41 UTC
Permalink
je fais pas de c mais dans l'idée...ça doit être pareil non sous tux...il
doit y avoir
un blabla api natif ou je sais quoi d'autre pour que ça sorte ?

bonne chance...

yotta
Post by Antoine Polatouche
Post by yotta
slt ttlm,
Bonjour Yotta,
tu écris avec Microsoft Windows Mail, précise bien que tu parles d'un
serveur sous windows.
Et bon courage ;)
Antoine Polatouche
2015-08-13 11:36:22 UTC
Permalink
Post by yotta
je fais pas de c mais dans l'idée...ça doit être pareil non sous
tux...il doit y avoir
un blabla api natif ou je sais quoi d'autre pour que ça sorte ?
C'est hors sujet ici : il n'y a rien de particulier à faire en php, il
faut installer un client smtp, si j'ai bien compris ta question...
yotta
2015-08-13 18:36:47 UTC
Permalink
Post by Antoine Polatouche
Post by yotta
je fais pas de c mais dans l'idée...ça doit être pareil non sous
tux...il doit y avoir
un blabla api natif ou je sais quoi d'autre pour que ça sorte ?
C'est hors sujet ici : il n'y a rien de particulier à faire en php, il
faut installer un client smtp, si j'ai bien compris ta question...
la question justement c'était de savoir si on peut coder quelque chose en
PHP
pour s'affranchir d'un "service smtp" ou bien faire blabla avec le "smtp du
fai".


yotta
Eric Demeester
2015-08-14 14:10:50 UTC
Permalink
Bonjour,
Post by yotta
la question justement c'était de savoir si on peut coder quelque chose en
PHP
pour s'affranchir d'un "service smtp" ou bien faire blabla avec le "smtp du
fai".
1. Communiquer avec un serveur SMTP externe, genre celui de son FAI :

Je vais commencer par le plus simple, le blabla avec le SMTP du FAI. En
PHP, inutile de réinventer l'eau tiède, la fonction mail() est faite
pour ça :

La fonction :
http://php.net/manual/fr/function.mail.php

Des explications pour coder : ce site n'es pas toujours parfait, mais il
est destiné aux débutants, les explications sont claires et données pas
à pas :
https://openclassrooms.com/courses/e-mail-envoyer-un-e-mail-en-php

Le défaut de la chose est qu'il faut avoir un serveur PHP qui tourne, et
qu'appeler la fonction autrement que depuis un script PHP est compliqué.

Pour s'affranchir ce ces deux contraintes, il faudra compiler la bête
pour la transformer en un service windows appelable par le client mail
(voir plus bas).


2. Créer un serveur SMTP en PHP :

Les échanges SMTP entre le client (ta machine) et le serveur qui recevra
le message adressé au destinataire puis le lui transmettra (ou pas mais
c'est une autre histoire) sont définis par une RFC.

Des explications générales ici :
https://fr.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol

Des explications détaillés là :
http://www.bortzmeyer.org/5321.html

Et enfin La RFC 5321 en question (pas trouvé de traduction française) :
https://tools.ietf.org/html/rfc5321

Donc la réponse est oui, tu peux coder ça en PHP.

La question suivante est « est-ce une bonne idée ? »

J'aurais tendance à répondre que non, parce que :

- ça ne doit pas être de la tarte à coder proprement, et si tu ne
respectes pas la RFC à la lettre, le serveur d'en face risque
de t'envoyer promener ;

- ça implique que ta machine dispose d'une IP fixe, ou au moins
d'un nom de domaine géré par un DNS dynamique genre noip, sinon le
serveur qui reçoit ne pourra pas identifier l'émetteur et risque
de refuser le courrier (SPAM potentiel, etc.) ;

- tu vas devoir créer un service au sens Windows, appelable par
les logiciels ayant besoin d'envoyer des emails, typiquement
ton client Email (Windows-Mail, Thunderbird, etc.), donc compiler
ton code PHP, ses dépendances, etc., pour en faire (je simplifie) une
DLL appelable par ces logiciels, loin d'être de la tarte non plus.


3. Installer un serveur SMTP sur sa machine [*] :

Personnellement, je m'orienterais plutôt vers cette solution pour faire
ce boulot, j'en connais deux pour Windows, Hamster et Mercury.

- Hamster (libre, open source) :

Explications :
http://framasoft.net/article120.html

Site officiel et téléchargement :
http://sourceforge.net/projects/hamster-fr/

D'après la doc, il est sensé fonctionner jusqu'à Windows XP. À toi de
tester s'il fonctionne avec ta version, éventuellement en mode
compatibilité.

- Mercury (non libre, gratuit pour usage personnel, en anglais) :

Mercury est développé et maintenu par David Harrys, le concepteur de
Pegasus Mail, que j'utilise depuis 1997 et me donne entière satisfaction
malgré son ergonomie un peu déroutante au début, qui s'avère
fabuleusement pratique au fil du temps, smais je m'égare.

Site officiel et explications (en anglais) :
http://www.pmail.com/overviews/ovw_mercury.htm

Téléchargement :
http://www.pmail.com/downloads_s3_t.htm

Je te suggère de télécharger et de tester les deux.

Peut-être en existe-t-il d'autres, je te laisse chercher si tu veux,
mais ces deux là, je sais qu'ils fonctionnent bien et qu'on peut leur
faire confiance.

Bon courage :)

[*] Pour les questions concernant les serveurs SMTP, ainsi que pour les
aspects purement SMTP associés à PHP, je te suggère de poster
dans <news:fr.comp.mail.serveurs>. Pour Mercury, il y a aussi
<news:comp.mail.pegasus-mail.ms-windows> (s'y exprimer en anglais
est impératif).
yotta
2015-08-14 17:15:06 UTC
Permalink
eric,
j'ai déjà un client mail en php. ce que je veux c'est la boucle pour sortir
"si possible"
en PHP.
les rfc t'aident à construire le head du mail expédié pour ne pas se faire
bouler par le
serveur qui va recevoir le mail...parfois ils finissent en spam
effectivement.

c'est pas grave...

a+

yotta
Post by Eric Demeester
Bonjour,
Post by yotta
la question justement c'était de savoir si on peut coder quelque chose en
PHP
pour s'affranchir d'un "service smtp" ou bien faire blabla avec le "smtp du
fai".
Je vais commencer par le plus simple, le blabla avec le SMTP du FAI. En
PHP, inutile de réinventer l'eau tiède, la fonction mail() est faite
http://php.net/manual/fr/function.mail.php
Des explications pour coder : ce site n'es pas toujours parfait, mais il
est destiné aux débutants, les explications sont claires et données pas
https://openclassrooms.com/courses/e-mail-envoyer-un-e-mail-en-php
Le défaut de la chose est qu'il faut avoir un serveur PHP qui tourne, et
qu'appeler la fonction autrement que depuis un script PHP est compliqué.
Pour s'affranchir ce ces deux contraintes, il faudra compiler la bête
pour la transformer en un service windows appelable par le client mail
(voir plus bas).
Les échanges SMTP entre le client (ta machine) et le serveur qui recevra
le message adressé au destinataire puis le lui transmettra (ou pas mais
c'est une autre histoire) sont définis par une RFC.
https://fr.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol
http://www.bortzmeyer.org/5321.html
https://tools.ietf.org/html/rfc5321
Donc la réponse est oui, tu peux coder ça en PHP.
La question suivante est « est-ce une bonne idée ? »
- ça ne doit pas être de la tarte à coder proprement, et si tu ne
respectes pas la RFC à la lettre, le serveur d'en face risque
de t'envoyer promener ;
- ça implique que ta machine dispose d'une IP fixe, ou au moins
d'un nom de domaine géré par un DNS dynamique genre noip, sinon le
serveur qui reçoit ne pourra pas identifier l'émetteur et risque
de refuser le courrier (SPAM potentiel, etc.) ;
- tu vas devoir créer un service au sens Windows, appelable par
les logiciels ayant besoin d'envoyer des emails, typiquement
ton client Email (Windows-Mail, Thunderbird, etc.), donc compiler
ton code PHP, ses dépendances, etc., pour en faire (je simplifie) une
DLL appelable par ces logiciels, loin d'être de la tarte non plus.
Personnellement, je m'orienterais plutôt vers cette solution pour faire
ce boulot, j'en connais deux pour Windows, Hamster et Mercury.
http://framasoft.net/article120.html
http://sourceforge.net/projects/hamster-fr/
D'après la doc, il est sensé fonctionner jusqu'à Windows XP. À toi de
tester s'il fonctionne avec ta version, éventuellement en mode
compatibilité.
Mercury est développé et maintenu par David Harrys, le concepteur de
Pegasus Mail, que j'utilise depuis 1997 et me donne entière satisfaction
malgré son ergonomie un peu déroutante au début, qui s'avère
fabuleusement pratique au fil du temps, smais je m'égare.
http://www.pmail.com/overviews/ovw_mercury.htm
http://www.pmail.com/downloads_s3_t.htm
Je te suggère de télécharger et de tester les deux.
Peut-être en existe-t-il d'autres, je te laisse chercher si tu veux,
mais ces deux là, je sais qu'ils fonctionnent bien et qu'on peut leur
faire confiance.
Bon courage :)
[*] Pour les questions concernant les serveurs SMTP, ainsi que pour les
aspects purement SMTP associés à PHP, je te suggère de poster
dans <news:fr.comp.mail.serveurs>. Pour Mercury, il y a aussi
<news:comp.mail.pegasus-mail.ms-windows> (s'y exprimer en anglais
est impératif).
Eric Demeester
2015-08-15 15:01:28 UTC
Permalink
Bonjour,
Post by yotta
j'ai déjà un client mail en php. ce que je veux c'est la boucle pour sortir
"si possible"
en PHP.
Je n'ai visiblement pas compris ce que tu souhaitais faire, et je ne
comprends toujours pas.
Post by yotta
c'est pas grave...
Essaye de donner un exemple détaillé et concret, genre quand tel
évènement survient (lequel ? dans quel contexte ?) provoqué par telle
cause (laquelle), je veux que mon programme PHP fasse telle chose (quoi
?).

Bref, décortique tout étape par étape, ça nous aidera peut-être à
comprendre, et éventuellement aussi à te clarifier les idées.
yotta
2015-08-15 19:27:23 UTC
Permalink
eric,

t'as déjà créé un compte mail dans ton client mail ?

à un moment donné...tu saisis smpt.fai.fr
port 25

moi je cherche comment saisir localhost port 25 et que
le mail "sorte".

pour ça il me faudrait installer un "service" smtp...j'en ai un.

ce que je voudrais donc, "si possible" en PHP c'est d'écrire
un "service serveur smtp" qui remplacerait le service smtp
que j'installe...

:)

yotta
Post by Eric Demeester
Bonjour,
Post by yotta
j'ai déjà un client mail en php. ce que je veux c'est la boucle pour sortir
"si possible"
en PHP.
Je n'ai visiblement pas compris ce que tu souhaitais faire, et je ne
comprends toujours pas.
Post by yotta
c'est pas grave...
Essaye de donner un exemple détaillé et concret, genre quand tel
évènement survient (lequel ? dans quel contexte ?) provoqué par telle
cause (laquelle), je veux que mon programme PHP fasse telle chose (quoi
?).
Bref, décortique tout étape par étape, ça nous aidera peut-être à
comprendre, et éventuellement aussi à te clarifier les idées.
Jean Francois Ortolo
2015-08-15 19:44:11 UTC
Permalink
Post by yotta
eric,
t'as déjà créé un compte mail dans ton client mail ?
à un moment donné...tu saisis smpt.fai.fr
port 25
moi je cherche comment saisir localhost port 25 et que
le mail "sorte".
pour ça il me faudrait installer un "service" smtp...j'en ai un.
ce que je voudrais donc, "si possible" en PHP c'est d'écrire
un "service serveur smtp" qui remplacerait le service smtp
que j'installe...
:)
yotta
Hé hé...

localhost, c'est l'interface réseau loopback ( c'est-à-dire locale ).

Y a rien qui sort ? ;)

Respectueusement.
Eric Demeester
2015-08-16 12:04:27 UTC
Permalink
Bonjour,

Jean Francois Ortolo (Sat, 15 Aug 2015 21:44:11 +0200 -
Post by Jean Francois Ortolo
localhost, c'est l'interface réseau loopback ( c'est-à-dire locale ).
Y a rien qui sort ? ;)
Ce n'est pas tout à fait exact. 127.0.0.1 (ou localhost) fait
effectivement référence à l'adresse IP de la machine.

En revanche, et comme tu fais du web tu devrais le savoir, on peut très
bien faire appel à un service qui tourne en local, mais fournit des
informations qui elles, sont utilisables depuis ou vers un accès
distant.

Ton serveur MySQL tourne en local (du moins je le lui souhaite) et n'est
donc pas accessible depuis l'extérieur. Ça ne l'empêche pas de délivrer
des informations à ton script PHP, pour rester en thème, qui les servira
au visiteur consultant ta page.

De même, dans mon logiciel de courrier à la maison, le serveur POP est
accessible sur... 127.0.0.1, parce qu'il appelle en réalité un logiciel
faisant office de filtre bayesien antispam qui s'intercale entre mon
client et le serveur POP, et c'est ce dernier (le bayesien) qui se
connecte à l'extérieur sur mon serveur POP, puis transmet, localement,
les courriels reçus à mon client après les avoir analysés.

Tout ça pour dire qu'on peut très bien faire appel à un serveur SMTP qui
tourne en local (c'est typiquement ce que font mes sites écrits en PHP
sur mon serveur dédié), qui lui, contactera l'extérieur.

Bon, tout ça pas avancer yotta d'un iota [*] dans ses recherches, encore
que, je suppose que c'est ce genre de chose qu'il cherche à faire.

[*] Désolé, j'ai pas pu résister :)

Continuer la lecture sur narkive:
Loading...