64 lines
2.6 KiB
Markdown
64 lines
2.6 KiB
Markdown
# 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
|
|
```
|