-
v0.8.0-beta.3 (Beta) Pre-release
released this
2026-11-04 21:03:08 +01:00 | 3 commits to main since this releaseRelease Notes — v0.8.0-beta.3
Status: Vorabversion (Beta / Prerelease). Nicht produktionsreif, nicht vollständig getestet.
Datum: 2026-11-04Neu in 0.8.0-beta.3: vollständig portable Architektur
Die Anwendung bringt ihre komplette Laufzeit im eigenen Ordner unter und startet
nichts aus dem System.M365-to-Exchange-Sync/ ├── setup.bat | start.bat | setup.sh | start.sh ├── backend/ FastAPI ├── frontend/dist/ gebautes React-Frontend ├── runtime/ │ ├── python/ CPython 3.12.16 (python-build-standalone) │ ├── perl/ Windows: Strawberry Perl 5.42.3 · Linux: relocatable-perl 5.44 │ └── imapsync/ imapsync 2.326 ├── data/ │ ├── database/ SQLite (app.db) │ ├── logs/ │ └── tmp/ └── .env- Kein systemweites Python mehr nötig.
setup.batlädt CPython 3.12
(portable, SHA-256 geprüft) nachruntime/pythonund installiert die
gepinnten Pakete dort hinein.start.batstartet ausschließlich diesen
Interpreter. - Kein systemweites Perl, kein PATH-Eintrag. Perl kommt als portable
Verteilung nachruntime/perl, imapsync als Skript nachruntime/imapsync.
Der Runner startetruntime\perl\perl\bin\perl.exe runtime\imapsync\imapsync
mit kontrollierter Umgebung (PATH/PERL5LIBnur mit lokalen Pfaden). - Fremde Installationen werden ignoriert. Ein
imapsync.bat0.22 oder ein
systemweites Perl im PATH beeinflusst die Anwendung nicht mehr (früher wurde
genau das als „inkompatibel (0.22)" erkannt). - Alle Daten im Programmordner:
data/database(SQLite),data/logs,
data/tmp. Ältere Installationen mitdata/app.dbwerden beim ersten Start
automatisch übernommen. - Relative Pfade in
.env(DATA_DIR=data,
IMAPSYNC_PATH=runtime/imapsync/imapsync,PERL_PATH=…) — der komplette
Ordner lässt sich verschieben, auch in Pfade mit Leerzeichen. - Verständliche Fehlermeldungen, wenn die Laufzeit fehlt:
[Fehler] Portable Laufzeit ist unvollständig (Perl, imapsync). Bitte setup.bat ausführen. - Keine Systemänderung: keine Registry-Einträge, keine Dienste, keine
geplanten Aufgaben, keineAppData/ProgramData-Daten. Deinstallation =
Ordner löschen (entfernt auch Tokens, Datenbank und Logs).
Enthalten aus den Vorgängerversionen: Portauswahl mit Fallback
(WinError 10013), Browser erst nach Serverstart, Erkennung einer zweiten
Instanz, Migration über OAuth2/XOAUTH2 mit imapsync, persistente Warteschlange
mit Scheduler/Retry/Recovery, React-Oberfläche, MIT-Lizenz.Unterstützte Betriebssysteme
Plattform Status Windows 10 (1803+)/11, Server 2019+ getestet (portable Laufzeit, Start, Verschieben, Migration) Debian 12 / Ubuntu 22.04+ vorbereitet, nicht getestet (keine Linux-Umgebung) Installation
Windows:
ZIP entpacken → setup.bat (Administratorpasswort, min. 12 Zeichen) → start.batLinux:
tar xzf M365-to-Exchange-Sync-Linux.tar.gz cd M365-to-Exchange-Sync && ./setup.sh && ./start.shDownload der Laufzeit beim Setup: ca. 360 MB (Windows) bzw. 370 MB (Linux),
einmalig. Bei erneutem Setup wird der Cache inruntime/.cachegenutzt, solange
die Prüfsumme passt.Voraussetzungen
- Windows 10 1803+ (nutzt
tar.exe) bzw. Linux x86_64 mittarundcurl/wget. - Internetzugang beim Setup (offizielle Quellen, SHA-256-geprüft).
- Für Migrationen: 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 PATH-/Registry-Änderungen.
Getestete Funktionen
- Portable Python-Laufzeit (
runtime/python/python.exe, CPython 3.12.16),
inklusive Installation der gepinnten Pakete in diese Laufzeit. - Portable Perl-Laufzeit (Strawberry 5.42.3) mit 27 Modulen (u. a.
Net::SSLeay,IO::Socket::SSL,Mail::IMAPClient). - Lokales imapsync 2.326 (Start über
runtime/perl,--versiongeprüft). - Fremdes
imapsync.bat0.22 im PATH wird ignoriert — die Anwendung meldet
2.326 ausruntime/imapsync. - Start aus dem entpackten Archiv in einem leeren Verzeichnis, ohne
APP_PORT, mit Ausweichport; Health, Oberfläche, Login, CRUD. - Verschieben des Programmordners (inkl. Pfad mit Leerzeichen), Neustart
danach, Daten und Laufzeit intakt. - Wiederholtes Setup ändert
.envnicht und lädt die Laufzeit nicht neu. - Echte lokale IMAP-Migration mit dem lokalen imapsync.
- Automatisierte Tests: Backend-Suite inkl. neuer Runtime-/Porttests,
Frontend-Suite, TypeScript-Prüfung, Produktionsbuild.
Nicht getestete Funktionen
- Microsoft-365-Live-Anmeldung und -Migration: kein Testkonto, keine
Entra-App. OAuth ist implementiert und mit Mocks getestet, nicht live. - Linux-Betrieb:
setup.sh/start.shund die Linux-Laufzeit
(relocatable-perl) sind 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 HTTP-Tests.
Bekannte Einschränkungen
- Setup benötigt Internet (kein Offline-Bundle).
- Strawberry Perl veröffentlicht keine Prüfsummen-Datei; die SHA-256 wurde
einmalig aus dem offiziellen Release ermittelt (im Skript dokumentiert). - Genau eine Backend-Instanz pro Datenverzeichnis.
- Der Ausweichport ist nicht dauerhaft; für eine fest registrierte
OAuth-Redirect-URIAPP_PORTsetzen. runtime/ist groß (Windows: ca. 1,3 GB nach dem Setup) — bewusst, dafür
keine Systeminstallationen.
Sicherheitshinweise
- Keine Microsoft-Passwörter in der Anwendung; Anmeldung im Browser,
Tokens verschlüsselt (Fernet) indata/database/app.db. .enventhältAPP_ENCRYPTION_KEY,SESSION_SECRETund den
Argon2id-Passwort-Hash — Datei schützen (Windows: ACL, Linux:chmod 600).- Temporäre Token-/Passwortdateien in
data/tmp/<run-id>/mit0600bzw.
restriktiver DACL, Löschung nach jedem Lauf; Logs werden redigiert. - Bindung ausschließlich an
127.0.0.1. - Der Download der Laufzeit erfolgt ausschließlich von den dokumentierten
Quellen und wird vor dem Entpacken per SHA-256 geprüft. - Beim Verschieben des Ordners bleiben die Dateirechte erhalten; bei
Kopien auf Datenträger ohne Rechteübernahme (FAT/exFAT) können Tokens und
Schlüssel für andere Benutzer lesbar werden.
Lizenz
Eigener Code: MIT (
LICENSE). Nicht gebündelt: imapsync (NO LIMIT PUBLIC
LICENSE, wird beim Setup 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.2
- Server beenden, Ordner sichern.
- Neues Archiv in einen neuen Ordner entpacken (oder alten Ordner ersetzen).
setup.bat— übernimmt.envunddata/falls vorhanden; die alte
data/app.dbwird beim Start automatisch nachdata/database/app.db
verschoben.start.bat.
Die Migrationen laufen automatisch.
Prüfsummen
SHA256SUMS.txtenthält die SHA-256-Werte für beide Archive und diese Release
Notes.Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Kein systemweites Python mehr nötig.