Exchange MessageTracking like a Ninja

7 września 2017 at 19:49

Dzisiaj na tapetę weźmiemy Message Tracking czyli przeszukiwanie logów poczty Microsoft Exchange dotyczących maili krążących pomiędzy serwerami pocztowymi. Niby temat znany i na pierwszy rzut oka niewiele więcej odkrywczego w nim można napisać, ale jestem przekonany że prezentowana treść może się przydać w niejednym przypadku Standardowe podejście w przypadku Message Trackingu to odpalenie w sesji Powershella z połączeniem do serwerów Exchange’a polecenia w stylu:

Ewentualnie dodanie warunków zawężających przeszukiwanie (np. data początku, data końca, Event SMTP itd.) O ile w przypadku konkretnego adresu e-mail nadawcy lub odbiorcy sprawa jest banalnie prosta bo wystarczy wykonać polecenia w stylu:

O tyle w przypadku chęci wyszukiwania wiadomości mailowych wysłanych lub odebranych z całej domeny pocztowej ‚X’ ulega znacznej komplikacji. Dlaczego? Ano dlatego, że nie ma stosownego przełącznika określającego domenę. Ba nie ma nawet stosownego filtra, więc trzeba wykorzystać coś z czego każdy świadomy Administrator korzysta w ostateczności = warunek „where” – nie tego Tygryski zdecydowanie nie lubią

W przypadku naprawdę dużych środowisk pocztowych i szerokiego zakresu wyszukiwania należy oczekiwać, że zapytanie potrwa kilka godzin jeśli nie dni a przy okazji możemy otrzymać Out-Of-Memory… A co jeśli np. potrzebujemy wykonać Message Tracking dla kilkudziesięciu różnych domen pocztowych? Kleić „like” w […]

Debug połączeń ActiveSync

4 października 2016 at 09:26

Prawie każdy update urządzeń z jabłkiem na obudowie – na potrzeby wpisu: I-shit’ów 😉 skutkuje mniejszymi bądź większymi problemami z połączeniem lub szybkością działania poczty na tych urządzeniach. Z racji, że w jabłuszkach zakochane są zwłaszcza osoby na wysokich stanowiskach to każde takie zgłoszenie urasta do rangi mega problemu… i zaczyna się debug oraz przysłowiowe „udowodnij, że nie jesteś słoniem”… Nie ważne, że poczta działa poprawnie na Windows Phone, na Androidzie, na Apple-sraple I-shit w wersji 9.3.5 – ale nie działa poprawnie na nowym super wypasionym I-shit 7 za kila tysięcy – jak to jest możliwe? To na pewno Wasze serwery poczty… brzmi znajomo co? 😉 A ile osób sprawdziło, że nowy Apple-sraple usunął wsparcie dla połączeń PPTP? Że zdalny wipe z poziomu ActiveSynca już się nie uda, bo trzeba korzystać z dedykowanego MDM’a lub konta Apple i można by tu mnożyć przykłady… Nieważne – trzeba jednak udowadniać, że nie jest się słoniem i że „u nas działa”, więc zaczynamy: Włączamy debug ActiveSync’a na skrzynce użytkwonika korzystającego z Active Sync’a:

Odtwarzamy „problemy”, wolne działanie poczty etc. na urządzeniu Wysyłamy logi na swoją skrzynkę i szukamy błędów (których nie ma )

Na maile dostaniemy łady log w formie pseudo-XML’owej […]

Obsługa błędów w poleceniach Exchange’a

9 lutego 2016 at 11:00

Każdy posługujący się w miarę swobodnie powershell’em administrator zna sposoby wychwytywania i obsługi błędów pojawiających się podczas wykonywania skryptów. Wśród nich „króluje” często metoda „try/catch”, która w skrócie wygląda mniej więcej tak:

ww. narzędzie jest bardzo przydatne, elastyczne i pozwalające na bardzo zaawansowane rozróżnianie i obsługę poszczególnych błędów, zwłaszcza, gdy do sekcji „catch” dodamy typ błędu, który chcemy obsłużyć np:

Z czym natomiast spotyka się niemal każdy początkujący administrator próbujący budować swoje skrypty używając metody „try/catch”? Z faktem, że cześć błędów nie jest wychwytywana… Dlaczego tak się dzieje? Najczęstszymi powodami są: Niepoprawna akcja przy napotkaniu błędu (polecenia obsługujące przełącznik „-ErrorAction”, powinny mieć ustawioną akcję na „stop”) Niepoprawne preferencje obsługi błędów dla danego zakresu ($ErrorActionPreference powinno być ustawione na „stop”) A, że administrator nie lubi jak mu wyskakują błędy, to ustawia sobie ww. wartości na „SilentlyContinue” / „Continue” i w momencie, gdy dorośnie do obsługi błędów zaczyna ostre debugowanie.. Sprawa natomiast wygląda ciekawiej w przypadku poleceń Exchange’a, które są wykonywane zdalnie w ramach sesji z serwerami Exchange’a. W takim wypadku praca z powershell’em + modułami Exchange’a i nawiązanie sesji wygląda mniej więcej tak:

Dodaliśmy sobie przystawkę, nawiązaliśmy sesję, ustawiliśmy preferencje obsługi błędów i testujemy interaktywnie na konsoli obsługę […]

PSLanguageMode w Exchange’u i Powershell 4.0

29 stycznia 2015 at 07:00

Skrypty Exchange’owe wywoływane zdalnie, które działały poprawnie pod Powershell’em 2.0 w Windows 7 – nagle po instalacji Windows 8.1 i Powershell’a 4.0 nagle przestały działać… Podczas ich wykonywania zwracane są dosyć „dziwne” błędy jak poniżej: Inne wariacje tych błędów to: Function declarations are not allowed in restricted language mode or a Data section. Property references are not allowed in restricted language mode or a Data section. Assignment statements are not allowed in restricted language mode or a Data section. A variable that cannot be referenced in restricted language mode or a Data section is being referenced. Variables that can be referenced include the following: $PSCulture, $PSUICulture, $true, $false, and  $null.   Hmm… Ale o co tak naprawdę chodzi? Która linijka skryptu powoduje takie błędy? Idąc po nitce do kłębka: 1. Czy to wina $PSCulture i polskich znaków? Nieee… Przecież wcześniej wszystko działało prawidłowo – $PSCulture ustawiony nadal na „pl-PL” – nic się nie zmieniło. 2. Idźmy linijka po linijce w konsoli: Tworzenie skrzynki – OK Ustawienia quot – OK Ustawienia OWA – OK Ustawienia ActiveSync – OK itd… – wszystko niby działa Hmmm… Wszystko niby działa, ale coś tu jest nie tak – no właśnie – przy uruchomieniu krokowym wskazałem […]

© Marcin Krzanowicz