- Prawdopodobne zastosowania logów śledzenia wiadomości
- Lokalizacja i struktura logów śledzenia wiadomości
- Konfiguracja śledzenia wiadomości
- Co znajduje się w logach śledzenia wiadomości
- Używanie cmdletu Get-…MessageTrackingLog
Dzienniki śledzenia wiadomości są cennym źródłem informacji dla każdego administratora Exchange. Podczas gdy Office 365 ma swoje śledzenie wiadomości, które działa bez zarzutu, lokalny Exchange przechowuje znacznie więcej danych w logach, które mogą służyć do wielu celów.
- Możliwe zastosowania logów śledzenia wiadomości
- Lokalizacja i struktura dzienników śledzenia komunikatów
- Konfigurowanie śledzenia wiadomości
- Co znajduje się w dziennikach śledzenia wiadomości
- Najważniejsze pola w dziennikach śledzenia wiadomości
- Używanie cmdleta Get-MessageTrackingLog
- Jak uzyskać ogólne informacje o przepływie poczty w Exchange Server
- Jak zbierać statystyki za pomocą Get-MessageTracking Log
- Jak śledzić określone wiadomości przy użyciu Get-MessageTrackingLog
Możliwe zastosowania logów śledzenia wiadomości
Dobre stare logi śledzenia wiadomości mogą służyć wielu różnym celom:
- Rozwiązywanie problemów z dostarczaniem – Jeśli wiesz, czego szukasz, dzienniki śledzenia wiadomości mogą powiedzieć ci, dlaczego wiadomość nie została dostarczona, czy jej dostarczenie było opóźnione i więcej (zobacz, co jest w dziennikach śledzenia wiadomości)
- Statystyki – Dzienniki śledzenia wiadomości przechowują ślady każdej pojedynczej wiadomości, która przeszła przez twoje serwery. Jest to dość łatwy sposób na uzyskanie danych do analizy – ile wiadomości zostało przetworzonych, lub kto wysłał najwięcej wiadomości w firmie.
- Forensics – Powiedzmy, że ktoś skasował e-mail i nie miałeś kopii zapasowej. Co gorsza, e-mail zawierał poufne informacje i został wysłany do konkurencyjnej firmy. To jest, gdzie logi śledzenia wiadomości mogą cię uratować, dostarczając cennych informacji na temat e-maili.
- Sprawy sądowe – Podobne do powyższej sytuacji. Dzienniki śledzenia wiadomości mogą być i są często używane, gdy wymagane są dowody dla celów sądowych.
- Testowanie reguł transportowych – Szczególnie przydatne, gdy w organizacji skonfigurowano wiele reguł transportowych. Za każdym razem, gdy reguła transportowa jest stosowana, pozostawia ślad i można użyć polecenia Get-MessageTrackingLog, aby sprawdzić, kiedy reguła transportowa lub polityka DLP została uruchomiona.
Lokalizacja i struktura dzienników śledzenia komunikatów
Co to są dzienniki śledzenia komunikatów? Logi Message Tracking Logs to proste pliki CSV (z rozszerzeniem LOG) przechowywane na serwerze Exchange. Domyślna ścieżka do ich fizycznej lokalizacji to %ExchangeInstallPath%TransportRoles™Logs™MessageTracking. Logi mają ustaloną konwencję nazewnictwa. Pamiętaj, że chociaż możesz zmienić nazwy plików w logach, to uniemożliwi Ci to ich przeszukiwanie za pomocą cmdleta Get-MessageTrackingLog. Co więcej, pliki ze zmienionymi nazwami nie będą wliczane do limitu rozmiaru folderu. Może to doprowadzić do przekroczenia skonfigurowanych przez nas limitów.
Aby zarządzać przestrzenią i ilością danych przechowywanych na serwerach, Exchange stosuje logowanie kołowe (circular logging). Innymi słowy, najstarsze pliki są nadpisywane za każdym razem, gdy folder przekroczy swój maksymalny rozmiar lub gdy plik dziennika osiągnie swój maksymalny wiek. Przy domyślnych ustawieniach, maksymalny wiek pliku logu to 30 dni, a maksymalny rozmiar pojedynczego pliku to 10 MB. Domyślnie wszystkie dzienniki śledzenia wiadomości w domyślnym katalogu nie mogą przekroczyć 1 GB. Wszystkie te limity można zmienić za pomocą programu PowerShell (zobacz konfigurowanie śledzenia komunikatów, aby uzyskać szczegółowe informacje)
Każdego dnia tworzony jest nowy plik dziennika śledzenia komunikatów. Konwencja nazewnictwa to:
MSGTRKServiceyyyymmdd-nnnn.log gdzie:
- Usługa zależy od tego, która usługa utworzyła dziennik. MSGTRK wskazuje na dzienniki utworzone przez usługę Transport; dodatkowe litery określają, jakie inne usługi utworzyły dziennik. MA oznacza usługę Message Approval, MD – Mailbox Transport Delivery, MS – Mailbox Transport Submission service.
- yyyymmdd określa datę utworzenia dziennika wiadomości.
- nnnn jest numerem pliku dziennika. Za każdym razem, gdy plik dziennika osiągnie swój maksymalny rozmiar, zostanie utworzona kolejna kopia. Wartość ta jest inkrementalna i każdego dnia zaczyna się od (całkiem logicznie) 1.
Wymieniłem kilka wartości domyślnych. Jak można podejrzewać, wartości te można łatwo zmienić.
Konfigurowanie śledzenia wiadomości
Zanim zaczniesz zmieniać wartości domyślne dzienników śledzenia wiadomości, upewnij się, że wiesz, co robisz. Dzienniki śledzenia wiadomości mogą stać się dość kłopotliwe, jeśli chodzi o rozmiar. Co więcej, jeśli zdecydujesz się zbierać dane przez nieokreślony czas, każde szeroko zakrojone wyszukiwanie w dziennikach śledzenia wiadomości zajmie sporo czasu. Zwłaszcza jeśli nie ograniczysz kryteriów wyszukiwania. Jeśli planujesz zbierać informacje o przepływie poczty przez nieokreślony czas, rozważ wyeksportowanie zawartości logów śledzenia wiadomości do plików. Wówczas można przechowywać dane dotyczące wszystkich wiadomości e-mail, z wyłączeniem tych, które wskazują na przykład na skrzynki Health Mailboxes.
Dzienniki śledzenia wiadomości można skonfigurować za pomocą cmdleta Set-TransportService. Za pomocą tego cmdleta można:
- Włączyć lub wyłączyć śledzenie wiadomości,
- Zmienić lokalizację przechowywania dzienników śledzenia wiadomości,
- Modyfikować limity rozmiaru i wieku dzienników śledzenia wiadomości
- A także włączyć lub wyłączyć rejestrowanie tematów. Słowo wyjaśnienia: domyślnie, dzienniki śledzenia wiadomości nie przechowują żadnej zawartości wiadomości e-mail, z wyjątkiem wiersza tematu. Chociaż umieszczanie wiersza tematu w logach znacznie poprawia jakość śledzenia, niektóre organizacje wymagają wyłączenia tej funkcji ze względów bezpieczeństwa lub prywatności.
Tutaj znajduje się przykład, który zmienia wszystkie parametry naraz:
Set-TransportService Mailbox_Server -MessageTrackingLogEnabled $true -MessageTrackingLogPath "M:\logs" -MessageTrackingLogMaxFileSize 30MB -MessageTrackingLogMaxDirectorySize 2.5GB -MessageTrackingLogMaxAge 365.00:00:00
Powyższy cmdlet włącza śledzenie wiadomości dla Mailbox_Server i ustawia przechowywanie logów na M:\logs. Limit wielkości pojedynczego pliku logu zostaje zmieniony na 30 MB. Jest to głównie zmiana kosmetyczna, która kontroluje ilość plików logów – im większy limit, tym mniej csv jest tworzonych każdego dnia. Maksymalny rozmiar katalogu (przed nadpisaniem najstarszych plików) został ustawiony na 2.5GB, a pliki logów są przechowywane przez 365 dni. Ustawienie opcji -MessageTrackingLogMaxAge na 00:00:00 pozwoli na przechowywanie logów śledzenia wiadomości przez nieokreślony czas. Lub przynajmniej przed osiągnięciem rozmiaru katalogu. Ale kto potrzebuje oszczędzać miejsce w Exchange, prawda?
Co znajduje się w dziennikach śledzenia wiadomości
Jest kilka rzeczy, które musisz wiedzieć o tym, jak dzienniki śledzenia wiadomości przechowują swoje wpisy.
- Każda wiadomość zazwyczaj generuje więcej niż jeden wpis w dzienniku śledzenia wiadomości.
- Nagłówki w dziennikach nie są takie same jak odpowiadające im atrybuty PowerShell. Na przykład Event-id w plikach dziennika to EventId w PowerShell. Recipient-address w logach odpowiada adresowi odbiorcy w PowerShell. Jeśli masz wątpliwości jak wyszukiwać używając konkretnego atrybutu, użyj
Get-MessageTrackingLog –ResultSize 1 | FL * or Get-MessageTrackingLog | Get-Member
. Te cmdlety dadzą Ci pełną listę atrybutów. - Niektóre pola są często puste w dziennikach śledzenia wiadomości. Niektóre z nich mogą nie zawierać informacji, które można uznać za ważne lub istotne.
Najważniejsze pola w dziennikach śledzenia wiadomości
- Sender, Recipient, MessageSubject – dość oczywiste, pokazuje kto do kogo wysłał wiadomość i jaki był temat
- TotalBytes – pokazuje rozmiar wiadomości
- Timestamp – daje informacje o tym, kiedy zdarzenie miało miejsce
- EventID – jedno z najważniejszych pól w dziennikach śledzenia wiadomości. Jest to podstawowe źródło informacji o tym, co się stało z wiadomością. Najczęstsze wartości to Receive, Send, Submit i Fail (ta dokumentacja Microsoft opisuje wszystkie typy zdarzeń wiadomości.)
- MessageInfo i RecipientStatus dają szczegółowe informacje o tym, co stało się z wiadomością.
- MessageLatency pokazuje, ile czasu serwer potrzebował na przetworzenie wiadomości e-mail.
Najważniejszą częścią jest to, jak używać PowerShell, aby uzyskać odpowiednie dane z dzienników.
Używanie cmdleta Get-MessageTrackingLog
Get-MessageTrackingLog pozwala przeszukać wszystkie dzienniki śledzenia wiadomości. Jeśli użyjesz tego polecenia bez żadnych dodatkowych atrybutów, zwróci ono do 1000 wpisów, z których większość będzie prawdopodobnie związana z działaniem Health Mailboxes. Jeśli chcesz uwzględnić więcej niż 1000 wpisów za pomocą jednego polecenia Get-MessageTrackingLog, dodaj atrybut -ResultSize unlimited. Jestem jednak pewien, że nie planujesz używać tego polecenia do monitorowania aktywności Health Mailboxes. Kluczem do sukcesu jest odpowiednie filtrowanie. Poniżej przedstawiam kilka technik, które można wykorzystać do filtrowania wyników.
Jak uzyskać ogólne informacje o przepływie poczty w Exchange Server
Jeśli naszym celem jest uzyskanie bardzo ogólnego wyobrażenia o przepływie poczty w naszej organizacji w ostatnim czasie, należy użyć składni opisanej poniżej:
Get-MessageTrackingLog -Start (Get-Date).AddDays(-14) -ResultSize Unlimited | Where -Property Recipients -NotLike "*HealthMailbox*" | ConvertTo-Html > "C:\mtl.html"
Powyższy cmdlet przegląda ostatnie 14 dni logów śledzenia wiadomości. Można się zastanawiać po co używać części Where-Object -Property Recipients -NotLike „HealthMailbox*”. Filtr ten usuwa wszystkie wpisy poświęcone skrzynkom Health Mailbox. Jeżeli jesteście ciekawi, możecie porównać wyniki z filtrem Where-Object oraz bez niego. Na koniec ostatni cmdlet w potoku eksportuje wyniki do pliku mtl.html. Można również wyeksportować wyniki do pliku CSV, używając cmdleta ConvertTo-Csv.
Problem polega na tym, że kiedy konwertujemy wyniki do pliku HTML lub CSV, pola zawierające informacje o odbiorcach nie będą wyświetlane poprawnie. Zamiast właściwych wartości, pola te będą zawierały wyrażenia System.String. Aby to naprawić, może być konieczne przesłanie wyników do dodatkowego polecenia cmdlet Select-Object. Dlaczego nie ograniczyć danych wyjściowych tak, aby zawierały tylko najważniejsze pola?
Get-MessageTrackingLog -Start (Get-Date).AddDays(-7) -ResultSize Unlimited | Where -Property Recipients -NotLike "*HealthMailbox*" | Select-Object sender,@{Name="Recipients";Expression={$_.recipients}},@{Name="RecipientStatus";Expression={$_.recipientstatus}},messagesubject,totalbytes,eventid,messageinfo,messagelatency | ConvertTo-Html > "C:\mtlx.html"
Jeśli chcesz zarejestrować wszystkie nieudane dostawy i zapisać je w pliku, użyj poniższego polecenia cmdlet.
Get-MessageTrackingLog -Start (Get-Date).AddHours(-24) -ResultSize Unlimited –EventId Fail | Where -Property Recipients -NotLike "HealthMailbox*" >> "C:\failed deliveries.csv"
Najlepszą częścią jest to, że znak >> dodaje nowe wartości do pliku failed.deliveries.csv, dzięki czemu można okresowo uruchamiać cmdlet, aby rejestrować wszystkie zdarzenia Fail.
Jak zbierać statystyki za pomocą Get-MessageTracking Log
Jeśli chcesz wykonać jakieś bardziej skomplikowane operacje na operacjach dziennika śledzenia wiadomości, zapisz je do zmiennej.
$mtl Get-MessageTrackingLog -Start (Get-Date).AddDays(-2) –eventId Send -ResultSize Unlimited | Where -Property Recipients -NotLike "*HealthMailbox*"
Powyższy cmdlet przechowuje informacje o wszystkich wiadomościach wysłanych w ciągu ostatnich dwóch dni. Aby zmierzyć, ile wiadomości e-mail użytkownicy wysłali w ogóle, wystarczy wpisać:
$mtl | measure
Aby uzyskać bardziej szczegółowe informacje, możesz użyć kilku dodatkowych cmdletów do grupowania, sortowania i wyświetlania wyników. Na przykład można wyświetlić liczbę wiadomości e-mail dla określonych użytkowników, posortowanych w kolejności malejącej:
$mtl | group-object -property sender | Select-Object name,count | Sort-Object count -desc
Użycie poleceń Group-Object, Select-Object i Sort-Object wraz z cmdletem Get-MessageTrackingLog pozwala łatwo uzyskać dowolne statystyki przepływu poczty.
Jak śledzić określone wiadomości przy użyciu Get-MessageTrackingLog
Wreszcie, jeśli chcesz sprawdzić, co stało się z konkretną niedostarczoną wiadomością, możesz szybko wyświetlić wszystkie najważniejsze informacje, pompując wyszukiwanie do cmdleta Format-List:
… | FL –Property Sender, Recipients, MessageSubject, RecipientStatus
W powyższym przykładzie łatwo można zauważyć, że wiadomość nie została dostarczona z powodu reguły transportowej. Tutaj okazało się, że w pewnym momencie ktoś uruchomił regułę przepływu poczty, która blokuje wszystkie wiadomości mające w temacie załącznik i słowo kluczowe Kitten.
Załóżmy, że z firmy wyciekły jakieś tajne dane. Dzienniki śledzenia wiadomości mogą pomóc w zidentyfikowaniu użytkowników, którzy wysłali wiadomości e-mail poza firmę, na przykład do konkretnej firmy konkurencyjnej.
Get-MessageTrackingLog –ResultSize Unlimited | Where -Property Recipients -Like "*@competitive-company.com"
Wyszukiwanie pozwala znaleźć podejrzanych. Oczywiście, możesz potrzebować poszerzyć lub zawęzić kryteria wyszukiwania, ale to zależy od ilości posiadanych danych. To co zrobicie z wynikami to nie jest dyskusja na bloga administratora.
Dalsza lektura:
- Śledzenie wiadomości w Office 365 (Exchange Online)
- Exchange 2019, 2016, 2013, 2010 kopia zapasowa skrzynki pocztowej poprzez eksport do PST (PowerShell)
.