vrijdag 7 november 2014

Apple iOS 8.x en issues met vergaderverzoeken

Het was een tijdje rustig op dit front maar in de nieuwste versie van de software voor Apple's iPhone en iPad zit een bug die vergaderverzoeken verminkt. Dit gebeurt wanneer de gebruiker eerst eigenschappen aanpast, zoals het veranderen van de Show As status, aanpassen van de Alert value of het toevoegen van een commentaar voor de organisator, en het verzoek pas daarna accepteert.

In deze gevallen kapt iOS de body van het bericht af na 500 karakters. Zo kan het gebeuren dat HTML of RTF berichten opeens als plain-text weer worden gegeven of dat de url in een invite voor een Lync meeting halverwege afgekapt wordt.

Workarounds:

  • Accepteer het verzoek eerst, pas dan pas de eigenschappen aan
  • Zet het syncen van de agenda uit
  • Stap over op de OWA app voor iPhone/iPad

Meer informatie in het volgende KB-artikel: Known calendaring issues with iOS 8.x devices

Belangrijke security-update voor Exchange

Op 11 november brengt Microsoft een aantal Security Bulletins uit, dit keer gaat het om 16 gemiddelde tot ernstige beveiligingsproblemen waarvoor een fix gemaakt is. Ditmaal zit er ook een security update bij voor alle recente en ondersteunde versies van Exchange: 2007 SP3, 2010 SP3, 2013 SP1 en CU6.

Het issue is geclassificeerd als Important en lost een probleem op waarbij een aanvaller zich rechten zou kunnen verschaffen op een server. Het advies is om Important updates bij de eerstvolgende gelegenheid te installeren. Dan weet je het alvast...

Meer informatie hier: Microsoft Security Bulletin Advance Notification for November 2014

vrijdag 3 oktober 2014

Het Startmenu vervangen door Startscherm in Windows Server Technical Preview

Windows 10 is leuk, maar wij zijn natuurlijk veel meer geïnteresseerd in wat er op servergebied komen gaat. Eén van de dingen die als eerste opvalt is dat het startscherm vervangen is door een startmenu.

image

Gelukkig kun je dat eenvoudig herstellen. Klik met de rechtermuisknop de de taakbalk en kies Properties. Kies voor het tabblad Start Menu en haal het vinkje weg voor de optie Use the Start menu instead of the Start screen:

image

Om deze aanpassing door te voeren moet je uit- en weer inloggen.

donderdag 25 september 2014

Spamhaus RBL werkt niet met Google DNS

In mijn Exchange 2013 lab heb ik een Edge Transport server geconfigureerd om de Spamhaus Real-time Block List te gebruiken. Door een IP Block List Provider toe te voegen en de Connection Filtering agent in te schakelen test Exchange of de mailserver die een bericht wil afleveren niet op een RBL staat.

Helaas bleek dat bij mij niet te werken, dit werd bevestigd door een test met behulp van de Crynwr Spamhaus test. Raar, want het is een eenvoudige configuratie:

Add-IPBlockListProvider -Name Spamhaus -LookupDomain zen.spamhaus.org

De Connection Filtering transport agent staat standaard ingeschakeld, dat was het probleem dus ook niet. De volgende stap is het handmatig controleren of je een DNS query naar de servers van Spamhaus kunt doen. Dit kun je doen door een IP-adres te kiezen, bijvoorbeeld 127.0.0.2, en hiermee een query te construeren. Zet het IP-adres in omgekeerde volgorde en laat deze eindigen op .zen.spamhaus.org. In dit geval moeten we dus een DNS query doen voor 2.0.0.127.zen.spamhaus.org, het antwoord bevat een code die aangeeft of het IP wel of niet op de blocklist staat. En in dit geval zijn we niet geïnteresseerd in het antwoord maar willen we in eerste instantie controleren of de query überhaupt mogelijk is.

nslookup 2.0.0.127.zen.spamhaus.org

image

In dit voorbeeld gebruik ik een interne DNS-server waarvan ik de naam verborgen heb, maar in mijn lab mislukte deze test. De oorzaak bleek te liggen in de publieke Google DNS servers die ik als forwarder had geconfigureerd, dit zijn de populaire 8.8.8.8 en 8.8.4.4 adressen. Wanneer we dezelfde query uitvoeren tegen één van deze DNS-servers dan mislukt deze:

nslookup 2.0.0.127.zen.spamhaus.org 8.8.8.8

image

Bij nader onderzoek blijkt dat Spamhaus dit ook vermeldt in hun FAQ:

Check what DNS resolvers you are using: If you are using a free "open DNS resolver" service such as the Google Public DNS or large cloud/outsourced public DNS servers, such as Level3's or Verizon's, to resolve your DNSBL requests, in most cases you will receive a "not listed" (NXDOMAIN) reply from Spamhaus' public DNSBL servers. We recommend using your own DNS servers when doing DNSBL queries to Spamhaus.

In andere gevallen kan er natuurlijk een andere oorzaak zijn, maar deze troubelshooting methode kan een eerste stap zijn om te controleren of je de servers van Spamhaus kunt raadplegen.

Bron

dinsdag 16 september 2014

Exchange 2013 en meerdere OWA/ECP virtual directories

Soms kunnen er redenen zijn om op één Exchange 2013 CAS server meerdere /owa (en bijbehorende /ecp) virtual directories te hebben. Bijvoorbeeld voor één van de volgende scenario's.

Afwijkende authenticatie-instellingen

Interne gebruikers landen voor OWA op de /owa virtual directory op de CAS server. Forms-based Authentication (FBA) is geconfigureerd gebruiksvriendelijk in te kunnen loggen op de webpagina.
Externe gebruikers benaderen OWA via een reverse proxy, bijvoorbeeld een KEMP LoadMaster, Forefront TMG of UAG server.

Gebruikers authenticeren tegen de reverse proxy met een webpagina, de reverse proxy gebruikt deze credentials vervolgens om tegen Exchange te authenticeren. De reverse proxy vereist dat Basic authentication ingeschakeld is op de /owa en /ecp virtual directory.
image

Beheerinterface

Een organisatie vereist dat beheerinterfaces niet vanaf het internet beschikbaar is, intern moeten alle mogelijkheden wel volledig benut worden. Het op de reverse proxy blokkeren van /ecp is geen optie omdat normale gebruikers die virtual directory ook benaderen om hun eigen persoonlijke instellingen te configureren.

Het is mogelijk om toegang tot het beheerdeel, het Exchange Admin Center, uit te schakelen op virtual directory niveau:

Set-ECPVirtualDirectory -Identity "InternalCAS\ecp (default web site)" -AdminEnabled $false

Verkeer vanaf internet zou dus op een /ecp virtual directory moeten landen waarbij het EAC uitgeschakeld is, voor intern verkeer zou deze functionaliteit wel beschikbaar moeten zijn.

Segmentatie

Een derde voorbeeld is de noodzaak voor segmentatie, dat is het in- of uitschakelen van bepaalde functionaliteit. Net als bij de voorgaande twee scenario's is dit iets wat je per virtual directory instelt. Bijvoorbeeld om toegang tot functionaliteit voor een bepaalde groep gebruikers uit te schakelen:

Set-OwaVirtualDirectory -Identity "Contoso\owa (default Web site)" -InstantMessagingEnabled $false -PublicFoldersEnabled $false -ActiveSyncIntegrationEnabled $false

Meerdere sites of meerdere servers?

Een manier om aan bovenstaande eisen te voldoen is een CAS server uit te rollen voor elk scenario. Omwille van redundantie worden dat uiteraard twee CAS servers, dus om zowel OWA met als zonder IM client aan te kunnen bieden hebben we vier CAS servers nodig:


image


Op Exchange 2007 en 2010 was een alternatief, namelijk het aanmaken van één of meerdere extra /owa virtual directories. Zie bijvoorbeeld de volgende artikelen:

Supportability for multiple OWA/ Exchange Web Sites on Client Access Servers in Exchange Server 2007 and Exchange Server 2007 Service Pack 1
Configuring Multiple OWA/ECP Virtual Directories on Exchange 2010 Client Access Server

Exchange 2013

Vreemd genoeg is het plaatsen van dedicated CAS servers momenteel de enige door Microsoft ondersteunde manier om dit te doen met Exchange 2013. En dat is raar, want de methode voor Exchange 2010 werkt ook in Exchange 2013. En de noodzaak voor een dergelijke opstelling is er nog onverminderd, zie ook diverse discussies over dit onderwerp in de communities:

Multiple owa sites on a single server 2012 with exchange 2013 (mailbox, cas)
Exchange 2013, multiple IIS OWA sites with different authentication
Enable second OWA site with form based authentication

Maar wacht even, zei ik dat het werkte? Bij een klant van mij die ik overgenomen hebt draait een dergelijke opstelling al om zowel Basic als FBA aan te kunnen bieden. Dit werkte goed totdat CU5 werd geïnstalleerd, nu wil de tweede /owa geen Basic authentication meer aanbieden maar alleen FBA. En dan zit je dus "mooi" in een niet-ondersteunde situatie, heel vervelend.

Inmiddels heb ik wat lijntjes uitgegooid om een formele uitspraak van Microsoft te krijgen. Wetende dat mijn klant niet de enige is die dit scenario ingericht heeft en de noodzaak er overduidelijk is lijkt het mij goed dat er snel een duidelijke uitspraak komt. Ofwel dat dit ondersteund is, ofwel een bevestiging dat dit niet zo is alhoewel het ontbreken van het eerste ook al zodanig geïnterpreteerd kan worden.

Tot die tijd raad ik aan om dit scenario niet te implementeren tenzij je gedekt bent door Premier Support of anderszins weet dat je ondersteund bent. Zodra ik meer weet laat ik dit zeker horen.

vrijdag 12 september 2014

Google Chrome 37 en Exchange: 9 vragen en antwoorden

Gisteren schreef ik over een paar features in Exchange 2013 EAC die niet meer werken in Chrome 37. Inmiddels zie ik ook berichten van mensen waarbij bepaalde knoppen in Exchange 2010 OWA niet meer werken, dit blijkt te herleiden naar dezelfde oorzaak. In dit artikel leg ik uit wat het probleem is, schets de context en leg uit of we hier wat aan kunnen doen.

Wat is het issue dan?

Microsoft maakt in OWA en ECP/EAC gebruik van de showModalDialog method, deze methode wordt gebruikt om een dialog box te openen met daarin een specifieke HTML-pagina. Voorbeelden van plaatsen waar deze methode gebruikt wordt zijn de From: en To: buttons in OWA 2010 en het + en potlood icoon in Exchange 2013 EAC. Het volgende scherm is een voorbeeld van een dialog box die op deze manier wordt aangeroepen:

image

In Chrome 37 werkt de showModalDialog method niet meer en verschijnen deze dialog boxes dus niet. Overigens raakt dit niet alleen Microsoft applicaties zoals Exchange, SharePoint en Dynamics maar ook verschillende producten van andere leveranciers en een grote hoeveelheid (interne) websites die van deze methode gebruik maken.

Waarom werkt dit niet?

De ontwikkelaars van Google Chrome hebben er voor gekozen om showModalDialog standaard uit te schakelen in Chrome 37. In een volgende release zal showModalDialog compleet verwijderd worden.

Zou het moeten werken?

Als je het aan de ontwikkelaars van Chrome vraagt dan wordt uitgelegd dat deze feature ooit in IE4 zat en sindsdien is bijgehouden in andere browsers maar eigenlijk nooit had mogen bestaan. Als je het aan Microsoft vraagt dan zullen die antwoorden dat ze Chrome 37 ondersteunen als client voor OWA in de premium versie:

image

Waarom is deze keuze gemaakt?

Volgens de ontwikkelaars van Blink, de rendering engine van Chromium waar ook Chrome op gebaseerd is, kost het bijhouden van deze methode erg veel moeite, de code is erg complex geworden en er zijn afhankelijkheden van andere twijfelachtige code. Verder is een kenmerk van deze methode dat hij a) een pop-up geeft, wat niet goed werkt op mobiele platformen en b) de rest van de browser bevriest zolang de pop-up actief is. Dit heeft zelfs al tot een aantal security vulnerabilities geleid.

Als deze methode maar weinig gebruikt wordt en uiteindelijk geheel uit de code verwijderd kan worden dan zou dat veel voordeel brengen voor de programmeurs.

Sinds wanneer?

Aangezien het lijkt dat de hele wereld, inclusief Microsoft, verrast is door deze aanpassing is het goed om eens naar de tijdlijn te kijken. In oktober 2013 is onder Chromium ontwikkelaars voorgesteld om een teller toe te voegen om het gebruik van showModalDialog te meten en een waarschuwing te geven aan website-ontwikkelaars. Hiermee wordt showModalDialog 'deprecated' verklaard, ofwel een feature die uitgefaseerd gaat worden. Op 1 oktober 2013 is dit voorstel verwerkt in de code en op 10 april 2010 beland in de Chrome 35 Beta. Op hetzelfde moment is aangekondigd om showModalDialog in Chrome 36 geheel te verwijderen.

Door het toevoegen van de teller werd vastgesteld dat slechts 0,006% van de pageviews deze methode gebruikt:

image

Voor de ontwikkelaars werd dit gezien als bevestiging dat bijna niemand dit gebruikt. In de hierop volgende discussie kwam er wel wat tegengas maar werd er vooral met het voorstel ingestemd. Ik betwijfel of iemand zich realiseert hoe groot de impact is om de functionaliteit van 0,006% van de pageviews stuk te maken, heeft iemand dat percentage omgerekend naar absoute aantallen? Is er een inventarisatie gemaakt van bekende applicaties die in deze categorie vallen om de impact beter te kunnen begrijpen?

De definitieve versie van Chrome 35 verscheen op 20 mei van dit jaar, Chrome 36 volgde al op 16 juli en Chrome 37 een maand later, op 26 augustus. In tegenstelling tot wat eerder aangekondigd was is showModalDialog in Chrome 36 nog steeds aanwezig maar in 37 is deze uitgeschakeld. In verschillende blogposts is de keuze om showModalDialog te verwijderen verder toegelicht en beargumenteerd.

Uitgeschakeld of verwijderd?

In Chrome 37 is de feature uitgeschakeld maar weer in te schakelen tot 15 mei 2015, daarna wordt de feature echt verwijderd. En hier wordt het interessant. Chrome kent een policymodel waarmee bepaalde features geconfigureerd kunnen worden, bedoeld om Chrome geschikt te maken voor de zakelijke markt. We kunnen de policy EnableDeprecatedWebPlatformFeatures gebruiken om een uitgefaseerde maar nog niet verwijderde features weer aan te zetten.

Hoe zet ik het weer aan?

Met (een elevated instance van) PowerShell zouden we dit als volgt doen:

New-Item HKLM:\SOFTWARE\Policies\Google\Chrome\EnableDeprecatedWebPlatformFeatures
Set-ItemProperty HKLM:\SOFTWARE\Policies\Google\Chrome\EnableDeprecatedWebPlatformFeatures 1 ShowModalDialog_EffectiveUntil20150430 -type string

image

Bij het testen van deze code bleek HKLM:\SOFTWARE\Policies\Google\Chrome op mijn computer niet te bestaan:

image

En ook na het handmatig toevoegen van de hyve bleek de instelling niet doorgevoerd te worden in Chrome, zo bevestigd een bezoek aan chrome://policy/.

Om te begrijpen waarom moeten we weer even terug naar het ontwikkelproces van Chrome. De policies konden nu geconfigureerd worden door middel van registry keys of een GPO policy template. Nadat Chrome registry keys ging gebruiken om de configuratie te managen bleek al snel dat deze registry settings ook aangepast konden worden door andere programma's, denk bijvoorbeeld aan malware. Als reactie ging Chrome 28 de registry keys negeren en kon alleen nog het GPO template gebruikt worden om Chrome te configureren. Wat uiteraard tot veel klachten leidde van beheerders die geen AD gebruiken, geen GPO's of beheer standaard op basis van registry keys uitvoeren.

De verandering in Chrome 28 werden nu deels teruggedraaid en vanaf Chrome 35 worden de registry keys ook weer gebruikt, alleen als de computer lid is van een Active Directory domein.

Wat nu dan?

Beheerders van werkplekken in een AD domein kunnen de registry key of het GPO template gebruiken. Voor losstaande werkplekken kan de GPO template ook in de Loacal Group Policy (gpedit.msc) gelezen worden:

  1. Download de policy templates hier.
  2. Open gpedit.msc en ga naar "Computer Configuration" -> rechtsklik "Administrative Templates" -> "Add/Remove templates" -> klik "Add..." -> selecteer "windows/adm/en-US/chrome.adm" uit de policy_templates.zip download
  3. In "Computer Configuration" -> "Administrative Templates" -> "Classic Administrative Templates" -> "Google" -> "Google Chrome" configureer je nu de policy settings.
  4. Open nu Chrome en ga naar chrome://policy/, hier moet de aangepaste policy nu zichtbaar zijn.

Ontwikkelaars van website zullen alle instances van showModalDialog moeten vervangen door een alternatief.

Wat vinden we hier van?

Het hele verhaal roept de vraag op in hoeverre Chrome klaar is voor de zakelijke markt. De razendsnelle ontwikkelingscyclus van dit open-source project verrast beheerders en ontwikkelaars van websites door features uit te schakelen. Hetzelfde geldt voor het uitschakelen van het beheer door middel van registry keys, zoiets kun je niet doen zonder de zakelijke markt zorgvuldig te informeren en een alternatief te bieden.

Maar ook de afwezigheid van Microsoft in deze discussie valt op. Bij mijn onderzoek viel me op dat er uitgebreide discussies plaatsvinden en hebben gevonden binnen de Chromium, Chrome en Opera communities maar ook bij Mozilla Firefox waar de zelfde discussie speelt. Is er dan geen enkele developer bij Microsoft geweest die zich realiseerde dat zijn applicatie volop gebruik maakt van deze feature? En dat juist nu Microsoft OWA duidelijk positioneert als de primaire client om te werken met e-mail.

Zakelijke klanten zullen zich afhankelijk van hun contract tot Premier Support richten of een case openen via de reguliere supportkanalen. Gebruiker van Office 365, ofwel hun beheerders, kunnen een support request openen In het Office 365 admin center. Ik verwacht een bericht op het Exchange Team Blog één dezer dagen en volg de discussies in de communities met veel interesse.

Geen updates kunnen selecteren in Server 2012 R2

Op een aantal Server 2012 R2 servers valt mij het volgende issue op. In het Windows Update scherm klik op je op het aantal important of optional updates, normaal gesproken verschijnt nu de lijst met updtaes die je kunt selecteren, de-selecteren, verbergen of links voor meer informatie aanklikken. In dit geval gebeurt er niets.

image

Een work-around is om in het linker deel op Change settings te klikken en vervolgens op Cancel. Dan eindig je uiteindelijk hier, het scherm waarin we updates kunnen selecteren:

image

Een irritant probleempje met gelukkig een eenvoudige work-around.

donderdag 11 september 2014

LoadMaster VLM-10G het nieuwe vlaggenschip van KEMP

Nog niet zo heel lang geleden had KEMP Technologies de LoadMaster VLM-100 en VLM-1000 in het portfolio. De bekende LoadMaster software die nu op virtuele hardware kon draaien. Inmiddels bestaan de virtuele load balancers voor onder andere Hyper-V, VMware, KVM, Xen, Oracle VirtualBox en cloudplatformen als Microsoft Azure, VMware vCloud Air en Amazon Web Services.

Enige tijd geleden zijn deze oudgedienden vervangen door de (nu 64-bits) VLM-200 en VLM-2000 en is de VLM-5000 toegevoegd voor nog zwaardere omgevingen. Alle edities beschikken over dezelfde software als de fysieke uitvoeringen en updates zijn beschikbaar voor alle klanten met een geldig supportcontract, nieuwe features zijn er dus voor organisaties die net een nieuwe load balancer aangeschaft hebben maar ook voor een oudere VLM-1000.

Om ook een antwoord te hebben voor de meest veeleisende toepassingen is daar nu de VLM-10G aan toegevoegd waarbij 10G voor een maximale doorvoer van 10.000 Mbps staat. De VLM-10G ondersteunt tot 12.000 SSL TPS. Met de komst van dit nieuwe vlaggenschip is de prijs van de VLM-5000 verlaagd, goed nieuws voor klanten die de ruwe power van de VLM-10G niet nodig hebben maar net wat meer verlangen dan de VLM-2000.

Hiermee bestaat het aanbod aan virtuele load balancers nu uit de volgende uitvoeringen:

Model

VLM-200

VLM-2000

VLM-5000

VLM-10G

 
Doorvoer (licentie)

200 Mbps

2 Gbps

5 Gbps

10 Gbps

SSL TPS (licentie)

200

1.000

10.000

12.000

Voor allemaal geldt dat ze over het Edge Security Pack beschikken, de reverse proxy functionaliteit die bedoeld is om Forefront TMG te kunnen vervangen, en de Geo Load Balancing add-on ondersteunen. Interessante ontwikkelingen!

clip_image001

KEMP technologies levert sinds 2000 betaalbare load balancers met enterprise features. Imara ICT is KEMP Authorized Partner en heeft ruime ervaring met de levering en implementatie van KEMP LoadMaster producten. Neem contact op voor meer informatie of een vrijblijvende aanbieding.

Werken met (legacy) Public Folders

Op dit moment heb ik het genoegen om te mogen werken met een grote hoeveelheid Public Folder data. Het doel is om deze te repliceren naar nieuwe databases. Hierbij gebruik ik een aantal scripts en tools die misschien handig zijn om te delen.

Overzicht

Als eerste heb ik een Excel-file gemaakt met een overzicht van alle folders, het aantal items hierin en de grootte in MB. Dit is weliswaar een momentopname maar het geeft je een goed beeld van de structuur en de grootste folders.

Get-PublicFolder -Recurse -ResultSize Unlimited | Get-PublicFolderStatistics | Select-Object Name,FolderPath,CreationTime,LastAccessTime,LastModificationTime,LastUserModificationTime,LastUserAccessTime,@{expression={$_.totalitemsize.value.ToMB()};label=”Size(MB)”},ItemCount | Export-CSV "C:\data\pfstats.csv"

Denk aan de -ResultSize parameter, anders krijg je met Get-PublicFolder alleen de eerste 10.000 resultaten. Dit bestand heb ik in Excel geopend, conditional formatting gebruikt om folders met veel items of data snel te kunnen herkennen en uiteraard opgeslagen als xlsx-bestand.

Aan de hand van dit bestand heb ik de top-level folder kunnen kiezen waarmee ik de replicatie wil starten. Ook heb ik kolommen toegevoegd voor de nieuwe databases zodat ik een check kan zetten als ik deze als replica toegevoegd heb. Dit helpt mij om overzicht te houden gedurende het proces.

Replica's toevoegen of verwijderen

Op de locatie waar Exchange geïnstalleerd is staat een \scripts directory. Omdat het installatiepad per server verschilt is er de $exscripts een variabele die we in Exchange Management Shell kunnen gebruiken om de scripts te lokaliseren.

image

In dit geval gebruik ik het AddReplicaToPFRecursive.ps1 script om de nieuwe database als replica toe te voegen op een toplevel folder en alle onderliggende folders:

cd $exscripts
./AddReplicaToPFRecursive.ps1 -TopPublicFolder "\MyFolder" -ServerToAdd NewServer1

Op een later moment gebruik ik het RemoveReplicaFromPFRecursive.ps1 om de oude replica te verwijderen. Een alternatief zou het gebruik van het MoveAllReplicas.ps1 script die beide stappen in één keer doet. Meer informatie over deze scripts vind je hier: Scripts for Managing Public Folders in the Exchange Management Shell

Rapportage en monitoring

Om op hoofdlijnen te zien op de replicatie plaats vindt, gebruik ik het volgende commando die de grootte van het .edb-bestand geeft:

Get-PublicFolderDatabase | Select Server, Name, @{Name="Size (GB)";Expression={$objitem = (Get-PublicFolderDatabase $_.Identity); $path = "`\`\" + $objitem.server + "`\" + $objItem.EdbFilePath.DriveName.Remove(1).ToString() + "$"+ $objItem.EdbFilePath.PathName.Remove(0,2); $size = ((Get-ChildItem $path).length)/1048576KB; [math]::round($size, 2)}}, @{Name="Size (MB)";Expression={$objitem = (Get-PublicFolderDatabase $_.Identity); $path = "`\`\" + $objitem.server + "`\" + $objItem.EdbFilePath.DriveName.Remove(1).ToString() + "$"+ $objItem.EdbFilePath.PathName.Remove(0,2); $size = ((Get-ChildItem $path).length)/1024KB; [math]::round($size, 2)}}

Deze one-liner ziet er misschien complexer uit dan hij is, dat komt omdat we het UNC pad moeten samenstellen om de grootte van het bestand te kunnen meten. Een andere stukje code is om de grootte om te rekenen naar GB en MB.

Door dit commando af en toe te herhalen zie je al snel dat het aantal GB's van de nieuwe databases toeneemt. Dit is natuurlijk niet voldoende om een goed beeld van de status te krijgen. Dus na enige tijd heb ik het Exchange 2010 Public Folder Replication Report van Mike Walker gebruikt.

Dit script gebruikt Get-PublicFolder en Get-PublicFolderSatistics om informatie over de public folders te vergaren. Omdat dit zeer lang kan duren, al snel enkele uren bij een paar duizend folders, beperkt ik het rapport tot een specifieke top-level folder:

.\Get-PublicFolderReplicationReport.ps1 -FolderPath "\MyFolder" -Recurse -ComputerName @("OldServer1", "OldServer2", "NewServer1", "NewServer2") -AsHTML -Filename report.html

Het resultaat is een zeer bruikbaar rapport in HTML-vorm.

Troubleshooting

Op basis van de bestandsgrootte was al duidelijk dat één van de nieuwe databases niet volledig gevuld werd en het HTML-rapport bevestigt dat. Om uit te vinden of er een probleem is heb ik het logging level voor een aantal relevante bronnen op de bron- en doelserver aangepast van Lowest naar High:

Set-eventloglevel -Identity "OldServer1\MSExchangeIS\9001 Public\Replication Incoming Messages" -level high
Set-eventloglevel -Identity "OldServer1\MSExchangeIS\9001 Public\Replication Outgoing Messages" -level high
Set-eventloglevel -Identity "OldServer1\MSExchangeIS\9001 Public\Replication NDRs" -level high
Set-eventloglevel -Identity "OldServer1\MSExchangeIS\9001 Public\Replication Backfill" -level high
Set-eventloglevel -Identity "OldServer1\MSExchangeIS\9001 Public\Replication Errors" -level high
Set-eventloglevel -Identity "OldServer1\MSExchangeIS\9001 Public\Replication General" -level high
Set-eventloglevel -Identity "NewServer1\MSExchangeIS\9001 Public\Replication Incoming Messages" -level high
Set-eventloglevel -Identity "NewServer1\MSExchangeIS\9001 Public\Replication Outgoing Messages" -level high
Set-eventloglevel -Identity "NewServer1\MSExchangeIS\9001 Public\Replication NDRs" -level high
Set-eventloglevel -Identity "NewServer1\MSExchangeIS\9001 Public\Replication Backfill" -level high
Set-eventloglevel -Identity "NewServer1\MSExchangeIS\9001 Public\Replication Errors" -level high
Set-eventloglevel -Identity "NewServer1\MSExchangeIS\9001 Public\Replication General" -level high

Na enige tijd verschijnen er in het Application eventlog allerlei meldingen van source MSExchangeIS Public Store. Op zich zou ik die met PowerShell kunnen analyseren (Get-EventLog) maar voor een snel overzicht heb ik de Event Viewer gemaakt en een filter op source MSExchangeIS Public Store gezet.

image

De grote hoeveelheid errors bleken vals alarm te zijn, deze waren onschuldig en geen indicatie voor een daadwerkelijk probleem.

Om eventuele fouten te repliceren heb ik de replicatie voor een (op de nieuwe server niet gevulde) folder handmatig gestart:

Update-PublicFolder "MyFolder\SubFolder" -Server OldServer1

Op dit moment zie je direct de bijbehorende replicatie-events verschijnen op de bron- en doelserver. Vervolgende de statistieken voor deze folder opgevraagd op de oude en nieuwe server:

Get-PublicFolderStatistics "MyFolder\SubFolder" -Server OldServer1
Get-PublicFolderStatistics "MyFolder\SubFolder" -Server NewServer1

Na een paar minuten gaf de folder op de nieuwe server het zelfde aantal items als de oude. Daarom ook de rest van de folders nogmaals laten updaten:

Get-PublicFolder "MyFolder\SubFolder" -Recurse -ResultSize Unlimited | Update-PublicFolder -Server OldServer1

Daarna het Public Folder Replication Report nogmaals uitgevoerd en uitsluitend groene vlakjes gezien.

Tips

Met name bij het werken met grote hoeveelheden folders duren eenvoudige taken als het opvragen van folders of statistieken zeer lang. Plan dus vooruit en voorkom dat je langlopende taken opnieuw moet uitvoeren. Sla het resultaat van een query op in een CSV-bestand of variabele.

Deel de hoeveelheid data op in behapbare blokken, bijvoorbeeld een toplevelfolder met onderliggende mappen die voldoende items bevatten maar pakweg een paar GB groot zijn. Selecteer hiervoor desnoods een dieper gelegen folderstructuur. Besteed aandacht aan het verloop en zorg dat je goed inzicht hebt in het verloop of eventuele problemen. Los die eerst op en ga dan verder met de rest van de data.

Dit artikel heeft betrekking op Exchange 2010 maar is ook bruikbaar voor Exchange 2007. Om Public Folder replicatie goed te begrijpen moeten we terugvallen op documentatie voor Exchange 2003, afgezien van de gebruikte tools is er in Exchange 2007 en 2010 namelijk weinig veranderd. Een goed stuk documentatie is: Controlling Exchange Server 2003 Public Folder Replication