Subscribe RSS

Polskie blogi specjalistów IT / Microsoft

agregator blogów
  • O usłudze
  • ziembor.pl/blog/
  • Gdzie szukam?
    • wss.pl
    • ITBlogs
    • Jogger Techblog
    • dobreprogramy
  • Inne agreagatory
    • zine.net.pl/TechBlogs
    • itblogs.pl/agregat/

Author: pawp81


Kilka rzeczy dotyczących DAG, o których zapominam

2012-05-15 Posted by pawp81 under DAG, Polskie blogi IT

1. Wykonania polecenia stop-databaseavailabilitygroup -MailboxServer powoduje zatrzymanie i wyłącznie usługi Cluster Service (status usługi Disabled) na serwerze skrzynkowym. Węzeł klastrowy jest pauzowany. Nie zmniejsza to ilości serwerów potrzebnych do utrzymania quorum w klastrze. Ma to jednak wpływ na mechanizm Datacenter Activation Coordination (DAC) bo serwer, dla którego wykonaliśmy stop-dag nie będzie brany pod uwagę przy testach DAC determinujących czy baza może być zamontowana. Serwer, który chce zamontować bazy (w przypadku gdy DAC jest ustawione na DagOnly), może to zrobić gdy uda mu się skontaktować z jakimkolwiek członkiem DAG lub ze wszystkimi serwerami, które są na liście StartedMailboxServers. Po wykonaniu stop-dag nie będzie na tej liście.

2. restore-databaseavailabilitygroup usuwa serwery z klastra (Evict), które znajdują się na liście StoppedMailboxServers. Dzięki temu klaster jest zmniejszony i potrzeba mniej węzłów do utrzymania quorum

3. RPCClientAccessSever to właściwość bazy skrzynkowej. Jej wartość przechowywana jest w atrybucie LegacyExchangeDN obiektu bazy np.:
/cn=EXCHORG/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Configuration/cn=Servers/cn=outlook.domena.net/cn=Microsoft Private MDB. Outlook.domena.net jest nazwą CAS Array. LegacyExchangeDN obiektu CASArray jest taki sam tylko bez części: cn=Microsoft Private MDB
Wpis będzie uaktualniany

4. W Exchange 2010 SP1 i nowszych usuwanie logów transakcyjnych w DAGu przy wykonywaniu kopii zapasowej odbywa się w następujący sposób. Replication Service na każdym z serwerów, na którym znajdują się kopie bazy skrzynkowej (aktywne i pasywne) przesyła informację o Global Truncation Point (numer sekwencyjny logu, który jest “ok to truncate”) do serwera z aktywną kopią po tym jak wykona operację replay do bazy pasywnej. Serwer z aktywną kopią zbiera te dane (w tym od siebie) i sprawdza, który z GTP wskazuje na log z najmniejszym numerem (najstarszy log). Zazwyczaj będzie to numer logu zwrócony przez serwer z aktywną kopią ponieważ Checkpoint Depth na serwerze z aktywną kopią wynosi 100, a na serwerach z pasywną 5. W związku z tym kopia aktywna jest znacznie bardzi opóźniona w “replay’owaniu” logów w stosunku do kopii pasywnych.
Kolejnym krokiem jest wyszukanie, w najstarszym logu wskazanym jako “ok to truncate”, informacji “Checkpoint at log creation”, czyli informacji mówiąc jaki był checkpoint w momencie tworzenia tego logu. Zazwyczaj wartość “Checkpoint at log creation” będzie wskazywała na log z numerem o 100 niższym niż sprawdzany log. Logi, które mogą zostać usunięte to te, które znajdują się poniżej (mają niższy numer sekwencyjny) niż wartość “Checkpoint at log creation”. W sumie powinno to być około 200 logów. Bardziej szczegółowy opis znajduje się tutaj

5. Copy Queue Length=LastLogGenerated-LastLogInspected (np LastLogGenerated=451, LastLogInspected=430, CopyQueueLength=21) Jak widać Copy Queue Length nie oznacza ile logów nie zostało jeszcze przekopiowanych z aktywnej kopii. Parametr ten oznacza ile logów czeka na inspekcje na serwerze z pasywną kopią bazy. Część tych logów może znajdować się już w folderze “inspector” na serwerze docelowym.
Replay Queue Length=LastLogInspected-LastLogReplayed Replay Queue Length oznacza ilość logów, które przeszły już inspekcję, ale nie zostały wgrane do bazy.
Informację o LastLogGenerated oraz LastCopyNotificationTime jest wysyłana przez serwer źródłowy do serwera docelowego (z pasywaną kopią bazy), po tym jak FileSystemWatcher (na serwerze źródłowym) wykryje, że nowy log tranzakcyjny został utworzony w katalogu z logami.

6. Przełączanie bazy. Jakie algorytmy są po kolei uruchamiane
- Best Copy Selection (BCS) – wybranie najlepszej kopii do aktywacji
- Attempt Copy Last Log (ACLL) – próba przekopiowania brakujących logów z aktywnej kopii
- Porównanie CopyQueueLength z AutoDatabaseMountDial w celu stwierdzenia czy można zamontować bazę
- Odmontowywana jest aktywna baza i zamykany jest log E00.log. Przekopiowane logi fazie ACLL są “replayowane” do bazy i baza jest montowana.

7. LastCopiedLogTime, LastInspectedLogTime, LastReplayedLogTime zawierają datę logu przeczytaną z pliku. Parametry te nie określają czasu, w którym dana operacja została wykonana.

MAPIAccessEnabled – od czego zależy

2012-05-10 Posted by pawp81 under DAG, Polskie blogi IT

Tworząc DAG, przy każdym dodaniu serwera skrzynkowegoo do DAG ewaluowane, są interfejsy sieciowe członków DAG i na tej podstawie tworzone są sieci, z których będzie korzystał DAG (DAGNetworks). Jednym z paramterów każdej z sieci jest to czy dana sieci ma włączony dostęp MAPI (MAPIAccessEnabled). Parametr ten można zweryfikować za pomocą Exchange Management Shell: get-databaseavailabilitygroup | fl Name,MapiAccessEnabled. Nie można natomiast zmienić tego parametru za pomocą EMS, ani w konsoli Failover Cluster Manager (zmiana wykonana w konsoli FCM, zostanie przywrócona do pierwotnego stanu). Aby wyłączyć MAPIAccess dla danej sieci należy na interfejsach sieciowych serwerów Skrzynkowych odznaczyć: “Register this connection’s addresses in DNS”

Następnie należy wykonać polecenie: set-databaseavailabilitygroup nazwaDAG -discoverNetworks
Po tej operacji dostęp MAPI dla sieci powinien zostać wyłączony.

Warto pamiętać, że supportowana jest konfiguracja z tylko jedną siecią DAG mającą włączony dostęp MAPI.

Wykrywanie zduplikowanych wiadomości w Exchange

2012-04-04 Posted by pawp81 under Polskie blogi IT

Ten artykuł opisując wykrywanie zduplikowanych wiadomości w Exchange 2007 wydawał mi się nie jasny. Miałem pod ręką laba z Exchange 2010 więc postanowiłem sprawdzić jak wygląda wykrywanie zduplikowanych wiadomości w tej wersji Exchange. Zwłaszcza interesowało się mnie co to jest Client Submit Time.
Wysyłając wiadomości za pomocą telnet’u, fabrykując nagłówki okazało się że Client Submit Time to nagłówek “Date:”.
Ponadto stwierdziłem, że aby wiadomość została uznana za zduplikowaną pierwsza i druga wiadomość muszą mieć taki sam Message-ID oraz taką samą wartość nagłówka “Date:” z dokładnością co do sekundy. Informacje dotyczące zduplikowanych wiadomości są trzymane w tabeli DeliveredTo domyślnie przez 7 dni. Oznacza to że wysłanie drugiej wiadomości z tym samym Message-ID i Date dwie godzin po pierwszej wiadomości z powoduje wykrycie tej wiadomości jako Duplicated i jej usunięcie.

Co ciekawe jeśli na skrzynce korzystając z Outlooka ustawiłem regułę auto-forward i wysłałem dwie wiadomości z tym samym Message-ID i Date to rownież druga wiadomość została uznana za duplikat.

Nagłówek “Date:” jest ustawiany przez klienta w momencie wysłania wiadomości (wysyłka przez SMTP) lub przez Store w przypadku wysyłki wiadomości przez MAPI.

Kilka faktów dotyczących grup dystrybucyjnych w Exchange 2010

2012-03-22 Posted by pawp81 under Exchange 2003, Exchange 2007, Polskie blogi IT

W domyślnej instalacji Exchange 2010, użytkownicy nie mogą zarządzać grupami, których są właścicielami, mimo że są dodani do atrybutu ManagedBy. Aby mogli zarządzać swoimi grupami, ale nie mogli zakładać nowy list ani usuwać istniejących, konieczne jest stworzenie nowej Management Role i przypisanie jej do Default Role Assignment Policy. Z pomocą przychodzi skrypt z tego artykułu:

http://blogs.technet.com/b/exchange/archive/2009/11/18/3408844.aspx

Jeśli użytkownik mający skrzynkę na Exchange 2010 ma przyznane uprawnienia “WriteMembers” do obiektu grupy (nie ważne czy grupa dystrybucyjna jest w wersji 2003, 2007 czy 2010) to nie będzie mógł, mimo to, zarządzać tą grupą. Użytkownik musi być dodany do ManagedBy.

Użytkownicy mający skrzynki na Exchange 2010 mogą zarządzać grupami ze starszych wersji Exchange.

Użytkownicy mający skrzynki na Exchange 2003 lub Exchange 2007 nie mogą zarządzać listami dystrybucyjnymi w wersji Exchange 2010.

W jaki sposób Outlook Anywhere może powodować problemy z DSProxy w Exchange 2007

2012-03-16 Posted by pawp81 under Exchange 2007, Polskie blogi IT

Jak wiadomo DSProxy jest odpowiedzialne za przekazanie klientom Outlook odpowiedniego kontrolera domeny, z którego Outlook będzie korzystał na przykład wtedy gdy użytkownik będzie chciał zmodyfikować członkostwo w grupie dystrybucyjnej z poziomu Outlooka.

Algorytm znalezienia odpowiedniego kontrolera domeny wygląda następująco.

  1. Tworzona jest lista kontrolerów domeny, które znajdują się w AD Site, w którym znajduje się serwer Exchange oraz w AD Site, z którymi ten Site ma bezpośrednie połączenie. Następne kroki wykonywane są dla kontrolerów domeny z tej listy.
  2. Za pomocą RPC Ping co 5 minut sprawdzane jest czy kontroler jest dostępny. Jeśli jest dostępny otrzymuje 16 punktów
  3. W zależności czy klient łączy się za pomocą TCP/IP czy HTTPS, test RPC Ping wykonywany jest za pomocą ncacn_ip_tcp lub ncacn_http.  Ma to na celu sprawdzenie czy kontroler domeny obsługuje protokół, którym  łączy się  klient. Jeśli kontroler domeny obsługuje protokół otrzymuje 8 punktów
  4. Następnie sprawdzane jest czy kontroler domeny należy do tej samej domeny co łączący się użytkownik. Jeśli tak, otrzymuje 4 punkt
  5. Kontrolery domeny, które znajdują się w tym samym AD Site co serwer Exchange otrzymują dodatkowe 2 punkt
  6. Kontroler domeny, z którego korzysta DSAccess otrzymuje jeszcze 1 punkt.

Kontroler domeny, który otrzyma najwięcej punktów zwracany jest Outlookowi.  Dokładny opis znajduje się tu.

Tyle jeśli chodzi o wstęp teoretyczny. Ostatnio diagnozowałem problem, w którym w środowisku Exchange 2007 użytkownicy co jakiś czas otrzymywali kontrolery z „nieswojej” domeny co uniemożliwiało im zarządzanie grupami dystrybucyjnymi. Problem zaobserwowałem tylko na kilku serwerach, nie na wszystkich. Konieczne okazało się zaangażowanie wsparcie Microsoft i skorzystanie z dostarczonej przez nich wersji debug dll’ki dsproxy.dll. Dsproxy.dll w wersji debug „zrzucała” do pliku informacje dotyczące opisanego powyżej aglorytmu. Okazało się że co jakiś czas RPC Ping wykonany w kierunku kontrolera domeny kończy się niepowodzeniem. W konsekwencji kontroler domeny traci 16 pkt i nie jest wykorzystywany przez Referral Process do przydzielenia klientom Outlook, mimo że znajduje się w „Exchange’owym” AD Site i w tej samej domenie co użytkownik. Gdy taki los spotka wszystkie kontrolery domeny z domeny użytkownika, Outlook’owi przydzielane są kontrolery domeny z innej domeny niż domena użytkownika.

Po dalszej analizie okazało się że problem z nieudanym z RPC Ping dotyczy tylko połączeń ncacn_http, a więc tych generowanych przez użytkowników Outlook Anywhere. Dalsza analiza wykazała że na serwerach na których występuje problem, około ¼ użytkowników to użytkownicy Outlook Anywhere. Największa liczba użytkowników Outlook Anywhere była właśnie na serwerach, na których występował problem z DSProxy.

Nie udało się na ustalić dlaczego ncacn_http czasem kończyło się niepowodzeniem. Jako obejście problemu zdecydowaliśmy się wyłączyć RPC Ping ncacn_http i zastąpić go ncacn_ip_tcp również dla użytkowników Outlook Anywhere. Jak to zrobić zostało opisane w KB986106 

OWA: “A problem occured while you were trying to use your mailbox”. Error 9646

2012-02-17 Posted by pawp81 under Polskie blogi IT

Na nowo zainstalowanym Exchange 2010 z zaledwie kilkoma produkcyjnymi skrzynkami, wielu użytkowników miało kłopoty z korzystanie z Outlook Web App. Przeglądanie maili kończyło się błędem: “A problem occured while you were trying to use your mailbox” lub w polskiej wersji: “Podczas próby użycia skrzynki pocztowej wystąpił błąd”:

Ponadto w logu aplikacyjnym na serwerze Exchange 2010 pojawiały się następujące błędy:
Log Name: Application
Source: MSExchangeIS
Date: 2/16/2012 3:29:19 PM
Event ID: 9646
Task Category: General
Level: Error
Keywords: Classic
User: N/A
Computer: ExSRV2010.domena.pl
Description:
Mapi session “c3372916-0879-4e3c-ff5e-1a34afea74af: /o=ExchORG/ou=first administrative group/cn=Recipients/cn=username” exceeded the maximum of 16 objects of type “session”.

Okazało się że rozwiązaniem problemu był ten artykuł http://support.microsoft.com/kb/980049/en-us czyli stworzenie wpisu w kluczu rejestru: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSExchangeIS\ParametersSystem o wartości “Maximum Allowed Service Sessions Per User”, zwiększający limit z 16 sesji (ja ustawiłem 24) oraz restart usługi Information Store.
Co ciekawe błąd nr 9646 wyraźnie sugeruje że to liczba sesji MAPI została przekroczona, a rozwiązaniem jest zwiększenie limitu połączeń non-MAPI. Bardzo ciekawe :)

Wiadomości pozostają w kolejce “Unreachable” na serwerze Exchange 2010 z błędem “The mailbox recipient does not have a mailbox database”

2012-02-15 Posted by pawp81 under Polskie blogi IT

Podczas migracji z Exchange 2003 do Exchange 2010 zaobserwowałem problem z wysłaniem wiadomości z Exchange 2010 do skrzynek znajdujących się na Exchange 2003. Wiadomości pozostawały w kolejce na serwerze Exchange 2010 z błędem: “The mailbox recipient does not have a mailbox database”. Maile wysłane z Exchange 2003 na te skrzynki dochodziły bez problemu. Ponadto wykonanie polecenia get-mailbox albo new-moverequest w celu przeniesienia skrzynki na nowy serwer zwracało błąd że skrzynka nie istnieje.

Okazało się że problemem był brak dziedziczenia uprawnień AD na kontach użytkowników, których dotyczył problem. Grupy typu Exchange Trusted Subsystem czy Exchange Windows Permission nie miały uprawnień do tych obiektów.

Po włączeniu dziedziczenia, wiadomości zaczęły docierać do problematycznych odbiorców.

Montowanie bazy folderów publicznych na Exchange 2010 kończy się błędem: “Operation failed with message: MapiExceptionNotFound: Unable to mount database.”

2012-02-13 Posted by pawp81 under Foldery publiczne, Polskie blogi IT, Public folders

W Organizacji Exchange, w której znajdował się do tej pory tylko Exchange 2003, doinstalowaliśmy serwer Exchange 2010. Instalacja przybiegła pomyślnie, jednak po jej zakończeniu stwierdziliśmy, że nie jest zamontowana bazy folderów publicznych. Baza skrzynkowa zamontowała się poprawnie.
Ręczne montowanie bazy folderów publicznych kończy się błędem:
Operation failed with message: MapiExceptionNotFound: Unable to mount database.

W Application Logu po próbie zamontowania bazy pojawiały się błędy:
Log Name: Application
Source: MSExchangeRepl
Date: 2/12/2012 10:37:10 PM
Event ID: 3154
Task Category: Service
Level: Error
Keywords: Classic
User: N/A
Computer: Ex2010.xyz.pl
Description:
Active Manager failed to mount database Public Folder Database 2010 on server Ex2010.xyz.pl. Error: An Active Manager operation failed. Error: The database action failed. Error: Operation failed with message: MapiExceptionNotFound: Unable to mount database. (hr=0x8004010f, ec=-2147221233)

Log Name: Application
Source: MSExchangeIS
Date: 2/12/2012 10:37:10 PM
Event ID: 9519
Task Category: General
Level: Error
Keywords: Classic
User: N/A
Computer: Ex2010.xyz.pl
Description:
While starting database b8563580-5662-4ce8-88a5-accdb87e618d, the following error occurred: 0x8004010f. Look up of DB Info failed.

Porównując konfigurację w Active Directory organizacji, w której problem nie występował z tą gdzie nie można było zamontować bazy folderów publicznych, zauważyłem że obiekt Hierarchi Folderów (CN=Folder Hierarchies,CN=first administrative group,CN=Administrative Groups,CN=CYCLAD,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=xyz,DC=pl) nie ma włączonego dziedziczenia uprawnień.
W związku z tym podczas instalacji Exchange 2010 nie zostały dodane uprawnienia. Między innymi grupa Exchange Trusted Subsystem nie miała uprawnień do obiektu: “Folder Hierarchies”. Włączenie dziedziczenia uprawnień na tym kontenerze rozwiązało problem. Montowanie bazy folderów publicznych zakończyło się powodzeniem.

Exchange Management Console łączy się do nieistniejącego serwera

2012-02-12 Posted by pawp81 under Polskie blogi IT

Przyszło nam zmieniać nazwę serwera gdzie zainstalowany był Exchange 2010. Odinstalowaliśmy Exchange’a, następnie odinstalowaliśmy IISa. Potem zainstalowaliśmy IISa wraz ze wszystkimi potrzebnymi do działa Exchange’a komponentami i na końcu zainstalowaliśmy Exchange Server 2010.
Po zakończeniu instalacji okazało się, że konsola Exchange Management Console, łączy się ze starą nazwą serwera, co powoduje generowanie następującego błędu:
"The attempt to connect to http://oldname.xyz.pl/PowerShell using "Kerberos" authentication failed: connecting to remote server failed with the following error message: WinRM cannot process the request. The following error occured while using Kerberos authentication. The network path was not found"

Exchange Management Shell otwierał się bez problemu. Po dalszym sprawdzeniu sprawy stwierdziliśmy, że otwarcie EMC za pomocą innego konta niż to, które zostało użyte do reinstalacji Exchange’a działa poprawnie.

Okazało się, że należy usunąć plik konfiguracyjny EMC o nazwie: “Exchange Management Console” znajdujący się: C:\users\\AppData\Roaming\Microsoft\MMC\
oraz trzeba usunąć klucz w rejestrze:
HKEY_CURRENT_USER\Software\Microsoft\Exchangeserver\v14\AdminTools\NodeStructureSettings

Po wykonaniu tych dwóch czynności konsola EMC, zaczęła się otwierać bez błędu.

Niepoprawne wyłączenie IPv6 i jego wpływ na SBS 2011

2012-02-03 Posted by pawp81 under Polskie blogi IT

Ostatnio miałem okazję pracować przy SBS 2011 gdzie IPv6 nie było w poprawny sposób wyłączone. W ustawieniach interfejsu sieciowego był odznaczony checkbox jak poniżej, nie były jednak zrobione odpowiednie zmiany w rejestrze:

Skutkowało to problemami w komunikacji usług Exchange’owych z Active Directory o czym świadczyły następujące błędy w Event Logu:
Nazwa dziennika:Application
Źródło: MSExchange RBAC
Identyfikator zdarzenia:22
Kategoria zadania:(2)
Poziom: Błędy
Słowa kluczowe:Klasyczny
Użytkownik: Nie dotyczy
Opis:
(Process w3wp.exe, PID 9836) "RBAC authorization is unavailable due to the transient error: The Microsoft Exchange Active Directory Topology service on server localhost did not return any suitable domain controllers."

Nazwa dziennika:Application
Źródło: MSExchange ADAccess
Identyfikator zdarzenia:2114
Kategoria zadania:(3)
Poziom: Błędy
Słowa kluczowe:Klasyczny
Użytkownik: Nie dotyczy
Opis:
Process MAD.EXE (PID=2212). Topology discovery failed, error 0x80040a02 (DSC_E_NO_SUITABLE_CDC). Look up the Lightweight Directory Access Protocol (LDAP) error code specified in the event description. To do this, use Microsoft Knowledge Base article 218185, "Microsoft LDAP Error Codes." Use the information in that article to learn more about the cause and resolution to this error. Use the Ping or PathPing command-line tools to test network connectivity to local domain controllers.


Nazwa dziennika:Application
Źródło: MSExchangeRepl
Identyfikator zdarzenia:3176
Kategoria zadania:(5)
Poziom: Błędy
Słowa kluczowe:Klasyczny
Użytkownik: Nie dotyczy
Opis:
The Microsoft Exchange Replication service attempted to start the Active Manager RPC server but failed because an error occurred when attempting to read the Exchange Servers universal security group SID from Active Directory. Error:
The Microsoft Exchange Active Directory Topology service on server localhost did not return any suitable domain controllers.

Nazwa dziennika:Application
Źródło: MSExchangeIS
Identyfikator zdarzenia:1121
Kategoria zadania:(6)
Poziom: Błędy
Słowa kluczowe:Klasyczny
Użytkownik: Nie dotyczy
Opis:
Error 0x96f connecting to Active Directory.

Nazwa dziennika:Application
Źródło: MSExchangeIS
Data: 2012-02-02 10:43:52
Identyfikator zdarzenia:5000
Kategoria zadania:(6)
Poziom: Błędy
Słowa kluczowe:Klasyczny
Użytkownik: Nie dotyczy
Komputer: BMSERVER.bernardinum.local
Opis:
Unable to initialize the Microsoft Exchange Information Store service. - Error 0x96f.

Ponadto uninstalowanie Exchange’a kończyło się błędem:
"Nie można nawiązać połączenia z usługą Microsoft Exchange Unified Messaging na serwerze o nazwie EXCHSERVER. Sprawdź, czy usługa Microsoft Exchange Unified Messaging została uruchomiona."

Oprócz tego uruchomienia Exchange Management Shell lub Exchange Management Console generowało błąd:
Connecting to remote server failed with the following error message: The WinRM client received an HTTP server error status (500), but the remote service did not include any other information about the cause of the failure.

Z pomocą przyszło wyłączenie IPv6 w rejestrze i restart serwera:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters\
DWORD (32-bit) Value: DisabledComponents
Wartość: „ffffffff”

http://blogs.technet.com/b/sbs/archive/2011/02/18/small-business-server-2011-slow-to-boot-and-several-services-fail-to-start.aspx

Exchange 2010: Instalowanie roli Mailbox w Site’cie, w którym nie ma ról Client Access ani Hub

2012-01-20 Posted by pawp81 under Polskie blogi IT

Ostatnio miałem teoretyczną rozmowę z jednym z polskich PFE na temat tego czy w site’cie AD, w którym nie ma zainstalowanych ról Client Access ani Hub, uda się zainstalować rolę Mailbox. Przy budowie lab’a okazało się, że rolę Mailbox można przy takiej konfiguracji zainstalować. Setup zwróci tylko ostrzeżenie:
Setup did not detect an existing Hub Transport server role installed in Active Directory site 'PLWAR2'. Mail cannot be
sent or received from this mailbox server until a Hub Transport role is installed.
Setup didn't detect an existing Client Access server role installed in Active Directory site 'PLWAR2'. Outlook Web App
and Exchange ActiveSync mobile phone access won't be available until a Client Access role is installed.


Oczywiście tak zainstalowana rola Mailbox byłaby bezużyteczna. Nie można by połączyć się ze skrzynką znajdującym się na takim serwerze, a maile do niej wysłane nie byłby dostarczane.

Jak sprawdzić zainstalowane poprawki do Exchange, Lync itp?

2012-01-10 Posted by pawp81 under Polskie blogi IT

Cały czas zapominam gdzie w rejestrze systemowym znajduje się informacja o zainstalowanych poprawkach do Exchange czy Lync Server. Standardowo polecenie wmic qfe list pokazuje tylko poprawki.
W rejestrze informacja o zainstalowanych update’ach znajduje się w następującym kluczu:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Updates

Dotyczy Windows Server 2003 i 2008

$FormatEnumerationLimit – zmiana limitu wyświetlanych wartości dla parametru

2011-12-15 Posted by pawp81 under Polskie blogi IT

Powershell domyślnie wyświetla tylko 16 wartości parametru. Np jeśli analizujemy wiadomości za pomocą Message Tracking Log wśród odbiorców maila możemy domyślnie zobaczyć do 16 adresów. Podobnie po wykonaniu polecania Get-OwaVirtualDirectory -server ServerName | fl AllowedFileType powershell wyświetli tylko 16 pierwszych rozszerzeń plików.
Jeśli chcemy zobaczyć wszystkie wartości wystarczy, że wykonamy polecenie:
$FormatEnumerationLimit=-1
A następnie jeszcze raz:
Get-OwaVirtualDirectory -server ServerName | fl AllowedFileType

Problemy z replikacją AD pomiędzy SBS 2003 i Windows 2000 – ERROR_DOMAIN_CONTROLLER_NOT_FOUND

2011-11-29 Posted by pawp81 under Polskie blogi IT

Ostatnio zmagałem się z problemem dotyczącym replikacji AD Inter-Site pomiędzy serwerami Small Business Server 2003 i Windows 2000 SP4. Łącze między lokalizacjami było bardzo słabe. Serwer SBS 2003 był pierwszym kontrolerem w domenie i posiadał wszystkie role FSMO. Przy promocji serwera Windows 2000 do roli kontrolera domeny w logu dcpromo.log znalazłem następujące ostrzeżenie: [WARNING] Non critical replication returned 1908

Błąd 1908 oznacza: ERROR_DOMAIN_CONTROLLER_NOT_FOUND

dcdiag /v uruchomiony na serwerze Windows 2000 zwracał poniższy komunikat:
The directory service on DC002 has not finished initializing. In order for the directory service to consider itself synchronized, it must attempt an initial synchronization with at least one replica of this server's writeable domain. It must also obtain Rid information from the Rid FSMO holder. The directory service has not signalled the event which lets other services know that it is ready to accept requests. Services such as the Key Distribution Center, Intersite Messaging Service, and NetLogon will not consider this system as an eligible domain controller. * Active Directory RPC Services Check

Za pomocą replmon sprawdziłem, że nie działa replikacja z SBS 2003 do Windows 2000 (błąd: Nie można odnaleźć kontrolera tej domeny). W drugą stronę replikacja działa poprawnie.

Wymuszając replikację za pomocą replmon i analizując pakiety zauwyżyłem, że serwer Windows 2000 wysyłał pakiety TGS-REQ do SBSa używając protokołu UDP, ale serwer SBS nie wysyłał odpowiedzi. Postanowiłem wymusić korzystanie z protokołu TCP dla Keberosa ponieważ uważałem, że na słabym łączu pakiety TCP mają większe szanse na dotarcie. :)

Stworzyłem odpowiedni wpis w rejestrze: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\ Kerberos\Parameters
DWORD MaxPacketSize=1 opierając się na artykule http://support.microsoft.com/kb/244474 Zrestartowałem serwer. Po restarcie replikacja zaczęła działać również w kierunku z SBS 2003 do Windows 2000. Po kilku minutach dcdiag przestał pokazywać błędy dotyczące braku początkowej synchronizacji AD.

Moderacja grup dystrybucyjnych w środowisku mieszanym Exchange 2003/2007/2010

2011-11-18 Posted by pawp81 under Polskie blogi IT

Exchange 2010 rozbudował możliwość moderowania i kontrolowania kto jest uprawniony do wysyłania wiadomości do grup dystrybucyjnych. Za pomocą opcji moderacji można wyznaczyć użytkownika lub kilku użytkowników, którzy mogą obejrzeć i zaakceptować wiadomości zanim zostaną dostarczone do członków grupy.
Aby można było skorzystać z tej możliwości grupa musi być na poziomie Exchange 2010. Poziom grupy można sprawdzić w Powershellu:
get-distributiongroup nazwa_grupy | fl Name,ExchangeVersion

Poniżej rezultat polecenia informujący, że grupa jest na poziomie Exchange 2010:
Name : E2k10group
ExchangeVersion : 0.10 (14.0.100.0)

Poziom grupy Exchange 2007:
Name : Grupa_e2k7
ExchangeVersion : 0.1 (8.0.535.0)

Aby upgrade’ować grupę należy wykonać poniższe polecenie:
Get-DistributionGroup grupa_e2k7 | Set-DistributionGroup –ForceUpgrade

Wracając do tematu moderacji grup. Kolejny warunkiem, który musi być spełniony, aby moderacja grupy zadziałała jest to, że członkostwo grupy musi być rozwinięte na serwerze HUB w wersji Exchange 2010. Domyślnie serwerem rozwijającym (Expansion Server) jest pierwszy serwer HUB, do którego trafi moderowana wiadomość.
Expansion Server dla grupy można ustawić w PowerShellu:
Set-DistributionGroup Nazwa_grupy -ExpansionServer LegacyExchageDN_Serwera_HUB
Lub w Exchange Management Console we właściwościach grupy w zakładce Advanced.

Ostatnim warunkiem koniecznym do działania moderacji grupy jest to, aby skrzynka moderatora znajdowała się na serwerze Exchange 2010. Dzieje się tak dlatego, ponieważ wiadomość przeznaczona do moderacji trafia do skrzynki Arbitration Mailbox, a do moderatora wysłana jest prośba o akceptację wiadomości. Bez skrzynki Arbitration, (do której mogą być tylko "przypisane" skrzynki pocztowe znajdującej się na serwerze Exchange 2010) cały "workflow" nie zadziała.

Podsumowując:
Można wyróżnić 3 warunki, których spełnienie umożliwi włączenie moderacji grupy (pomijam włączenie moderacji na grupie ;) )
1. Grupa musi być na poziomie Exchange 2010
2. Grupa musi być rozwijana na serwerze HUB Exchange 2010
3. Moderator musi mieć swoją skrzynkę na serwerze Exchange 2010

Jaki wpływ mają powyższe warunki na działanie moderacji w środowisku mieszanym zawierającym serwery Exchange w różnych wersjach?
- Wiadomości wysłane przez użytkowników znajdujący się na wcześniejszych niż Exchange Server 2010 serwerach będą moderowane jeśli wszystkie 3 powyższe warunki zostaną spełnione
- Gdy jesteśmy w trakcie migracji z Exchange 2003/7 do Exchange 2010 i w organizacji mamy zainstalowane serwery Client Access i HUB Transport, ale nie zainstalowaliśmy jeszcze serwerów skrzynkowych to moderacja nie zadziała ponieważ nie zostanie spełniony warunek trzeci.

Jak sprawdzić czy certyfikat jest zaufany?

2011-11-13 Posted by pawp81 under Polskie blogi IT

Jak szybko sprawdzić czy certyfikat jest uważany za zaufany przez nasz serwer?
1. Wyeksportować certyfikat do pliku, może być bez klucza prywatnego
2. Za pomocą narzędzia certutil zweryfikować certyfikat:
Certutil -verify -urlfetch "C:\nazwa.cer" > c:\result.txt
3. Otworzyć plik result.txt i sprawdzić czy nie zawiera błędów dotyczących certyfikatu

Integracja Lync Server z Trixbox (Asterisk)

2011-11-10 Posted by pawp81 under Polskie blogi IT

Co chciałem osiągnąć?
Posiadając numer miejski wykupiony u operatora VoIP chciałem za pomocą Lync’a odbierać połączenia “z miasta” i dzwonić “na miasto”. Jako PSTN Gateway chciałem użyć platformę Trixbox. Ponadto chciałem mieć możliwość dzwonienia z Lynca na klienta X-Lite podłączonego do Trixboxa i vice-versa.

Czego użyłem, aby osiągnąć cel?
Wzorowałem się na artykule opisującym integrację OCS 2007 R2 z Trixbox
Mick’s Breeze Blogs – Biztalk/Sharepoint/… – Finally! Connected OCS 2007 R2 to Trixbox (Asterisk) to a PSTN/PBX
ISO do instalacji Trixboxa pobrałem stąd(wersja 2.8.0.4)

Jak wyglądała konfiguracja?
Po zainstalowaniu Trixbox’a przystąpiłem do konfiguracji systemu operacyjnego:
1. Nazwa serwera i default gateway:
/etc/sysconfig/network
NETWORKING=yes
HOSTNAME=srvast.ad.net
GATEWAY=10.22.48.1

2. Adres IP serwera:
/etc/sysconfig/network-scripts/ifcfg-et0.conf
IPADDR=10.22.48.180
NETMASK=255.255.255.0

3. Ustawienie serwera DNS:
/etc/resolv.conf
nameserver 10.22.48.201

Następnie po zalogowaniu do panelu administracyjnego Trixbox’a (http://srvast.ad.net/maint domyślnie: login:maint, hasło:password) przystąpiłem do konfiguracji ustawień SIP. Bardzo ważne jest włączenie nadsłuchiwania na połączenia SIP dla protokołu TCP. Lync potrafi łączyć się z PSTN Gateway tylko używając TCP, natomiast Asterisk domyślnie oczekuje tylko połączeń używających protokołu UDP.

/etc/asterisk/sip_general_custom.conf
tcpenable=yes
tcpbindaddr=0.0.0.0
bindaddr=0.0.0.0
port=5060

Kolejnym krokiem była konfiguracja trunków (sip_additional.conf) z Lync’iem i z providerem VoIP (w moim przypadku jest to IPCall). Kontekst [3000] umożliwia zalogowanie klienta VoIP z numerem 3000 do serwera Trixbox.
Poniżej przedstawiam plik konfiguracyjny zawierający konfigurację Trunków

/etc/asterisk/sip_additional.conf
[3000]
deny=0.0.0.0/0.0.0.0
type=friend
secret=haslo
qualify=yes
port=5060
pickupgroup=
permit=0.0.0.0/0.0.0.0
nat=yes
mailbox=3000@device
host=dynamic
dtmfmode=rfc2833
dial=SIP/3000
context=3000
canreinvite=no
callgroup=
callerid=device
accountcode=
call-limit=50

[Connect-with-Lync]
disallow=all
host=10.22.48.182; adres IP serwera Lync z rolą Mediation
type=friend
port=5068; Port an którym nadsłuchuje serwer Lync Mediation
insecure=port,invite
dtmfmode=rfc2833
qualify=yes
transport=tcp,udp
canreinvite=yes
allow=ulaw
context=from-lync

[from-Lync]
host=10.22.48.182; adres IP serwera Lync z rolą Mediation
transport=tcp
port=5060; Port na którym nadsłuchuje Trixbox
insecure=port,invite
type=peer
context=from-Lync

[from-VOIPProvider]
canreinvite=yes
fromuser=022123456; numer telefonu i jednocześnie nazwa konta
insecure=port,invite
qualify=no
type=peer
type=user
username=022123456; numer telefonu i jednocześnie nazwa konta
host=80.249.5.196
context=from-VOIPProvider
secret=haslo

[VOIPProvider]
disallow=all
allow=ulaw
allow=g723
allow=g726
allow=g729
allow=speex
allow=gsm
authname=022123456; numer telefonu i jednocześnie nazwa konta
secret=haslo
canreinvite=yes
dtmfmode=rfc2833
host=80.249.5.196
insecure=port,invite
nat=yes
pedantic=no
qualify=yes
type=peer
username=nazwa_konta_w_IPCALL
fromdomain=80.249.5.196
context=from-VOIPProvider

Następnie przyszła pora na konfigurację Lync Server. Dodałem Mediation pool, dodałem PSTN Gateway (czyli nasz Trixbox) w Topology Builder. Skonfigurowałem Mediation Pool do używania PSTN Gateway oraz ustawiłem porty do nasłuchiwania na połączenia SIP.

Kolejnym krokiem było stworzenie Dial Planu (w moim przypadku założyłem nowy dla Site’u). Konfiguracja Normalization Rule poniżej:

Potem przeszedłem do konfiguracji Routingu. Gdy użytkownik wybierze numer dłuższy niż 6 cyfrowy (Route: ExternalCall) połączenie ma być przekazywane do PSTN Gateway. Numery 4 cyfrowe zaczynające się od 3 (LocalRoutetoAsterisk) to numery wewnętrzne założone na Asterisku. Numery 4 cyfrowe zaczynające się od 2 to numery wewnętrzne założone na Lync’u.

W zakładce Voice Policy, w polisie Global założyłem nowy PSTN Usage, do którego dodałem założone powyżej Route. To tyle jeśli chodzi o minimalną konfigurację Lync.

Wróciłem do Asteriska. Przystąpiłem do tworzenia Dial Planu na Trixboxie w pliku /etc/asterisk/extensions_custom.conf. Składnia jest następująca:
exten = numer,priorytet,Polcenie(parametry)
Jeśli chodzi o “match’owanie” numerów to:
X – oznacza dowolną cyfrę od 0 do 9
X. – oznacza dowolny liczbę cyfr od 0 do 9
2XXX – oznacza numer 4 cyfrowy zaczynający się od 2
3XXX – oznacza numer 4 cyfrowy zaczynający się od 3
0X. – oznacza numer o dowolnej długości ale zaczynający się od zera.
Więcej informacji tutaj:
http://www.voip-info.org/wiki/view/Asterisk+config+extensions.conf

/etc/asterisk/extensions_custom.conf

[from-Lync]
exten => _X.,1,Answer
exten => _X.,2,Dial(SIP/${EXTEN}@VOIPProvider,,tr) ;@VoIPProvider oznacza jaki Trunk ma być użyty.
exten => _3XXX,1,Answer
exten => _3XXX,2,Dial(SIP/${EXTEN}@3000,,tr)

[from-VOIPProvider]
exten => _0X.,1,Set(numDialled=+48${EXTEN:1})
exten => _0X.,2,Set(__FROM_DID=${EXTEN})
exten => _0X.,3,Answer
exten => _0X.,4,Dial(SIP/${numDialled}@Connect-with-Lync,,tr)

exten => _X.,1,Set(numDialled=+48${EXTEN})
exten => _X.,2,Set(__FROM_DID=${EXTEN})
exten => _X.,3,Answer
exten => _X.,4,Dial(SIP/${numDialled}@Connect-with-Lync,,tr)

[3000]
exten => _2XXX,1,Answer
exten => _2XXX,2,Dial(SIP/${EXTEN}@Connect-with-Lync,,tr)

To tyle. Po poprawnym wykonaniu powyższych czynności można było dzwonić “na miasto” za pomocą klienta Lync, a także odbierać połączenia z miasta.

Problemy jaki miałem po drodze
1. Trixbox nie może zarejestrować się u providera.
Spowodowane było to tym, że domyślnie Trixbox używa rekordów SRV do odnalezienia serwera VoIP dostawcy, jeśli w konfiguracji Trunku jako hostname podany FQDN. Początkowo konfiguracja Trunku zawierała taki wpis: hostname=voip.ipcall.pl. W związku z tym Trixbox pytał serwer DNS o rekord SRV _sip._udp.voip.ipcall.pl, a taki rekord nie istnieje. Nie znalazłem informacji gdzie się to wyłącza (ale nie szukałem długo). Jako workaround, zamiast nazwy FQDN serwera VoIP podałem jego adres IP.

2. Można odbierać połączenia z miasta. Nie można z Lynca dzwonić do Trixboxa i na miasto. Trixbox odrzuca połączenia z Lync’a na porcie 5060 jeszcze na poziomie TCP. Na pakiet SYN odpowiada RST,ACK.
Mediation Server potrafi łączyć się z PSTN Gateway tylko za pomocą protokołu TCP. Dlatego na Trixbox w pliku /etc/asterisk/sip_general_custom.conf trzeba włączyć akceptowanie połączeń TCP: tcpenable=yes
Ja zrobiłem literówkę tcpenabled=yes i dlatego Trixbox nie akceptował połączeń TCP. Polecenie lsof -i:5060 pomogło mi to zdiagnozować. Powinno to wyglądać tak:

Lync: Importowanie topologii OCS 2007 R2 kończy się błędem: Cannot find media relay port

2011-11-08 Posted by pawp81 under Polskie blogi IT

Takim komunikatem błędu zakończyła się operacja Importowania Topologii OCS 2007 R2.:
Check for errors, warnings, and details in the log file at the following location: „C:\Users\administrator\AppData\Local\Temp\TopologyBuilder\2011_11_07_10_36_07\MergeTopologyInvoke.log”

Found the following error while Validating „C:\Users\administrator.LIVE\AppData\Local\Temp\TopologyBuilder\2010_11_25_15_36_07\MergeTopologyInput.xml”: Cannot find media relay port for „ocsedge.ad.net”. Possible reasons include: 1. Media relay has not been activated on this edge cluster. Verify that media relay has been correctly installed on computer „ocsedge.live.ie” 2. User might have misspelled the fully qualified domain name (FQDN) of the computer where media relay is installed. If you are using Windows PowerShell, check the user input file. It is defined in user input File as „InternalFqdn” = „ocsedge.ad.net” 3. User might have misspelled the fully qualified domain name (FQDN) of the computer running media relay while using Topology Builder. Verify that the user has provided the correct FQDN.

System.Management.Automation.CmdletInvocationException: There were errors while creating and validating a topology. —> System.Exception: There were errors while creating and validating a topology. at System.Management.Automation.MshCommandRuntime.ThrowTerminatingError(ErrorRecord errorRecord) — End of inner exception stack trace — at System.Management.Automation.Internal.PipelineProcessor.SynchronousExecuteEnumerate(Object input, Hashtable errorResults, Boolean enumerate) at System.Management.Automation.Runspaces.LocalPipeline.InvokeHelper() at System.Management.Automation.Runspaces.LocalPipeline.InvokeThreadProc()

Failed

Finished

Przyczyną powyższego problemu był błąd przy połączeniu z interfejsem wewnętrznym A/V Authentication and OCS Edge Serverze. Okazało się że na tym interfejscie jest przypisany oddzielny certyfikat o Subjecie: avinternal.ad.net. Subject ten certyfikatu nie zgadzał się z nazwą FQDN wewnętrznego interfejsu OCS Edge Servera. Po zmianie certyfikatu na certyfikat zawierający Subject: ocsedge.ad.net importowanie topologii zakończyło się powodzeniem.

Lync: Ogłaszanie nieprzypisanych numerów

2011-11-06 Posted by pawp81 under Polskie blogi IT

Announcement Service to usługa Lync Server 2010 wchodząca w skład Enterprise Voice, a konkretnie usługi Response Group. AS uruchamiana jest gdy użytkownik wybierze poprawny, ale nieprzypisany do nikogo numer telefonu. Usługa może odegrać przypisany do niej dźwiek (zapisany w formacie .wav lub .wma) lub przeczytać zapisany tekst (w tym po polsku), a potem przekierować użytkownika na wybrany adres SIP.
Aby włączyć Annoucement Service dla Unassigned Numbers trzeba:
1) Zaimportować plik wav do ApplicationServer (jeśli wybieramy wariant z odegraniem dźwięku czy muzyczki)
2) Stworzyć Announcement
3) Stworzyć regułę nieprzypisanych numerów (Unassigned Numbers), w której określimy przedział numerów, dla których będzie obowiązywała.

Kroki 1 i 2 można wykonać tylko z Lync Management Shell. Krok 3 można wykonać zarówno w PowerShellu jak i Lync Control Panel. Ja opiszę wszystkie czynności wykonać w Lync Management Shell.

1) Importujemy plik .wav
Import-CSAnnouncementFile ApplicationServer:NazwaPoolLync -filename AnnouncementServiceSound.wav -content (get-content „c:\temp\RINGBACK_with_Pause.wav” -encoding byte -readcount 0)
Plik zostanie umieszczony w: C:\NazwaShareUżywanegoprzezLynca\2-ApplicationServer-1\AppServerFiles\Rgs\AS

2) Tworzymy Announcement
New-CsAnnouncement -name „Wrong_Number” -AudioFilePrompt AnnouncementServiceSound.wav
Parameter -AudioFilePrompt określa nam nazwę pliku który zaimportowaliśmy, a nie pełną ścieżkę do niego.

3) Tworzymy regułę
New-CsUnassignedNumber -Identity Wrong_Number -NumberRangeStart PoczątkowyNumer -NumberRangeEnd KońcowyNumer -AnnouncementService ApplicationServer:NazwaPoolLync -AnnouncementName „Wrong_Number”
Przedział numerów może zawierać również przypisane numery bo reguła dla nich nie zadziała.

Archiwa
  • Maj 2012 (68)
  • Kwiecień 2012 (159)
  • Marzec 2012 (196)
  • Luty 2012 (153)
  • Styczeń 2012 (128)
  • Grudzień 2011 (101)
  • Listopad 2011 (80)
  • Październik 2011 (94)
  • Wrzesień 2011 (49)
  • Sierpień 2011 (30)
  • Lipiec 2011 (21)
  • Czerwiec 2011 (14)
  • Maj 2011 (21)
  • Kwiecień 2011 (32)
  • Marzec 2011 (14)
  • Luty 2011 (13)
  • Styczeń 2011 (29)
  • Grudzień 2010 (11)
  • Listopad 2010 (22)
  • Październik 2010 (19)
  • Wrzesień 2010 (19)
  • Sierpień 2010 (15)
  • Lipiec 2010 (9)
  • Czerwiec 2010 (5)
  • Maj 2010 (5)
  • Kwiecień 2010 (13)
  • Marzec 2010 (13)
  • Luty 2010 (20)
  • Styczeń 2010 (13)
  • Grudzień 2009 (16)
  • Listopad 2009 (19)
  • Październik 2009 (30)
  • Wrzesień 2009 (14)
  • Sierpień 2009 (11)
  • Lipiec 2009 (25)
  • Czerwiec 2009 (2)
  • Maj 2009 (12)
  • Kwiecień 2009 (9)
  • Marzec 2009 (5)
  • Luty 2009 (5)
  • Styczeń 2009 (6)
  • Grudzień 2008 (6)
  • Listopad 2008 (4)
  • Październik 2008 (6)
  • Wrzesień 2008 (3)
  • Kwiecień 2008 (1)
  • Grudzień 2007 (1)
Kategorie
2003 2010 access Access 2003 Access 2010 Aktualności Bez kategorii BI CTP exchange online Exchange Server Exchange Server 2010 featured funkcje Grzegorz Tworek How To Hyper-V 3 Hyper-V Server 8 interoperacyjność IT Pro blogerzy Jak to zrobić Komputery i Internet Microsoft Outlook najlepsze praktyki Narzędzia open source Oprogramowanie PLSSUG Polskie blogi IT Porady PowerPivot Relacje Reporting Services SharePoint Foundation 2010 SharePoint Server 2010 Skrypty System Center 2012 Techniczne Tips and tricks video Virtual Machine Manager wersje beta WGUiSW Windows 8 Beta Windows 8 Customer Preview
Tagi
.net Active Directory Artykuły Blog blogosfera Cloud Computers and Internet CRM 2011 Excel Exchange Exchange 2010 Hyper-V Inne IT konferencja Konferencje Linux Lync Microsoft Microsoft Dynamics CRM News office 365 Ogólne PowerShell Private Cloud programowanie Publikacje Security SharePoint Społeczności IT SQL SQL Server SQL Server 2012 System Center Uncategorized Windows Windows 7 Windows 8 Windows Phone 7 Windows Server Windows Server 8 Windows Server 2008 Wirtualizacja Wydarzenia [EN]
Autorzy
Kamil Skalski, Konrad Sagala, Szymon Bochniak, Tadeusz , Tomasz Filipowicz, RSS , Łukasz Kałużny, kgorczewski , Łukasz , Wojciech Gardziński, Paweł Goleń, Dariusz Porowski, Piotrek Gardy, koprowskit , nExoR , Joanna Subik, Mateusz Świetlicki, Marcin , piotrpawlik , TechNet Polska, gsgalezowski , T4ngram , Metorio , Maciek Blog, Bloggers Underground, blog Michała Cywińskiego..., Me & Technology – Paula’s Security Blog, swilczew , pawp81 , programistaaccess , Bartek Bielawski, soisk , Zygmunt B., MS Dynamics Blog, Jarek Szybiński, rtynski , Filip , Świat Office, voytas , jaroslawsokolnicki , rem8 , Łukasz Matuszewski, Seb , kaarol , Peter , Kamil Karczmarczyk, Dariusz Brejnak, JeZZoo , bns , Pawel Potasinski, Kuba Skałbania, t.onyszko , robertmandziarz , Krzysiek , MKr , szulcu , Robert Stuczynski - Noise, kicekpicek , Dobert , Łukasz Zięba, drixter , Maciej Krasuski, Tomasz_Sochacki , Przemek Kuczyński, losiak , paramo , OSKAr , SzymonN , Marcin Milewski, marcinbojko , l10n , Łukasz Z., Grzesiek Bartosik, jnx
Polskie blogi specjalistów IT / Microsoft powered by WordPress and The Clear Line Theme