KMail: PGP/MIME einrichten und nutzen

Autor: B.Sc. Inf. Dominik Schulz <lkml@ds.gauner.org>
Version: 0.1.566
Date:2008-11-30
Copyright: This document is released under the terms of the GNU Free Documentation License.
Status: Draft
Abstract:Dieser Text beschreibt wie man PGP/MIME unter KMail einrichten kann.

English Version / Englische Version

Inhalt

Mit PGP/MIME steht der Nachfolger der veralteten, "inline PGP" genannten, Methode zur Verfügung um Emails mit PGP zu verschlüsseln und zu signieren. Der KDE Mailclient bietet seit Version 1.5 (KDE 3.1) die Möglichkeit PGP/MIME zu nutzen. Leider ist die Einrichtung alles andere als intuitiv. Ich versuche hier eine verständliche Anleitung dafür zu geben. Diese Beschreibung basiert auf einer Debian Distribution, die Schritte sollten sich jedoch auch auf beliebige andere Distributionen übertragen lassen wenn man die entsprechenden Pakete heraus sucht.

Benötigte Pakete

Zunächst sollten die benötigten Pakete installiert werden. Neben KDE sind das natürlich KMail sowie die folgenden Pakete:

Unter Debian können Sie die Pakete einfach mit aptitude installieren:

aptitude install kgpg gpgsm kleopatra gnupg-agent pinentry-qt

GnuPG und gpg-Agent konfigurieren

Damit man überhaupt die Möglichkeit erhällt das Mantra bzw. die Passphrase über ein GUI einzugeben muss GnuPG auf die Nutzung des Agenten eingestellt werden, der von da an das Mantra zwischenspeichert. Dazu wird in der Datei ~/.gnupg/gpg.conf die folgende Zeile eingefügt.

use-agent

Damit der Agent das Passwort nicht ebenfalls auf der Kommandozeile erwartet wird ein sog. Pinentry Programm verwendet. Dies muss in der entsprechenden Konfiguration eingestellt werden. Dazu wird die Datei ~/.gnupg/gpg-agent.conf bearbeitet und ganz am Ende folgenden Zeilen eingefügt.

pinentry-program /usr/bin/pinentry-qt
no-grab
default-cache-ttl 1800

Der Pfad zu pinentry-qt muss ggf. angepasst werden. Mit which pinentry-qt sollte sich herausfinden lassen wo das Programm liegt. In der letzten Zeile lässt sich einstellen wie lange das Passwort zwischengespeichert wird.

Ein Screenshot von Pinentry QT

Dieses Bild zeigt den Dialog von Pinentry-Qt beim entschlüsseln einer Nachricht.

Damit man jetzt GnuPG mit dem Agenten nutzen kann muss letzterer zunächst gestartet werden.:

eval "$(gpg-agent --daemon)"

Der Befehl sorgt dafür, dass der Befehl in den Klammern ausgeführt und die Rückgabe von der Shell ausgewertet wird. Das ist wichtig, da der Agent beim Start die Adresse zu seinem Socket als Umgebungsvariable zurück gibt und GnuPG diese Information dirgend benötigt um mit dem Agenten zu kommunizieren. Hier gibt es allerdings eine kleine Falle. Der Befehl setzt die Umgebungsvariable GPG_AGENT_INFO nur in der aktuellen Shell (und alle abgeleiteten Shells). Wenn man den Befehl allerdings in einer Konsole ausführt und später KMail ganz normal über das K-Menü startet weiß KMail nichts von der Umgebungsvariable, die ja nur in der Konsole gesetzt ist, und die Benutzung von GnuPG schlägt fehl, da KMail (zu recht) behauptet, das eingegebene Mantra wäre falsch obwohl man nie danach gefragt wurde. Dieses Problem hat bei mir lange dafür gesorgt, dass ich GnuPG nicht mit KMail benutzen konnte. Daher sollte man als nächstes ein Skript in ~/.kde/env/ anlegen. Der Name ist egal, ich schlage gpgagent.sh vor. Dort schreibt man einfach die Zeile von oben rein:

eval "$(gpg-agent --deamon)"

Alle Dateien in ~/.kde/env/ werden beim start von KDE "gesourced".

Als nächstes sollte man, immer noch in der Shell in der man eval "$(gpg-agent --deamon)" ausgeführt hat, testen ob GnuPG mit dem Agenten zusammenarbeitet. Dazu benötigt man seine eigene Schlüssel-ID. Die findest man mit gpg -K raus. Der Parameter -K listet alle privaten Schlüssel auf. Mit folgendem Befehl signiert man den Text test und überprüft daraufhin die eigene Signatur. Dabei sollte zweimal der Dialog von pinentry-qt auftauchen. Wenn das funktioniert hat, dann sind GnuPG, der Agent und Pinentry richtig konfiguriert. Man muss natürlich seine eigene Schlüssel ID einsetzen.

echo "test" | gpg -ase -r 0xDEADBEEF | gpg

Wenn man jetzt allerdings KMail, wie ober erwähnt, ausserhalb der Shell startet, dann wird es immer noch nicht funktionieren. Also entweder KMail aus der Shell heraus öffnen oder am besten: KDE beenden und sich neu einloggen. Dann muss es auf jeden Fall gehen. Fall KMail nicht nach dem Mantra fragt kann man einfach eine Konsole aufmachen und nachschauen ob GPG_AGENT_INFO gesetzt ist. Falls nicht ist irgendwas schief gegangen.

In KMail testen

In KMail sollte man sicherstellen, dass das OpenPGP Backend aktiv ist. Dazu schaut man unter "Einstellungen -> KMail einrichten -> Sicherheit -> Kryptographie-Module" nach ob bei OpenPGP ein Haken gesetzt ist. Ab jetzt sollte es möglich sein mit KMail Nachrichten zu ver- und entschlüsseln sowie mit Signaturen zu arbeiten.

Ein Screenshot der Kryptographie-Module

Dieses Bild zeigt die Kryptographie-Module von KMail.

Abschlussbemerkung

Dieser Text basiert auf dem Text "KMail: PGP/MIME" von Marc Mutz und Bernhard Reiter unter http://kontact.kde.org/kmail/kmail-pgpmime-howto.php. Sollten Sie Fehler oder Ungenauigkeiten in diesem Text feststellen, so weisen Sie den Autor bitte darauf hin. Weitergehende Hilfe finden Sie auch unter KMail Development List <kmail-devel@kde.org>.