4.6 KiB
name, description, metadata
| name | description | metadata | ||||||
|---|---|---|---|---|---|---|---|---|
| project-mailstore | MailStore Server na 192.168.1.53 — archiv emailů, Management API, IMAP přístup, Claws Mail klient |
|
MailStore Server v26.2.1.24065 na 192.168.1.53 (hostname MAILSTORE, Win). Archiv ~2,3 mil emailů, data na Z:\MailArchive. Největší schránka vladimir.buzalka@buzalka.cz: 1 077 799 zpráv / 273 GB.
Přístupy:
- Windows admin (WinRM):
administrator/Vlado7309208104++. WinRM remoting funguje z U:/janssen PC (TrustedHosts nastaveno). - MailStore admin:
admin/*$N(B)vMUym!%
Management API (HTTPS, port 8463): zapnuté v configu MailStoreServer.json (API via HTTPS Configuration.Enabled=true). Volá se POST https://192.168.1.53:8463/api/invoke/<Funkce>, Basic Auth, parametry jako form body (application/x-www-form-urlencoded), ne JSON. Self-signed cert → -SkipCertificateCheck. Async operace vrátí token+statusCode=running, výsledek se poluje přes POST /api/get-status (params token, lastKnownStatusVersion, millisecondsTimeout); result je v poslední odpovědi po succeeded. ~90 funkcí (GetUsers, GetStores, GetMessages, GetChildFolders, GetFolderStatistics, RunProfile, CreateBackup…). Dokumentace: help.mailstore.com/en/server/Administration_API_-_Function_Reference. GetMessages chce přesnou cestu složky (např. vladimir.buzalka@buzalka.cz/Exchange vladimir.buzalka/Sent Items).
IMAP (port 143, STARTTLS): zapnuté v configu (IMAP Server Configuration.Enabled=true). Po STARTTLS server nabízí jen AUTH=PLAIN, ale prostý IMAP LOGIN command funguje (Python imaplib.login OK, curl --ssl-reqd OK). Jako admin vidět všechny archivy. Lze stáhnout raw EML konkrétní zprávy.
Claves Mail (Windows) klient: Metoda autentizace MUSÍ být "Prostý text" (= prostý LOGIN command). "PLAIN"/"LOGIN"/"Automaticky" selhávají — Claws/libetpan na Windows je bez SASL pluginů ("PLAIN" → "Bad arguments", "LOGIN" → chybějící SASL plugin). Nastavení: server 192.168.1.53:143, STARTTLS, auth "Prostý text", admin / heslo. Na první zobrazení složek nutno "Obnovit strom složek" → Ano.
Bezpečnost: port 8463 ani 143 NEjsou forwardované na MikroTiku (192.168.1.2), přístup jen z LAN. MikroTik API na 8728 (admin/Vlado9674+).
Nástroje v U:/janssen/mailstore/ (ruční prohlížeč archivu, schránka→složka→zpráva, spouštět .venv\Scripts\python.exe):
mailstore_map_v1.0.py <schránka>— strom složek z API GetChildFolders (+--no-stats,--list). Arg = top-level složka (např.vladimir.buzalka@buzalka.cz).mailstore_folder_v1.0.py "<plná cesta složky>"— seznam zpráv (datum|od|předmět) přes dávkový IMAP FETCH hlaviček (+--limit N,--all,--oldest).mailstore_read_v1.0.py "<složka>" <číslo>— plný obsah jedné zprávy (hlavičky, tělo, přílohy) přes IMAP FETCH RFC822 (+--uid,--save DIR,--raw).
Ingest do Mongo — mailstore_ingest_v1.0.py <schránka> --since ROK [--dry-run] [--folder X] [--limit N]: backfill staré historie z MailStore do Mongo kolekce emaily. Dedup podle internet Message-ID (= _id v Mongu, shoduje se 1:1 s IMAP hlavičkou). Filtr data client-side z DATE headeru (NE IMAP SEARCH). Schéma dokumentu = jako Graph import. --dry-run spočítá kolik chybí bez zápisu. PILOT OVĚŘEN end-to-end 2026-06-11: MailStore IMAP → ingest → Mongo → enrich_fulltext → PG → MCP emaily search našel zprávu z 2020. Header scan ~490 zpráv/s (1M ≈ 30 min). vladimir.buzalka@buzalka.cz: Sent Items má 20k zpráv 2020+ k dobrání (i odeslané chybí z Graphu!). Plán: roztáhnout celou schránku, pak --since hlouběji do minulosti.
Dva gotchas (vyřešené):
- Kolekce
emailymá unique+sparse index nagraph_id. MailStore dokument musí polegraph_idÚPLNĚ VYNECHAT (neNone) — explicitní null koliduje (sparse ignoruje jen chybějící pole). Jinak E11000 duplicate key. - Mongo
{'graph_id': None}matchuje i dokumenty BEZ pole —delete_manytím smete i validní dokumenty. Pozor při úklidu. - enrich_fulltext spouštět přes
U:/janssen/.venv/Scripts/python.exe(system Python C:\Python312 nemá psycopg).
IMAP SEARCH je slepá ulička (78s, vrací jen ~10 výsledků). API GetMessages dává jen metadata (id, date, uid1=Message-ID, outgoing), ne obsah — obsah jen přes IMAP. API id (1:947923) ≠ IMAP UID, most je Message-ID (=uid1).
Pracovní adresář: U:/janssen/mailstore/. Pozn.: feedback-admin-powershell — admin příkazy (winget) rovnou psát uživateli.