Custom E Mail Adresse mithilfe Serversocket oder ähnliches

ErfinderLabyrinth

Bekanntes Mitglied
hi,
ich möchte ein Server erstellen, wo man eine E-Mail zum Server sendet und der Inhalt in die Konsole geschrieben wird. Die Frage ist nur, wie ich den Serversocket oder ähnliches erstelle, sodass ich E-Mails empfangen kann

Ich benutze Windows 10 und Java 17
 
Ich fürchte, dass es nicht so einfach funktioniert, wie Du Dir das vorstellst.

Email nutzt ein Protokoll, das Simple Mail Transfer Protocol (SMTP). Dazu gibt es dann RFCs, z.B. die 2821 (https://www.ietf.org/rfc/rfc2821.txt).
Dann gibt es eine ganze Reihe an RFCs, wie eine Email aussehen kann - fängt an mit RFC 822 aber da gibt es ganz viel z.B. 2822 (https://www.ietf.org/rfc/rfc2822.txt) aber auch mehrere zu MIME und Co.

Du kannst natürlich einen Server selbst erstellen, also ein Socket öffnen um dann dort das SMTP Protokoll zu implementieren. Dann kannst Du bei einem Client z.B. Deinen Server eintragen. Wenn Du aber generell Emails empfangen willst, dann brauchst Du auch den ganzen DNS Kram, d.h. eine Domain für die Dein Server als Mailserver eingetragen wurde und so. Je nachdem, was Du willst, kann das also relativ komplex werden.
 
Ich fürchte, dass es nicht so einfach funktioniert, wie Du Dir das vorstellst.

Email nutzt ein Protokoll, das Simple Mail Transfer Protocol (SMTP). Dazu gibt es dann RFCs, z.B. die 2821 (https://www.ietf.org/rfc/rfc2821.txt).
Dann gibt es eine ganze Reihe an RFCs, wie eine Email aussehen kann - fängt an mit RFC 822 aber da gibt es ganz viel z.B. 2822 (https://www.ietf.org/rfc/rfc2822.txt) aber auch mehrere zu MIME und Co.

Du kannst natürlich einen Server selbst erstellen, also ein Socket öffnen um dann dort das SMTP Protokoll zu implementieren. Dann kannst Du bei einem Client z.B. Deinen Server eintragen. Wenn Du aber generell Emails empfangen willst, dann brauchst Du auch den ganzen DNS Kram, d.h. eine Domain für die Dein Server als Mailserver eingetragen wurde und so. Je nachdem, was Du willst, kann das also relativ komplex werden.
wie implementiere ich das SMTP Protokoll?
 
Indem du dir die RFC Dokumente anschaust um zu verstehen, was das so hin und her gesendet wird. Ist ein einfaches, Textueilen-Basiertes Protokoll.
 
Ein ServerSocket ist nur ein Teil, das auf einem Port auf Verbindungen wartet. Nicht mehr!

Also wie ein Reifen - und nun fragst Du: Was musst du mit den Reifen machen, damit Du damit nach Italien fahren kannst.
--> Du musst da erst ein Auto bauen - da wird dann der Reifen nur ein kleines Teil sein. (Das wäre dann sozusagen des Protokoll, das Du implementieren willst. Du kannst Dir aber auch ein ganzes Auto kaufen oder komplexe Teile kaufen. Das muss man nicht selbst bauen!)
--> Du musst dann einen Weg finden, wie Du nach Italien kommst - das wäre hier dann das ganze drumherum, das Notwendig ist, damit da Dein Server überhaupt angesprochen wird. Und daran wirst Du generell nicht vorbei kommen.

Nur um sowas zu machen, musst Du verstehen, wie ein Auto funktioniert (Wie willst Du etwas programmieren, wenn Du nicht verstehst, wie es funktioniert?) und wie man es dann bedient.
 
Ich kenne mich mit Sockets und Serversocket aus. Mein Problem: ich weiß den richtigen port nicht d.H. ich erstelle zwar ein Serversocket, aber wenn ich die E-Mail sende, wird kein Socket / Verbindung geöffnet
 
Mein Problem: ich weiß den richtigen port nicht

Der unverschlüsselte Standard-Port ist 25/tcp

ich erstelle zwar ein Serversocket, aber wenn ich die E-Mail sende, wird kein Socket / Verbindung geöffnet
Was genau machst Du? Wenn Du mit einem Client eine Email versendest, dann gibst Du ja den SMTP Server mit Port an - da wäre es also egal, welchen Port Du verwendest.

Wenn Du mit Deinem Client eine Email absendest und diese an den Provider übergibst: Was hast Du wie konfiguriert, so dass Du erwartest, dass da eine Verbindung geöffnet wird?
 

Der unverschlüsselte Standard-Port ist 25/tcp


Was genau machst Du? Wenn Du mit einem Client eine Email versendest, dann gibst Du ja den SMTP Server mit Port an - da wäre es also egal, welchen Port Du verwendest.

Wenn Du mit Deinem Client eine Email absendest und diese an den Provider übergibst: Was hast Du wie konfiguriert, so dass Du erwartest, dass da eine Verbindung geöffnet wird?
Ich kann keinen Port angeben, wird nicht akzeptiert und der Port 25 funktioniert auch nicht, genauso wenig wie 2525 und 587
 
Was genau versuchst Du? Was gibst Du wie an. Ich habe das Gefühl, dass Du derzeit etwas versuchst, das so gar nicht klappen kann. Daher teile uns bitte die genauen Details mit!
 
wenn du es mit Outlook an deinen Eigenen Rechner der dann auch Server sein muss schicken willst. Musst du das auch in Outlook mit einen Kontoangeben. Dort ist dann deine IP die Server Adresse und den Port könntest du selber bestimmen am besten Standard 25

Das wird auch nicht gehen da Outloock ja immer prüft ob der Server Erreichbar ist. Beim Konto einrichten.
 
Zuletzt bearbeitet:
Wie sieht den der Code für den ServerSocket aus, wie sieht die Konfiguration in Outlook aus?
Code von Serversocket:
Java:
public static void main(String[] args) throws IOException {
        @SuppressWarnings("resource")
        ServerSocket socket = new ServerSocket(587);
        System.out.println(socket.getLocalSocketAddress().toString());
        Socket client = socket.accept();
        System.out.println("accepted");
        BufferedReader reader = new BufferedReader(new InputStreamReader(client.getInputStream()));
        while (true) {
            System.out.println(reader.readLine());
            
        }
        
    }
Outlook hat die Standart Konfiguration
 
Outlook hat die Standart Konfiguration
Ohne Details kann man Dir nicht helfen.
  • Was hast Du in Outlook konfiguriert?
  • Was genau versuchst Du, so dass Du eine eingehende Verbindung erwartest?

Ich vermute, dass Du einfach eine komplett falsche Vorstellung hast, wie der Email-Versand funktioniert. Aber ohne Details kann man das nur vermuten. Und da eine komplette Beschreibung das Forum schlicht sprengen würde, sehe ich so einfach keinen Ansatz dir zu helfen.

Wenn Du mit "Standard Konfiguration" meinst, dass Du ein Email Konto konfiguriert hast und Du somit alle Emails per SMTP an den Mailserver des Providers übergibst, dann ist die Frage: Was für eine Email versendest Du, damit die bei Dir ankommt?

Was wäre dazu notwendig?
a) Eine eigene Domain. Ich nehme da einfach einmal meine Domain kneitzel.de als Beispiel für das folgende Beispiel
b) In dieser Domain muss dann ein Mailserver eingetragen werden. Dazu dienen MX Einträge. Davon kann es mehrere geben. Bei mir sind das Einträge, die auf Google verweisen: aspmx.l.google.com, alt1.aspmx.l.google.com, ... , alt4.aspmx.l.google.com. Das ist halt eine Funktionalität, dass es secondary Mailserver geben kann, die Emails auch annehmen können. Bei Deiner Domain bräuchtest Du dann einen Eintrag, der auf Deinen Server verweist.

Dann könntest Du eine Email an eine Adresse der Domain versenden und diese dem Provider übergeben. Der Mailserver des Providers schaut dann im DNS nach, welche Server verantwortlich sind um diese dann anzusprechen. Dazu muss der Server aber auch erreichbar sein vom Mailserver des Providers.

Was aber auch gehen kann: Der Client will ja per SMTP die geschriebene Mail los werden. Du kannst also ein Konto erstellen, das als SMTP Server Deinen Server angibt. Da kannst Du dann beliebige Daten konfigurieren. Also auch einen beliebigen Port. (Das geht bei dem Server 2 Server Transfer nicht. Da muss es ein Standard Port sein. Wobei da ein SSL verschlüsselter Port per default genommen wird.
 
Was genau willst du eigentlich machen?

Variante a:
* Wenn jemand (egal wer) eine Mail an z.B. erfinderlabyrinth@example.com schickt, soll sie in deinem Java Programm landen?

Variante b:
* Du willst mit Outlook direkt mit deinem Java-Programm kommunzieren, so dass jede Mail, die du darüber versendest in deinem Java-Programm landet (und nicht beim Empfänger)
 

Neue Themen


Zurück
Oben