paddy_de Geschrieben 12. März 2010 Geschrieben 12. März 2010 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! Zitieren
_n4p_ Geschrieben 15. März 2010 Geschrieben 15. März 2010 Also so wie ich das versteh, bekommst du bei DnsQuery auch den MX-Record zurück, dafür muss nur der RecordType gewählt werden: DNS Constants (Windows) im parameter ppQueryResultsSet (pointer auf pointer auf DNS_QUERY) DNS_RECORD Structure (Windows) der MX-Record ist dann ein member der DNS_QUERY struktur. Zitieren
paddy_de Geschrieben 15. März 2010 Autor Geschrieben 15. März 2010 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! Zitieren
_n4p_ Geschrieben 15. März 2010 Geschrieben 15. März 2010 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 =) Zitieren
paddy_de Geschrieben 15. März 2010 Autor Geschrieben 15. März 2010 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! Zitieren
paddy_de Geschrieben 15. März 2010 Autor Geschrieben 15. März 2010 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: Zitieren
_n4p_ Geschrieben 15. März 2010 Geschrieben 15. März 2010 stichwort resolver library hier ein kleines beispiel: performing mx lookup with resolver - UNIX Socket FAQ google ftw!! Zitieren
paddy_de Geschrieben 15. März 2010 Autor Geschrieben 15. März 2010 alles klar danke dir!! mein google hat das nicht ausgespuckt! dann werd ich das wohl jetzt hinbekommen... danke für die reichliche Hilfe! Zitieren
Empfohlene Beiträge
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.