[Diese Seite ist Teil der Homepage www.daniel-rehbein.de]

Demoprogramme für das Protokoll SMTP


 
 Spam & Adressensammler
(Navigation 2.Ebene)  Die Thematik
(Navigation 3.Ebene)  Spam/UBE/UCE
(Navigation 4.Ebene)  Mail-Transport
(Navigation 4.Ebene)  Demo-Mailserver
(Navigation 4.Ebene)  Spam für Sie?
(Navigation 3.Ebene)  Harvester/Spider
(Navigation 3.Ebene)  RFC 2606
(Navigation 2.Ebene)  Harvester täuschen
(Navigation 2.Ebene)  Adreßlisten vergiften
(Navigation 2.Ebene)  Weitere Informationen

Um die Funktionsweise des E-Mail-Transports mit dem Protokoll SMTP nach dem Standard RFC 2821 einfacher nachvollziehbar zu machen, habe ich das nachfolgende kleine Java-Programm "testmail" geschrieben, das versucht, über einen vorgegebenen E-Mail-Server eine E-Mail an einen angegebenen Empfänger abzuschicken.

Ich habe es entwickelt und getestet mit der aktuellen Java-Version 1.4.2, die Sie unter http://java.sun.com/j2se/1.4.2/download.html erhalten. Allerdings werden nur Funktionen verwendet, die bereits in Java 1.2 existieren, so daß sich das Programm auch mit älteren Java-Versionen einsetzen läßt.

Die Kommunikation zum SMTP-Server erfolgt mittels TCP/IP auf Port 25. Haben Sie keine TCP/IP-Kommunikation mit dem Internet, sondern erfolgt der Abruf von Informationen aus dem Internet über einen Proxy-Server, so läßt sich das Programm nur auf dem Proxy-Server, wo direkte Verbindung zum Internet besteht, einsetzen.

Sie können mit dem Programm z.B. nachvollziehen, zu welchen Empfängeradressen ein bestimmter Server E-Mails annimmt oder welche Absenderadressen sich eintragen lassen. Es wird in der E-Mail nur eine einzige Headerzeile eingetragen, nämlich die Betreffzeile ("Subject"), noch nicht einmal Absender und Empfänger sind dort notiert. Wenn Sie mit dem Programm eine E-Mail an sich selbst schicken, so können Sie nachvollziehen, welche Headerzeilen vom Mailserver ergänzt werden.

Gestartet wird es in der Kommandozeile (unter Windows also in der DOS-Box oder mit einer Batch-Datei). Es handelt sich um eine einzelne Java-Klassendatei mit dem Namen "testmail.class", die Sie einfach mit dem Aufruf "java testmail" starten. Das Verzeichnis, in das Sie diese Datei ablegen, muß beim Start des Programmes das aktuelle Verzeichnis sein. Damit nicht bereits der Browser versucht, den Java-Programmcode auszuführen, sondern Sie die Datei ohne Umstände downloaden können, habe ich sie als Zip-Archiv verpackt.

Das Programm wird gestartet mit:

java testmail mailin.example.net absender@example.com empfaenger@example.com

         

Dabei bedeuten:
java testmailAufruf des Programmes.
mailin.example.netDer Name des Mail-Servers. Dieser Server muß von Ihrem Rechner aus erreichbar sein und es muß auf diesen Server auf Port 25 der SMTP-Dienst laufen.
absender@example.comEinzutragende Absenderadresse Sollen die Absender- und Empfängeradresse identisch sein, so muß diese nur einmal hingeschrieben werden.
empfaenger@example.comEmpfängeradresse der E-Mail

Als Mailserver können Sie z.B. den SMTP-Server Ihres Providers verwenden, den Sie auch in Ihrem E-Mail-Programm als Postausgangsserver konfiguriert haben. Daneben können Sie natürlich auch mit anderen Servern experimentieren. Wenn Sie einen eigenen Mailserver im Intranet verwenden, so können Sie bei diesem E-Mail einliefern und vergleichen, was schließlich beim Empfänger ankommt.

 

Ein paar einfache Mailserver

Hier habe ich ein paar einfache Mailserver für Sie bereitgestellt. Auch diese Programme sind in Java geschrieben und werden an der Konsole (unter MS-Windows also an der MS-DOS-Eingabeaufforderung) gestartet. Abgebrochen werden diese Programme mit der Taste Control-C bzw. Steuerung-C.

Das Programm Mailvernichter ist ein einfacher Mailserver, der das Protokoll SMTP korrekt abwickelt, allerdings die empfangene Mail nicht weiterverarbeitet. Wenn Ihr Rechner aus dem Internet erreichbar ist (z.B. mit einem dynamischen Domainnamen), so können Sie mit dem Programm ein offenes Relay vortäuschen und so Spam-Versender, die nach offenen Relays suchen, in die Irre leiten. Denn das Programm nimmt wie ein offenes Relays unabhängig von der jeweiligen Empfängeradresse alle Mails entgegen, schickt diese dann aber nicht weiter.

Das Programm Mailreporter tut fast dasselbe wie der Mailvernichter, d.h. es nimmt E-Mails entgegen und verwirft diese. Jedoch gibt der Mailreporter die Empfängeradressen der E-Mails an der Konsole aus. Hat man an verschiedenen Stellen (z.B. im Quelltext seiner Webseiten) fingierte E-Mail-Adressen platziert, die nur zum Einfangen von Spam dienen und die zum heimischen Rechner führen, so kann man hiermit recht einfach einen Einblick erhalten, welche Adresse wie häufig angeschrieben wird.

Das Programm Mailablehner tut genau das Gegenteil: Dies ist ein SMTP-Server, der generell die Entgegennahme von E-Mails ablehnt. Er wickelt also das Programm SMTP korrekt ab, nimmt aber trotzdem keine einzige Mail entgegen, sondern weigert sich, die angegebenen Empfängeradresse zu akzeptieren. Jede Empfängeradresse beantwortet der Mailablehner mit dem Fehlercode 550.

Das Programm Mailblocker ist ein Mailserver, der den jeweiligen Client (also den Rechner, der E-Mail abliefern will) gar nicht zu Wort kommen läßt. Dies geschieht dadurch, daß der Mailblocker bereits die Begrüßung (Code 220 im Protokoll SMTP) als nicht endenden Ablauf von Fortsetzungszeilen sendet. Die TCP/IP-Verbindung zum Client wird aufrechterhalten, aber er kommt nicht dazu, Mails abzuliefern. Ist man sicher, daß am eigenen Rechner per SMTP nur Spam-Mails abgeliefert werden, so kann man mit dem Mailblocker die Versender ärgern, d.h. deren Ressourcen (TCP/IP-Verbindungen) sinnlos blockieren. Derartige Programme werden auch als Teergrube bezeichnet. Der Mailblocker ist ein sehr einfaches Beispiel einer Teergrube ohne viel Komfort. Eine Teergrube, die auch Statistiken über ihre Verbindungen ausgibt, finden Sie zum Download auf der Webseite http://www.daniel-rehbein.de/spamgift.html

Das Programm Singlemail ist ein Beispielprogramm zum besseren Verständnis des Protokollablaufs in SMTP bei der Übertragung einer E-Mail gemäß RFC 2821. Es handelt sich hier auch um einen Mailserver, aber er nimmt nur genau eine einzige Mail entgegen und beendet sich danach wieder. Der komplette SMTP-Dialog inklusive der empfangenen E-Mail wird ausgegeben. Starten Sie dieses Programm auf Ihren Rechner und schicken Sie sich dann eine E-Mail (mit Ihren gewohnten E-Mail-Programm oder auch mit dem obigen Programm Testmail), um zu sehen, wie diese E-Mail dem Mailserver übergeben wird.

Die einzelnen Programme werden so aufgerufen:

java mailvernichter mail.example.com 25

         

java mailreporter mail.example.com 25

         

java mailablehner mail.example.com 25

         

java mailblocker mail.example.com 25

         

java singlemail mail.example.com 25

         

Dabei bedeuten:
java mailvernichterAufruf des Programmes.
mail.example.comDer Name, mit dem der SMTP-Server sich im Begrüßungstext melden soll. Wenn Ihr Rechner aus dem Internet erreichbar ist, setzen Sie hier Ihren tatsächlichen Domainnamen ein.
25Der TCP/IP-Port, auf dem der Prozeß laufen soll. Für den Empfang von E-Mails durch einen SMTP-Server ist dies typischerweise 25. Setzen Sie eine Firewall oder einen Router ein, so muß dieser Port freigeschaltet werden.

Der aktuelle Domainname Ihres Rechners (IP-Adresse 35.170.81.33) lautet:

ec2-35-170-81-33.compute-1.amazonaws.com

Starten Sie das Programm Singlemail mit:

java singlemail ec2-35-170-81-33.compute-1.amazonaws.com 25

und schicken Sie dann eine E-Mail z.B. an:

zentrale.postannahme@ec2-35-170-81-33.compute-1.amazonaws.com


 

Weiter zu den nächsten Kapiteln:



[Abrufstatistik]  Homepage  Impressum