Das Entschlüsseln eingehender E-Mails und anschließende Verschlüsseln mit dem internen Schlüsselmaterial des/der Empfänger(s) ist zum Beispiel durch folgenden Code zu gewährleisten:
Zeile |
Code |
|---|---|
01 |
# Begin: Custom commands for incoming e-mails AFTER decryption |
02 |
log(1,'Begin: Custom commands for incoming e-mails AFTER decryption'); |
|
|
03 |
# Begin: Encrypt decrypted e-mails to internal users |
04 |
log(1,'Begin: Encrypt decrypted e-mails to internal users'); |
|
|
05 |
if(compare('subject','match','\[secure\])) { |
06 |
$IME_encrypt; |
07 |
} |
|
|
08 |
log(1,'End: Encrypt decrypted e-mails to internal users'); |
09 |
# End: Encrypt decrypted e-mails to internal users |
|
|
10 |
log(1,'End: Custom commands for incoming e-mails AFTER decryption'); |
11 |
# End: Custom commands for incoming e-mails AFTER decryption |
Dabei werden zunächst eingehende, durch das SEPPmail Secure E-Mail Gateway entschlüsselte Nachrichten am entsprechenden Kennzeichen ([secure]) erkannt und über das zu definierende Makro $IME_encrypt nach intern verschlüsselt.
Der Code des Makros $IME_encrypt könnte dabei wie folgt lauten:
Zeile |
Code |
|---|---|
01 |
# Begin: Custom macros and commands for all e-mails BEFORE processing |
02 |
log(1,'Begin: Custom macros and commands for all e-mails BEFORE processing'); |
|
|
03 |
IME_encrypt = { |
04 |
# Begin: IME encrypt |
05 |
ldap_getcerts('ldaps://directory.meinefirma.tld;;;ou=pki-participant,dc=pki,dc=meinefirma,dc=tld'); |
06 |
if (smime_keys_avail()) { |
07 |
log(1,'S/MIME certificate available for recipient $to'); |
08 |
if (encrypt_smime('true')) { |
09 |
log(1,'Encryption successful'); |
10 |
} |
11 |
} else { |
12 |
if (!webmail_keys_avail()) { |
13 |
log(1,'no GINA account available, creating new account'); |
14 |
webmail_keys_gen('','0'); |
15 |
} |
16 |
if (encrypt_webmail()) { |
17 |
log(1,'Encryption successful'); |
18 |
} |
19 |
} |
20 |
# End: IME encrypt |
21 |
}; |
|
|
22 |
log(1,'End: Custom macros and commands for all e-mails BEFORE processing'); |
23 |
# End: Custom macros and commands for all e-mails BEFORE processing |
Natürlich sind an dieser Stelle zahlreiche Variationen denkbar. So könnte beispielsweise das Verschlüsseln nach intern von der Zugehörigkeit zu einer AD-Gruppe oder dem bloßen Vorhandensein eines internen Schlüssels abhängig gemacht werden.
Auch der Umgang mit S/MIME Signaturen kann an dieser Stelle gegebenenfalls explizit definiert werden.
Um zu verhindern, dass Outlook beim Antworten auf eine E-Mail verschlüsselt, was an eine externe Adresse mangels im Outlook verfügbarem Zertifikat fehlschlagen würde, muss im AD eine Richtlinie eingerichtet sein, welche das Aktivieren der Verschlüsselung im Outlook unterdrückt.
Da das Add-In programmiertechnisch von dieser Richtlinie nicht betroffen ist, funktioniert dieses dennoch, sodass die Schaltfläche „Auch intern verschlüsseln“ weiterhin funktionsfähig bleibt.
Erhält ein Empfänger im Outlook eine verschlüsselte E-Mail mit gesetztem Vertraulichkeits-Flag (Header sensitivity=companyconfidential), so setzt Outlook selbstständig die Verschlüsselung auf „AN“.
Das Add-In ignoriert jedoch das Outlook Kennzeichen zum Verarbeiten der E-Mail, sofern eine Schaltfläche für Verschlüsseln oder Signieren aktiv ist, und unterdrückt somit das Outlook seitige Verschlüsseln / Signieren.
Wird jedoch ohne aktive Schaltfläche für ein kryptographisches Behandeln der E-Mail geantwortet, so würde Outlook auf eine verschlüsselte E-Mail versuchen verschlüsselt zu antworten.