Files
janssen/Python-runner/4_unwrap_smime_v1.0.md
2026-06-05 21:21:30 +02:00

2.6 KiB

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í

# 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

docker exec python-runner pip install asn1crypto

Sledování průběhu

docker exec -it python-runner tail -f /scripts/unwrap_smime.log