Ab und an kommt es vor, dass man eine Mail aus den Postfächern entfernen muss, beispielsweise weil die Mail so nicht hätte verschickt werden sollen. Erfahrungsgemäß passiert dies häufig bei internen Newslettern. Oft kommt dann auch die Frage auf, ob und wenn ja von wie vielen Empfängern die Mail bereits gelesen wurde. Bei Exchange Servern lässt sich dazu das ReadTracking aktivieren, Somit lässt sich für jeden Empfänger einer Mail prüfen, ob die Mail im Postfach als gelesen markiert wurde.
Das ReadTracking Feature ist in der Standardeinstellung nicht aktiviert und muss daher zunächst eingeschaltet werden:
Set-OrganizationConfig -ReadTrackingEnabled $true
Der oben genannte Befehl aktiviert das ReadTracking für alle neuen Mails, der Gelesen Status von Mails die vor der Aktivierung gesendet wurden, lässt sich also nicht prüfen.
Wenn das ReadTracking aktiviert wurde, können auch Benutzer auf den so erzeugten Zustellbericht zugreifen. In Outlook findet sich dazu bei einer gesendeten Mail die Schaltfläche „Nachrichtenzustellbericht“:
Die Schaltfläche den Browser und ruft in OWA den Zustellbericht ab, hier mal ein Beispiel eines Zustellberichts aus Sicht des Absenders:
Der Zustellbericht erhält Informationen zu jedem Empfänger, das ReadTracking funktioniert nur innerhalb der Exchange Organisation. Ob ein externer Empfänger die Mail gelesen hat, lässt sich auf diesem Weg also nicht prüfen.
Mit der Exchange Shell bekommen aber auch Admins die Möglichkeit den Gelesen Status für eine Mail abzufragen. Damit dies funktioniert, wird zunächst einmal diese kleine PowerShell Funktion benötigt:
function Get-MessageReadEvents{
Param(
[parameter(Mandatory=$true,Position=1)]
[string]$Mailbox,
[parameter(Mandatory=$true,Position=1)]
[string]$MessageId
)
$Message = Search-MessageTrackingReport -Identity $Mailbox -MessageId $MessageID -BypassDelegateChecking
$TrackingReport = Get-MessageTrackingReport -Identity $Message.MessageTrackingReportId -BypassDelegateChecking
$RecipienttrackingEvents = @($TrackingReport | Select -ExpandProperty RecipientTrackingEvents)
$ReadEvents = @()
$Recipients = $RecipienttrackingEvents | select RecipientAddress
foreach ($Recipient in $Recipients) {
$Events = Get-MessageTrackingReport -Identity $Message.MessageTrackingReportId -BypassDelegateChecking -RecipientPathFilter $Recipient.RecipientAddress -ReportTemplate RecipientPath
$ReadEventsline = $Events.RecipientTrackingEvents[-1] | Select RecipientAddress,Status,EventDescription
$ReadEvents += $ReadEventsline
}
return $ReadEvents
}
Die Funktion kann einfach in die Exchange Shell eingefügt werden:
Jetzt ist die Funktion „Get-MessageReadEvents“ verfügbar. „Get-MessageReadEvents“ erwartet als Parameter den Absender und die MessageID der Mail für die der Zustellbericht angezeigt werden soll, hier mal ein Bespiel für eine ungelesene Mail:
Nachdem die Mail als Gelesen markiert wurde, wird dies auch im ReadTracking Report dargestellt:
Die MessageID kann aus der MessageTracking Logs ausgelesen werden, dazu kann beispielsweise der folgende Befehl verwendet werden:
Get-MessageTrackingLog -Sender frank@frankysweb.de -Start (get-date).AddMinutes(-10) -EventId Send | fl sender,recipients,messagesubject,messageid
Der ReadTracking Report kann dann anhand des Absenders und der der MessageID abgefragt werden:
Get-MessageReadEvents -Mailbox frank@frankysweb.de -MessageId e3b6194a63a241dc8ea207cc31d7c84f@frankysweb.de
Mehr Beispiele für die Nachrichtenverfolgung finden sich unter den folgenden Artikeln:
Hallo Frank,
danke für die Anleitung, leider kommt bei mir, wenn ich den Zustellbericht öffnen will:
Server Error in ‚/‘ Application.
The resource cannot be found.
Description: HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed, had its name changed, or is temporarily unavailable. Please review the following URL and make sure that it is spelled correctly.
Requested URL: /options/ecp/PersonalSettings/DeliveryReport.aspx
Hast du eine Idee was das Problem sein kann? Sind virtuelle Verzeichnisse falsch im IIS?
Habe Exchange 2016
Hat jemand Erfahrung, wie groß der Performance Impact ausfällt?
Oder ist dies eher zu vernachlässigen?
Danke für den Artikel – wie verhält sich die Option bezüglich der Privatsühäre und Datenschutz.
Die Option kann genutzt werden, um jemand zu überwachen, ob er die Mail gelesen hat oder nicht.
Moin,
ich wollte es mal testen. Erstmal hatte ich das Modul hinzugefügt:
Add-PSSnapin Microsoft.Exchange.Management.PowerShell.SnapIn
Danach stand mir der Befehl Get-OrganizationConfig zur Verfügung. Der Parameter -ReadTrackingEnabled wir mir aber nicht angezeigt und beim Ausprobieren mit einer Fehlermeldung quittiert:
et-OrganizationConfig : Es wurde kein Parameter gefunden, der dem Parameternamen „ReadTrackingEnabled“ entspricht.
In Zeile:1 Zeichen:24
+ Get-OrganizationConfig -ReadTrackingEnabled $true
+ ~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Get-OrganizationConfig], ParameterBindingException
+ FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.Exchange.Management.SystemConfigurationTasks.GetOrganizationConfig
Server: Version 1809 (17763.1817)
Exchange: 15.02.0792.013
Powershell Version: 5.1.17763.1490
Jemand eine Idee?
MfG,
Blackii