feat(core): the e-mail server keeps /mailserver/konten.txt up to date at run time, measured against Java

The account file's writer moves from the export (packages/fls) into the
core, so that the export and the running server write the same. The
server writes the file at its start and whenever its accounts change.
EmailRun now records Java's file as it left it and as Java writes the
accounts it ended with; Java leaves the notice to a local sender out until
its next write.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-02 11:41:16 +00:00
co-authored by Claude Opus 5.5
parent a867c33d64
commit f622959ecc
13 changed files with 1863 additions and 1777 deletions
+8
View File
@@ -726,6 +726,14 @@ Gemessen (01.10.2026):
* Die Größe in `STAT` und `LIST` ist Javas eigene: die Länge von Text,
Absender, Betreff, Empfängerliste (`[a, b]`) und Datum.
* Die Kontendatei `/mailserver/konten.txt` (seit F3.5a mitgeschrieben, wie
Java sie hinterlässt und wie `kontenSpeichern` die Konten am Ende
schreibt, 02.10.2026): Java schreibt sie nach einer angenommenen Mail,
nach POP3-Befehlen, bei Kontoänderungen und beim Stoppen; die
Benachrichtigung an einen lokalen Absender schickt der SMTP-Arbeiter erst
nach dem Speichern, sie fehlt in der Datei bis zum nächsten Mal. Felder
ohne Wert (das Datum) schreibt Java leer.
## E-Mail-Programm (F3.3b)
`EmailClientRun` lässt Javas E-Mail-Programm (`EmailAnwendung`) auf
+5 -1
View File
@@ -3,7 +3,8 @@
// really happens: every frame each card saw, every line the server wrote
// into its window, every line of the generic client that talks to it, and
// the server's accounts at the end (each message as Email.toString, whether
// it is new, whether it is marked for deletion).
// it is new, whether it is marked for deletion), and its account file, as
// Java left it and as Java writes those accounts (kontenSpeichern).
//
// EmailRun <scenario.json> <story> <milliseconds> <out.json>
//
@@ -139,7 +140,10 @@ public class EmailRun {
out.close(']');
}
out.close(']');
// The account file as Java left it, and as Java writes the accounts it ends with (kontenSpeichern).
out.key("file").string(files.holeDatei("/mailserver/konten.txt").getDateiInhalt());
server.kontenSpeichern();
out.key("savedFile").string(files.holeDatei("/mailserver/konten.txt").getDateiInhalt());
out.close('}');
network.stop();
ScenarioNetwork.write(args[3], out);