feat(core): the e-mail server after Java, measured against Java
SMTP on port 25 stores mails for the domain's accounts as Java reads them anew and tells a local sender of unknown recipients; POP3 on port 110 hands them out. The mailboxes are in the snapshot and go back into the project. EmailRun plays four stories over the network; MailCases feeds Java's workers without one (26 cases, de and en). 18 cases name Java bugs that the core does not take. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -684,3 +684,44 @@ Gemessen (01.10.2026):
|
||||
Regel „TCP 80 verwerfen“ über die erlaubende geschoben, und das SYN des
|
||||
Browsers bleibt an der Firewall hängen. Javas Router-Server lauschte auch
|
||||
hier in einem Lauf nie (`run.sh` wiederholt).
|
||||
|
||||
## E-Mail-Server (F3.3a)
|
||||
|
||||
`EmailRun` lässt Javas einfachen Client (`ClientBaustein`) auf `mail-lan`
|
||||
rohe SMTP- und POP3-Befehle an einen E-Mail-Server schicken (Domain
|
||||
`filius.de`, Konten aus `/mailserver/konten.txt`: anna mit zwei Mails, bob
|
||||
ohne). Aufgezeichnet werden die Frames, die Fensterzeilen von Server und
|
||||
Client und am Ende die Konten (jede Mail als `Email.toString`, neu,
|
||||
gelöscht). `MailCases` füttert Javas `SMTPMitarbeiter` und
|
||||
`POP3Mitarbeiter` ohne Netz über einen Socket, der nur mitschreibt, mit den
|
||||
Fällen aus `packages/core/test/email-server.cases.txt`, auf Deutsch und auf
|
||||
Englisch. Die Netz-Abläufe bleiben bei dem, was Java richtig macht; Javas
|
||||
Fehler zeigen die Fälle.
|
||||
|
||||
Gemessen (01.10.2026):
|
||||
|
||||
* Der Server startet POP3 (Port 110) vor SMTP (Port 25); POP3s Socket nimmt
|
||||
die erste TCP-Startnummer. Die SMTP-Antworten sind übersetzt („220
|
||||
Willkommen bei“), die POP3-Antworten englisch. SMTP schreibt seine
|
||||
Fensterzeile nach dem Senden, POP3 davor.
|
||||
* Eine angenommene Mail speichert Java so, wie es ihren Text neu liest
|
||||
(`new Email(email.toString())`): Zeilenenden ohne `\r`, kein Bcc.
|
||||
* SMTP-Fehler: Nach einer Mail beantwortet der Server den nächsten Befehl mit
|
||||
503 und behält Absender, Empfänger und Text (die zweite Mail ging auch an
|
||||
die erste Empfängerin, mit dem ersten Text); unbekannte oder verfrühte
|
||||
Befehle bleiben ohne Antwort; ein `quit` im Mailtext beendet die
|
||||
Verbindung; die Domain wird genau verglichen (`FILIUS.DE` ist fremd); ein
|
||||
leerer Absender mit unbekanntem Empfänger und ein Empfänger ohne `@`
|
||||
werfen im Mitarbeiter, die Verbindung endet; eine unbekannte Kopfzeile
|
||||
beendet den Kopf (der Betreff wird Text), ohne Leerzeile fehlt die erste
|
||||
Zeile; eine Benachrichtigung an eine Mail ohne From hat `To: null`.
|
||||
* Die Benachrichtigung über unbekannte Empfänger trägt Javas Datum im
|
||||
Gebietsschema der JVM (hier `10/1/26, 6:30 PM`) und die Adresse des
|
||||
Servers.
|
||||
* POP3 zählt Mails ab 0. Fehler: eine Mail lässt sich nur einmal abrufen;
|
||||
`LIST` ohne Mails gibt `-ERR`, `LIST 0` listet alle; vor der Anmeldung
|
||||
kommen leere Antworten; eine fehlende Mail kommt als leere `+OK`-Mail,
|
||||
`DELE` darauf leer; ein fehlendes oder falsches Argument wirft, die
|
||||
Verbindung endet; nach `DELE` nummeriert `LIST` neu, `RETR` nicht.
|
||||
* Die Größe in `STAT` und `LIST` ist Javas eigene: die Länge von Text,
|
||||
Absender, Betreff, Empfängerliste (`[a, b]`) und Datum.
|
||||
|
||||
Reference in New Issue
Block a user