webForumDet fria alternativet

Pinga e-postadresser ?

17 svar · 890 visningar · startad av sailsoft

sailsoftMedlem sedan juli 2001225 inlägg
#1

Jag kommer bygga ett system där kunden vill med vissa intervaller kolla så e-postadresserna är i bruk. Jag är medveten att bara pinga en gång inte behöver betyda att e-postadressen är borta.

Jag undrar om någon har ett sådant skript i asp eller om det finns någon komponent till det.

För att kolla domänadresser använder jag DynuDNS.

DwarfenMedlem sedan jan. 2002241 inlägg
#2

Vet inte om jag har rätt...men pinga en emailadress?...går det? Pingar man inte bara en dator för att se om den är igång osv...pinga en specifik e-adress skulle ju bara leda till att commandot misslyckas eller att servern som har e-adressen är igång...inte att e-adressen finns...har jag rätt eller är jag ute och cyklar i norge...igen?

PicklezzMedlem sedan jan. 2002414 inlägg
#3

Jag vet att det går att kolla det med ett kommersielt program som jag inte kommer ihåg vad det heter...men iallafall så är det programet även en plugin så det går att koppla till ASP sidor...kommer inte ihåg mer än att när jag testa det så kunde den svara rätt på de addresser jag testa med...(alltså om dom var i bruk eller inte...)

stoffe-2kMedlem sedan apr. 200010 782 inlägg
#4

finger ?

kristofferMedlem sedan juni 20001 257 inlägg
nicclasMedlem sedan feb. 20001 050 inlägg
#6

Det verkar som om alla "betalprogram" bara kollar med SMTP servern, och det är ju inte så svårt att göra i tex PHP.

Prova gärna några epostadresser med denna:
http://www.nic-sys.se/epost.php?epost=test@webforum.nu
där "test@webforum.nu" är den adress som skall testas.

Fungerar de adresser som du vet skall fungera?

PS Nej, jag kommer inte att skicka spam till de adresser som fungerar som du provar, trust me ;) DS

Ett PM till mig och du får koden, dock skriven i PHP :)

/nicclas - https://www.frisim.com

solbulleMedlem sedan mars 20015 287 inlägg
#7

Det där kan ju knappast ge så mycket eftersom de, som sagt, bara kollar om domännamnet är kopplat till en epostadress.
Den säger ju inget om det verkligen finns någon med adressen:
test@webforum.nu bara att *whatever*@webforum.nu finns.

Men det ger ju en del i alla fall.

G8Medlem sedan jan. 20011 213 inlägg
#8

hmm, de adresser jag testade verkade den klura ut ifall de var i bruk eller inte... eller?

GunnarDMedlem sedan juni 20014 290 inlägg
#9

I SMTP standarden finns ett kommando VRFY som dom flesta mailservrar svarar på, dock inte alltid med riktiga uppgifter.

Gör så här för att kontrollera en mailadress (meta-kod)

  1. Ta reda på vilken mailserver som hanterar domänen
  2. Koppla upp dig mot mailserver (ex. med sockets) och inled SMTP förhandligen.
  3. Skicka kommandot "VRFY adress@domain.com"
  4. Kontrollera resultatet
  5. Koppla ner förbindelsen.
sgtpepperMedlem sedan apr. 20007 588 inlägg
#10

Det är relativt vanligt att man konfigurerar bort möjligheten att verifiera epostadresser mot SMTP-servern för att skydda sig mot spammare som brute-forcetestar sig fram till en massa korrekta adresser, de SMTP-servrar jag använder svarar t.ex bara "send some mail, i'll try my best" på VRFY-kommandot.

Slutsats, det är värdelöst att försöka verifiera adresser på detta sätt, det enda som funkar är att skicka ett mail och kräva ett svar från personen som äger adressen. Allt annat är slöseri med tid.

nicclasMedlem sedan feb. 20001 050 inlägg
#11

Min kod använder INTE SMTP kommandot VRFY!

/nicclas - https://www.frisim.com

GunnarDMedlem sedan juni 20014 290 inlägg
#12

Hur vet du då att mail-adressen verkligen pekar på en verklig person om du inte använder SMTP?

nicclasMedlem sedan feb. 20001 050 inlägg
#13

Jo, naturligtvis används SMTP, men inte VRFY-kommandot. Det som görs är det som skrivs ut i webbläsaren från scriptet, inget annat, och så kollar jag vilken "felkod" som SMTP-servern skickar tillbaka. Hurvida det fungerar "bättre" än VRFY vet jag inte, men det verkar vara så de "riktiga" programmen gör.

Men som sgtpepper skriver, det finns naturligtvis inget som säger att det är en emailadress som används, det kan ju vara tex en gammal spray-adress som ingen kommer ihåg lösenordet till, och det är ju inte så intressant och skicka mail (läs: SPAM, för det är i sådana sammanhang dessa script används har jag förstått ;) ) till en sådan.

/nicclas

PS Ni som ville ha koden, den kommer så småningom :) DS

G8Medlem sedan jan. 20011 213 inlägg
#14

PS Ni som ville ha koden, den kommer så småningom DS

:e

sailsoftMedlem sedan juli 2001225 inlägg
#15

Jag tackar för alla bra inlägg i denna frågan, jag är medveten om problemet att vissa e-postadresser endast är "fiktiva" men man måste se datorn som ett hjälpmedel i arbetet och inget krav.

Om en e-post raderas så upptäcker systemet det, min kund kan kontakta källan och på så sätt snabba upp arbetet lite.

Jag vill gärna se koden nicclas hade.

/ Kjell

nicclasMedlem sedan feb. 20001 050 inlägg
#16

Jag kan ju lika gärna posta koden här. Nedan är sidan/koden som kör på https://www.nic-sys.se/epost.php?epost=c@cr.st just nu. Funkar inte perfekt, pga timeouts etc., men det är ju upp till var och en om man vill prova att använda :)

<? 

// isValid() - Check for validity of an email address
//             using Reg Exp. MX-record lookup and SMTP
//             request.
//
// () nicclas - [url]www.frisim.com[/url] / [url]www.nic-sys.se[/url]
//
// Inspired by earlier attempts for email-validation.
// Not very reliable but worth a try ;)

function isValid($email){ 
  global $HTTP_HOST; 
  $status="email ok";

  if (!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,5})$", $email)){ 
    $status="Adressen $Email ej korrekt enligt Reg Exp test.<br>";         
    return $status; 
  } 
  list($name,$domain)=split("@",$email); 
  if(checkdnsrr($domain, "MX")){ 
    getmxrr ($domain, $mxlist);
  } 
  else { 
    // MX-record is missing, try A-record for domain
    $mxlist[0]=$domain;         
  } 

  $try=0;
  $verified=0;
  echo "Domäner att prova: ".count($mxlist)."<br>\n";
  while(($try<count($mxlist)) && $verified==0){
    $sp=fsockopen($mxlist[$try],25); 
    echo "Try $try - Trying: ".$mxlist[$try]."\n";
    $try++;
    if ($sp){ 
      if(ereg("^220",$reply=fgets($sp,1024))){ 
            
        echo "Sänder: HELO $HTTP_HOST<br>"; 
        fputs($sp, "HELO $HTTP_HOST\r\n" ); 
        $reply=fgets($sp, 1024 );

        echo "Sänder: MAIL FROM: &lt;{$email}&gt;<br>"; 
        fputs($sp, "MAIL FROM: <{$email}>\r\n" ); 
        $from=fgets($sp, 1024 );

        echo "Sänder: RCPT TO: &lt;{$email}&gt;<br>"; 
        fputs($sp, "RCPT TO: <{$email}>\r\n" ); 
        $to=fgets($sp, 1024 );

        echo "Sänder: QUIT<br>"; 
        fputs($sp, "QUIT\r\n"); 
 
        fclose($sp); 

        if(!ereg("^250", $from)|| !ereg("^250", $to )) { 
          $status="Servern svarar inte på $email."; 
        } else {
          $status="email ok"; 
          $verified=1;
        }
      }
    }
  }
  return $status; 
}

$ret=isValid($epost);
echo $ret;

?>

Ledsen för att det blev PHP-kod i ASP-forumet ;)

/nicclas - https://www.frisim.com

GunnarDMedlem sedan juni 20014 290 inlägg
#17

Ser ett par fallgropar med denna lösningen:

Oftast på en domän finns det minst 2st mailservrar, där en handhar alla konton och den andra tar imot mail adresserad till domänen oavsett om mailadressen finns eller inte i backupsyfte om den "riktiga" mailserver går ner.

Jag provade mot en mailadress som jag vet inte finns och fick som svar att den var helt Ok, pga att skriptet "pratade" med backupmailservern.

  1. Många företag sitter bakom en brandvägg, där brandväggen (som agrerar mailserver) endast kontrollerar om den tar imot för domänen, sedan skickas mailet vidare in till mailserver. I detta fallet får man Ok av brandväggen iom. att domänen finns, detta betyder dock inte att mailadressen fungerar.

Bägge dessa fallen gäller all kontroll av mailadresser!

nicclasMedlem sedan feb. 20001 050 inlägg
#18

Jo...

137 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
133 ms — hämta forumlista (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)