Ziehen MX-Eintrag von DNS-server
Bin ich eine Anwendung schreiben, die mich um eine DNS-Suche für ein MX-record. Ich bin mir nicht sicher, ob jemand hat Erfahrung diese Art von Arbeit, aber wenn Sie tun, jede Hilfe würde geschätzt werden.
BEARBEITEN:
Die Sache, die ich werde für eine Anwendung, senden Sie eine e-mail-Alarm. Das problem ist ich muss die Anwendung in der Lage sein, um lookup der MX-Eintrag für eine Domäne.
- Was ist deine eigentliche Frage? Es ist ein bisschen konfus im moment. Auch wenn Sie code für das problem zur hand, bitte liefern Sie es.
- Ja, tut mir Leid, dass; ich habe keinen code zur Verfügung in dem moment, als ich versuche, herauszufinden, wie man den code zu schreiben. Grundsätzlich bin ich zu schreiben versucht, eine Anwendung zu finden, die MX-record.
- Kein problem. Das könnte Ihnen helfen. tools.ietf.org/html/rfc1035
- Danke für den link, ich weiß, dass ich tun könnte etwas wie tun eine DGRAM senden und dann hören Sie auf DGRAM für die Antwort, aber das wäre ein Schmerz, als würde ich brauchen zu wissen, der Quell-port zum lauschen aber wie es scheint, könnte die beste Wahl, wenn resolver(3) nicht geklappt.
- 53) ist standardmäßig für DNS. Es könnte eine andere, aber es wird Arbeit für den Stamm-DNS-Server.
- Danke @Große Schildkröte ! Erweitern seine Antwort, dieser code muss kompiliert werden, mit der "-lresolv" - flag
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die einfachste Methode ist einfach zu benutzen, allgemein verfügbare Werkzeuge.
Den grundlegenden "dig" - Befehl werden die Datensätze, die Sie über diese Abfrage:
Wenn Sie möchten, dass nur die Zeilen mit den mx-records...
dig ist verfügbar auf den meisten linux /unix-Boxen installieren.
Wenn Sie in windows können Sie mit nslookup
Dann einfach Parsen der Ausgabe dieser gemeinsamen tools.
EDIT: Einfaches C-Beispiel für sockets aus dem web
Da Sie "C" als ein tag, ich denke, du bist auf der Suche für die source-code zu tun MX-lookups Verwendung von raw-sockets. Ich kopierte die aus http://www.developerweb.net/forum/showthread.php?t=3550. Kann es sein, was du suchst?
Merke ich, dass Sie schreiben für Linux. Die idomatic Möglichkeit für ein normales Programm zum versenden von E-Mails auf Unix-artigen Systemen ist entweder:
Beide Möglichkeiten davon ausgehen, dass die lokalen mailer ist so konfiguriert, übergeben Sie die E-mail auf, wo es zu gehen; auf einem gut konfigurierten Linux-box, das ist eine faire Annahme.
Wenn das nicht ZUSAGT, der zweitbeste Weg ist, für Ihr Programm zu akzeptieren, die Adresse einer lokalen E-mail-relay-server zu verwenden, und nur eine Verbindung zu diesem server auf port 25.
In anderen Worten, wo immer möglich, verwenden Sie eine vorhandene E-mail-relay zum versenden Ihrer E-Mails auf. Diese E-mail-relays werden alle lokalen wissen, dass es notwendig werden könnte, um E-mail aus dem Netzwerk, dass Sie auf nur einen Blick in die MX zu senden versuchen, direkt zum Ziel ist nicht immer zur Arbeit gehen.
Wenn du alles gelesen hast und du noch suchen möchten MX-records, versuchen die adns Bibliothek, es kümmert sich um all die mühsamen details einbezogen in DNS-Auflösung (und glauben Sie mir, es ist langweilig, und einfach falsch!).
unter linux:
[Disclaimer: ich war früher ein glücklicher beta-tester von SnertSoft Zeug, und ich bin immer noch mit mehreren Ihrer Produkte]
Tatsächlich tun dies mit der hand hat auch Ihre Tücken, z.B. wenn Sie haben, um eine abgeschnittene Antwort und wechseln müssen, von UDP auf TCP.
SnertSoft's
libsnert
(kostenlos, click-through-Lizenz erforderlich) hat bereits eine C-Implementierung für diese Rückkehr einen Vektor mit Einträgen. Vermeiden Sie "nicht-erfunden-here" - wenn möglich 🙂Tun Sie in der Tat zu implementieren ein MTA, anstatt einige der bestehenden Lösung?
Werfen Sie einen Blick auf ldns, von NLnet Labs. Diese Bibliothek übernimmt die low-level-packet-handling und hat seine eigene resolver-client eingebaut.
Die Dokumentation beinhaltet Beispiel-code, die macht genau das, was Sie benötigen.