Newsgroup: it.comp.www.php
Titolo: simul mail server scritto in php, fattibile?

ciao :)
Pensavo a quanto sarebbe comodo uno script php che una volta lanciato 
(magari tramite browser) si mettesse in ascolto per ricevere e-mail dalla 
funzione "mail()" di php per testaggi in locale. In modo che la funzione 
mail() nello script da testare non ritorni warnings o errori, e tale 
programmino, lanciato precedentemente in esecuzione, stampasse a video con 
un semplice "echo" la mail inviata (o magari scrivesse dentro un file).
Ma sarà fattibile? Con le funzioni socket si potrebbe fare, penso, solo che 
non sono molto pratico con esse e non so benissimo come funziona la 
comunicazione client server per invio mail! Prima di immergermi in questo 
utilissimo studio (che comunque farò, ma per il momento ho tanto altro da 
fare)  e ammattire invano con warnings errori e malfunzionamenti, chiedo 
appunto qui se è una cosa possibile :)
(o magari se è stata già fatta).
Nel caso fosse possibile... questo socket di ascolto andrebbe bene?
$socket = socket_create(AF_INET, SOCK_DGRAM, getprotobyname("SMTP"));
ciao,
Luca(riello) 

 Ma sar` fattibile?
Ma vale veramente la pena? Esistono decine di server SMTP disponibili.
Microsoft Windows PRO (XP, 2000) e superiori lo hanno integrato,
praticamente tutte le distribuzionili linux lo hanno integrato, per Mac
OSX se ne trovano altrettanti, vale veramente la pena reinventare la
ruota?
-- 
I am what I am, I do what I can
Do. Or do not. There is not try.


Hanno tutti opzioni che non mi servono e che appesantiscono il sistema... 
proprio perché a me basta semplicemente un progrmmino che stampi al momento 
il contenuto della e-mail e stop, non voglio un vero e proprio server SMTP 
con configurazione visuale. Non ho un pc prestante e preferirei risparmiare 
ove possibile. Inoltre sarebbe più comodo trasportare da un computer 
all'altro un semplice file php, piuttosto che un installer di un server SMTP 
completo da installare e configurare ogni volta! Certo, tutto questo se 
effettivamente non è uno script complicato da scrivere: non più di 20 righe 
senza gestione di errore.
Inoltre se posso permettere un pensiero generale:
è sempre utile, secondo me, re-inventare qualcosa di non banale... significa 
capire bene il meccanismo di un qualcosa, e non è escluso che, nel 
frattempo, un'idea per implementare questo meccanismo porti a qualcosa di 
veramente innovativo.
"esistono decine di server SMTP disponibili"... perché non si sono fermati a 
2 o 3 e hanno reinvantato la ruota altre decine di volte?
ciao,
Luca(riello) 

 fermati a 2 o 3 e hanno reinvantato la ruota altre decine di volte?
Perche' produrre un server SMTP e' un progetto software come un altro,
credere che sviluppare un server SMTP in PHP per fare i test sia solo
scrivere "non piu' di 20 righe senza gestione di errore" e' un altro
discorso.


 grado di ricevere il contenuto della mail.
A questo proposito... basta rispondere al client con semplici ok, come ho 
trovato qui?
http://freeasp.html.it/articoli/view_articolo.asp?id=205
Perché così l'ho fatto, con telnet mi va tutto bene ma la funzione mail() di 
un qualsiasi script non và (l'esecuzione non si blocca).
Abbandono il discorso se sia utile o non utile... è una mia scelta, è il mio 
tempo, questo è un ng di php e la mia domanda è inerente ad esso. Che sia 
una perdita di tempo o meno è un problema mio! Se vuoi o puoi aiutarmi te ne 
sarei grato, altrimenti pazienza :)
ciao,
Luca(riello) 

 come ho trovato qui?
Ovviamente no, altrimenti, come tu stesso affermi, per quale motivo NON
funziona?


 funziona?
apache si connette ma evidentemente aspetta una risposta a una domanda che 
non vedo.
Simulando con telnet ha un atteggiamento diverso, in primis stampa a video i 
comandi che invio... cosa che non fa quanod provo lo script con mail().
Per questo mi era venuto il dubbio se fosse un problema di impostazione 
socket, di protocollo o di risposte date.
ciao,
Luca(riello) 

 funzione "mail()" di php per testaggi in locale.
[cut]
Per la cronaca ci sono riuscito. :))
Era semplice come prevedevo, le difficoltà incontrate erano dovute solo a un 
cattivo controllo dei dati in entrata (errori che non hanno nulla a che 
vedere coi sockets).
Al client basta dare semplicemente l'ok come dicevo.
Se a qualcuno interessa posto il codice (un centinaio di righe), altrimenti 
risparmio a usenet il peso di tale ruota reinventata :)
ciao,
Luca(riello)