Entwickler-Ecke

Internet / Netzwerk - smtp-server imitieren


Savage - Sa 09.11.02 20:40
Titel: smtp-server imitieren
Hi allerseits,

hat jemand von euch ne Ahnung, wie ein Mailserver die empfangenen Mails zu der richtigen Mailadresse weiter verschickt?

Mein Ziel ist es per Clientsocket eine EMail ohne smtp-server direkt zu versenden. (Muss ja schließlich auch möglich sein :)

Oder weis jemand die richtigen RFCs, die erklären, wie ein Mailserver die Mails weiter verschickt. (also nicht, wie ich ne Mail an einen Mailserver über port 25 überreiche, sondern, wie ich ne Mail ohne Mailserver verschicke)

danke schon mal
mfg
Savage


Kalka - So 10.11.02 00:58

also du musst dich dabei direkt zu einem mailServer Connecten. Dann musste halt mit den ganzen strings arbeiten wie Mail FROM:, RCTPTO: oder sowas halt. ähhm, RCF weiß ich jetzt net,m such einfach SMTP ;)

cu Kalka


Savage - So 10.11.02 09:22

naja, dass will ich ja vermeiden, mich mit einen einfachen Mailserver zu connecten, das ist ja nicht das Problem. Wie ich Mails über einen Mailserver Sende und Abfrage weis ich schon (ist recht einfach).

Mein Ziel soll es sein, eine Mail ohne Mailserver zu versenden. Weil, wenn der Mailserver eine Mail erhält, so muss er die ja auch weiter senden (zum Empfänger). D.h. ich will versuchen Mailserver zu spielen (zu imitieren) und somit die Mail direkt an den Empfänger zu senden. (zB. jemand@gmx.de direkt zu gmx.de)

Ich hoffe ihr versteht was ich mein.

MfG
Savage


Kalka - So 10.11.02 13:13

mann kann keine mails ohne mailServer senden *lol*

Ich weiß was du meinst, nur du nicht was ich *lol*

also nehmen wir mal an du willst ne Mail zu blabla@gmx.de senden. Jetzt MUSST du dich zu DEM MailServer Connecten, der nach dem @ steht! Sonst wird die Mail nocht ankommen. Allerdings heißt das net einfach gmx.de, sondern ganz komisch ;) Also ich weiß net mehr genau, wie du das rausbekommst?! D.h. ohne mailserver geht es gar nicht, weil du die mail ja an den MailServer sendest. Ach, und wenn du dich einfach zu pop.gmx.de verbindest, geht es auch nicht, weil man sich da erst einloggen musst. Das ist noch eine Andre Addresse..

cu Kalka


Moritz M. - So 10.11.02 14:11

Eine Mail ohne Mailserver verschicken....
Das wäre wie einen Brief ohne die Deutsche Post(soll keine Schleichwerbung sein) zu verschicken
Das geht einfach nicht!
Und mit nem Socket schon gar nicht.
Oder hast du vor auf dem Server ein ServerSocket und in deinem Programm ein ClientSocket einzubauen, dann was an das SerSock zu schicken und das Programm beim Server Socket kopiert die Mail dann so mir nichts dir nichts in das Postfach...?
neneneneeeeee! :?


Savage - So 10.11.02 14:46

hmm, nochmal das Prinzip skiziert:


(1) EMail-Programm (zB. Outlook) sendet eine Mail an einen SMTP-Server (Email-Client connected sich über Port 25 zum Server --> Mail From:, RCPT TO:, DATA, ....)

(2) SMTP-Server sendet die Mail weiter, bis sie irgendwann mal zum POP-Server des Empfängers ankommt --> hier will ich eingreifen

(3) EMail-Programm (zB. Outlook) lädt die Mail von seinem POP-Server herunter (EMail-Client connectet sich mit seinen POP-Server über Port 110, Authorisierung: user, pass, Mailinfos: list, top [nr] [zeilen], retr [nr] --> Mail wird heruntergeladen)


Mein Ziel ist es nun von Position 2 aus eine Mail zum Empfänger zu senden! Mein Prob.: wie überreicht der SMTP die Mail zum Empfänger (und in welche Struktur), nix anderes.

Und das geht auch über einer Client-Compo über TCP, weil, ich hab mal so zum spaß ne MAil in dieser Art und weise zu mir selbst geschickt:
test@[meine IP bzw DNS]
2 Sekunden später meldet sich meine Firwall und blockierte den SMTP ab.

Was mir fehlt ist der Port und die ganzen Befehle --> also die RFCs zum Thema.

Ich hoffe, dass ich jetzt etwas verständlicher war.

Gruß
Savage


Coentje - So 10.11.02 15:23

Du schreibst eine Mail an irgendwenn@gmx.de.

Statt die Mail an Deinen (bzw. den Deines Providers) SMTP-Server zu übergeben, möchtest Du die Mail direkt an den Server mx0.gmx.net leiten.

Verstehe ich Dich richtig?

Gruß aus dem Norden,
Coen

P.S. RFCs zu SMTP: 2821, 2822, 1425, evtl. 1985


Moritz M. - So 10.11.02 15:57

Ja, ich glaubel, das meint er. Er will einen smtp-Server schreiben, glaube ich, und sucht die Parameter, die er an den pop3-server übergeben muss, hab ich recht?


Savage - So 10.11.02 16:02

Ganz genau:

Jetzt hab ich es auch endlich geschaft.

Mein Fehler war, dass ich gedacht hab, dass der SMTP die Mail zum POP versendet, was aber nicht so ist. Der eigene SMTP sendet die Mail auch nur zum mx SMTP des Empfängers und kommuniziert dann mit Mail From,....
usw.

Vielen Dank!!, das mit den mx0.gmx.net hat mich auf die richtige Weg gebracht :)


MFG
Savage


Moritz M. - So 10.11.02 16:11

Viel Spaß dann mit deinem Prog


Coentje - So 10.11.02 16:28

Wichtig ist, dass Du vorher einen DNS-Lookup machst. Der MX-Eintrag muß ja nicht zwingend auf die Dir bekannte Domain zeigen.

Die Anti-Spamming-Maßnahmen der Mail-Server könnten Dir auch noch Probleme bereiten (Reverse-DNS-Lookup, usw.)

Gruß,
Coen


Kalka - Mo 11.11.02 16:50

ahh, da war die Addy wieder, wie zum teufel kommt ihr an mx0.gmx.net dran? also ich kannte nur pop.gmx.de, aber wie kommt man daran, was muss man senden, wie geht es in Delphi??

cu Kalka


Savage - Mo 11.11.02 17:24

also noch mal vielen Dank für eure Hilfe,

um an die Mailexchanger Adresse ranzukommen, muss man einen mx-lookup durchführen. Am besten die Indy-Kompo DNS verwenden. Im Beispiel von Indy ist ein Prog namens DNSResolver, dort als Query MX einstellen, Domain und nen DNS-Server eintragen (zB.: ns1.public.eti.at) und request starten. Fertsch :)

Danach werden dir die möglichen MX-Adressen der Domain nach priorität aufgelistet.

MfG
Savage


Coentje - Mo 11.11.02 17:25

Kalka hat folgendes geschrieben:
mann kann keine mails ohne mailServer senden *lol*


Stimmt, aber man kann sich einen basteln :twisted:

POP und SMTP sind (vereinfacht und bildlich gesprochen) zwei Seiten einer Medaille - Münze eben. Mit POP holst Du Deine Mail aus deinem Postfach. Mit SMTP wird Mail zugestellt - auch zwischen Servern. Um herrauszufinden welcher Server für eine Domain zuständig ist benötigt man eigentlich nur einen Nameserver und sieht dort nach. Wobei das Zauberwort "MX" ist...

Gruß,
Coen


Moritz M. - Mo 11.11.02 19:27

POP ist sozusagen dein Briefkasten, und SMTP der Briefträger.
Auch mal Bildlich und realischdisch gesprochen :roll:


Kalka - Mo 11.11.02 22:28

aber wie genau komm ich denn nu an mx0.gmx.net? also ich würde das gerne nur mit ClientSocket machen?

cu Kalka


Moritz M. - Di 12.11.02 13:46

Na eigentlich in der Regel Host und Port(es gibt glaub ich so nen Standartport, weiß ich grad nicht) eintragen und connecten, und dann musst du irgendwelche Parameter übergeben. irgendwie so(is jetzt aber aus der lauf geholt!):
ClientSocket1.Socket.SendText('mail to XXX subject XXX body XXX......');
kann dir die paras aber nicht genau sagen :hair:


Kalka - Di 12.11.02 13:57

hmm ne, so sende ich ja die Mail wenn ich Connected bin, die Befehle kenne ich ja alle, ich muss nur wissen, womit ich mich Connecten soll. Also mit pop.gmx.de kann ich es net, da will er das ich mich einlogge, und das geht irgendwie net. Allerdings geht es bei dieser andren Addresse ohne Probleme. Nur wie seid ihr an die Addresse gekommen??

cu kalka


Moritz M. - Di 12.11.02 14:03

Ja, bei pop.gmx.de loggt sich ja auch das Mailprog ein und holt die Mails für die entsprechenden Benutzer. Wenn du dich da nicht einloggen müsstest dann wärs ja schlimm


Coentje - Di 12.11.02 16:10

Wie es mit Indy & DNSResolver geht wurde ja schon weiter oben beschrieben. Wie es direkter geht kann ich leider auch nicht sagen. Ich könnte Dir aber sagen welche RFCs das grundsätzlich beschreiben - 1034, 1035 und 974.

Ich habe (glaube ich) irgendwo auch noch ein klein Windos-(Shareware?)Programm, das solche Anfragen macht. Wenn es interresant sein könnte kann ich das mal suchen - Könnte aber länger dauern.

Port Port für DNS-Anfragen ist jedenfalls 53 und die meisten Nameserver unterstützen UDP und TCP.

Vielleicht hift es ja wenigsten ein wenig,
Gruß
Coen


Kalka - Di 12.11.02 16:31

@Onz: du meinst den POP Server, ja das wäre wirklich katastrophal, aber ich meine ja den SMTP Server, womit man die mails sendet...

wäre nett, wenn du mal danach gucken könntest, ist das auch mit Code? Ich werd mir auch mal die RCF's angucken

cu Kalka


Coentje - Di 12.11.02 17:31

Nun hat es mich ja doch etwas mehr interessiert und ich hab mal etwas geforscht.

"Mein" Nslookup hatte ich mir mal bei netzmafia.de [http://www.netzmafia.de/software/net-cd/] gedownloaded.

Bei [url=http://www.haferbeck.de/tool/nslookup.asp]haferbeck.de[/url] kann man sogar online lookups machen. :?

Und bei torry habe ich dann sogar noch ein Tool mit Source gefunden:
NSInspector v.1.1 :D

Gruß,
Coen

Beinahe vergessen: win NT & 2000 können nslookup "schon" von sich aus..


Moritz M. - Di 12.11.02 18:37

sorry..bin zur zeit etwas hohl im kopf :hair:


Kalka - Di 12.11.02 18:54

hmm, jetzt stellt sich nur die Frage, wie ich mir sozusagen mein eigenes kleines NSlookup schreibe, ich habe schon in Google gesucht, und bei RFC find ich auch nichts, könnt ihr mir helfe?

cu Kalka


Coentje - Di 12.11.02 19:57

Also ich werde mir mal die Source von NSInspector v.1.1 [http://www.torry.net/util_network.htm] schnappen und mal versuchen das Wesentliche (UDPClient) vom Unwesentlichen (Fontauswhl, etc) zu trennen. Und dann mal sehen was über bleibt - Da sollte man doch schlau draus werden, wie so ein UDP Statement gebildet wird.

Aber nicht mehr heute - muß erst noch einen Mailserver prügeln - elendige Kiste, elendige. :puke:

RFCs findet man übrigens am schnellsten unter http://www.ietf.org/rfc.html

Gruß,
Coen