Hallo,
kennt sich jemand mit der Funktion 'res_query()' aus der Library libresolv.so aus? Wenn ich einen Request für einen MX-Eintrag an einen NameServer schicke, sendet er mir Daten zurück, allerdings kenne ich das Format nicht, mit dem man diese Daten sinnvoll strukturieren kann. Hat jemand schon mal dieses Problem in einem C-Programm gelöst? Danke im Voraus.
Ciao, Tobias
Am Die, 17 Okt 2000 schrieb Tobias Koenig:
kennt sich jemand mit der Funktion 'res_query()' aus der Library libresolv.so aus? Wenn ich einen Request für einen MX-Eintrag an einen NameServer schicke, sendet er mir Daten zurück, allerdings kenne ich das Format nicht, mit dem man diese Daten sinnvoll strukturieren kann. Hat jemand schon mal dieses Problem in einem C-Programm gelöst? Danke im Voraus.
Erstmal, was willst du eigentlich machen ? Hostname (evtl. reverse) auflösen...blocking,nonblocking...?
Sonst wäre da noch ein Blick in die sourcen von libresolv hilfreich. Ist teil der glibc...
Bye, Stephan
On Tue, Oct 17, 2000 at 05:01:01PM +0200, Tobias Koenig wrote:
kennt sich jemand mit der Funktion 'res_query()' aus der Library libresolv.so aus? Wenn ich einen Request für einen MX-Eintrag an einen NameServer schicke, sendet er mir Daten zurück, allerdings kenne ich das Format nicht, mit dem man diese Daten sinnvoll strukturieren kann. Hat jemand schon mal dieses Problem in einem C-Programm gelöst?
Fertig gelöst nicht, aber probiert. Die Antwort, die du mit res_query bekommst, ist einfach der Inhalt des UDP-Antwortpakets, das der DNS-Server an deinen Rechner zurueckgeschickt hat. Ich bin darauf gekommen, weil die im letzten Parameter zurueckgelieferte Antwortlaenge immer gleich der Paketlaenge der Antwort (Payload des UDP-Pakets) ist Das Pakte musst du nun wohl per Hand auseinandernehmen. Vielleicht findet sich auch eine nette Bibliothek. Wie das Paket aufgebaut ist, steht in RFC1035 ab Seite 24. Alles von, mit und über DNS gibt es auf http://www.dns.net/dnsrd/
Den Quellkode eines MTAs könntest du dir mal anschauen. Die muessen ja auch irgendwie an die MXe rankommen. Willst du einen neuen MTA schreiben oder weshalb beschaeftigst du dich auf diesem Level mit DNS?
Reinhard
On Tue, Oct 17, 2000 at 08:50:57PM +0200, Reinhard Foerster wrote:
On Tue, Oct 17, 2000 at 05:01:01PM +0200, Tobias Koenig wrote:
Hallo Reinhard,
kennt sich jemand mit der Funktion 'res_query()' aus der Library libresolv.so aus? Wenn ich einen Request für einen MX-Eintrag an einen NameServer schicke, sendet er mir Daten zurück, allerdings kenne ich das Format nicht, mit dem man diese Daten sinnvoll strukturieren kann. Hat jemand schon mal dieses Problem in einem C-Programm gelöst?
Fertig gelöst nicht, aber probiert. Die Antwort, die du mit res_query bekommst, ist einfach der Inhalt des UDP-Antwortpakets, das der DNS-Server an deinen Rechner zurueckgeschickt hat. Ich bin darauf gekommen, weil die im letzten Parameter zurueckgelieferte Antwortlaenge immer gleich der Paketlaenge der Antwort (Payload des UDP-Pakets) ist Das Pakte musst du nun wohl per Hand auseinandernehmen. Vielleicht findet sich auch eine nette Bibliothek. Wie das Paket aufgebaut ist, steht in RFC1035 ab Seite 24. Alles von, mit und über DNS gibt es auf http://www.dns.net/dnsrd/
Den Quellkode eines MTAs könntest du dir mal anschauen. Die muessen ja auch irgendwie an die MXe rankommen.
Habe ich schon, aber deren Code ist etwas zu komplex, man kann die eigentliche Abfrage nur schwer extrahieren.
Willst du einen neuen MTA schreiben
Naja, zumindestens probieren
Ciao, Tobias
Am Mittwoch, dem 18. Oktober 2000 um 11:00:12, schrieb Tobias Koenig:
Den Quellkode eines MTAs könntest du dir mal anschauen. Die muessen ja auch irgendwie an die MXe rankommen.
Habe ich schon, aber deren Code ist etwas zu komplex, man kann die eigentliche Abfrage nur schwer extrahieren.
Die Quelltexte von host bzw. nslookup sind vielleicht einfacher zu verstehen.
Tschuess Torsten
lug-dd@mailman.schlittermann.de