Benutzer-Werkzeuge

Webseiten-Werkzeuge


microsoft_exchange

Die Microsoft Implementierung eines Email Server.

# Welche Service laufen
Get-Service | Where-Object { $_.Name -like "MSExchange*" } | Select-Object Name, Status

# Welche Logs gibt es
Get-WinEvent -ListLog *Exchange* | Select-Object LogName

# Welche Logs sind registriert
wevtutil el | Select-String "MSExchange"

Transport Dienste

Frontend Transport

  • Läuft auf Client Access-Servern.
  • Zuständig für die Entgegennahme und Weiterleitung von E-Mails zwischen externen Absendern und internen Mailbox-Servern.

Mailbox Transport

  • Läuft auf Mailbox-Servern.
  • Mailbox Transport Submission: Übernimmt E-Mails aus den Postfächern und übergibt sie an den Transportdienst.
  • Mailbox Transport Delivery: Empfängt E-Mails vom Transportdienst und liefert sie an die Postfächer in den Mailboxdatenbanken.

Edge Transport

  • Läuft auf Edge-Transport-Servern (in Exchange 2010 und 2013).
  • Dient als Gateway zwischen dem Exchange-Organisationsnetzwerk und dem Internet.
  • Führt E-Mail-Sicherheitsaufgaben wie Anti-Spam und Anti-Malware-Filterung durch.

Hub Transport (nur in älteren Versionen von Exchange, wie 2010)

  • Läuft auf Hub-Transport-Servern.
  • Verantwortlich für die Weiterleitung und Zustellung von E-Mails innerhalb der Exchange-Organisation.
  • Führt Nachrichtenrichtlinien und Transportregeln durch.
  • Leitet Nachrichten zwischen Postfachservern und anderen Hub-Transport-Servern weiter.

Transportdienst (Mailbox-Transportdienst in neueren Versionen von Exchange, wie 2013, 2016 und 2019)

  • Läuft auf Mailbox-Servern.
  • Übernimmt die Funktionen des alten Hub Transport-Dienstes und konsolidiert sie in einer Rolle.
  • Zuständig für die Verarbeitung, Weiterleitung und Zustellung von Nachrichten innerhalb der Exchange-Organisation.

Postfach

In Microsoft Exchange gibt es zwei Arten von Mailboxen: reguläre Mailboxen und freigegebene Mailboxen (Shared Mailbox).

Mailbox

  • Eine reguläre Mailbox ist einem einzelnen Benutzer zugewiesen.
  • Sie wird normalerweise für persönliche E-Mails und Kalender verwendet.
  • Der Benutzer hat volle Kontrolle über die Mailbox, einschließlich der Verwaltung von E-Mails, Kalendern und Kontakten.
  • Zugriff auf die Mailbox erfolgt über die Anmeldeinformationen des Benutzers.

Shared Mailbox (Freigegebene Mailbox)

  • Eine freigegebene Mailbox ist für die gemeinsame Nutzung zwischen mehreren Benutzern vorgesehen.
  • Sie wird typischerweise für Abteilungs-E-Mails oder gemeinsam genutzte Ressourcen wie Support oder Vertrieb verwendet.
  • Benutzer können darauf zugreifen, indem sie Berechtigungen erhalten, entweder vollständige Kontrolle oder eingeschränkten Zugriff.
  • Die freigegebene Mailbox wird nicht mit den Anmeldeinformationen eines einzelnen Benutzers assoziiert, sondern kann von mehreren Benutzern gemeinsam genutzt werden.
  • In der Regel haben Benutzer, die auf eine freigegebene Mailbox zugreifen, ihre eigenen persönlichen Mailboxen, von denen aus sie auf die freigegebene Mailbox zugreifen können.

Datenbank

In Exchange Server beziehen sich „Datenbanken“ auf die Speicherstrukturen, die verwendet werden, um E-Mails, Kontakte, Kalenderereignisse und andere Postfachdaten zu speichern. Diese Datenbanken werden auf dem Exchange-Server gehostet und ermöglichen die effiziente Speicherung und Verwaltung von E-Mail-Daten für Benutzer und Organisationen. Exchange-Datenbanken verwenden oft das Extensible Storage Engine (ESE), um die Daten persistent zu speichern und die Integrität der Datenbanken sicherzustellen.

EDB Datenbank

Eine EDB-Datei (Exchange Database File) ist eine Datenbankdatei, die von Microsoft Exchange Server verwendet wird, um E-Mails, Kontakte, Kalenderereignisse und andere Postfachdaten zu speichern. Diese Dateien enthalten die gesamte Information eines Exchange-Datenbankspeichers, einschließlich der Postfachdaten mehrerer Benutzer.

Die EDB-Dateien sind ein integraler Bestandteil des Exchange-Datenbanksystems und werden von Exchange Server zum Speichern und Organisieren von Daten verwendet. Wenn ein Benutzer beispielsweise eine E-Mail sendet, wird diese in einer EDB-Datei gespeichert, bis sie von einem anderen Benutzer abgerufen wird.

Die EDB-Dateien sind normalerweise in einem proprietären Format gespeichert und können nicht direkt von anderen Anwendungen geöffnet oder bearbeitet werden. Exchange Server bietet jedoch Tools und Mechanismen zum Sichern, Wiederherstellen und Verwalten von EDB-Dateien, um die Integrität und Verfügbarkeit der Daten zu gewährleisten.

Backup

Für den Microsoft Exchange Server sollte man insbesondere die folgenden Datenbanken und Dateien sichern:

  • Exchange-Datenbankdateien (EDB): Diese Dateien enthalten alle Postfachdaten, einschließlich E-Mails, Kontakte, Kalenderereignisse usw. Es ist wichtig, regelmäßige Backups dieser Dateien durchzuführen, um Datenverlust im Falle eines Ausfalls zu vermeiden.
  • Transaktionsprotokolldateien: Exchange verwendet Transaktionsprotokolle, um Änderungen an den Datenbanken zu protokollieren, bevor sie dauerhaft auf die EDB-Dateien angewendet werden. Diese Protokolldateien sollten ebenfalls gesichert werden, da sie für die Wiederherstellung von Datenbanken verwendet werden können.
  • Systemdateien des Exchange-Servers: Dazu gehören Konfigurationsdateien, Protokolldateien und andere Systemdateien, die für den ordnungsgemäßen Betrieb von Exchange erforderlich sind. Das Sichern dieser Dateien kann bei der Wiederherstellung des Exchange-Servers nach einem Ausfall hilfreich sein.
  • Active Directory-Datenbank: Exchange integriert sich eng in Active Directory, daher sollten Sie auch die Active Directory-Datenbank sichern, um sicherzustellen, dass Sie im Falle eines Problems eine vollständige Wiederherstellung durchführen können.

Database Availability Group (DAG)

Ein „DAG“ (Database Availability Group) ist eine Funktion in Exchange Server, die Hochverfügbarkeit und Ausfallsicherheit für Postfachdatenbanken bietet. Eine DAG besteht aus mehreren Exchange-Servern, die in einer Gruppe zusammengefasst sind. Jeder Server in der DAG enthält Kopien der Postfachdatenbanken, die automatisch synchronisiert werden, um sicherzustellen, dass Benutzerkonten im Falle eines Serverausfalls oder einer Wartung weiterhin auf ihre E-Mails zugreifen können.

# Erstellen einer neuen DAG
New-DatabaseAvailabilityGroup -Name DAG1 -WitnessServer FILESERVER -WitnessDirectory C:\DAGWitness

# Hinzufügen von Servern zur DAG
Add-DatabaseAvailabilityGroupServer -Identity DAG1 -MailboxServer EXCHSRV1
Add-DatabaseAvailabilityGroupServer -Identity DAG1 -MailboxServer EXCHSRV2

# Erstellen einer neuen Datenbankkopie
Add-MailboxDatabaseCopy -Identity "MailboxDatabase01" -MailboxServer EXCHSRV2 -ActivationPreference 2

# Überprüfen des Status der DAG und Datenbankkopien
Get-DatabaseAvailabilityGroup -Identity DAG1
Get-MailboxDatabaseCopyStatus -Identity "MailboxDatabase01"

Exchange Server 2016 DAG - Database Availability Group Management

Cloud Migration

Es gibt verschiedene Möglichkeiten eine lokale Exchange Umgebung in die Azure Cloud zu migrieren.

Cutover

Exchange Server 2003, 2007, 2010, 2013. Gedacht für Migration von max. 2000 Postfächern. Es werden alle Postfächer in einem Batch migriert (Empfehlung bis 150). Nach der Migration gibt es keine lokalen Entitäten mehr, nur noch Cloud Identitäten. Umstellung des Nachrichtenfluss auf Exchange Online im Wartungsfenster. Hybrider Nachrichtenfluss ist nicht möglich.

Staged

Exchange Server 2003, 2007. Ermöglicht die Migration ausgewählter Postfächer. Diese werden mit AD Connect in das AzureAD synchronisiert. Lokale Postfach Benutzer werden zu Email Benutzern in Exchange Online. Migration erfolgt in Batches. AD Connect übernimmt die Weiterleitung eingehender lokaler Mails an migrierte Benutzer in Exchange Online. Ein hybrider Nachrichtenfluss zwischen dem lokalen Exchange Server und Exchange Online ist nicht möglich!

Hybrid

Exchange Server 2010, 2013, 2016, 2019. Migration ausgewählter Exchange Objekte zu Exchange Online. Postfächer können nach Bedarf zwischen den Umgebungen verschoben werden. Die Synchronisation der Objekte erfolgt mit AD Connect. Ermöglicht den parallelen Betrieb beider Umgebungen. Konfiguration mit dem Hybrid Configuration Wizard (HCW). Weiterleitung von eingehenden Nachrichten sowohl OnPremise als auch Exchange Online. Benötigt direkte SMTP Verbindung (Anforderungen an Firewall und Netzwerk).Verwaltung der Exchange Objekte in der lokalen Exchange Organisation.

Code

Email

$ExchangeSession = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://<Exchange-Server>/PowerShell/ -Authentication Kerberos
Import-PSSession $ExchangeSession -DisableNameChecking
 
Get-Mailbox
Get-Mailbox -Identity <Postfachname>
 
New-Mailbox -UserPrincipalName <UPN> -Alias <Alias> -Name <Name> -FirstName <Vorname> -LastName <Nachname> -Database <Datenbankname>
 
Remove-Mailbox -Identity <Postfachname>
 
Get-MailboxStatistics -Identity <Postfachname> | Select-Object DisplayName, TotalItemSize

AutoResponder

// Ohne Ende
Set-MailboxAutoReplyConfiguration -Identity "user@domain.local" -AutoReplyState Enabled -InternalMessage "Ihre Nachricht für interne Mails." -ExternalMessage "Ihre Nachricht für externe Mails."
 
// Mit Start und Enddatum
Set-MailboxAutoReplyConfiguration -Identity "user@domain.local" -AutoReplyState Scheduled -InternalMessage "Ihre Nachricht für interne Mails." -ExternalMessage "Ihre Nachricht für externe Mails." -StartDate "01/01/2022 00:00" -EndTime "01/01/2023 00:00"
 
// Deaktivieren
Set-MailboxAutoReplyConfiguration -Identity "user@domain.local" -AutoReplyState Disabled

Adressbuch

$ExchangeSession = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://<Exchange-Server>/PowerShell/ -Authentication Kerberos
Import-PSSession $ExchangeSession -DisableNameChecking
 
Get-AddressList
 
Get-AddressList -Identity "<Adressbuchname>"
 
New-AddressList -Name "<Name>" -RecipientFilter "<Filter>"
 
Set-AddressList -Identity "<Adressbuchname>" -RecipientFilter "<Filter>"
 
Remove-AddressList -Identity "<Adressbuchname>"

See here

[PS] C:\Windows\system32>Get-AddressList
 
Name                      DisplayName               RecipientFilter
----                      -----------               ---------------
All Contacts              All Contacts              RecipientType -eq 'MailContact'
All Distribution Lists    All Distribution Lists    ((Alias -ne $null) -and (ObjectCategory -like 'group'))
All Groups                All Groups                ((RecipientType -eq 'MailUniversalDistributionGroup') -or (RecipientType -eq 'MailUniversalSecurityGroup') -or (RecipientType
                                                    -eq 'MailNonUniversalGroup') -or (RecipientType -eq 'DynamicDistributionGroup'))
All Users                 All Users                 RecipientType -eq 'UserMailbox'
Öffentliche Ordner        Öffentliche Ordner        ObjectClass -eq 'publicFolder'
Public Folders            Public Folders            ((Alias -ne $null) -and (ObjectCategory -like 'publicFolder'))
All Rooms                 All Rooms                 ((RecipientType -eq 'UserMailbox') -and (ResourceMetaData -like 'ResourceType:*') -and (ResourceSearchProperties -ne $null))
 
[PS] C:\Windows\system32>Get-GlobalAddressList
 
Name                        RecipientFilter
----                        ---------------
Globale Standardadressliste ((Alias -ne $null) -and (((((((((((ObjectClass -eq 'user') -or (ObjectClass -eq 'contact'))) -or (ObjectClass -eq 'msExchSystemMailbox'))) -or
                            (ObjectClass -eq 'msExchDynamicDistributionList'))) -or (ObjectClass -eq 'group'))) -or (ObjectClass -eq 'publicFolder'))))
 
[PS] C:\Windows\system32>Get-OfflineAddressBook
 
Name                                 Versions   AddressLists
----                                 --------   ------------
Standard-Offlineadressliste (Ex2013) {Version4} {\Globale Standardadressliste}
 
[PS] C:\Windows\system32>Get-OfflineAddressBook "Standard-Offlineadressliste (Ex2013)" | Format-List Name, AddressLists
 
 
Name         : Standard-Offlineadressliste (Ex2013)
AddressLists : {\Globale Standardadressliste}
 
[PS] C:\Windows\system32>Set-OfflineAddressBook -Identity "Standard-Offlineadressliste (Ex2013)" -AddressLists "Globale Standardadressliste", "TestContactList"
 
[PS] C:\Windows\system32>Update-OfflineAddressBook -Identity "Standard-Offlineadressliste (Ex2013)"
 
[PS] C:\Windows\system32>Get-OfflineAddressBook "Standard-Offlineadressliste (Ex2013)" | Format-List Name, AddressLists
 
 
Name         : Standard-Offlineadressliste (Ex2013)
AddressLists : {\TestContactList, \Globale Standardadressliste}
 
[PS] C:\Windows\system32>

Kalender

$ExchangeSession = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://<Exchange-Server>/PowerShell/ -Authentication Kerberos
Import-PSSession $ExchangeSession -DisableNameChecking
 
Get-MailboxFolderStatistics -Identity <Benutzername> -FolderScope Calendar | Select-Object Name, ItemsInFolder, FolderSize
 
New-MailboxAppointment -Mailbox <Benutzername> -Subject "<Betreff>" -Location "<Ort>" -Start "<Startzeit>" -End "<Endzeit>"
 
Set-MailboxCalendarItem -Identity <TerminID> -Subject "<Neuer Betreff>" -Location "<Neuer Ort>" -Start "<Neue Startzeit>" -End "<Neue Endzeit>"
 
Remove-MailboxCalendarItem -Identity <TerminID>
 
 
Get-MailboxFolderPermission -Identity user@domain.local:\Calendar
Add-MailboxFolderPermission -Identity user@domain.local:\Calendar -User otheruser@domain.local -AccessRights <Zugriffsrechte>
Set-MailboxFolderPermission -Identity user@domain.local:\Calendar -User otheruser@domain.local -AccessRights <Zugriffsrechte>
Remove-MailboxFolderPermission -Identity user@domain.local:\Calendar -User otheruser@domain.local

Troubleshooting

Kalender

// berechtigungen
Get-MailboxFolderPermission -Identity "<Postfach>:\Kalender"
 
// synchronisierung
Get-CalendarProcessing -Identity "<Postfach>"
 
// eventlog
Get-EventLog -LogName Application -Source "MSExchange*"
 
//timezone
Get-MailboxRegionalConfiguration -Identity <Postfach>
Get-Mailbox -Database <Datenbankname> | Get-MailboxRegionalConfiguration
Set-MailboxRegionalConfiguration -Identity <Benutzer> -TimeZone <Zeitzone>

Mailqueue

$ExchangeSession = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://<Exchange-Server>/PowerShell/ -Authentication Kerberos
Import-PSSession $ExchangeSession -DisableNameChecking
 
Get-Queue
Get-Queue -Identity <Warteschlangenname>

MessageTrace

Get-MessageTrackingLog -Sender "<Absender>" -Recipients "<Empfänger>" -MessageSubject "<Betreff>"
Get-MessageTrackingLog -EventID "FAIL" -Start "<Startdatum>" -End "<Enddatum>"
Get-Content -Path "C:\Exchange\TransportRoles\Logs\ProtocolLog\SmtpReceive\<Protokolldatei>"
Get-TransportServer | Select-Object -Property Name, TotalRetryQueueLength, TotalSubmissionQueueLength

Logs

Aufgaben kann man mit Powershell automatisieren.

Downloads

ActiveSync

Exchange Active Sync (ActiveSync) ist ein von Microsoft entwickeltes Protokoll zur Synchronisierung von E-Mails, Kontakten, Kalendern und Aufgaben zwischen einem E-Mail-Server und mobilen Geräten wie Smartphones und Tablets. Es ermöglicht eine nahtlose Integration von E-Mail-Diensten, Kalendern und Kontakten auf verschiedenen Geräten und Plattformen.

# Finde alle Exchange Active Sync Geräte
PS C:\> Get-MobileDevice
 
RunspaceId              : ecfdbf6d-b44a-4369-aeed-4cb29e286eb0
FriendlyName            :
DeviceId                : sophfw5x48gu9ryw66f5tnmu9nlg8ip4
DeviceImei              :
DeviceMobileOperator    :
DeviceOS                :
DeviceOSLanguage        :
DeviceTelephoneNumber   :
DeviceType              : iPhone5sGlobal
DeviceUserAgent         : SecurePIM 7.23.4 - iOS 10.2.1
DeviceModel             : iPhone5sGlobal
FirstSyncTime           : 21.02.2017 15:57:40
UserDisplayName         : dom.local/USERS/User1
DeviceAccessState       : Allowed
DeviceAccessStateReason : Global
DeviceAccessControlRule :
ClientVersion           : 14.1
ClientType              : EAS
IsManaged               : False
IsCompliant             : False
IsDisabled              : False
AdminDisplayName        :
ExchangeVersion         : 0.10 (14.0.100.0)
Name                    : iPhone5sGlobal§sophfw5x48gu9ryw66f5tnmu9nlg8ip4
DistinguishedName       : CN=iPhone5sGlobal§sophfw5x48gu9ryw66f5tnmu9nlg8ip4,CN=ExchangeActiveSyncDevices,CN=User1,OU=USERS,DC=dom,DC=local
Identity                : dom.local/Users/User1/ExchangeActiveSyncDevices/iPhone5sGlobal§sophfw5x48gu9ryw66f5tnmu9nlg8ip4
Guid                    : 044e412d-c004-4530-9ed9-19eb70a3ef91
ObjectCategory          : dom.local/Configuration/Schema/ms-Exch-Active-Sync-Device
ObjectClass             : {top, msExchActiveSyncDevice}
WhenChanged             : 06.05.2024 12:20:17
WhenCreated             : 21.02.2017 16:57:40
WhenChangedUTC          : 06.05.2024 10:20:17
WhenCreatedUTC          : 21.02.2017 15:57:40
OrganizationId          :
Id                      : dom.local/Users/User1/ExchangeActiveSyncDevices/iPhone5sGlobal§sophfw5x48gu9ryw66f5tnmu9nlg8ip4
OriginatingServer       : vie-srv-dc02.dom.local
IsValid                 : True
ObjectState             : Unchanged
$all_devices = Get-MobileDevice
Get-MobileDeviceStatistics -Identity $all_devices[0].Guid.toString()
[PS] C:\> Get-Mailbox -ResultSize Unlimited | Get-CasMailbox | Where-Object { $_.ActiveSyncEnabled -eq $true } 
microsoft_exchange.txt · Zuletzt geändert: 2025/04/01 08:07 von jango