Posts tagged Exchange

Active Sync Proxy bzw. Filter

Ich habe gerade eine Herausforderung: Ich möchte (möglichst in Ruby) gewisse Mails die per Active Sync verteilt werden filtern bzw. austauschen!

Hintergrund: Ich habe einen kleinen Ruby basierenden Proxy Server der den kompletten Exchange Active Sync (EAS) Traffic filtert und weiterleitet (Also als echter Proxy Server zwischen dem Exchange Server und den Devices hängt). Auf diesem Proxy werden auch gewisse Filter eingesetzt und der Sync wird ggf. unterbrochen.
Das funktioniert soweit auch sehr gut und zuverlässig!

Was ich jetzt aber gerne machen würde:
Alle Mails die einen gewissen Flag haben (Beispielsweise Privat/Confidential oder Company Confidential) möchte ich durch ein Template ersetzten. Dieses Template soll den Benutzer den Hinweis geben, dass diese Mail nur an einem Desktop angesehen werden kann.
Eine ähnliche Funktion hat ja auch der Lotus Traveler. Gewisse Mail kann man dort ja nur im Compagnien bzw. dem Desktop ansehen.

Somit die Frage in die Runde: Hat das schon mal einer gemacht? Oder kann mir einer den passenden Content der Mail nennen? Irgendwie verpasse ich derzeit die meisten Mails bzw. funktioniert das Replace nicht zuverlässig.

Sorry! Kein Support…

Ich hatte letzte Woche eine Anfrage zum Thema Support! Ich habe vor einiger Zeit diverse Snippets und Skripte veröffentlicht und ein Leser kam damit nicht zurecht.

Ich helfe natürlich gerne, soweit ich es eben kann. Leider bin ich aber mit dem einfach Support per Mail nicht wirklich weiter gekommen und der Leser noch viel weniger…

Warum ich das hier erwähne: Nach einigen Mails die hin und her gingen wurde das ganze unfreundlich und vor allem “sehr” fordernd! Dafür habe ich dann auch nur sehr wenig Verständnis! Für Dinge die ich hier veröffentliche übernehme ich weder echten Support und auch keine Verantwortung! Ich teile hier Wissen, nicht mehr und nicht weniger! Die meisten Dinge die ich hier veröffentliche musste/durfte ich schon probieren und bei mir hat es immer (mehr, oder weniger) funktioniert. Wenn es bei euch nicht funktioniert, dann ist es durchaus OK mal nachzufragen, wenn es aber aus irgendwelchen Gründen nicht funktioniert wie erwartet, dann ist es so! Wenn die Skripte löschen, oder sonstige gefährliche Aktionen durchführen, dann weise ich eigentlich darauf hin! Und wer Ein Skript das er im Internet findet (Egal ob bei mir, oder sonst wo) einfach in seiner Produktiven Umgebung ausführt (Und zwar umgetestet), dem kann ich wohl eh nicht mehr helfen. Vor allem dann, wenn der Anwender sich vertippt hat und das ganze (natürlich) ohne irgendein Backup durchführt.

Es bringt dann auch wenig an mein Gewissen zu appellieren, ich habe nichts falsch gemacht (Zumindest nach meinem ganz persönlichen Verständnis) und bin ganz sicher auch nicht in der Bring-Schuld!!!

Und unfreundlich werden und mir vorwerfen, ich wäre für das löschen von Daten verantwortlich sorgt sicher nicht für eine Kooperation meinerseits!

Probleme mit dem Active Sync Kalender?

Ich bin heute gleich mehrfach zu Problemen mit Active Sync Devices (Verschiedene Android und iPhone/iPad) angesprochen worden.

Vorab: Diese Seite hat die Möglichkeit Kommentare Einzugeben! Nutzt diese doch bitte. Klar reagiere ich auch auf Skype und/oder Mail, aber ein Kommentar hier kann doch nicht schaden, oder?

Wie dem auch sei: Ich habe ja schon einiges über den Exchange Calendar Repair Assistant (CRA) und über CalCheck geschrieben.
Beides ist hilfreich um die meisten Probleme in den Griff zu kriegen!

Zumal ein wichtiger Hinweis zum Exchange Calendar Repair Assistant (CRA) noch gesagt/geschrieben werden muss: Dieser Dienst benötigt keine weiteren Server. Die Tasks werden nur ausgeführt, wenn der entsprechende Mailbox Server gerade genug Ressourcen zur Verfügung hat! Ein Versuch lohnt sich also…

Heute kam die Frage, ob ein Mac User eine Alternative zum Microsoft CalCheck Tool habe: Die Antwort ist NEIN!

Allerdings haben Mac User eine Option (Die ich auch nutze): XCode!
Einfach das (jetzt wieder) Kostenlose XCode aus dem App Store downloaden und das iPhone per USB Kabel an den Mac hängen. Dann einfach mal die Konsole beobachten…

Hier ein Beispiel von einem Termin der Probleme macht:
Apr 4 11:35:17 unknown dataaccessd[42] : 209bd0|EAS|Error|Received a mod from Exchange for an item we didn't already have. Dropping this mod on the floor. Exchange Item

Eigentlich verhält sich das iPhone korrekt: Der original Termin ist nicht vorhanden! Aus dem Grund wird ein Update auch abgelehnt.
Hier hilft es nur den Active Sync Kalender auf dem Endgerät (iPhone, oder iPad) auszuschalten und danach wieder einzuschalten. Dabei ist natürlich zu beachten, dass dabei noch nicht synchronisierte Kalender Einträge vom Telefon verloren gehen können. Diese sollten vorher noch synchronisiert werden, sonst sind diese unwiederbringlich weg!

Interessant sind auch Konsole Einträge die NULL als UID eines Kalender Eintrages ausgeben! Das deutet wirklich auf eine korrupte Mailbox (Kalender) hin. Das kann per Exchange Calendar Repair Assistant (CRA) meist relativ einfach wieder in den Griff bekommen werden! Viele glauben, es wäre eine gute Idee nur die Active Sync User in eine Gruppe mit Exchange Calendar Repair Assistant (CRA) User aufzunehmen. Sollte der Eintrag allerdings von einem nicht Active Sync User erstellt werden und/oder verschoben werden, so scheint es auch dann immer mal wieder zu Problemen zu kommen. Warum Kalender Korrupt sein können, kann man pauschal (leider) nicht sagen! Meist sind es allerdings Kalender die von mehren Personen (Delegates) verwendet werden. Dabei spielt es wohl kaum eine Rolle ob Active Sync oder nicht. Ein anderer Indikator sind Mixed aus unterschiedlichen Server bzw. Client Versionen. So gibt es einige bekannte Probleme mit zu alten Clients (Outlook 2003 oder älter) mit aktuellen Exchange 2010 Servern. Aber auch zu neue Clients im Mix mit alten können zu Problemen führen (Ich tippe dann immer gerne auf den Security Descriptor).
Kalender können aber auch bei Moves von Mailboxen im Take-Over Fall (Cluster) oder bei Migrationen korrupt werden.

Leider sieht man es beim Kalender eben recht schnell und es ist besonders ärgerlich!

Und nein: Es ist kein reines Apple Problem! Auch wenn viele das gerne behaupten!!! Es gibt mindestens genauso viele Probleme (Wenn nicht mehr) mit Android Geräten!

Bei Android Geräten gibt es aber wohl auch ein anderes Problem: Nach dem Android Update will der Kalender einfach nicht mehr synchronisieren! Hier hilft es meistens das komplette Exchange Konto zu löschen und noch einmal neu zu konfigurieren. Mir ist sonst leider kein anderer Tip bekannt! Ein kurzes ausschalten wie bei Apple iOS Geräten scheint hier nichts zu bringen.

Aktuell scheint es auch andere Probleme mit Androiden im Exchange Umfeld zu geben, so scheinen viele Geräte nach dem Update die Exchange Policy nicht mehr zu verstehen und absoluten quatsch zu machen. Auch hier: Entweder den Exchange Account einfach löschen und wieder neue anlegen oder den Account schon vor dem Update löschen und erst danach wieder anlegen! Damit kann man einigem Ärger schon im Vorfeld aus dem Weg gehen… Denn aktuell scheinen einige Geräte der Arme der Androiden sich nach einem Update komplett zu verstellen (Verschlüsslung an, oder aus usw. usw.). Das kann nur durch das löschen des Accounts vor dem Update verhindert werden :)

CalCheck – Outlook Calendar Checking Tool

Ich habe immer mal wieder mit diversen Outlook/Exchange Kalender Problemen zu kämpfen! Warum? Eigentlich ganz einfach: Die Benutzer kriegen es mit wenn die Kalender zwischen Outlook/Exchange nicht mehr im Sync sind und wenden sich an mich!

Als mächtige Waffe hat sich das Microsoft CalCheck Tool erwiesen. Ich nutze es schon seit es ein CodePlex Projekt ist.
Seit einiger Zeit ist CalCheck aber auch über die normale Microsoft Download Seite zu beziehen.

Zu CalCheck gibt es einen interessanten TechNet Blog Eintrag, dieser Beschreibt relativ genau was CalCheck und was nicht. Hier ist auch zu finden welche Parameter CalCheck und was diese tun.

Eines ist aber ganz wichtig: CalCheck kann verwendet werden um Probleme zu finden, beheben kann man diese damit aber nicht.

CalCheck unterstützt die folgenden Outlook Versionen:

  • Microsoft Office Outlook 2003
  • Microsoft Office Outlook 2007
  • Microsoft Office Outlook 2010 (32-bit)
  • Microsoft Office Outlook 2010 (64-bit)

CalCheck unterstützt die folgenden Exchange Versionen:

  • Microsoft Exchange Server 2003
  • Microsoft Exchange Server 2007
  • Microsoft Exchange Server 2010

Die folgenden Tests können durchgeführt werden:

  • Zugriffsrechte auf den Kalender / Permissions on the Calendar
  • Delegierte Zugriffe auf den Kalender / Delegates on the Calendar
  • Free/Busy Informationen / Free/Busy publishing information
  • Buchungsrechte auf Mailboxen und Kalender / Direct Booking settings for the Mailbox or Calendar
  • Anzeige der Einträge I’m Kalender / Total number of items in the Calendar folder

Der Server Modus (Kommandozeilen Parameter -s) kann alle Mailboxen eines Exchange Server prüfen und daraus entsprechende Logfiles erstellen.

Was CalCheck leider nicht kann: Hinweise auf einzelne Einträge geben die Korrupt sind und vor allem darauf was hier ggf. passiert sein könnte! Hier ist der Exchange Calendar Repair Assistant (CRA) die einzige mir bekannte Lösung. Wobei hier das Logging nie so richtig zu funktionieren scheint!

Wobei ich festgestellt habe, dass “fixing of missing items” wahre Wunder bewirken kann:
Set-MailboxServer -Identity MBX02 -CalendarRepairMissingItemFixDisabled $false

PowerShell und Exchange ActiveSync II

Gestern habe ich ja wiedermal einen Artikel zum Thema PowerShell und ActiveSync gepostet. Kurz später kam die Frage was man damit noch so alles machen könnte.

Na ja, es ist “nur” ein PowerShell Snippet! Also kann damit eine Menge gemacht werden :)

Ein nützliches Anwendungsbeispiel: Geräte mit alter Software suchen und die User anschreiben und bitten ein Update einzuspielen!

Suchen wir also mal mal alle iDevices mit einer iOS Version kleiner als 5.0.1 (Also die aktuell neueste):
$Addresses = $Devices | ?{$_.DeviceUserAgent -notlike "*801.306"} | %{$_.Identity.SmtpAddress} | Get-Unique
Das gibt eine Email Liste aus. Wichtig für User (Wie mich) mit mehr als einem Device ist hier natürlich der | Get-Unique! Sonst bekommen diese User mehr als eine Mail ;-)

Diese Liste kann dann einfach direkt aus einem beliebigen Maier angeschrieben werden. Aber Moment: Das geht sich auch direkt aus PowerShell:
# Change the variables to fit your needs and environment.
# variables: Server, Port, Subject, Body and From
# Keep in mind to change the version string to, the actual version is 5.0.1 (801.306)
$Addresses = $Devices | ?{$_.DeviceUserAgent -notlike "*801.306"} | %{$_.Identity.SmtpAddress} | Get-Unique
$SMTPServer = "mailer.hochwald-it.local"
$SMTPPort = 25
$Subject = "Please Update your iDevice"
$Body = "You should update your iDevice as soon as possible."
$From = "mobile.support@hochwald-it.local"
#
# Send an e-mail to each e-mail address in $Addresses
$Addresses | % {
$Mail = (New-Object System.Net.Mail.smtpclient($SMTPserver, $SMTPport))
$Mail.Send($From, $_, $Subject, $Body)
$Mail = $null
}

Der aktuell Version String kann jeweils auf dem Exchange Server abgefragt werden. Oder wenn du selbst das aktuellste Device hast in deinem Outlook Web Access (ECP).

Eine komplette Anleitung ztu den ActiveSync Befehlen der Powershell sind auf der TechNet website zu finden.