Matthias Aevermann Systemberatung

« | Home | »

E-Mail in Outlook unverschlüsselt ablegen

In Gesprächen mit Kunden wurde mehrfach die Anforderung gestellt, verschlüsselte S/MIME Nachrichten aus Outlook unverschlüsselt zu speichern oder abzulegen. Hintergrund ist meist der Wunsch, die Nachrichten in einem anderen System weiterverarbeiten zu wollen oder die Inhalte anderen zugänglich zu machen.

Im Folgenden möchte ich 3 technische Möglichkeiten zur unverschlüsselten Speicherung von Nachrichten darstellen.
Die Nutzung sollte allerdings gut überlegt sein. Die Verschlüsselung gewährleistet die Vertraulichkeit von Informationen und wurde vom Absender bewusst aktiviert. Vor einer unverschlüsselten Speicherung sollten geltende Sicherheitsleitlinien geprüft werden.

Für alle 3 im Folgenden dargestellten Ansätze gilt, dass der Mail-Header unverändert bleibt und die Historie der Mails somit nachvollziehbar bleibt.

Unverschlüsseltes Speichern in Outlook 2010

Nutzer von PGP kennen die Funktion schon länger, nach dem Öffnen einer verschlüsselten Mail kann man diese nun auch in Outlook 2010 unverschlüsselt abspeichern. Gehen Sie wie folgt vor:

  1. Öffnen Sie die Verschlüsselte Mail.
  2. Rufen Sie über den Menüpunkt “Datei” die “Eigenschaften” dieser Mail auf.
  3. Entfernen Sie anschließend das Häkchen “Nachrichteninhalte und Anlagen verschlüsseln”
  4. Klicken Sie auf Schließen und speichern Sie die Mail.

Die Mail liegt nun dauerhaft unverschlüsselt im Postfach, so als ob sie bereits unverschlüsselt angekommen wäre. Leider ändert sich nicht in allen Fällen das Outlook Symbol, wenn die Mail vor dem Entschlüsseln beantwortet oder weitergeleitet worden ist, ändert sich das Symbol nicht.

Um die Funktion zu aktivieren muss in der Registry der folgende DWORD-32 Wert eingefügt werden und Outlook anschließend neu gestartet werden:
HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Outlook\Security
“AllowRecvMsgDecryption”=dword:00000001

Wenn der Wert nicht gesetzt ist der Haken zum unverschlüsselten Speichern ausgegraut.

 

Mails über Powershell unverschlüsselt speichern

Neben der Möglichkeit zur unverschlüsselten Speicherung in Outlook bietet auch Powershell eine Möglichkeit zur unverschlüsselten Speicherung über das folgende Powershell-Skript:
[System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") | Out-Null
$notes = "Drill down into subfolders?`r`rThis works for Outlook 2010 at least.`rMake sure to have Outlook running.`rand manually open an encrypted email before running this script.`r(this will cache your pin# so it will apply to scripted access)"
$recursive = [Windows.Forms.MessageBox]::Show($notes, "Process Subfolders?", "yesnocancel")
if ($recursive -eq "Cancel") { exit }
$outlook = new-object -com Outlook.Application
$f = $outlook.Session.PickFolder()
if ($f -eq $null) { exit }
$PR_SECURITY_FLAGS = "http://schemas.microsoft.com/mapi/proptag/0x6E010003"
$cr = [char]0x2028
function RemoveCrypto($folder)
{
$txt.AppendText($folder.folderpath + $cr);
if ($recursive -eq "Yes") { $folder.folders | foreach-object { RemoveCrypto($_) } }
$folder.items | foreach-object {
$mailitem = $_
try {
############################################
# here's the beef. too easy!
# thanks to this post: http://support.microsoft.com/kb/2636465
$mailitem.PropertyAccessor.SetProperty($PR_SECURITY_FLAGS, 0)
$mailitem.save()
############################################
}
catch {
$txt.AppendText($mailitem.subject + $cr);
}
}
}
# Create Window
$form = new-object System.Windows.Forms.Form
$form.Size = new-object System.Drawing.Size @(600,600)
$form.topmost = $true
$form.text = "Folder progress & messages that couldn't be decrypted"
###############################################################
# this is what kicks off the loop
$form.add_shown({ RemoveCrypto($f) })
###############################################################

$txt = new-object System.Windows.Forms.RichTextBox
$txt.Dock = "Fill"
$txt.AutoSize = "True"
$txt.Font = new-object System.Drawing.Font("cambria", 13)
$form.Controls.Add($txt)
$close = New-Object System.Windows.Forms.Button
$close.Dock = "Bottom"
$close.AutoSize = "True"
$close.Text = "Close"
$close.add_click({
$form.Close()
})
$form.Controls.Add($close)
# Show window
$form.showdialog()
$form.dispose()

Eingefügt aus <http://www.beejblog.com/2012/03/outlook-bulk-remove-encryption.html>

Das Besondere ist hier, dass man alle Mails in einem Ordner entschlüsseln kann, es ist auch die Bearbeitung inklusive der Unterverzeichnisse möglich. Das Skript funktioniert sowohl unter Outlook 2007 und Outlook 2010. Bei verschlüsselten und signierten S/MIME Nachrichten entfernt es allerdings auch den Flag für die digitale Signatur.

Im Skript ist als Quelle für die Nutzung des Attributes PR_SECURITY_FLAGS der Microsoft Knowledge Base  Eintrag http://support.microsoft.com/kb/2636465 genannt. Dieser ist auch Grundlage für die letzte der 3 Möglichkeiten.

 

Outlook Makro zum unverschlüsselten Speicherung

Das Script in dem KB Artikel “How to sign or encrypt mail messages programmatically” erzeugt eine Signierte und verschlüsselte E-Mail in VBA.
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
If MsgBox("Add signature and encryption using the object model?", vbYesNo) = vbYes Then
Const PR_SECURITY_FLAGS = "http://schemas.microsoft.com/mapi/proptag/0x6E010003"
Dim oProp As Long
oProp = CLng(Item.PropertyAccessor.GetProperty(PR_SECURITY_FLAGS))
' You can use this to verify the property's flag compared to
' what was set in Outlook.
Debug.Print "Original flag value is: " & oProp
uFlags = 0
ulFlags = ulFlags Or &H1 ' Add the encrypted flag
ulFlags = ulFlags Or &H2 ' Add the signed flag
Item.PropertyAccessor.SetProperty PR_SECURITY_FLAGS, ulFlags
Debug.Print "Updated flag value is: " & ulFlags
End If
End Sub

Eingefügt aus <http://support.microsoft.com/kb/2636465>

Mit ein paar Anpassungen kann man das Beispielsskript allerdings als VBA Makro  nutzen, um eine bereits geöffnete,  verschlüsselte E-Mail unverschlüsselt abzuspeichern
Private Sub Remove-SMIME()
If MsgBox("Remove S/MIME security?", vbYesNo) = vbYes Then
Const PR_SECURITY_FLAGS = "http://schemas.microsoft.com/mapi/proptag/0x6E010003"
Dim oProp As Long
Dim myItem As MailItem
Set myItem = Application.ActiveInspector.currentItem
ulFlags = 0
myItem.PropertyAccessor.SetProperty PR_SECURITY_FLAGS, ulFlags
myItem.Save
End If
End Sub

Die Einschränkungen für das Powershell gelten auch hier, das Skript dient nicht nur der unverschlüsselten Speicherung, es entfernt alle S/MIME Einstellungen.

 

Matthias Aevermann

08.06.2014

 

 

Die dargestellten Inhalte und Code-Beispiele dienen der Darstellung der technischen Möglichkeiten, die Verwendung findet auf eigene Gefahr statt.