Donnerstag, 4. März 2010

Exchange 2010 – Teil 7 (Mailtips)

Mailtips bewahren z.B. Mitarbeiterinnen des Arbeitsamts Nürnberg vor peinlichen Veröffentlichungen. Mailtips informieren den User über Dinge, die er bisher erst nach dem Versenden der Email erfahren hat:

image

Wir versuchen hier an Testuser1 zu senden und bekommen beim Auflösen des Namens (hier in OWA) die “Out-Of-Office” Message des Empfängers angezeigt. Man kann sich also sparen, ellen-lange Emails an Leute zu schreiben, die vielleicht erst in zwei Wochen antworten. Das ist nur ein  Beispiel für Mailtips. Ein weiterer, implementierter Mailtip ist, der Hinweis darauf, dass ich an externe Empfänger schreibe:

image

Auch hier kann es zu Verwechslungen kommen. Es soll schon vorgekommen sein, dass wichtige firmeninterne Informationen an einen Journalisten verschickt wurden, dessen Name ähnlich klang wie der Kollege, an den man eigentlich schicken wollte.

Konfiguration

Per Default ist ein Mailtip enabled, der einen warnt, wenn an mehr als 25 Empfänger geschrieben wird. Der Mailtip für das Versenden an externe muss dagegen freigeschaltet werden. Das macht man über Set-OrganizationConfig. Anzeigen lassen kann man sich die Mailtip Config so:

image 

(hier wurde der ExternalRecipient Mailtip schon auf "$true” gesetzt)

Damit das “zieht” kann es sein, dass man einen IISReset machen muss und ggf. auch mal Outlook (2010 only!) neu starten muss. Weitere Tipps zur Fehlerbehebung von Mailtips finden sich hier.

Um festzulegen, dass bereits beim Versenden an 3 Email Adressen ein “LargeAudience Mailtip” gezeigt werden soll sagt man:

Set-OrganizationConfig –MailtipsLargeAudienceThreshold 3

Setze ich den Threshold auf 3, kommt das entsprechende Warning ab 4 Recipients:

image

Wie man hier gut sehen kann, werden Mailtips auch kombiniert. D.h. der andere Mailtip (die OOF von Testuser1) wird auch mit angezeigt. Eigentlich alles ganz einfach. Mehr Komplexität kommt durch “Group Metrics” hinein. “Group Metrics” wird gebraucht, um die Größe von Verteilerlisten zu bestimmen. Damit keine “Live-Abfrage” der Mitliederzahl von Verteilerlisten gemacht werden muss, werden die Größen der Verteilerlisten jede Nacht um Mitternacht auf einem entsprechend konfigurierten Mailbox server ermittelt. Dazu muss man den Mailbox Server konfigurieren:

image

Verantwortlich für die Generierung der Files ist der “Microsoft Exchange Service Host” Service. Wenn man den durchstartet, werden die Files generiert. Der File Distribution Service schiebt die Files dann auf den CAS, hier werden sie von Outlook 2010 “eingesehen”:

image

Auf dem CAS Server liegen sie dann in diesem Verzeichnis:

image

Eine weitere Möglichkeit von Mailtips zu profitieren, ist, wenn man bestimmten Usern verbietet an Verteilerlisten oder andere Mailboxen zu schreiben. Per Set-Mailbox kann dies bewerkstelligt werden:

Set-Mailbox testuser1 –RejectMessageFromSendersOrMembers ex10test1

ex10test1 darf also nicht mehr an testuser1 senden. Das sieht dann so aus:

image

Zum Schluss gibt es noch die Möglichkeit “Custom Mailtips” zu bauen. Das geht auch über Set-Mailbox und Set-DistributionGroup:

Set-Mailbox ex10test1 –Mailtip “Nicht jeder darf an ex10test1 schicken, du nicht! :-)”

Mehr Informationen zur Architektur von Mailtips gibts hier.

Freitag, 15. Januar 2010

Exchange 2010 – Teil 6 (Transport Rules und AD RMS)

Exchange 2010 kann per Transport Rule eMails mit RMS schützen. So kann man beispielsweise dafür sorgen, dass alle eMails, die das Keyword “[Confidential]” im Subject oder im Body enthalten, nicht weitergeleitet oder ausgedruckt werden können oder nach einer bestimmten Zeit “ablaufen”. Dieser Post beschreibt, wie man RMS auf einer Windows 2008 R2 Maschine installiert und welche Einstellungen anschließend notwendig sind, damit Exchange 2010 damit arbeiten kann. Merci an dieser Stelle an den RMS-Guru Hacke, der mir immer wieder virtuell zur Seite stand.

Es folgen nun die Screenshots durch die Installation von RMS. In Windows 2008 R2 wird dazu einfach eine neue Rolle hinzugefügt:

image

image

image

image

image

image

image

image

image

image image

image

image

image

image

image

image

image

image

Nach der Installation

Nach der Installation müssen noch 3 Aufgaben erfüllt werden:

  • Das Self-Signed Certificate das wir während der Installation von AD-RMS erstellt haben, muss exportiert werden und auf dem Exchange 2010 Server unter Trusted Root CAs eingespielt werden.
  • Der Computer-Account des Exchange 2010 Servers muss auf die Datei “c:\inetpub\wwwroot\_wmcs\certification\ServerCertification.asmx” berechtigt werden.
  • Per PowerShell muss man RMS (intern) enablen:
    set-irmconfiguration –internallicensingenabled:$true

Nun sind wir soweit und können die RMS Funktionalität per Cmdlet überprüfen:

image

In einer Transport-Rule kann nun als Action “rights protect messsage with RMS template” ausgewählt werden:

image

Klickt man nun auf RMS-Template, öffnet sich folgender Dialog:

image

Das “Do Not Forward” ist das einzige RMS Template, das standardmäßig dabei ist. Weitere kann man in der RMS GUI selbst erstellen.

Wir erstellen uns nun also eine Transport-Rule, die folgendermaßen aussieht:

image 

Enthält eine Mail also in Subject oder Body das keyword “[Confidential]”, wird das RMS Template “Do Not Forward” applied.

Ausprobieren:

image

Und tatsächlich, es kommt eine RMS geschützte Email an:

image 
(Die Condition ist übrigens nicht case-sensitive, [confidential] zieht also auch)

Donnerstag, 10. Dezember 2009

Exchange 2010 – Teil 5 (Berechtigungsmodell – RBAC)

Jetzt kommt starker Tobak. Das Berechtigungsmodell in Exchange 2010 wurde komplett überarbeitet. Es bietet nun schier unbegrenzte Möglichkeiten festzulegen wer, was, wo darf. Diese ungeheuere Flexibilität, die uns Microsoft hier anbietet, fordert ihren Tribut in Sachen Verständlichkeit / Umfang. Dieser Artikel versucht das neue Modell so praxisnah wie möglich zu erläutern.

Das gesamte Konzept baut auf Rollen auf und heißt deshalb auch “Role Based Access Control (RBAC)”. Sowohl Berechtigungen für Enduser (z.B. darf der User neue Verteilerlisten erstellen) als auch Administrator Berechtigungen werden in RBAC definiert. Genau dieser Umstand sort für ein wenig Verwirrung. Wir schauen uns zuerst den Enduser an. Um einem User mehr Berechtigungen zu geben, geht man wie folgt vor:

1. Erstellen einer neuen “Role Assignment Policy”
2. Erstellen eines neuen “Management Role Assignments”
3. Die “Role Assignment Policy” wird mit der Mailbox assoziiert.

Das folgende Diagramm beschreibt den Prozess:image
Schaubild 1 

Wir sehen, eine Rolle (End User Management Role) besteht aus “Management Role Entries” –> (A bis E). Das sind im Grunde genommen nur Exchange Cmdlets mit den dazugehörigen Parametern. D.h. eine Rolle in RBAC besteht aus einem Set von Cmdlets, die ausgeführt werden dürfen. Genauer noch: Cmdlets und die speziellen Parameter. So könnte z.B. in einer Rolle definiert sein, dass das Cmdlet “Set-Group” ausgeführt werden kann, aber nicht z.B. der Parameter XYZ gesetzt werden darf.

Es gibt Rollen die speziell auf End-User zugeschnitten sind und so gibt es für jede Rolle ein Property namens “IsEndUserRole”, das dann ggf. auf TRUE steht. Auch im Namen sind die Enduser Roles gekennzeichnet – sie beginnen mit “My…” (get-ManagementRole my* geht auch):

image

Wie wir im Schaubild 1 sehen, kann man sich zu jeder Rolle auch die entsprechenden Role-Entries anzeigen lassen, per:

Get-ManagmentRole myDistributionGroups | Get-ManagementRoleEntry

Nun zu unserem Szenario: Exchange 2010 erweitert OWA um das “Exchange Control Panel (ECP)” über das der User viele Einstellungen an seiner Mailbox (und noch einiges mehr) machen kann. Per Default sieht das z.B. aus:

image

Auf der linken Seite sehen wir die Navigationspunkte. Genau an dieser Stelle erlaubt uns OWA 2010 auch neue Verteilerlisten zu erstellen und zu managen – wenn man die entsprechenden Rechte dazu hat. Genau diese wollen wir uns nun besorgen:  Wir erstellen also per

New-RoleAssignmentPolicy meineAssignPol1

eine neue Assignment Policy. Danach müssen wir eine Rolle (z.B. MyDistributionGroups) mit der AssignmentPolicy assoziieren. Dazu erstellt man ein neues “Management Role Assignment":

New-ManagementRoleAssignment –name meinAssignment1 –Role “MyDistributionGroups” –Policy “meineAssignPol1”

Anschließend muss die AssignmentPolicy einer Mailbox zugewiesen werden:

Set-Mailbox ex10test1 –RoleAssignmentPolicy meineAssignPol1

Nachdem alles ordnungsgemäß ausgeführt wurde kommt man gar nicht mehr aufs ECP:

image 

Das war nicht ganz unser Ziel. Was ist passiert? Jede Mailbox hat per Default eine RoleAssignmentPolicy zugewiesen. Diese beinhaltet die Rolle “MyBaseOptions”, die bestimmte Grundfunktionalitäten erlaubt. D.h. wenn man sich eine neue AssignmentPolicy erstellt, muss man dieser auch immer (zusätzlich) die Rolle “MyBaseOptions” zuweisen:

New-ManagementRoleAssignment –name meinAssignment1 –Role “MyBaseOptions” –Policy “meineAssignPol2”

Und schon haben wir wieder Zugriff aufs ECP – und nicht nur dass: nun können wir auch Gruppen managen:

image

So sollte man vorgehen. Durch das Erstellen von RoleAssignmentPolicies kann man mehreren Usern die gleichen Permissions geben. Man kann aber auch direkt Berechtigungen vergeben:

New-ManagementRoleAssignment “ex10test1-Voicemail” –User ex10test1 –Role “MyVoiceMail”

Dieses direkte RoleAssignment weist dem User ex10test1 die Rolle “MyVoiceMail” zu. Das ist in etwas so, wie wenn man File-Permissions auf einem File Server pro User vergibt und nicht per Security Gruppe. Irgendwann wird es un-managebar.

Administratoren und Spezial User

Im “Admin-Bereich” werden Management Role Groups erstellt, denen Rollen zugewiesen werden. Wir erstellen eine Role Group, die das Recht hat Transport Rules zu  managen:

New-Rolegroup –Name “myFirstRoleGroup” –Role “Transport Rules” –Members ex10test1

Wir starten die EMC mit den Credentials von ex10test1:

image

Wir sehen nur den Organization Configuration Zweig und den Recipient Configuration Zweig – unter Organization Configuration ist nur “Hub Transport” zu sehen. Interessant ist auch, wie die Properties einer Usermailbox mit unseren eingeschränkten Rechten aussehen:

image
(man beachte die kleinen Schlösser)

Unserer neuen Rolegroup “MyFirstRoleGroup”, die Transport Rules managen darf, können wir weitere Mitglieder hinzufügen:

add-RolegroupMember “MyFirstRoleGroup” –Member ex10test2

und zusätzliche Rollen zuweisen:

New-ManagementRoleAssignment –Name “myfirstrolegroup-journaling” –SecurityGroup myfirstrolegroup –Role Journaling

Wie man sieht erfolgt das Zuweisen neuer Rollen wie im ersten Fall bei den Endusern über RoleAssignments.

Einige Rollen werden mitgeliefert:
http://technet.microsoft.com/en-us/library/dd638077.aspx

Ebenso wie einige Role Groups:
http://technet.microsoft.com/en-us/library/dd351266.aspx

Scopes

Scopes geben im RBAC an, für welchen Bereich (z.B. eine OU) die definierten Rechte gelten. Ein neuer Scope wird z.B. so erstellt:

New-ManagementScope “alleAusHeidelberg” –RecipientRestrictionFilter { City –Eq “Heidelberg” }

Wir erstellen nun wieder eine RoleGroup, aber diesmal unter Angabe es eben erstellten Scopes:

New-RoleGroup manageHeidelbergUsers –Members ex10test1 –Roles “Mail Recipients” –CustomRecipientWritescope “alleAusHeidelberg”

D.h. also, der user “ex10test1” ist nun Mitglied der RoleGroup “ManageHeidelbergUsers”, die Recipients modifizieren darf, die im “City” Feld “Heidelberg” stehen haben. Das wollen wir dann auch gleich mal überprüfen. Wir machen die EMC wieder unter den Credentials von ex10test1 auf:

image

Der User “ex7test1” hat ein leeres “City” Feld. Versuche ich hier per ex10test1 einen neuen ZIP Code einzutragen, bekomme ich die Meldung, dass dieses Objekt außerhalb meiner Befugnisse liegt. “Testuser1” hat Heidelberg als Stadt eingetragen, hier darf ich schreiben:

image

Impersoniert

So, was bedeutet das nun konkret? Wie arbeitet RBAC? Dazu schauen wir uns einmal an, was passiert, wenn per Exchange 2007 EMC eine neue Transport Rule angelegt wird. Ich habe für den entsprechenden Container im AD “auditing” eingeschaltet. Wie wir in folgendem Screenshot sehen, wurde die neue Transport Rule vom “Administrator” angelegt:

image

Nun, die gleiche Aktion von der Exchange 2010 EMC aus:

image

Wie man sieht, wird die Transport Rule hier vom Exchange Server Objekt angelgt. Exchange bzw. RBAC authorisiert mich also – es werden tatsächlich keine ACLs mehr im AD gesetzt.

Fazit

Ich könnte mir vorstellen, dass mit SP1 die GUI Version kommt und alles übersichtlicher macht. Die Tatsache, dass keine ACLs mehr geschrieben werden wird bei Migrationsscenarien weniger Ärger bringen. Die ungeheuere Flexibilität ist für größere Unternehmen sicherlich sehr gut – allerdings wird einiges an Planung nötig sein. Es lohnt sich auf jeden Fall sich mit RBAC zu beschäftigen und macht auch wirklich Spass.

Dienstag, 1. Dezember 2009

Exchange 2010 – Teil 4 (Migration und Co-Existenz)

Die meinsten Organisationen haben bereits ein Exchange System am Laufen. Wer sich jetzt mit Exchange 2010 beschäftigt, wird vermutlich momentan Exchange 2003 im Einsatz haben. Aber auch der ein oder andere Exchange 2007 Admin wird sich Fragen, welche Vorteile ihm 2010 bringt. Heute wollen wir uns damit beschäftigen, wie man nun von den älteren Systemen zum neusten Microsoft Exchange System kommt.

Wie immer, bedarf es dem Einspielen von Service Packs und anderen Voraussetzungen, bevor Exchange 2010 installiert werden kann. So muss der Forest Functional Level auf “2003 native” sein und alle Exchange 2007 Server brauchen SP2. Exchange 2010 kann entweder auf Windows 2008 SP2 oder auf R2 installiert werden. Die Schemaerweiterungen für Exchange 2010 sind übrigens bereits in Exchange 2007 SP2 enthalten.

Bevor man das Betriebssystem auswählt, muss man sich überlegen, ob man Exchange 2010 hochverfügbar betreiben möchte (in einer DAG –> späterer Blog Post). Will man das, muss man die Enterprise Edition von Windows installieren, da “Clustering” unterstützt werden muss.

Exchange 2000 darf sich nicht mehr in der Org befinden.

Damit Exchange 2010 mit Exchange 2003 koexistieren kann, braucht es – ebenso wie damals mit 2007 – einen Routing Group Connector, der bei der Installation angelegt wird. (Übrigens erst, wenn die Hub Transport Rolle installiert wird). Braucht man mehrere Verbindungen zwischen der 2010 Welt und der 2003 Welt, sollte man unbedingt Link-State-Routing unterdrücken.

Weiterhin sollte die erste Rolle, die man in eine legacy Org installiert, die CAS Rolle sein. Hier stellt sich die Frage, wie schnell alle Mailboxen von 2003 auf 2010 umgezogen werden können. Davon abhängig, lässt sich ein Migrationsplan schmieden. Wenn mein Unternehmen viele Mailboxen hat und ich nicht alle innerhalb einer Nacht umziehen kann, werde ich den neuen 2010 CAS zum Proxy für Imap, OWA und ActiveSync machen müssen. Denn der kann für 2003er Mailboxen Requests entgegen nehmen und weiterleiten. (Während der Exchange 2003 Server keine 2010er (oder 2007er) Mailboxen bedienen kann). In diesem Fall empfiehlt es sich also die primäre URL (z.B. owa.firma.de) auf den neuen CAS umzubiegen.

So, das war einfach. Zusammenfassend kann man sagen, dass sich Exchange 2010 in einer 2003 Org verhält wie Exchange 2007 (in einer 2003 Org). Wenn nun aber Exchange 2007 mit im Spiel ist, wird es komplizierter:

Wichtig zu  wissen ist, dass ein Exchange 2007 Mailbox Server nur mit Exchange 2007 Hub Transport Servern sprechen kann. Ebenso kann ein Exchange 2010 Mailbox Server nur mit Exchange 2010 Transport Servern sprechen. Daraus folgt, dass ich in jeder AD Site, in der ein Exchange 2007 Mailbox Server steht, mindestens einen Exchange 2007 HT Server stehen lassen muss, solange bis ich den letzten 2007 Mailbox Server in der Site abschalte (und dass ich für jeden 2010 Mailboxserver einen 2010 HT brauche –> pro AD Site).

Da der Exchange 2010 CAS für den Exchange 2007 CAS genau wie für den Exchange 2003 Server nur als Proxy dient, muss auch in jeder AD Site, in der ein Exchange 2007 Mailbox Server steht, mindest ein Exchange 2007 CAS übrig bleigen.

Zusammenfassen kann man also sagen, dass man in einer Co-Existance von 2010 und 2007 solange HT und CAS Server in einer AD Site braucht, solange es dort Mailboxserver bzw. produktive Mailboxen gibt.

Hier zur Illustration ein kleines Bildchen:

image

Donnerstag, 26. November 2009

Exchange 2010 – Teil3 (Mailbox Moves)

Die Art und Weise wie Mailboxen verschoben werden können, hat sich mit Exchange 2010 verändert. Wen man in Exchange 2007 einen “Move-Mailbox” Befehl in einem PowerShell Fenster ausgeführt hat und dieses per Klick auf das “X” geschlossen hat, oder z.B. die RDP Session ausgetimed ist, wurde der Move abgebrochen.

In Exchange 2010 gibt es einen neuen Service, der Mailbox Moves handelt, den MRS –> Mailbox Replication Service. D.h. es gibt keinen “Move-Mailbox” Befehl mehr in 2010. Stattdessen verwendet man den Befehl “New-MoveRequest”, der den neuen Move-Request an den MRS schickt. Der Vorteil dabei ist, dass man die Move-Requests von allen Exchange 2010 Servern in der Org sehen kann und nicht auf ein “offenes” Powershell Fenster angewiesen ist.

Aber der Reihe nach. Wir moven in meiner brandneuen Exchange 2010 Testumgebung einfach einen User “Test1” von einer Datenbank auf eine andere:

image

Wie man sehen kann wird hier unterschieden in “Local” und “Remote” Move Request. Man ahnt es bereits, der Remote Move Request kann Mailboxen von anderen Orgs moven.

Wir interessieren uns hier für einen Local-Move, und moven deshalb den User Test1 von MDB1 nach MDB2:

image

Sobald der Move-Request abgesetzt wurde, taucht er unter “Move Request” auf. Der MRS arbeitet den Move Request nun ab –> Status “Moving”.

image

Und, da die Testmailbox beihnahe leer ist, wechselt er schnell auf “completed”:

image

Interessant sind auch die Properties eines Move Requests:

image  

Hier gibt es einen Button um “Faild Messages” anzuschauen, also korrupte Items.

Der MRS kann in einer Config Datei nach Bedarf eingestellt werden. So kann man z.B. die maximale Anzahl an Moves pro Source Datenbank festlegen. Die Cofig Datei findet sich hier: “<Exchange Installation Path>\V14\Bin\MSExchangeMailboxReplication.exe.config

Der MRS läuft auf jedem CAS Server. Bei einem Remote Move Request, kommt es darauf an, ob im Remote Forest Exchange 2010 läuft oder nicht. Momentan ist diese Wahrscheinlichkeit recht gering und so kontaktiert der lokale CAS direkt den Mailbox Server in der Remote Lokation (Exchange 2003 SP2 aufwärts). Sollte doch ein CAS 2010 in der Remote Lokation vorhanden sein, kann der Lokale CAS auch über einen weiteren Dienst namens “MRSproxy”. Der MRSproxy kann einen remote 2010 CAS kontatieren und über den den Move Request organisieren.

Der MRS sorgt nun auch dafür, dass eine Historie über alle Mailbox Moves in den Mailbox Properties gespeichert wird. Abrufen lässt sich das mit dem Get-MailboxStatistics Befehl:

image

Anschließend lässt man sich das Ergebnis in ein CSV pipen:

image

Das Ergebnis ist tatsächlich sehr detailiert und man kann so sehr schön herausfinden, auf welchen Datenbanken eine Mailbox schon “wohnte” und ob es beim Moven Fehler gab:

image

Jan Geisbauer - About IT from Redmond and Elsewhere