Hallo, vielen Dank für die Ausführliche Antwort! Am Donnerstag, 16. Dezember 2004 21:15 schrieb Martin Schmitz:
Sören Wengerowsky schrieb:
Aber wie funktioniert das technisch mit der "gefälschten" Domain?
Da ist eigentlich nichts gefälscht. Wir können das Ganze ja hier mal durchspielen, indem wir uns mit telnet mit einem Mailserver unterhalten. Exact dasselbe Spiel spielen Mailserver untereinander.
ok..
Ich dachte immer, man benötigt bei den meisten Providern eine smtp-Authentifizierung, oder nicht?
Du kannst einfach selbst SMTP sprechen mit dem Server, der Deine Mail erhalten soll. Z.B. so:
Also per telnet bist du jetzt sozusagen der smtp-Server, der normalerweise die Mails weitergibt an irgendwelche Mailserver?
Erst einmal finden wir heraus, welcher Server sich zuständig fühlt für Mail an die Domain web.de:
gate.msitc.de:~# dig web.de mx [...] web.de. 24569 IN MX 100 mx-ha01.web.de.
Der Server mx-ha01.web.de nimmt also u.a. Mail für web.de entgegen, also sprechen wir mal mit dem:
gate.msitc.de:~# telnet mx-ha01.web.de 25 Trying 217.72.192.149... Connected to mx-ha01.web.de. Escape character is '^]'. 220 mx07.web.de ESMTP WEB.DE V4.103#184 Thu, 16 Dec 2004 20:44:02 +0100
Ok, der Server meldet sich als mx07.web.de. Eigentlich sollte ich jetzt ein ehlo senden, aber der Einfachheit halber lassen wir das mal weg. Als nächstes möchte der Server von mir wissen, wer ich bin, d.h., er möchte einen Return-Path für die einzuliefernde E-Mail haben:
mail from: "George W. Busch"
250 is syntactically correct
Heißt das, dass es die Adresse president@whitehouse.gov wirklich gibt, oder heißt das "syntactically correct" nur, dass es die Domain gibt und eine Syntax richtig eingehalten wird, also irgendwer@domain.uri ..?
Ob diese Adresse nun mir gehört oder nicht, wie sollte der Server von web.de das jemals herausfinden. Wie Du siehst, überprüft er lediglich, daß die E-Mail-Adresse syntaktisch korrekt ist. Danach möchte er gerne wissen, an wen die Mail gehen soll. Hier muß ich natürlich die korrekte Adresse des Empfängers eingeben:
rcpt to: Svren Wengerowsky
250 verified Gut, der Server antwortet, daß er Mail für diese Adresse annehmen möchte. Alles, was jetzt folgt, ist im Grunde genommen beliebig. Nach der einleitenden Zeile 'data' kann kommen, was will. An dieser Stelle wird auch erst übergeben, was in den Header-Zeilen 'From:', 'To:', 'Subject:' usw. stehen wird:
Achso. Ich dachte jetzt, der Mail-Server nimmt sowieso nur mails an, von irgendwie zertifizierten Smtps. Aber wenn das so klappt, wie du das gemacht hast, dann weiß man ja wirklich nicht, von wem die mails kommen...
data 354 Enter message, ending with "." on a line by itself From: "George W. Busch"
To: "Bill Gates" Subject: Beispiel Hier kommt der eigentliche Mail-Body. . 250 OK id=1Cf1YE-0004e5-00
Wichtig ist noch, daß Header und Body durch eine Leerzeile voneinander getrennt werden. Ein Punkt als einziges Zeichen in einer Zeile beendet den Dialog, woraufhin der Mailserver ein 'OK' zurückliefert und - in diesem Fall, da ich es nicht selbst getan habe - eine Message-ID.
Diese Mail solltest Du tatsächlich in Deinem Postfach bei web.de finden.
Ja. Ich habe sie gekriegt.
Received: from [80.237.205.89]
by mx07.web.de with smtp (WEB.DE 4.103 #184)
id 1Cf1YE-0004e5-00
for swengerowsky@web.de; Thu, 16 Dec 2004 20:45:18 +0100
From: "George W. Busch"
Dann wäre es doch nicht möglich, z.B. mit der Domain web.de mails zu versenden?
Die Mail, die Du gerade liest, ist ein gutes Gegenargument. Die hat nie ein Mailserver von web.de zu Gesicht bekommen, wie Du auch an den Headern erkennen kannst. Ich benutze meinen eigenen Mail-Server als Relay.
OK. Ich seh schon.
Du kannst nicht in's 'From:' schreiben, was Du willst, wenn Du Deine Mail über die SMTP-Server von web.de verschickst, diese also als relay benutzt, weil die Server von web.de das eben nicht zulassen. Mit meinem Mailserver - oder mit offenen Relays oder mit telnet oder ... - kann ich aber einliefern was und bei wem ich will. ;-)
Wäre es ausgehend davon nicht möglich, die DNS der Domain zu überprüfen?
Ja, das kann man machen und viele - auch ich selber - machen das so, allerdings vermutlich anders, als Du denkst. Normalerweise gibt der einliefernde Host sich mit der einleitenden Zeile 'ehlo example.com' zu erkennen. Der Empfangende Rechner kann nun hingehen, und einen sog. reverse DNS lookup machen, d.h., er überprüft, ob es einen DNS Eintrag für die IP-Adresse gibt, die der einliefernde Rechner trägt und ob dieser Eintrag identisch ist mit dem 'ehlo', das derjenige gesendet hat.
Wie überprüft man eigentlich, ob es einen DNS-Eintrag für eine IP gibt. Ist das überhaupt möglich so auf die Schnelle? Müsste man da nicht alle DNS gleichzeitig abfragen?
Man kann doch die IP des smtp-server, die im Header steht mit der eines "ping smtp.web.de" vergleichen, oder?
Im Header steht die IP des Rechners, der die Mail eingeliefert hat. So wirst Du z.B. in den Headern der obigen Mail die Adresse 80.237.205.89 zu sehen bekommen. Nicht mehr und nicht weniger. Das hat aber überhaupt garnichts mit den Mailadressen in 'From:' oder 'mail from:' zu tun. Schließlich kann mein Server durchaus auch Mailserver für ganz andere Domains sein - und ist es in der Tat auch.
Achso. Dann erübrigt sich das ja..
HTH, Martin
P.S.: Wenn Du das mit dem SMTP-Dialog mit telnet selbst nachvollziehen möchtest, eignet sich evtl. kein Empfänger bei einem großen Massen-Hoster, da diese in der Regel SMTP-Dialoge mit IP-Adressen, die aus dem Pool von dyn. Adressen von Dial-Up-Providern kommen, ablehnen.
Das habe ich gerade gemerkt:
soeren@linux:~> telnet mx-ha01.web.de 25
Trying 217.72.192.149...
Connected to mx-ha01.web.de.
Escape character is '^]'.
220 WEB.DE
mail from: "George W. Busch"
D.h., mx.web.de erkennt, daß Deine IP von T-Offline ist und lehnt jegliches Gespräch mit Dir ab.
Woher wusstest Du eigentlich, dass ich ein T-Offline-Kunde bin? Hatte ich das hier schonmal erwähnt, oder konntest du das aus einem Header ablesen? Ich persönlich sehe jetzt gerade keine Hinweise hier auf t-online im Header. Vielen Dank Gruß Sören