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"
Siehe auch Sender based routing
In Microsoft Exchange gibt es zwei Arten von Mailboxen: reguläre Mailboxen und freigegebene Mailboxen (Shared Mailbox).
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.
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.
Für den Microsoft Exchange Server sollte man insbesondere die folgenden Datenbanken und Dateien sichern:
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
Es gibt verschiedene Möglichkeiten eine lokale Exchange Umgebung in die Azure Cloud zu migrieren.
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.
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!
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.
$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
// 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
$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>"
[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>
$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
// 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>
$ExchangeSession = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://<Exchange-Server>/PowerShell/ -Authentication Kerberos Import-PSSession $ExchangeSession -DisableNameChecking Get-Queue Get-Queue -Identity <Warteschlangenname>
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
Aufgaben kann man mit Powershell automatisieren.
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 }