rene1976
Goto Top

Gibt es einen Webservice oder eine Datenbank im Web für alle Top-Level Domains?

Hallo,

Wir haben in unserer Kunden-Datenbank eine Menge E-Mail Adressen, leider auch mit Tippfehlern bei der Top-Level-Domain.

Da MX-Record Abfragen häufig nicht zufriedenstellend funktionieren, wollen wir zumindest die Fehler in der Top-Level-Domain Endung bereinigen.

Mittlerweile gibt es aber unzählige von .de, .com bis .mobil, . xyz usw.

Man kommt da schon gar nicht mehr hinterher, geschweige denn ein Mitarbeiter.

Frage:
Gibt es im Internet irgendwo eine Datenbank, Verzeichnis, Web-Service den man real-time Fragen kann, bzw. wo man sich die Endung regelmäßig zum verarbeiten herunterladen kann?

Wenn jemand weitere schaue funktionierende E-Mail Validierungen kennt wäre ich auch dankbar.
Wir setzen bis jetzt regular expression, und Bounce-Auswertungen ein.
Bei MX-Record Abfragen bekommen wir leider zu oft falsche aussagen, vor allem bei den großen Provider wie .gmx etc., da diese solche Abfragen nicht zulassen.

Besten Dank,

Rene

Content-Key: 244984

Url: https://administrator.de/contentid/244984

Printed on: April 19, 2024 at 19:04 o'clock

Member: colinardo
colinardo Jul 29, 2014 updated at 17:25:24 (UTC)
Goto Top
Hallo Rene,
http://www.iana.org/domains/root/db
Die IANA bietet auch einen WHOIS Service auf Port 43 an: whois.iana.org. Diesen kann man mit Anfragen füttern, und bekommt dann eine entsprechende Rückmeldung.
Für die Abfrage kannst du z.B. folgendes Powershell-Script verwenden: http://poshcode.org/4405

Oder ein vereinfachtes Script das je nach Erfolg True oder False zurückgibt:
function get-tld {
  <#
  .SYNOPSIS
    Query IANA ROOT-TLD Whois Server
  .DESCRIPTION
    Check if a TLD exists. If YES the function returns TRUE otherwise FALSE. On Error it returns "ERROR"  
  .EXAMPLE
    get-tld -query "de"  
  .PARAMETER query
    The TLD to search
  #>
    param(
        [parameter(mandatory=$true)][ValidateNotNullOrEmpty()][string]$query
    )
    end{
        Try {
            $query = $query.Trim()
            $client = new-object System.Net.Sockets.TcpClient "whois.iana.org",43  
            $stream = $client.GetStream()
            $data = [System.Text.Encoding]::Ascii.GetBytes($query + "`r`n")  
            $stream.Write($data,0,$data.Length)
            $reader = New-Object System.IO.StreamReader $stream, [System.Text.Encoding]::ASCII
            $response = $reader.ReadToEnd()
            if ($response -match 'This Query returned (\d+) objects?'){  
                if ([int]$matches[1] -gt 0 ){
                    $response
                    $result = $true
                }else{
                    Write-host "Die TLD '$query' existiert nicht!" -ForegroundColor Yellow  
                    $result = $false
                }
            }else{
                $response
                $result = "ERROR"  
            }
        }
        catch [System.Exception] {
            write-host $_ -ForegroundColor Red
            $result = "ERROR"  
        }
        finally{
            $stream.Close()
            $stream.Dispose()
            $client.Close()
            $client.Dispose()
        }
        return $result
    }
}
Die Function lässt sich dann mit der TLD als Parameter aufrufen, und liefert $true zurück wenn die TLD gefunden wurde, ansonsten $false. Bei einem Fehler liefert sie "ERROR" zurück.
get-tld "de"
Grüße Uwe
Member: Rene1976
Rene1976 Jul 30, 2014 at 10:10:25 (UTC)
Goto Top
Hi Uwe,

danke für den Tipp.
Das bringt uns in der Bereinigung und Validierung der neuen und existierenden E-Mails schon einen Schritt weiter.
Kennst du zufällig noch weitere Möglichkeiten E-Mail zu validieren, außer die oben genannten?

Regular Expression sind zwar schon recht gut, kann aber nicht vor Tippfehlern schützen.
Wie kann ich gewährleisten, dass die E-Mail die der Kunden uns z.B über ein Web-Formular schickt auch richtig ist und in diesem Moment auch erreichbar ist.

Wir haben mittlerweile auch viele Schreibvarianten und Fehler von z.B. t-online.de gefunden.

Welche Möglichkeiten gibt es die Domain auf Richtigkeit zu überprüfen?

Ist der folgende Vorschlag sinnvoll?

1. Entfernen des E-Mail-Teils vor und mit dem @ Zeichen (nur noch die Domain bleibt übrig)
2. Abfrage der Website der Domain
3. Return-Wert true oder false wenn Domain existiert oder nicht existiert

Problem: Was passiert wenn der Server gerade offline ist?

Eine Abfrage bei NIC auf Existenz des Domainnamen wäre wahrscheinlich besser, allerdings müßte man jedes Land einzeln abfragen, oder?
Gibt es von NIC auch weltweite (über alle Top-Level-Domains) Abfragemöglichkeiten?

Oder gibt es eine .Net Komponente die dies zuverlässig macht.

Wir programmieren in C# und VB.Net

Besten Dank,

Rene
Member: colinardo
colinardo Jul 30, 2014 updated at 13:42:11 (UTC)
Goto Top
Da gibts ne ganze Latte an Webservices: http://blog.mashape.com/list-of-25-email-validation-apis/
Member: opalka
opalka Jul 31, 2014 updated at 09:46:13 (UTC)
Goto Top
Hallo,

eventuell ein nslookup auf die Domain?

nslookup mit C#

Gruß
Member: Rene1976
Rene1976 Jul 31, 2014 updated at 16:33:14 (UTC)
Goto Top
Hallo opalka,

das ist eine ganz gute Idee und funktioniert auch (fast).

Hab mit der Methode leider z.T. Probleme mit subdomains die in E-Mail Adressen stecken wie z.B.:

Diese funktioniert nicht:
abo.freiepresse.de

Ohne Subdomain funktioniert´s:
www.freiepresse.de

Bei dieser Subdomain funktioniert es auf Anhieb:
abdsb.bayern.de

Warum geht es bei einer Subdomain und bei der anderen nicht?

Zumindest komme ich meinen Tippfehlern schon ein Stück näher an den Kragen.
Leider noch nicht ausreichend.

Kennt jemand noch einen Trick?
Wie gesagt, in diesem Schritt muss die E-Mail Adresse nicht auf Erreichbarkeit überprüft werden, sondern erst einmal nur die Tippfehler behoben werden, die durch regular expression nicht erkannt werden können.

Wenn man später noch die Echtheit und Erreichbarkeit von E-Mail Adressen prüfen kann wäre das super - oder ggf. unmöglich (da Fehlerquelle zu hoch ist) face-wink

Gruß,

Rene
Member: opalka
opalka Jul 31, 2014 at 16:48:54 (UTC)
Goto Top
Weil abo.freiepresse.de keine existierende Domain ist. Vielleicht war sie früher es mal, nun aber nicht mehr. Vielleicht gab es eine Umstrukturierung bei der Freien Presse. Diese Adresse müsste also auf jeden Fall überprüft werden.
Member: Rene1976
Rene1976 Jul 31, 2014 at 17:47:11 (UTC)
Goto Top
Du meinst diese Subdomain gibt es überhaupt nicht mehr?

Sind Subdomains generell auch bei den öffentlichen DNS Servern registriert oder nur die Haupt-Domain und diese löst dann die Subdomain auf dem eigenen Server selber auf?

Wie geht das mit den Subdomains genau?

Gruß,

Rene
Member: opalka
opalka Jul 31, 2014 at 18:17:36 (UTC)
Goto Top
Jein, wenn sie von aussen erreichbar sein sollen, dann müssen sie schon im öffentlichen DNS registriert sein. Muss ja kein Webserver hinterstecken, kann ja auch ne reine Maildomain sein. freiepresse ist ja auch nur ne Subdomain von der Top-Level-Domain .de
Member: opalka
opalka Jul 31, 2014 at 18:26:13 (UTC)
Goto Top
Um die Echheit einer Mailadresse zu überprüfen, bleibt am Ende leider nur eine Mail an die Adresse zu schicken. Wenn sie nicht existiert oder fehlerhaft ist, bekommt man einen Unzustellbarkeitsbericht, den man auswerten könnte, allerdings würde man die echten Mailadressen vollspammen, was nicht sehr seriös wäre.
Member: colinardo
colinardo Jul 31, 2014 updated at 18:39:02 (UTC)
Goto Top
Ich würde hier, wenn es um eine Registrierung geht, eher zum Opt-IN Opt-Out Verfahren mit einer Bestätigungsmail an
den Kunden greifen, dann brauchst du diese Überprüfungsroutine der Mailadresse nicht. Der Kunde muss auf einen Link in der Mail klicken um den Dienst zu aktivieren.

Filtere die Mails grob aus, und lass den Rest so, ist doch kein Problem wenn die ins Nirvana laufen. Diese Mailadressen kannst du dann aus den Logs fischen, korrigieren, feddich.

Grüße Uwe
Member: Rene1976
Rene1976 Aug 01, 2014 updated at 14:05:09 (UTC)
Goto Top
Hier geht es nicht um Registierung von z.B. Newslettern.
Bei uns kommen die E-Mails auch offline über ausfüllen von Verträgen oder per Telefon vom Kunden an.
Auch in unseren Web-Formularen wird bei einer Bestellung nicht nach einer Opt-in Bestätigung gefragt.
Das könnte den Kunden ebenfalls abschrecken, bzw. den Bestellprozess umständlicher machen.

Opt-In gibt es bei uns nur im Newsletter.

Das mit den Bounce E-Mail ist auch so eine Sache.
Oft schicken die Provider ein Hard-Bounce zurück "E-Mail existiert nicht", z.B. wenn ein Kunde länger nicht in seinem Free-Account drin war.
Der Account wird dann beim Provider ggf. deaktiviert, aber er kann vom Kunden wieder reaktiviert werden, sobald er sich wieder zum ersten Mal einloggt.
Dann ist oftmals der Inhalt weg, aber die E-Mail Adresse ist wieder erreichbar.

Alle Bounce Varianten auszuwerten ist auch eine sportliche Aufgabe face-wink

Wir löschen erst eine Adresse nachdem Sie über einen längeren Zeitraum mehr als X-mal als Hard-Bounce zurückkommt.
Natürlich sind davon die E-Mail Provider auch nicht begeistert, da Sie echte Hard-Bounce mehrfach zurückweisen müssen.

Leider fällt uns bis jetzt nichts besseres ein.

P.S:
Kann mir jemand sagen was der Unterschied zwischen PING und NSLOOKUP ist?

Gruß,

Rene
Member: opalka
opalka Aug 04, 2014 at 06:46:27 (UTC)
Goto Top
nslookup fragt beim DNS-Server nach, welche IP-Adresse eine Domain hat bzw. welche Domain zu einer IP-Adresse gehört. Während ping ein Request an den Server schickt um zu schauen, ob er erreichbar ist.
Member: Rene1976
Rene1976 Aug 04, 2014 at 07:37:40 (UTC)
Goto Top
Letztendlich kommt doch beides auf das gleich raus.
Beide Varianten liefern mir eine IP-Adresse zurück wenn die Domain existiert.
Ich sehe keine Vor- oder Nachteil zwischen beiden Varianten, oder gibt es einen?
Bei Ping wird noch die Zeit gemessen.
Könnte man die Zeitmessung mit einer .Net Abfrage auch abbrechen?

Bei meinem Tests mit Ping ging das auch mit Subdomains von Google Maps und Apple iTunes.
Sind dann umgekehrt Subdomains die nicht erreicht werden können nicht mehr existent / tod.
Wenn ich dann E-Mails mit NICHT erreichbaren Subdomains über Ping haben, könnte ich diese dann definitiv als alte nicht erreichbare E-Mails löschen?

Gruß,

Rene
Member: opalka
opalka Aug 04, 2014 at 08:13:01 (UTC)
Goto Top
Na ja, nslookup verhält sich zu ping wie Telefonbuch zu Telefon. Wenn ich im Telefonbuch nach der Nummer von Herrn Müller nachschaue, dann weis ich zwar das er die Nummer 12345 hat, aber erst mit dem Telefon kann ich überprüfen, ob er auch wirklich erreichbar ist.

Mit nslookup überprüfe ich erst einmal, ob überhaupt die Domain existiert, bevor ich Datenpakete wild durch die Gegend schicke.
Member: colinardo
colinardo Aug 04, 2014 updated at 12:25:07 (UTC)
Goto Top
Wenn ich dann E-Mails mit NICHT erreichbaren Subdomains über Ping haben, könnte ich diese dann definitiv als alte nicht erreichbare E-Mails löschen?
PING(ICMP)-Anfragen kann ein Admin auf seiner Firewall blockieren, damit kannst du also keine richtige Aussage treffen !! Versuch mal administrator.de zu pingen face-wink, das wird hier nämlich blockiert. Nehme entweder einen dieser Webservices, oder checke selber mit C# etc. im DNS ob ein Mailexchanger für den Domainteil der Mailadresse definiert ist oder nicht, ganz einfach. Was anderes machen diese Dienste auch nicht. Die Überprüfung des MX Eintrags ist die einzig wahre Überprüfungsmethode für Mailadressen.

Grüße Uwe