-
v0.9.0-beta.1 (Beta) Pre-release
released this
2026-11-04 21:44:55 +01:00 | 1 commits to main since this releaseRelease Notes — v0.9.0-beta.1
Status: Vorabversion (Beta / Prerelease). Nicht produktionsreif, nicht vollständig getestet.
Datum: 2026-11-04Neu in 0.9.0-beta.1
1. Updater (
update.bat/update.sh)Aktualisieren ohne Neuentpacken und ohne erneuten Download der Laufzeit.
- Prüft die Forgejo-Releases, vergleicht Versionen und bleibt standardmäßig im
bisherigen Kanal (auto): eine Beta-Installation wird nicht auf einen
Stable-Release zurückgesetzt.--channel stable|betaerzwingt einen Kanal. - Signierte Prüfsummen:
SHA256SUMSträgt eine Ed25519-Signatur; der
öffentliche Schlüssel ist im Programm hinterlegt (backend/app/release_key.py).
Ohne gültige Signatur wird nichts installiert — die Integrität hängt nicht am
Download-Endpunkt. - Runtime bleibt erhalten: Ein Manifest (
MANIFEST-<plattform>.json) nennt
Python-, Perl-, imapsync- und Paketstände. Nur wenn dort etwas abweicht, wird
die Laufzeit nachgezogen; unveränderte Komponenten bleiben unangetastet. - Daten sind geschützt:
.env,data/undruntime/werden nie
überschrieben. Vor dem Austausch werden Konfiguration und Datenbank (SQLite-
Backup-API) gesichert; Programmdateien werden journalliert ausgetauscht und bei
einem Fehler zurückgerollt — inklusive Datenbank-Restore, damit Code und Schema
wieder zusammenpassen. - Abbruch bei laufender Anwendung oder laufenden Migrationen. Download in ein
temporäres Verzeichnis, Prüfung von Signatur und Prüfsummen vor dem
Entpacken. - Fehlermeldungen nennen Ursache und nächsten Schritt (offline, HTTP-Fehler,
fehlende Signatur, fehlende Berechtigung).
2. Ein Startskript, automatische Einrichtung
start.bat/start.sherledigen beim ersten Start alles: fehlende Laufzeit
einrichten (einmaliger Download), Konfiguration erzeugen, Datenbank anlegen,
Server starten, Browser erst nach dem tatsächlichen Start öffnen. Folgestarts
nutzen die vorhandene Laufzeit ohne Download.start.bat --repairprüft und
ersetzt beschädigte Laufzeitkomponenten.3. Ersteinrichtung im Browser
Statt eines Passworts im Setup gibt es jetzt eine Einrichtungsseite: Benutzername
(Standardadmin), eigenes Passwort (mindestens 12 Zeichen), Bestätigung. Kein
Standardpasswort, nur der Argon2id-Hash landet in.env. Solange kein
Administrator existiert, leitet die Anwendung ausschließlich auf diese Seite.
Parallele Einrichtungsversuche werden über eine Sperrdatei abgewiesen.4. IMAP als Quelle (IMAP → IMAP)
Neben Microsoft 365 können klassische Postfächer migriert werden
(Mailcow → Mailcow, IONOS/Strato → Mailcow, eigener Server → eigener Server).- Quellserver unter „Quellserver“ anlegen (Host, Port, SSL/TLS/STARTTLS), Passwort
verschlüsselt; Verbindungstest ohne Änderungen. - Dieselbe Migrationsengine wie bisher (imapsync, Queue, Scheduler, Logs,
Retry) — keine zweite Engine. - Microsoft-365-Funktionen bleiben unverändert.
5. Postfachvorschau und Ordnerauswahl (nur lesend)
- „Postfach analysieren“ liest ausschließlich
LIST/STATUS: Ordnerhierarchie,
Nachrichtenzahlen je Ordner, Fehler einzelner Ordner werden gesammelt. - Es entstehen dabei keine Jobs, keine Nachrichten werden verändert.
- Ordnerbaum mit Auf-/Zuklappen, „alle auswählen“, „alle abwählen“, Aktualisieren.
- Auswahl wird pro Job gespeichert: „alle Ordner (auch künftige)“ oder „nur
ausgewählte“ (--folderje Ordner). Neue Ordner im Quellpostfach werden bei
„nur ausgewählte“ nicht automatisch übernommen. - Nachrichtenzahlen sind als Momentaufnahme gekennzeichnet.
6. Assistent „Postfach prüfen und migrieren“
Ein geführter Ablauf: Quelle wählen → verbinden → analysieren → Ordner auswählen →
Ziel und Adressen → „Nur anlegen“ oder „Migration starten“. Vorschau und Start
sind klar getrennt; erst der letzte Schritt überträgt Daten.7. Getrennte Plattformpakete
M365-to-Exchange-Sync-Windows.zip: nursetup.bat,start.bat,update.bat,
scripts/setup.ps1— keine Shell-Skripte.M365-to-Exchange-Sync-Linux.tar.gz: nursetup.sh,start.sh,update.sh—
keine Batch-/PowerShell-Dateien.
8. Dokumentation
- Forgejo-Wiki mit 16 Seiten (Installation, Ersteinrichtung, Microsoft 365,
IMAP-Quellen, Vorschau, Migration, Überwachung, Scheduler, Updates, Sicherheit,
Fehlerbehebung, FAQ, Entwicklung, Einschränkungen). - README als kurze Projektstartseite mit Verweisen ins Wiki.
AGENTS.md: verbindliche Dokumentationsregeln für künftige Änderungen.
Unterstützte Betriebssysteme
Plattform Status Windows 10 (1803+)/11, Server 2019+ getestet (portable Laufzeit, Start, Vorschau, Migration, Update) Debian 12 / Ubuntu 22.04+ vorbereitet, nicht ausgeführt getestet Installation
Windows: ZIP entpacken → start.bat (erster Start richtet alles ein) Linux: tar xzf … && ./start.shBeim ersten Start werden Laufzeit und Abhängigkeiten einmalig geladen
(ca. 360 MB). Danach genügtstart.batbzw../start.sh.Voraussetzungen
- Windows 10 1803+ (nutzt
tar.exe) bzw. Linux x86_64 mittarundcurl/wget. - Internetzugang beim ersten Start (Laufzeit-Download) und für Updates.
- Für Microsoft 365: eigene Entra-App-Registrierung (Public Client, Redirect-URI
http://127.0.0.1:<port>/api/v1/oauth/callback, Scope
https://outlook.office.com/IMAP.AccessAsUser.All). - Kein Docker, keine Administratorrechte, keine Registry-/PATH-Änderungen.
Getestete Funktionen
- Updater: Versionsvergleich und Kanäle, signierte Prüfsummen (Ed25519),
Manipulations- und Checksummen-Fehler, Abbruch bei laufender Anwendung und bei
laufenden Migrationen, Rollback nach fehlgeschlagener Datenbankmigration,
Runtime-Wiederverwendung, Installation in einem Pfad mit Leerzeichen. - Start: automatische Einrichtung beim ersten Start, Folgestarts ohne
Download, Reparatur, Portauswahl mit Ausweichport. - Ersteinrichtung: Setup-Seite, Passwortregeln, einmalige Einrichtung,
parallele Anfragen, Login danach. - IMAP-Quellen: CRUD, Verbindungstest, Nur-Lesen-Vorschau (auch gegen einen
echten IMAP-Server), Ordnerauswahl persistent, Job-Anlage, Argumenterzeugung
(--passfile1,--folder, TLS-Modi). - Migration: echte lokale IMAP→IMAP-Migration mit dem portablen imapsync.
- Automatisierte Tests: Backend-Suite, Frontend-Suite (inkl. Setup- und
Vorschau-Flow), TypeScript-Prüfung, Produktionsbuild.
Nicht getestete Funktionen
- Microsoft-365-Live-Anmeldung und -Migration: kein Testkonto/keine Entra-App.
Mit Mocks getestet, nicht live verifiziert. - Linux-Betrieb:
setup.sh, relocatable-perl,start.sh,update.shsind
vorbereitet, aber nie ausgeführt. - Echtes Strg+C in einer Windows-Konsole: Signalzustellung in der
Testumgebung nicht reproduzierbar; geordnetes Herunterfahren wurde in-process
mit echtem uvicorn geprüft. - Browser-Klicktest: Werkzeug blockiert Loopback; ersetzt durch
Komponententests und HTTP-Integrationstests.
Bekannte Einschränkungen
- Ein Update ersetzt Programmdateien; eine laufende Anwendung muss vorher beendet
werden (der Updater weist darauf hin). - Ordnerauswahl wird über imapsync-
--folderumgesetzt: umbenannte Ordner im
Quellpostfach erscheinen als neuer Ordner. - Die Vorschau zeigt eine Momentaufnahme; die tatsächlich übertragene Menge kann
durch Duplikaterkennung und Änderungen am Quellpostfach abweichen. - Genau eine Backend-Instanz pro Datenverzeichnis.
- Der Ausweichport ist nicht dauerhaft; für eine feste OAuth-Redirect-URI
APP_PORTsetzen.
Sicherheitshinweise
- Keine Microsoft-Passwörter in der Anwendung; Anmeldung im Browser, Tokens und
Quell-/Zielpasswörter Fernet-verschlüsselt indata/database/app.db. .enventhältAPP_ENCRYPTION_KEY,SESSION_SECRETund den
Argon2id-Passwort-Hash — Datei schützen (Windows-ACL, Linuxchmod 600).- Releases werden mit Ed25519 signiert; der Updater prüft die Signatur vor jeder
Installation. - Optionale Authentifizierung am Release-Server ausschließlich über die
UmgebungsvariableFORGEJO_TOKEN(nicht in Skripten, Logs oder URLs). - Bindung ausschließlich an
127.0.0.1.
Lizenz
Eigener Code: MIT (
LICENSE). Nicht gebündelt: imapsync (wird beim ersten Start
von der offiziellen Quelle geladen), Python (PSF), Strawberry Perl
(Artistic/GPL) bzw. relocatable-perl, CPAN-Module, Frontend-Bibliotheken
(MIT/ISC). Details:LICENSE.md.Upgrade von 0.8.0-beta.3
Empfohlen:
update.batbzw../update.sh --apply— Daten, Konfiguration und
Laufzeit bleiben erhalten. Alternativ das neue Archiv in einen neuen Ordner
entpacken;data/und.envkönnen übernommen werden.Prüfsummen
SHA256SUMS(signiert alsSHA256SUMS.sig) enthält die SHA-256-Werte für beide
Archive, beide Manifeste und diese Release Notes.Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Prüft die Forgejo-Releases, vergleicht Versionen und bleibt standardmäßig im