# 4_unwrap_smime_v1.0.py **Krok 4 pipeline** — rozbalení S/MIME wrapper zpráv. Některé emaily (Datová schránka, mBank, ComGate, PayU, PostSignum …) mají viditelné tělo jen *"This is an S/MIME signed message"* — skutečný obsah je zabalený uvnitř přílohy `smime.p7m`. Skript najde tyto emaily, stáhne binárku `smime.p7m` z Graphu, rozbalí PKCS7 SignedData (`asn1crypto.cms`), extrahuje vnitřní MIME zprávu a doplní do Mongo: | Pole | Obsah | |---|---| | `smime_unwrapped: True` | flag — už rozbaleno | | `smime_subject` | Subject z vnitřní MIME hlavičky | | `smime_body_text` | plain text vnitřního těla | | `smime_body_html` | HTML vnitřního těla (pokud je) | | `smime_inner_attachments[]` | `{filename, content_type, size_bytes}` vnitřních příloh | ## POZOR: `smime.p7m` vs `smime.p7s` | Příloha | Co to je | Skript dělá | |---|---|---| | `smime.p7m` | **Enveloped wrapper** kolem celé MIME zprávy | **Rozbalí** | | `smime.p7s` | **Detached signature** vedle čistého emailu (tělo je normálně dostupné) | **Ignoruje** — není co rozbalovat | Filtr ve skriptu (`SMIME_FILTER`) je proto explicitně `^smime\.p7m$`. Email s přílohou `smime.p7s` a `smime_unwrapped != True` je **správný stav**. ## Argumenty | Argument | Povinný | Hodnoty | Default | Popis | |---|---|---|---|---| | `--mailbox` | ne | e-mail | (všechny) | Jedna konkrétní schránka. Bez argumentu projede všechny kolekce v `emaily` mimo `SKIP_COLLECTIONS` (`attachments_index`, `sync_state`) a `SKIP_MAILBOXES`. | | `--limit N` | ne | int | (bez limitu) | Limit emailů na schránku (test) | ## SKIP_MAILBOXES (hardcoded) | Schránka | Důvod | |---|---| | `vbuzalka@its.jnj.com` | JNJ tenant, nemáme Graph API přístup. Při běhu bez `--mailbox` se tiše přeskočí. S explicitním `--mailbox vbuzalka@its.jnj.com` skript skončí exit kódem 2. | ## Varianty volání ```bash # Všechny schránky (mimo SKIP_MAILBOXES): docker exec -it python-runner python /scripts/4_unwrap_smime_v1.0.py # Jedna schránka: docker exec -it python-runner python /scripts/4_unwrap_smime_v1.0.py --mailbox ordinace@buzalkova.cz # Test 10 emailů: docker exec -it python-runner python /scripts/4_unwrap_smime_v1.0.py --mailbox ordinace@buzalkova.cz --limit 10 # Plný běh na pozadí, log do souboru: docker exec -d python-runner bash -c "python /scripts/4_unwrap_smime_v1.0.py > /scripts/unwrap_smime.log 2>&1" ``` ## Závislosti ```bash docker exec python-runner pip install asn1crypto ``` ## Sledování průběhu ```bash docker exec -it python-runner tail -f /scripts/unwrap_smime.log ```