Add-O365Address

Für den Hybrid-Mode und Migrationen mit Exchange Online ist es erforderlich, dass die Postfächer eine "onmicrosoft.com"-Adresse bekommen. Diese Erweiterung konfiguriert der Hybrid Mode Assistent über die Empfängerrichtlinien. Schade nur, dass er nur die Default Policy erweitert und auch nicht prüft, ob alle Objekte auch die Richtlinie anwenden.

Details zum Problem

Wenn Sie Exchange On-Premises zusammen mit Exchange Online betreiben, dann richten Sie in der Regel den "Hybrid Mode" ein. Der HCW - Hybrid Configuration Wizard richtet in dem Zuge auch ein Hybrid Mail Routing ein, bei dem über einen eigenen Adressraum die Weiterleitung von Mails in das jeweils andere System ermöglicht wird. In aller Kürze

  • Routing vom Tenant zu On-Premises über primäre Adresse
    Exchange Online kennt alle Domänen und bei der Konfiguration des Mailroutings wird ein Send-Connector eingerichtet, der eben Mails an diese Domänen immer dann zum On-Premises-Server sendet, wenn es in der Cloud keinen Empfänger gibt.
  • Routing von On-Premises zum Tenant
    In die Gegenrichtung werden nicht alle unbekannten Mails der eigenen Domänen zum Tenant gesendet, weil Sie dann einen Schleife bauen würden. Stattdessen hat jeder Empfänger in der Cloud auch immer eine Adresse aus der Domain "@<tenantname>.mail.onmicrosoft.com". Für jeden Empfänger in der Cloud gibt es On-Premises eine "Remote Mailbox" mit einer Weiterleitung auf diese Adresse. Ein Connector im lokalen Exchange sorgt dafür, dass Mails an "@<tenantname>.mail.onmicrosoft.com" nicht über das Internet sondern über den gesicherten Connector am Spamfilter von Exchange Online zum Tenant gesendet werden.

Daher ist es auch erforderlich, dass jeder Empfänger in der Cloud eine solche eindeutige und dem Tenant zugeordnete Mailadresse hat. Ehe Sie aber Exchange Hybrid einrichten, ist die Konfiguration von ADSync mit Exchange erforderlich. Die Folge davon ist nun aber, dass Sie in der Cloud keine Mailadressen mehr direkt verwalten können, da nun die lokale Exchange Installation autoritativ für die Adressen ist.

Und damit ist nun auch klar, warum sie On-Premises erst die "@<tenantname>.mail.onmicrosoft.com"-Adressen addieren müssen, damit Sie durch ADSync dann auch bei den Konten in der Cloud ankommen und das Mailrouting und die Migration von Postfächern zum Tenant funktioniert.

Aus dem Grund addiert der Hybrid Configuration Wizard aber auch diese Adressen in die "Default Reipient Policy" ihrer lokalen Exchange Umgebung und startet danach einen "Update-Recipient". Je nach Umgebung kann das sogar recht lange dauert und eine so umfangreiche Änderung bei ganz vielen Personen führt unweigerlich nur nur zu einer größeren Replikationslast zwischen den Domain Controllern sondern auch größeren Download beim "Offiline Address Buch". Über diese beiden Effekte können aber Firmen mit vielleicht weniger als 10.000 Objekte locker drüber weg schauen. Störender sind zwei andere Fälle:

  1. Weitere Empfängerrichtlinien
    Der HCW addiert die neue Domäne nur bei der Default Policy aber nicht bei weiteren Richtlinien, die über Filter z.B. andere Mailadressen nach Abteilung, Standort oder Firmenzugehörigkeit verpassen. Da diese Richtlinien nicht angepasst werden, bekommen die dadurch konfigurierten Empfänger auch keine "@<tenantname>.mail.onmicrosoft.com"-Adresse
  2. Deaktivierte Verwaltung durch Richtlinien
    Eine zweite Möglichkeit die Vergabe einer "@<tenantname>.mail.onmicrosoft.com"-Adresse zu unterlaufen ist die Deaktivierung einer Pflege durch den Empfängeraktualisierungsdienst. Das ist durchaus nicht unüblich, wenn die primäre Adresse manuell abweichend von Richtlinien erfolgen soll oder die Verwaltung der Mailadresse gleich ganz durch ein Identity-Management erfolgt und damit die Exchange Empfängerrichtlinien mehr stören denn nutzen.

Beide Fällen fallen in der Regel dann erst auf, wenn die Postfächer in die Cloud migriert werden. Vorher stört es nicht, wenn diese Empfänger keine "@<tenantname>.mail.onmicrosoft.com"-Adressen haben. Erst mit der Migration möchte Exchange zum Abschluss der Migration eine Weiterleitungsadresse bei dem Quellobjekt auf eben diese "@<tenantname>.mail.onmicrosoft.com"-Adresse eintragen. Da es aber keine Adresse im Office 365 Tenant findet, wird die Migration nicht abgeschlossen.

Abhilfe

Da sie nun wissen, warum diese Empfänger keine "@<tenantname>.mail.onmicrosoft.com"-Adresse bekommen haben, könnten Sie die Konfiguration entsprechend anpassen. Das ist aber nicht ganz ohne Risiko, da durch die Änderung und Neuanwendung der Richtlinien eventuell auch weitere Adressen addiert und im schlimmsten Fall die primäre Adresse geändert wird und der Benutzer dann mit einer neuen Adresse Mails versendet.

Bisherige Adressen bleiben natürlich erhalten, so dass eingehende Mails weiter zugestellt werden. Aber wer z.B. Nachrichten per PGP/SMIME-signiert, bekommt mit einer neuen Absenderadresse Probleme bei der Signatur. Das Risiko ist nicht zu unterschätzen und je größere eine Firma ist, desto mehr dieser Fehler kann es geben. Das Risiko geht man ungern ein, wenn ich doch nur eine zusätzlich "@<tenantname>.mail.onmicrosoft.com"-Adresse bei jedem Empfänger addieren möchte.

Das Skript rufen Sie einfach auf und übergeben natürlich die Maildomäne ihres Office 365 Tenants mit. Sie können diesen leicht über "Get-AcceptedDomains" von ihrem lokalen Exchange Server in Erfahrung bringen, weil der HCW den Wert dort eingetragen hat. Das Skript prüft auch, ob es die Domain gibt aber um Fehlentscheidungen zu verhindern erwartet es die Angabe als Parameter.

Achtung:
Prüfen Sie, ob die Bildungsregeln der Office 365 Adresse ihren Anforderungen entsprechen. Ich unterscheide nach den vier Postfachkategorien (User, Shared, Room und Ressource) und vergebe anderen Präfixe.

Hinweis: Der "samaccountname" funktioniert nicht zuverlässig, wenn Sie mehrere Domains in einem Forest betreiben.

# Add-O365address
#
# Add the @<tenantname>.mail.onmicrosoft.com  adress to all recipient
#
# Useful, if recipient policies cannot do that
#
param (
   [string]$mbnamefilter = "*",
   [string]$o365routingdomain = "<tenantname>.mail.onmicrosoft.com"
)

Write-host "Add-O365address: Start"
Set-ADServerSettings -ViewEntireForest $true

if (Get-AcceptedDomain $o365routingdomain) {
   Write-Host "Office365 Routing Domain $($o365routingdomain) found in accepted Domains"

   Write-host "Add-O365address: Load Mailboxlist"
   $mblist = get-mailbox $mbnamefilter -resultsize unlimted

Foreach ($mb in $mblist) {
   $o365mail=$null
   switch($mb.recipienttypedetails) {
      "Usermailbox"       {$o365mail = "$($mb.primarysmtpaddress.local)@$($o365routingdomain)"}
      "SharedMailbox"     {$o365mail = "sm.$($mb.samaccountname)@$($o365routingdomain)"}
      "RoomMailbox"       {$o365mail = "rm.$($mb.samaccountname)@$($o365routingdomain)"}
      "EquipmentMailbox"  {$o365mail = "em.$($mb.samaccountname)@$($o365routingdomain)"}
   }
   if ($o365mail){
      Write-Host "Add $($o365mail) to $($mb.primarysmtpaddress)"
      Set-Mailbox –identity $mb -EmailAddresses @{add=$o365mail}
   }
   else {
      Write-Warning "Skip $($mb.primarysmtpaddress)"
   }
}
else {
   Write-Error "O365RoutingDomain $($o365routingdomain) not found in accepted domain. Check Domain"
}
Write-host "Add-O365address: End"

Das Skript durchläuft dann alle Postfächer der kompletten Exchange Organisation und addiert die Office 365-Adresse anhand der Vorgaben. Danach sollten Sie den nächsten Lauf von ADSync abwarten. Nachdem diese Adressen dann auch in Exchange Online angekommen sind, können Sie z.B. die Migration eines Postfachs zu Exchange Online fortsetzen.

Weitere Links