2.6 KiB
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 | (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