Eben gerade haben Guido und ich versucht ein Problem anzugehen, das bei dem Versand von Emails auftreten kann. Das Problem heisst “ist diese Email Adresse auch echt?”.
Man kann sich dem Ganzen ja von mehreren Seiten nähern unter anderem durch den exzessiven Gebrauch von regulären Ausdrücken (hab ich versucht und bin gescheitert) aber wenn man nicht soooo hochvolumig unterwegs ist geht es auch anders.
Jede Email muss ja irgendwie zu einem Zielhost kommen um da in den Posteingang des betreffenden Users zu gelangen. Der Wegweiser zu diesem Zielhost ist im DNS hinterlegt und hört auf den sprechenden Namen MX-Record (MX = Mail eXchanger).
Wenn wir nun versuchen herauszubekommen, ob es eine Mailadresse wirklich gibt ist die erste Frage ja, ob die Maildomain überhaupt erreichbar ist und wie bei ruby üblich gibt es auch hier ne Spitzenlösung. Sie hört auf den Namen net-dns und ist als gem installierbar. Also erstmal
sudo gem install net-dns
Damit haben wir schon mal ein nettes Tool für DNS Abfragen am Start. Wir können nun folgende Befehlssequenz abfeuern um auf das Vorhandensein eines MX Eintrages zu testen
require 'net/dns/resolver'
packet = Net::DNS::Resolver.start("web.de", Net::DNS::MX)
answer = packet.answer
answer.any?
Die letzte Zeile liefert true, wenn es einen MX Record für diese Domäne gibt und false wenn es diesen nicht gibt. Damit sind natürlich zwei Fragen noch nicht geklärt:
- gibt es den eingetragenen Mailserver noch? (oder ist der abgeschaltet)
- gibt es die Email Adresse?
Zum ersten kann man sich natürlich eine kurze Routine schreiben, die nachguckt ob auf Port 25 (SMTP) jemand lauscht. Dazu holt man sich aus dem Answer Paket einfach die IP Adresse des Mailservers.
Bei dem zweiten wird es etwas schwieriger. In Zeiten des massiven Email Spams sind gut eingestellte Mailserver mit der Herausgabe von Emailadressen oder auch nur dem Vorhandensein der selben sehr sparsam. Man möchte vermeiden, das ein Spammer durch einen Harvesting genannten Prozess einfach kostenlos an jede Menge gültiger Mailadressen kommt. Diese Abfrage ist uns also in den meisten Fällen verwehrt.. vielen Dank an die Bulk Mailer dieser Welt.
Ich danke an dieser Stelle Rodrigo Urubatan dessen Post mich auf diese Nummer gebracht hat.