Newsgroup: it.comp.www.php
Titolo: Script per verificare esistenza di indirizzo email

Sto cercando in rete una classe o uno script per verificare se un
indirizzo email � esistente o meno, ma non ho trovato nulla.
Non so se ho sbagliato con le keywords, sta di fatto che trovo solo
materiale riguardante la correttezza dell'indirizzo, non la sua
effettiva esistenza.
Conoscete qualcosa?
Grazie
-- 
http://www.maxori.it
L'Arte � la capacit� di fare cose di nessun valore
e di riuscire a venderle
F. Zappa

 esistenza.
Non esiste uno script del genere, l'unica cosa che puoi fare è madare una 
mail e controllare se ti viene tornata o meno una mail di indirizzo non 
esistente.
Ma di certo non puoi verificare niente all'atto della spedizione della 
mail.

 mail.
Immaginavo...
Controller� uno ad uno i vari "user unknow" sul mailserver.
Grazie RedWiz.
Max


 effettiva esistenza.
Devi verificare la correttezza dell'indirizzo e-mail di un utente? Manda
all'indirizzo che ha inserito una mail con un link da cliccare per la
validazione.
	Y.

 mail.
Non è vero, le seguenti condizioni possono essere verificate in tempo reale:
* esistenza del dominio
* esistenza del MX
* se il MX principale è contattabile, verifica dell'esistenza dell'utente
	Y.

       Y.
Parli della funzione di php checkdnsrr() ?
Dar� un'occhiata a 
php.net
.
Grazie
Max


 validazione.
Putroppo la faccenda � diversa, mi � stato chiesto di verificare
l'esistenza di molte centinaia di indirizzi di una newsletter vecchia di
alcuni anni.
La tua soluzione pu� essere valida, vedo anche le altre risposte poi ci
penser�.
Grazie intanto.
Max


 dell'utente
Mi sfugge come implementare il terzo passaggio.
C'è un modo per interrogare il db dell'MX ?
(non si finisce mai di imparare)

 alcuni anni.
Se � un compito da svolgere una tantum, allora la soluzione di RedWiz �
sicuramente la pi� appropriata.
	Y.

 (non si finisce mai di imparare)
Ho trovato questa funzione, ora la testo:
function check_email($email) {
        if(preg_match('/^\w[-.\w]*@(\w[-._\w]*\.[a-zA-Z]{2,}.*)$/',
$email, $matches))
        {
            if(function_exists('checkdnsrr'))
            {
                if(checkdnsrr($matches[1] . '.', 'MX')) return true;
                if(checkdnsrr($matches[1] . '.', 'A')) return true;
            }else{
                if(!empty($hostName))
                {
                    if( $recType == '' ) $recType = "MX";
                    exec("nslookup -type=$recType $hostName", $result);
                    foreach ($result as $line)
                    {
                        if(eregi("^$hostName",$line))
                        {
                            return true;
                        }
                    }
                    return false;
                }
                return false;
            }
        }
        return false;


       Y.
Si, � giusto per ripulire un p� il database


 C'è un modo per interrogare il db dell'MX ?
Devi usare SMTP.
Fai come se mandassi un mail ma ti fermi prima.
Io lo faccio da Linux da linea di comando, sicuramente ci sarà il modo
di farlo anche da PHP.
Guarda questo log di sessione, leggermente modificato per motivi di
privacy :)
$ netcat 
mx.example.com
 25
220 
nabucodonosor.example.com
 ESMTP Sendmail 8.14.1/8.12.10/SuSE Linux
0.7; Wed, 12 May 2010 14:24:49 +0200
HELO 
myhost.mydomain.com
250 
nabucodonosor.example.com
 Hello 
myhost.mydomain.com
 [4.2.42.24],
pleased to meet you
MAIL FROM: 
yossa...@operamail.com
250 2.1.0 yossa...@operamail.com... Sender ok
RCPT TO: 
scono...@example.com
550 5.1.1 scono...@example.com... User unknown

 Max
Se � una cosa una tantum o cmq che non presuppone l'uso di applicazione 
web ci sono programmi gi� fatti (servono esattamente a questo, a pulire 
db immensi degli spammer tenendo solo indirizzi buoni).
Il funzionamento � quello gi� descritto da altri prima di me nel thread.
L'unico limite sono tutte le mail aziendali per cui l'accesso � 
consentito solo dalla intranet, che te li da come morti mentre non lo sono.
-- 
Z.

550 5.1.1 scono...@example.com... User unknown
Attenzione che non � detto che si possa interrogare il MX, a meno di non
essere noi stessi dei MX registrati.
$ netcat 
mx.example.com
 25
220 
nabucodonosor.example.com
 ESMTP Sendmail 8.14.1/8.12.10/SuSE Linux
0.7; Wed, 12 May 2010 17:34:17 +0200
HELO 
myhost.mydomain.com
250 
nabucodonosor.example.com
 Hello 
myhost.mydomain.com
 [151.49.4.132],
pleased to meet you
MAIL FROM: 
yossa...@operamail.com
501 5.7.1 yossa...@operamail.com... Sender refused by the DNSBL
zen.spamhaus.org
Connection closed by foreign host.
(E va tenuto conto di SPF. Per esempio, con la tua email tutto bene. Ma,
se usassi la mia email di GMail, un server ben nato mi rimbalzerebbe).
(E vari controlli in sequenza possono essere considerati "hammering" - e
determinare il tarpitting del server che ci avesse provato).
Leonardo
-- 
Los pellegris perjurs, fraiditz,
Qi nos an sai en camp geqitz,
Qi los manten e cortz es tortz,
Que chascuns val mens vius que mortz.

consentito solo dalla intranet, che te li da come morti mentre non lo sono.
L'unico metodo buono � quello suggerito da Yossarian: inviare una email
con un link per la validazione e niente altro (niente pubblicita' della
ditta, per es., al di la' del marchio), a parte una richiesta esplicita
all'invio di mail (a meno che non si abbia gia' avuto PER ISCRITTO tale
consenso) e i riferimenti alla legge sulla privacy.
Il gruppo adatto mi sembra it.news.net-abuse .
Leonardo  (uno di quei bastardi che per lavoro sabotano i programmi per
           la verifica bulk di centinaia o migliaia di indirizzi)


http://thunderplunger.mozdev.org/validateEmail.txt
___
http://interno.comze.com/m-Quiz


Con Joomla e il modulo Community Builder "teoricamente" se po ffï¿½:
Dall'help dell'opzione "verifica ajax e-mail durante la registrazione 
degli utenti":
"ATTENZIONE: il tuo sistema PHP non ha la funzione "getmxrr()" istallata 
e attivata. Poichï¿½ ï¿½ una funzionalitï¿½ solo per Linux, questo ï¿½ normale 
sui server Windows, quindi email DNS e SMTP checking non saranno 
disponibili, a meno che questa sia attivata.
--- Verifica se una email ï¿½ valida durante lï¿½iscrizione, controllando il 
formato e-mail esatto, lï¿½esistenza degli MX DNS records, e la 
disponibilitï¿½ ad accettare le email in arrivo da questo indirizzo da 
parte del SMTP. Puoi anche verificare che lï¿½email non sia giï¿½ stata 
registrata. ATTENZIONE: questo controllo-email-giï¿½-registrata potrebbe 
sollevare PROBLEMI DI PRIVATEZZA sul tuo sito web e/o nel tuo paese, 
poichï¿½ dalla pagina di iscrizione, chiunque potrebbe controllare se un 
indirizzo ï¿½ iscritto! Per favore utilizzalo solo dopo esserti assicurato 
che non vï¿½oli la normativa di legge. Per il controllo SMTP, il tuo 
server deve avere un indirizzo IP fisso, lï¿½indirizzo email del sito deve 
essere valido e questo server deve essere elencato fra i mittenti 
autorizzati (SPF record) per funzionare correttamente con molti 
indirizzi email. Sei avvisato che sebbene questa funzionalitï¿½ sia 
protetta, in alcune circostanze potrebbe essere abusata. Questa ï¿½ 
sperimentale, non ancora ottimizzata per grandi siti: prova prima!"
-- 
Traveller, not tourist!
www.inter-rail.it

 che non v�oli la normativa di legge. 
Grazie,
Per quello che vorrei fare non credo che sia un problema perch�, come
dicev nel mio post iniziale, lo userei solo una-tantum per verificare
una lista di email di una newsletter.
Max


Burocropoli <Buroc...@Burocropoli.cim.invalid> wrote:

Grazie, molto interessante!
Per caso hai avuto occasione di testarlo?
Non ho guardato a fondo il codice ma credi che sia possibile inserirlo
all'interno di un ciclo oppure deve essere usato manualmente per ogni
indirizzo?
Max


Burocropoli <Buroc...@Burocropoli.cim.invalid> wrote:

Allora, ho testato questo script confrontando dei risultati a campione
con le email che sono state rifiutate.
Direi che la sua affidabilit� per ora � del 100%, non so se continuando
con i test possano esserci delle incongruenze, ma direi che di pi� non
si pu� chiedere.
Che dire... grazie!
Max


 Il gruppo adatto mi sembra it.news.net-abuse .
Tanti auguri. ;)
ciao, f.

 Grazie
phpclasses

 Max
anzi se e' vecchia gli mandi un messaggio del tipo:
lei _pinco pallino_ e' ancora interessato a ricevere la NS newsletter
clikki QUI (grande) per vedere la novita da noi proposte o le news
qui per essere cancellato.
- chi non ha risposto lo segni come da ricontrollare
- chi vuole essere cancellato lo cancelli
dopo 20 gg ricontrolli e termini

 dell'utente
Questa invece � molto improbabile, tra filtri antispam, greylisting e
chi pi� ne ha pi� ne metta.
Rischi addirittura che se il server web � in qualche blacklist, ma non
lo � il suo relay, lo script php possa mandare email ma si convinca
che non esiste nessun utente di cui vuol verificare l'esistenza.
Se ad esempio non sei un smtp gi� conosciuto, al primo tentativo
il mio server smtp ti risponde con "421 temporary envelope failure".
Che fai, lo consideri un errore?
-- 
ValeRyo
XT600 "Katoki Pajama" - 
http://www.slimmit.com/go.asp?7Y9
GamerTag: 
http://card.mygamercard.net/IT/nxe/ValeRyo76.png
 

 F. Zappa
Ciao, potresti dirmi come dovrei fare per testarlo anche io? thnx!

 Ciao, potresti dirmi come dovrei fare per testarlo anche io? thnx!
Lo script è piuttosto semplice, prova ad analizzarlo e vedrai che
necessita solo di un parametro; l'email.
Nella pagine con l'elenco degli iscritti ho inserito un link che apre un
popup passando l'email come GET.
In questa finestra c'è una funzione che prende il valore di GET, lo
passa allo script il quale restituisce tutti i dati necessari.
Questa operazione può prendere alcuni secondi, è per questo motivo che
non puoi farlo in automatico passando tutte le email tramite un ciclo,
deve proprio essere fatta a mano, verificando gli indirizzi uno ad uno.
Max
-- 
http://www.maxori.it
L'Arte è la capacità di fare cose di nessun valore
