Archiwizacja oraz szybkie wyszukiwanie wiadomości e-mail Bartosz Osowiecki Warszawa, 28 kwietnia 2008 Promotor: dr Grzegorz Blinowski
Plan prezentacji: Po co archiwizować e-mail? Problemy przy budowie archiwum e-mail. Budowa wiadomości e-mail Nagłówek Treść Kodowanie Funkcje systemu archiwizującego: Wyszukiwanie Dostęp do wiadomości Architektura systemu Wydajność
Po co archiwizować e-mail? Możliwość odzyskania przesyłek Użytkownicy mogą przejrzeć archiwum własnych e-mail Przeznaczenie „dowodowe” – możliwość jednoznacznego stwierdzenia czy dana przesyłka została wysłana: Przez/do kogo kiedy
Po co archiwizować e-mail? c.d. Możliwość kontroli wydostawania się na zewnątrz poufnych informacji Możliwość wykrycia działania w złej wierze W grupie Fortune 500: W 27% firm miały miejsce pozwy o molestowanie seksualne W każdym z nich e-mail był jednym z dowodów Bardzo wysokie odszkodowania
Problemy przy budowie archiwum e-mail Format wiadomości Zgodność z RFC822 nie wystarcza Pewien odsetek przesyłek nie jest zgodny z RFC (zwłaszcza w zakresie kodowania) Problem z zaszyfrowanymi wiadomościami Wydajność rozmiar archiwum dla kilku tysięcy użytkowników w przeciągu kilku miesięcy wyniesie dziesiątki GB oraz setki tysięcy plików efektywne indeksowanie archiwum tych rozmiarów jest trudne
Budowa wiadomości e-mail Nagłówek Pola nadawcy (from, sender, reply-to) Pola odbiorcy (to, cc, bcc) Pola referencyjne (message-id, in-reply-to, references, keywords) Pole Return-Path Pola standardu MIME (content-type, mime-version, content-transfer-encoding, content-id, content-description) Pola subject, date. Pola X (X-Mailer)
Message-ID: identyfikator przesyłki Date: Mon, 9 Oct 2006 17:16:22 +0200 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="znacznik separujący" From: autor@com.pl Cc: kopia@com.pl Subject: Temat=?iso-8859-2?Q?Zakodowany tekst?= Sender: nadawca@com.pl Reply-To: odpowiedzi@com.pl To: odbiorca@com.pl Treść wiadomości znacznik_separujący Content-Type: application/octet-stream; name="plik.pdf" Content-Transfer-Encoding: base64 Content-Description: attachment; filename="plik.pdf" ...
Treść wiadomości Przesyłka e-mail może zawierać w treści: Zwykły tekst Załączniki Inną wiadomość
Kodowanie wiadomości Kodowanie treści wiadomości Parametry kodowanie określone w nagłówku wiadomości Możliwe kodowania transportowe to: base64, quoted-printable, 7bit, 8bit, binary Kodowanie pól nagłówka Kodowanie Q oraz B =? Charset ? Encoding ? Encoded-text ?=,
Funkcje systemu archiwizującego Interfejs użytkownika Dostęp do przesyłek Możliwość przeglądu wybranych wiadomości Wyszukiwanie Definiowanie zapytań Wyrażenia logiczne oraz regularne Przeszukiwanie w załącznikach Poziomy tajności Podział na grupy i użytkowników z różnymi prawami dostępu
Wyszukiwanie Nadawca: from, sender Odbiorca: to, cc, bcc Zakres czasowy od-do Temat i zawartość przesyłki Inne pola nagłówka Content-type, X-Mailer… Załączniki
Wyszukiwanie c.d. Operatory logiczne: and, or, not Proste wyrażenia regularne (oparatory: *,?) Możliwe zapytania fraza*, fraza1 ~fraza2, fraza1 & fraza2, fraza1 | fraza2, wyraz?reszta Podobne, zawiera (like, contains) Tak samo dla załączników
Architektura systemu Główne moduły systemu Proces komunikacji z serwerem poczty Parser wiadomości Archiwizator, Indekser Aplikacja kliencka
Moduł komunikacji z MTA Poczta wychodząca Moduł komunikacji z MTA Poczta wychodząca SMTP SMTP załączniki Parser e-mail załączniki Serwer poczty (MTA) listy Archiwizator Archiwum Application Serwer Aplikacja kliencka HTTP INDEKSY Web Service
Budowa archiwum Dwa główne nad-archiwa Wiadomości Załączniki Podział archiwum ze względu na datę tworzenia przesyłek
2008 rok styczeń luty 1 1 2 2 tygodnie tygodnie 3 3 4 4
Parser wiadomości e-mail Pobranie wartości dla wszystkich pól nagłówka wykorzystywanych przy tworzeniu indeksów Oddzielenie załączników od wiadomości Obsługa kodowań ( base64, quoted-printable itd.) Konwertery plików: Pdftotext, Catdoc, Catxls itd.
Indekser Wykorzystanie mechanizmów bazodanowych lub zewnętrznych indekserów Indeksowanie dokumentów nietekstowych ( pdf, doc, xls, rtf itd.) Możliwość tworzenia pod-indeksów dla wybranych słów – kluczy Mechanizm scalania indeksów
Komunikacja z serwerem poczty Klient poczty wysyła wiadomość. Serwer poczty pobiera wiadomość z kolejki i przekazuje przesyłkę do systemu archiwizacji. Dodanie wiadomości do archiwum. Wstawienie wiadomości do kolejki serwera bądź przekazanie do innej aplikacji lub serwera.
Wydajność Głównym miernikiem wydajności jest czas realizacji zapytania w funkcji rozmiaru archiwum Wydajność systemu = wydajność indeksera Wielkość archiwum Teoretycznie rzędu kilku TB Największe wdrożone w praktyce: 0,5 TB (3,5 mln wiadomości) – czas dostępu: 5-30s
Podsumowanie Dobry sposób na tworzenie kopii zapasowej Szybkie, wszechstronne wyszukiwanie przesyłek na podstawie ich zawartości Wyszukiwanie w załącznikach
Bibliografia Dokumenty RFC (822, 2045, 2046) Indekser (SWISH-E) http://www.ietf.org/rfc/rfc0822.txt http://www.ietf.org/rfc/rfc2045.txt http://www.ietf.org/rfc/rfc2046.txt Indekser (SWISH-E) http://swish-e.org/ MSARCH – wersja testowa http://cc.com.pl/pl/prods/msarch/home.php
Dziękuję za uwagę Pytania?