Wiele wiedzy biznesowej znajduje się w e‑mailach, a potrzebna część zazwyczaj jest w załączniku: oferta, podpisana aneks, zaktualizowany harmonogram. GroupDocs.Search.Mcp, uruchamiany lokalnie w Dockerze, otwiera pliki e‑mail i archiwa (PST, OST, MSG, EML) oraz indeksuje każdą wiadomość i każdy załącznik, dzięki czemu Claude Desktop, Cursor czy Copilot mogą przeszukiwać archiwum w miejscu i dokładnie wskazać, z którego załącznika pochodzi dopasowanie:

Zindeksuj folder poczty. Która wiadomość wspomina o podwyżce cen i co dokładnie mówi?

Szczegółowa wersja krok po kroku z konfiguracją i rozwiązywaniem problemów znajduje się w dokumentacji: Jak przeszukiwać archiwa e‑mail i załączniki przy pomocy agenta AI, lokalnie.

Dlaczego e‑mail jest trudny dla agenta?

Ponieważ archiwum jest kontenerem kontenerów. PST zawiera foldery, foldery zawierają wiadomości, wiadomości zawierają załączniki, a załączniki to pliki Word, PDF i arkusze kalkulacyjne. Agent z narzędziami plikowymi widzi jeden duży plik binarny. Eksportowanie archiwum do luźnych plików działa, ale jest wolne, duplikuje wrażliwe dane na dysku i musi być powtarzane przy każdej zmianie archiwum. Model nie potrafi w ogóle odczytać PST.

Silnik wyszukiwania radzi sobie z tym zagnieżdżeniem samodzielnie. Każda wiadomość i każdy załącznik stają się elementem możliwym do przeszukania, a wynik zapisuje zarówno miejsce kontenera, jak i miejsce wewnątrz niego, w którym znaleziono dopasowanie.

Jak wygląda dopasowanie wewnątrz załącznika?

Oto, co serwer zwrócił w naszym teście z trzema wiadomościami EML. Fraza „price increase” pojawia się tylko w załączonej ofercie Word, a treść wiadomości to jedynie „please find the updated quotation attached”.

-> add_to_index {"documentsPath":"mail","indexName":"mail"}
<- Indexed 'mail' into index 'mail': 3 document(s) added, 3 in the index.

-> search {"query":"\"price increase\"","indexName":"mail"}
<- { "documentsFound": 1, "documents": [
     { "filePath": "mail/2026-09-18-re-q3-pricing.eml",
       "innerPath": "quotation-Q-2026-118.docx",
       "occurrences": 1 } ] }

-> get_text_fragments {"query":"\"price increase\"","indexName":"mail"}
<- === mail/2026-09-18-re-q3-pricing.eml → quotation-Q-2026-118.docx
   (1 occurrence(s)) ===
     …Due to raw material costs we announce a price increase
   of 6 percent from 2026-11-01.…

filePath to wiadomość; innerPath to załącznik. Agent może odpowiedzieć „wiadomość Re: Q3 pricing od Contoso, w załączonej ofercie Q‑2026‑118: podwyżka o 6 % od 1 listopada”, a każda część tego zdania jest możliwa do śledzenia.

mail/2026-09-18-re-q3-pricing.eml          <- filePath
  |- body: "please find the updated quotation attached"
  '- attachment: quotation-Q-2026-118.docx  <- innerPath
        "...we announce a price increase of 6 percent..."

Pytania, które działają w poczcie

Zwykły język zapytań ma zastosowanie, a kilka wzorców jest szczególnie przydatnych w korespondencji. Wszystkie zostały przetestowane na tym samym skrzynce testowej:

  • „Which message from Fabrikam mentions a delivery delay?”: fabrikam AND delay. Adresy nadawców są indeksowane razem z wiadomością, więc contoso również znalazł fakturę, której treść nigdy nie wymienia firmy.
  • „Find every email that mentions order 77812”: 77812. Same liczby są traktowane jako słowa.
  • „Which invoices fall due in October?”: invoice AND content: daterange(2026-10-01 ~~ 2026-10-31). To dopasowuje daty zapisane w treści wiadomości, np. „due on 2026-10-22”. Prefiks content: ma znaczenie: bez niego zakres dat dopasowuje się także do dat, które silnik zapisuje dla każdego pliku.

Dlaczego lokalność ma większe znaczenie w przypadku poczty niż w innych przypadkach

E‑mail to miejsce, w którym znajdują się wrażliwe materiały: dane osobowe, negocjacje, wątki HR, porady prawne. Narzędzia wyszukiwania wymagające przesłania skrzynki pocztowej do usługi są nie do przyjęcia dla wielu zespołów. Tutaj archiwum jest montowane jako tylko‑do‑odczytu w kontenerze na maszynie, indeksowane tam i przeszukiwane tam. Jedynym tekstem, który opuszcza kontener, jest to, co agent cytuje w swojej odpowiedzi, a przy modelu hostowanym lokalnie, nawet to nie jest przekazywane dalej.

Dla bardziej zwartej konfiguracji zamontuj archiwum jako tylko‑do‑odczytu i przydziel indeksowi własny wolumen:

docker run --rm -i \
  -v /srv/mail:/data:ro \
  -v /srv/mail-index:/index -e GROUPDOCS_MCP_INDEX_PATH=/index \
  ghcr.io/groupdocs-search/search-net-mcp:latest

Zakresowanie dużego archiwum

Archiwum liczące dziesiątki tysięcy wiadomości indeksuje się bez problemu przy użyciu licencji, ale warto podejść do tego rozważnie. Indeksuj według folderu lub roku jako oddzielne ścieżki (mail/2025, mail/2026), aby można było usunąć lub odbudować konkretny rok samodzielnie, ponieważ silnik usuwa całe zindeksowane ścieżki, a nie pojedyncze pliki. Trzymaj pocztę w osobnym indeksie, oddzielnym od kontraktów czy raportów, aby pytanie o korespondencję nie przeszukiwało wszystkiego innego. Gdy archiwum rośnie, update_index przechwytuje nowe wiadomości bez ponownego czytania starych.

Szczere ograniczenia

  • W trybie ewaluacji indeks może pomieścić maksymalnie 100 dokumentów, a wyszukiwanie zwraca maksymalnie 10 wyników, przy czym każda wiadomość i każdy załącznik się liczy, więc prawdziwe archiwum wymaga licencji. Najpierw wywołaj get_license_status.
  • Duży plik PST wymaga czasu na indeksowanie: każda wiadomość i każdy załącznik są otwierane. Indeksuj raz, potem używaj update_index.
  • Zeskanowane załączniki bez warstwy tekstowej są indeksowane wyłącznie na podstawie ich właściwości plikowych; OCR nie jest dostępny.
  • Tylko Docker; na Linuksie dodaj --user "$(id -u):$(id -g)", chyba że używasz powyższej konfiguracji tylko‑do‑odczytu.

FAQ

Czy mogę przeszukiwać plik PST przy pomocy AI bez Outlooka?
Tak. Silnik czyta PST, OST, MSG i EML bezpośrednio; Outlook nie jest zaangażowany i nic nie jest eksportowane.

Czy przeszukuje on załączniki e‑mail?
Tak. Załączniki są indeksowane jako elementy ich wiadomości, a dopasowanie wewnątrz jednego z nich zwraca innerPath wskazujący nazwę załącznika.

Czy moja skrzynka pocztowa jest gdzieś przesyłana?
Nie. Jest odczytywana wewnątrz lokalnego kontenera; jedynie fragmenty cytowane przez agenta docierają do dostawcy modelu.

Zagłęb się