# jnj_mailbox_sync v1.2.0 **Soubor:** `jnj_mailbox_sync_v1.2.py` **Datum:** 2026-06-10 **Autor:** vladimir.buzalka **Běží:** JNJ stroj (Outlook MAPI), Python z Thonny. ## Co to je Synchronizace JNJ Outlooku (MAPI) → osobní schránka (přes msgreceiver) + bookkeeping v SQLite (`C:\Users\vbuzalka\SQLITE\jnjemails.db`). Sleduje přesuny e-mailů mezi složkami a příznak „už není ve schránce" — bez opětovného přenosu těla. Skenované složky: **Inbox + Sent Items + Deleted Items** (vč. podsložek). ## Novinka v1.2 — komprimovaný + šifrovaný upload SQLite Dřív se ~37 MB SQLite posílalo na `/upload-db` **plain** (jen HTTPS+token). Teď `upload_db()`: 1. **Komprese na max** — `lzma` (xz), `preset 9 | PRESET_EXTREME` (stdlib). 2. **Šifrování** — stávající Fernet (klíč odvozený z TOKENu, `sha256 → urlsafe_b64`). 3. Upload jako `jnjemails_.db.xz.enc`. Přijímací **msgreceiver `/upload-db` (app.py ≥ v2.1)** soubor Fernetem dešifruje, lzma rozbalí a uloží plain `.db` do `/msgs/db`. Domácí `jnj_tower_ingest` tím pádem **zůstává beze změny** (čte nejnovější plain `.db` read-only). Důvod šifrování: bezpečný průchod přes JNJ proxy (Zscaler/DLP) — stejný vzor jako `.emsg` u jednotlivých `.msg`. Round-trip ověřen (bajt na bajt). ## Závislost na serveru ⚠️ Vyžaduje **msgreceiver app.py ≥ v2.1**. Server bere `.db.xz.enc` i starý plain `.db`, takže nasazovací pořadí je **server → JNJ** bez výpadku. ## Argumenty `--mode {capture,update-paths,full-update}` (default capture), `--days N` (0 = celé), `--dry-run`, `--limit N`, `--no-db-upload`. ## Spouštění (JNJ stroj, plné cesty) ``` "C:\Users\vbuzalka\AppData\Local\Programs\Thonny\python.exe" "c:\Users\vbuzalka\OneDrive - JNJ\##JNJPrenos\Python\jnj_mailbox_sync_v1.2.py" --mode full-update --days 30 ``` ## Revert Stará verze: `Trash/jnj_mailbox_sync_v1.1.py` (plain DB upload). Server zůstává zpětně kompatibilní, takže revert na JNJ straně nevyžaduje zásah na serveru. ## Historie - **1.0.0** — režimy capture/update-paths/full-update, sledování přesunů, updated_at. - **1.1.0** — + Deleted Items do skenovaných složek. - **1.2.0** — upload SQLite komprimován (lzma/xz max) + šifrován (Fernet) → `.db.xz.enc`; vyžaduje msgreceiver app.py ≥ v2.1.