Zum Inhalt springen

NSLookup in C Programm durchführen!


paddy_de

Empfohlene Beiträge

Hallo Leutz...ich hab da mal ne dringende Frage und hoffe, dass ihr mir mal wieder helfen könnt! Beim HTTP Server hat das ja auch ganz gut geklappt! Naja auf jeden fall soll ich nun erstmal einen SMTP Server programmieren und bin soweit auch ganz gut vorangekommen!

Nun mein Problem! Also ich bekomme die Nachricht von meinem Client (Outlook Express) auf meinen Server via SMTP Protokoll! Nun möchte ich die Mail natürlich von meinem Server an den entsprechenden Empfänger schicken! Dazu brauch ich ja den genauen Mailserver des jeweiligen Empfängers um ein Connect mit ihm herzustellen. Das Problem ist nun, dass ich ja nur die Domain habe, also das was in der E-Mail nach dem @ folgt, da fehlt mir ja noch der prefix und der ist von Empfänger zu Empfäner verschiedend.

Lösung hatte ich ir jetzt gedacht ist ganz einfach sowas wir ein NSLookup machen, also über die MXRecords an die komplette DNS heranzukommen.

Wenn ich NSLookup in der Windows Komandozeile öffne und dann MXRecord für z.B. gmx.de mache, dann bekomme ich die mailserver von gmx.

Genau soetwas möchte ich in meinem C-Code machen!

kennt da jemand vll eine bereits vorhandene Funktion? ich hab das bislang nichts gefunden und schon ne weile gesucht!

Das einzige das ich bislang gefunden habe ist DnsQuery, aber da ist die msdn sehr verwirrend und ich weiß nicht ob ich das verwenden kann.

Bitte um hilfe und ein beispiel wäre mehr als überragend! ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

ok das klingt vielversprechend, aber so recht verstanden hab ich nun nicht, was ich genau machen soll. Bin halt noch nicht so wirklich drin in dem Thema SMTP Server und vorallem beim verstehen von der msdn Hilfe! Kannst du mir vielleicht ein Beispiel geben, wie genau ich das machen muss?

danke schonmal!

Link zu diesem Kommentar
Auf anderen Seiten teilen

du deklarierst das ResultSet als DNS_RECORD * pResultSet;

dann übergibst alles an DnsQuery: int status = DnsQuery("google.com",DNS_TYPE_MX,DNS_QUERY_STANDARD,NULL,&pResultSet,NULL);

prüfst den status if(status == ...

und läufst mit ner schleife über das ResultSet, sammels deine daten raus und gibst das ResultSet mit DnsRecordListFree(pResultSet,DnsFreeRecordList); wieder frei.

die schleife sollte etwa so aussehen:


for (i=pResultSet[0];i->next != NULL ; i = i->next) {

  if (i->wType == DNS_TYPE_MX) {

    cout << "mx record: " << i->Data.pNameExchange;

  }


}

oder so, bin bissel raus aus WinAPI sry =)

Link zu diesem Kommentar
Auf anderen Seiten teilen

danke dir das hab ich verstanden und das soweit auch schon umgesetzt! hatte mich beim warten auf deine Antwort, obwohl sie so schnell kam mal selbst noch näher eingelesen und einfach mal drauf los probiert!

Jetzt stehe ich jedoch vor folgendem Problem und zwar ist der erste Parameter in der DNSQuery Function ein PCWSTR! und ich möchte der Funktion ja einen String mitgeben also wie in deinem beispiel: "google.com"

nun bekomme ich aber eine Fehlermeldung, dass er das nicht umwandeln kann!

wenn ich dann den string caste oder ihn vorher deklariere und dann meinen string mit LPCTSTR(str) in die Variable schreibe, bekomme ich nur schrott...iwelche verwirrten zeichen und DNSQuery hat dann Fehler 123

Hoffe du kannst mir wieder weiterhelfen!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Problem behoben...musste lediglich den charset auf Multibyte umstellen..!

nun aber schon wieder ein neues problem :(

hab gerade erfahren, dass der SMTP Server auf linux laufen soll...und DNSQuery ist ja leider eine Windows funktion!

Hat jemand eine idee, ob es eine ähnliche Funktion für linux gibt?

:confused::confused::confused:

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...