Dies ist eine alte Version des Dokuments!
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). Es gibt auch Postfächer für Resourcen (z.B Raum- und Gerätereservierungen).
Get-Mailbox -RecipientTypeDetails (UserMailbox|SharedMailbox|RoomMailbox|EquipmentMailbox)
Es gibt mehrere Arten von Kalendern
Alle Kalender in Benutzerpostfächern.
Get-Mailbox -RecipientTypeDetails UserMailbox | ForEach-Object { Get-MailboxCalendarFolder -Identity "$($_.PrimarySmtpAddress):\Kalender" -ErrorAction SilentlyContinue }
Kalender aus freigegebenen Postfächern
Get-Mailbox -RecipientTypeDetails SharedMailbox | ForEach-Object { Get-MailboxCalendarFolder -Identity "$($_.PrimarySmtpAddress):\Calendar" -ErrorAction SilentlyContinue }
Kalender in Ressourcenpostfächern.
Get-Mailbox -RecipientTypeDetails RoomMailbox, EquipmentMailbox | ForEach-Object { Get-MailboxCalendarFolder -Identity "$($_.PrimarySmtpAddress):\Calendar" -ErrorAction SilentlyContinue }
Öffentliche Ordner mit Kalenderfunktion
Get-PublicFolder -Recurse | Where-Object {$_.FolderClass -eq "IPF.Appointment"}
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 }
# alle public folder Get-PublicFolder -Recurse -ResultSize Unlimited # Nur Top-Level Get-PublicFolder -ResultSize Unlimited -Recurse | select Name,ParentPath | where-object { $_.ParentPath -eq "\" }
RunspaceId : f6622ea7-e6d2-4528-97b1-036c9298cf3d
Identity : \
Name : IPM_SUBTREE
MailEnabled : False
MailRecipientGuid :
ParentPath :
LostAndFoundFolderOriginalPath :
ContentMailboxName : PFMailbox1
ContentMailboxGuid : 442dc65a-3bbc-471e-afcd-b0244b273847
EformsLocaleId :
PerUserReadStateEnabled : True
EntryId : 000000001A447390AA6611CD9BC800AA002FC45A0300047699F147FA0A4B891FFFB0825125790000000000020000
DumpsterEntryId : 000000001A447390AA6611CD9BC800AA002FC45A0300FF1CBA839DBE6F42B05F589E5BA643340000000000020000
ParentFolder : 000000001A447390AA6611CD9BC800AA002FC45A0300047699F147FA0A4B891FFFB0825125790000000000010000
OrganizationId :
AgeLimit :
RetainDeletedItemsFor :
ProhibitPostQuota : Unlimited
IssueWarningQuota : Unlimited
MaxItemSize : Unlimited
LastMovedTime :
AdminFolderFlags :
FolderSize : 0
HasSubfolders : True
FolderClass :
FolderPath : {}
AssociatedDumpsterFolders :
DefaultFolderType : None
ExtendedFolderFlags : SharedViaExchange
MailboxOwnerId : domain.local/Users/PFMailbox1
IsValid : True
ObjectState : Unchanged
bzw.
RunspaceId : f6622ea7-e6d2-4528-97b1-036c9298cf3d
Identity : \DUMMY-Newsletter
Name : DUMMY-Newsletter
MailEnabled : True
MailRecipientGuid : 2956ec64-1f20-4ee6-a5f2-dbeb2c10b5b1
ParentPath : \
LostAndFoundFolderOriginalPath :
ContentMailboxName : PFMailbox2
ContentMailboxGuid : 70c4457e-a502-4170-bf73-fcb4f17cce2c
EformsLocaleId :
PerUserReadStateEnabled : True
EntryId : 000000001A447390AA6611CD9BC800AA002FC45A0300822DFDE48134CA4A9BB7E1548BC7FBD90000000559DC0000
DumpsterEntryId : 000000001A447390AA6611CD9BC800AA002FC45A0300FF1CBA839DBE6F42B05F589E5BA643340000000000100000
ParentFolder : 000000001A447390AA6611CD9BC800AA002FC45A0300047699F147FA0A4B891FFFB0825125790000000000020000
OrganizationId :
AgeLimit :
RetainDeletedItemsFor :
ProhibitPostQuota : Unlimited
IssueWarningQuota : Unlimited
MaxItemSize : Unlimited
LastMovedTime : 06.10.2023 13:55:05
AdminFolderFlags :
FolderSize : 0
HasSubfolders : False
FolderClass : IPF.Note
FolderPath : {DUMMY-Newsletter}
AssociatedDumpsterFolders :
DefaultFolderType : None
ExtendedFolderFlags : SharedViaExchange, SharedExchangeEver, SharedExchangeWrite, SharedExchangeWriteEver, SharedExchangeValid
MailboxOwnerId : d2000.local/Users/PFMailbox1
IsValid : True
ObjectState : Unchanged
# nur mailaktivierte öffentliche Ordner Get-MailPublicFolder -ResultSize unlimited
RunspaceId : f6622ea7-e6d2-4528-97b1-036c9298cf3d
Contacts : {}
ContentMailbox :
DeliverToMailboxAndForward : False
ExternalEmailAddress : expf:EVENTCONFIG_NOTES1D8919E34D8919E34D8919E34499209C7000011
EntryId :
OnPremisesObjectId :
IgnoreMissingFolderLink : False
ForwardingAddress :
PhoneticDisplayName :
AcceptMessagesOnlyFrom : {}
AcceptMessagesOnlyFromDLMembers : {}
AcceptMessagesOnlyFromSendersOrMembers : {}
AddressListMembership : {}
AdministrativeUnits : {}
Alias : EventConfig_NOTES1
ArbitrationMailbox :
BypassModerationFromSendersOrMembers : {}
OrganizationalUnit : d2000.local/Microsoft Exchange System Objects
CustomAttribute1 :
CustomAttribute10 :
CustomAttribute11 :
CustomAttribute12 :
CustomAttribute13 :
CustomAttribute14 :
CustomAttribute15 :
CustomAttribute2 :
CustomAttribute3 :
CustomAttribute4 :
CustomAttribute5 :
CustomAttribute6 :
CustomAttribute7 :
CustomAttribute8 :
CustomAttribute9 :
ExtensionCustomAttribute1 : {}
ExtensionCustomAttribute2 : {}
ExtensionCustomAttribute3 : {}
ExtensionCustomAttribute4 : {}
ExtensionCustomAttribute5 : {}
DisplayName : EventConfig_NOTES1
EmailAddresses : {smtp:EventConfig_NOTES1@domain.co.at, SMTP:EventConfig_NOTES1@domain.at, X400:C=AT;A=
;P=DUMMY;O=D003A2;S=EventConfig?NOTES1;, FAXMAKER:EventConfig_AKMNOTES1@D003A2.DUMMY.com}
GrantSendOnBehalfTo : {}
ExternalDirectoryObjectId :
HiddenFromAddressListsEnabled : True
LastExchangeChangedTime :
LegacyExchangeDN : /o=DUMMY1/ou=D003A2/cn=Recipients/cn=EVENTCONFIG_NOTES1D8919E34D8919E34D8919E34499209C7000011
MaxSendSize : Unlimited
MaxReceiveSize : Unlimited
ModeratedBy : {}
ModerationEnabled : False
PoliciesIncluded : {87675609-8fa3-4aaf-af06-68bb88d36b4e, {26491cfc-9e50-4857-861b-0cb8df22b5d7}}
PoliciesExcluded : {}
EmailAddressPolicyEnabled : True
PrimarySmtpAddress : EventConfig_NOTES1@domain.at
RecipientType : PublicFolder
RecipientTypeDetails : PublicFolder
RejectMessagesFrom : {}
RejectMessagesFromDLMembers : {}
RejectMessagesFromSendersOrMembers : {}
RequireSenderAuthenticationEnabled : False
SimpleDisplayName :
SendModerationNotifications : Always
UMDtmfMap : {}
WindowsEmailAddress : EventConfig_NOTES1@domain.at
MailTip :
MailTipTranslations : {}
Identity : d2000.local/Microsoft Exchange System Objects/EventConfig_NOTES1
IsValid : True
ExchangeVersion : 0.0 (6.5.6500.0)
Name : EventConfig_NOTES1
DistinguishedName : CN=EventConfig_NOTES1,CN=Microsoft Exchange System Objects,DC=d2000,DC=local
Guid : 3845b437-d154-47ac-b6bf-f3f0b5dedb4b
ObjectCategory : d2000.local/Configuration/Schema/ms-Exch-Public-Folder
ObjectClass : {top, publicFolder}
WhenChanged : 06.05.2024 12:20:17
WhenCreated : 21.05.2002 13:06:02
WhenChangedUTC : 06.05.2024 10:20:17
WhenCreatedUTC : 21.05.2002 11:06:02
OrganizationId :
Id : d2000.local/Microsoft Exchange System Objects/EventConfig_NOTES1
OriginatingServer : dc02.d2000.local
ObjectState : Changed