Wie schreibt man am einfachsten einen E-Mail Server auf Java?

4 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Relativ einfach ist die korrekte Kombination von ServerSocket, Threads und StreamReader/StreamWriter.

Der Ablauf im Groben:

  1. Ein ServerSocket wartet auf eingehende Verbindungen.
  2. Für jede eingehende Verbindung wird ein Thread erstellt, zum Threadpool hinzugefügt und gestartet.
  3. Alles weitere wird im Thread behandelt.

Der Thread-Ablauf:

  1. Der Server sendet seine Begrüßungszeile. (Für SMTP "220 lorem ipsum", für POP3 "+OK lorem ipsum")
  2. Der Server wartet auf eine Zeile vom Client.
  3. Der Server wertet die Zeile vom Client aus, und sendet eine Antwortzeile.
  4. Zurück zu Schritt 2, bis die Verbindung getrennt wird.

Danke Isendrak,

du warst der Einziger, der mir ein bisschen Orientierung gegeben hat.

Danke und Grüße

1
@Abraham20

Okay, dem Sternchen nach zu urteilen könnte man davon ausgehen, dass diese Frage (zumindest hier "vor Ort") soweit abgehakt ist.

Aber ich fand die Idee ganz interessant und hatte auch noch ausreichend freie Zeit, da hab ich mal nen rudimentären SMTP+POP3-Server in Java gebastelt: https://drive.google.com/open?id=1J1WFJPFBvV5TNmvM799YwMNs0RdOIyc4

Das Teil ist zwar noch nicht so ganz komplett (Das Hinzufügen neuer Accounts ist n bisschen frickelig und die Verbindung über SSL/TLS läuft nicht unbedingt mit jedem Client ohne weiteres. Ausserdem dürften Mails, die nach "aussen" gesendet werden vermutlich, zumindest ohne weiteres, bestenfalls im Spam-Ordner des Empfängers landen, sofern der MX-Server die Mails überhaupt annimmt.), aber bis auf diese "Kleinigkeiten" läufts. ^^

P.S.: Zum Kompilieren brauchst du entweder "Apache Ant" oder etwas an Geduld und Bastelfreude. ^^

1
@Isendrak

Hallo Isendrak,

danke für deine Codes!

Hättest du Lust, dass das weiter entwickelt werde?

Grüße

1
@Abraham20

Kannst machen, wenn du willst (und kannst ^^).

Insgesamt ist das Teil mehr so ne Art "Rohbau in dem der Strom für das Radio über ne Kabeltrommel vom Generator kommt". Wenn du Lust drauf hast, dem Teil noch (um mal bei der Rohbaumetapher zu bleiben) ein paar Fenster, Unterputzsteckdosen, Wasserleitungen usw. einzubauen, tu es (bzw. versuch es ^^).

P.S.: Ich würd mal sagen, zumindest für die Version 0.1 gilt als Lizenz irgendwas aus der Reihe CC0, WTFPL oder dergleichen (Kurzfassung: Verfahre damit wie es dir beliebt). Such dir eine aus. ^^

P.P.S.: Evtl. werd ich gelegentlich auch noch n bissl dran basteln, dann hätten wir einmal meine Version und einmal deinen Fork.

0

Wei du in der Frage sagst, willst du einen schreiben, also tue es und vergleiche es mit anderen Codes, welcher einfacher ist.

In deiner Erläuterung sprichts du auch davon, einen zu schreiben -- deswegen würde ich die Frage als Unsinnig hinstellen "... einfachst Code um zu schreiben", entweder schreibst du einen oder du willst einen schon geschriebenen ...

Hallo Tschoo,

ich habe nicht geschrieben, dass ich einen E-Mail Server schreiben möchte.

Ich suche Orientierung. Am besten durch etwas Geschriebenes...

Danke und Grüße

0

Antworte mal auf meine Anfrage:)

Hallo Juliahappy,

ich weiß nicht, wie man auf so eine Anfrage antworten kann.

Grüße

0

Echt jetzt? Du erwartest, dass wir hier 5 Zeilen Java hinschreiben und dann geht's? Einen SMTP-Server zu schreiben, ist keine triviale Angelegenheit!

Hallo ohwehohach,

Was ich doch nicht! Ich habe mich damit noch nie beschäftigt.

Außerdem nehmen ich mir manchmal Zeit bei gutefrage Antworten zu schreiben, bei der, wenn man es in Zeilen umwandeln müsste, um 200 Zeilen gehen würde.

Grüße

0
@Abraham20

Du kannst Dir ja mal spaßeshalber den Code der unter Linux üblichen SMTP-Server anschauen - sind ja open source. Und dann kannst Du ja mal schätzen, wie sich das so grob in Java übersetzen lassen würde.

"einfachster Code" ist übrigens eine sehr subjektive Frage. Was der eine als einfach empfindet, ist für den anderen schon zu kompliziert.

0
@ohwehohach

Hallo ohwehohach,

na ja ich habe von jemandem schon einen Code gesehen, mit dem man einen SMTP-Server machen kann. Der Code war nicht so groß. Klar, es war ein einfacher. Aber ich dachte so wäre es auch mit Java.

Danke und Grüße

0

Was möchtest Du wissen?