Eingangsverschlüsselung bei Dovecot wie bei Posteo

Die Verschlüsselung der eigenen Emails, damit niemand sonst sie lesen kann, ist sehr wichtig. Selbst wer „nichts zu verbergen“ hat, für den sollte Sicherheit ganz oben stehen. So wird bspw. auf fast jeder Webseite das Passwort per Email zurückgesetzt. Jedoch gibt es ein Problem. Viele Nutzer oder Anbieter verschicken die Emails an einen nicht verschlüsselt und somit liegen die Mails bei beiden Parteien unverschlüsselt.
Der Email-Provider Posteo, später mailbox.org ebenso, hat dieses Problem ziemlich elegant gelöst. Via Webinterface hinterlegt der User seinen public S/MIME oder OpenPGP Schlüssel und der Mailserver verschlüsselt alle neuen eingehenden, nicht verschlüsselten Nachrichten automatisch mit diesem. Posteo nennt dies Eingangsverschlüsselung.

[…] Unsere Eingangsverschlüsselung verschlüsselt alle neu eingehenden E-Mails mit S/MIME oder PGP: Unabhängig davon, ob der Absender einer E-Mail diese ursprünglich verschlüsselt hatte oder nicht.
Die Eingangsverschlüsselung ist ein zusätzlicher Schutz für Ihre gespeicherten E-Mails. Da die E-Mails aber erst verschlüsselt werden, wenn sie unsere Server erreichen, ist die Eingangsverschlüsselung kein Ersatz für die vollständige Ende-zu-Ende-Verschlüsselung, die bereits beim Absender einer E-Mail ansetzt und die E-Mail auch auf ihrem Weg durch das Internet schützt. Auch vor einer richterlich angeordneten Überwachungsmaßnahme (TKÜ) schützt sie deshalb nicht.

https://posteo.de/site/verschluesselung

Posteo macht allerdings transparent klar, dass dies kein vollständiger Ersatz für E2EE ist! Die Nachrichten werden nach wie vor bei der anderen Partei unverschlüsselt auf der Festplatte des Servers und meist auch des Clients gespeichert. Außerdem erhält der eigene Mailserver die Nachricht noch ummer unverschlüsselt und verschlüsselt diese erst im Nachhinein. Somit ist es kein Schutz, sollte man bspw. durch eine TKÜ Anordnung überwacht werden. Da hilft nur, wenn beide Parteien von vornherein OpenPGP bzw. S/MIME nutzen.

Eingangsverschlüsselung in eigener Umsetzung

Da ich gerne bastel und programmiere wollte ich die Eingangsverschlüsselung mal selber umsetzen. Ein fertiges Perl Skript ist bereits auf github und gitlab zu finden, allerdings ist es mir zu outdated, die Schlüssel müssen via gpg cli bekannt sein und es gibt natürlich keine ldap und/oder mysql Umsetzung.

Also habe ich mich mal darangesetzt und ein Go Programm geschrieben mit LDAP Anbindung, passend zu meinen letzten Artikeln. Das Programm ist öffentlich auf meinem Git zu finden. Durch Sieve Filter wird das Go Programm aufgerufen.

Für Dovecot muss nicht viel konfiguriert werden.

/etc/dovecot/dovecot.conf
plugin {
  sieve_plugins = sieve_imapsieve sieve_extprograms  # sieve_extprograms sollte unter Debian bei dovecot-sieve mit kommen
  sieve_before = /var/vmail/sieve/global/spam-global.sieve  # Sollte bereits existieren!
  sieve_before2 = /var/vmail/sieve/global/inbox-encryption.sieve

  sieve_filter_bin_dir = /etc/dovecot/sieve-filters
  sieve_global_extensions = +vnd.dovecot.pipe +vnd.dovecot.filter # +vnd.dovecot.pipe sollte durch Spamfilter Regeln existieren
}
/var/vmail/sieve/global/inbox-encryption.sieve
require ["variables", "envelope", "vnd.dovecot.filter"];

if envelope :matches "to" "*" {
        set :lower "my_recipient" "${1}";
        filter "gpgit" "${my_recipient}";
}

Go installieren

cd /tmp
wget https://dl.google.com/go/go1.13.4.linux-amd64.tar.gz
sudo tar -C /usr/local -xvzf go1.13.4.linux-amd64.tar.gz
~/.profile
export  PATH=$PATH:/usr/local/go/bin
export GOPATH="$HOME/go"
export GOBIN="$GOPATH/bin"

Mit source ~/.profile die neuen Umgebungsvariablen laden.

Jetzt noch das Go Programm kompilieren und anschließend in den Pfad sieve_filter_bin_dir der bei dovecot eingestellt ist hinterlegen. Ein chmod +x nicht vergessen!

cd ~
go get -u git.gurkengewuerz.de/Gurkengewuerz/gpgit
mkdir /etc/dovecot/sieve-filters
cp ~/go/bin/gpgit /etc/dovecot/sieve-filters/
chmod +x /etc/dovecot/sieve-filters/gpgit

In dem gleichen Pfad dann die config.ini ablegen und konfigurieren. Hier wird unter anderem die LDAP Adresse festgelegt und die Search Filter für LDAP.
Abschließend das LDAP Schema für PGP importieren und den/dem LDAP User die Atribute pgpEnabled = True und pgpKey = *HIER ÖFFENTLICHEN SCHLÜSSEL DES USER* hinterlegen.

Schreiben Sie einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert