2.3 KiB
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():
- Komprese na max —
lzma(xz),preset 9 | PRESET_EXTREME(stdlib). - Šifrování — stávající Fernet (klíč odvozený z TOKENu,
sha256 → urlsafe_b64). - Upload jako
jnjemails_<ts>.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.