Technische Probleme behoben! Das Forum ist wieder da. Mehr Infos hier.

Portable Thunderbird mit GPG, TOR und mehr

Dieses Ein-Mann-Hobby-Projekt ist derzeit noch in Arbeit und wird ohne jede Gewähr oder Garantie bereitgestellt.

Bei diesem Projekt handelt es sich um eine portable (also ohne Installation vom USB-Stick direkt ausführbare) Version von Mozilla Thunderbird inklusive OpenPGP-Verschlüsselung. Für die Verschlüsselung wurde die Erweiterung Enigmail integriert, die auf ein ebenfalls im Paket enthaltenes portables Gpg4win für die Verschlüsselungsfunktionen zurückgreift. TorBirdy (für die TOR-Integration) ist derzeit noch nicht enthalten, aber geplant. Der Aufbau dieser portablen Version (Verzeichnisstruktur etc.) wurde absichtlich kompatibel zum portablen Thunderbird von Cashy gehalten, um ggf. einen Umzug zu erleichtern.

Instruktionen zum Selberbauen

Obwohl das Paket, das oben zum Download bereitsteht, nach dem Entpacken direkt nutzbar ist, halte ich es für sinnvoll, den Bauprozess für das Paket und den Quellcode des Loaders hier festzuhalten.

Für das Projekt sollte ein eigener Ordner erstellt werden, in den der Loader gelegt wird. Zusätzlich gehören in dieses Verzeichnis folgende Unterverzeichnisse (der Inhalt wird im folgenden erläutert):

  • GnuPG
  • Thunderbird
  • Profilordner

Thunderbird

Thunderbird findet man auf der Website von Mozilla zum Download, das deutsche Sprachpaket und die Kalender-Erweiterung Lightning sind bereits integriert.

Das Programm wird zuerst ganz normal auf die Festplatte installiert, allerdings nach Abschluss der Installation nicht gestartet. Der Inhalt des Ordners %programfiles(x86)%\Mozilla Thunderbird wird inklusive aller Unterordner in den Thunderbird-Ordner des portablen Programms kopiert.

Da das Programm nicht gestartet wird, wurde auch kein leeres Profil angelegt unter %appdata%\Thunderbird\Profiles angelegt. Der Profilordner wird später beim ersten Start der portablen Applikation befüllt.

Gpg4win

Die aktuelle Version von Gpg4win gibt es auf der Homepage des Gpg4win-Projektes. Die kleinste Version („Vanilla“) sollte reichen, um Thunderbird und Enigmail lauffähig zu bekommen, die größeren Versionen bieten zusätzliche Tools. Ich selbst habe die Komplettversion benutzt.

Das Programm muss ebenfalls zuerst lokal installiert werden. Im Programmverzeichnis %programfiles(x86)\GNU\GnuPG befindet sich eine mkportable.exe, mit deren Hilfe man eine portable Version erstellen kann. Der entsprechende Aufruf lautet mkportable <zielverzeichnis>, bzw mkportable –full <zielverzeichnis>, wenn man eine Vollinstallation vornehmen will. Der Inhalt des von mkportable erstellten Verzeichnisses wandert in den GnuPG-Ordner des portablen Thunderbirds.

In der aktuellen mkportable-Version von Gpg4win 2.3.3 ist ein Bug, der bewirkt, daß das Programm sich über zwei fehlende DLL-Dateien beschwert (libgcc_s_sjlj-1.dll und libstdc++-6.dll). Diese sind zwar vorhanden, aber liegen nicht in dem Unterverzeichnis pub, unter dem mkportable sucht. Um das Problem zu beheben, reicht es, sie in dieses Verzeichnis zu kopieren, danack läuft mkoprtable fehlerfrei durch.

Loader

Beim Loader handelt es sich um ein kompiliertes AutoIt-Script. Eine Batch-Datei hätte es wohl auch getan, aber als kompilierte EXE sieht's cooler aus. Sei's drum, hier der Quelltext:

ThunderbirdGPGLoader.au3
#NoTrayIcon
#AutoIt3Wrapper_Icon=Thunderbird\chrome\icons\default\messengerWindow.ico
$params = IniRead( "ThunderbirdGPGLoader.ini", "Thunderbird", "parameters", "" )
If $cmdline[0] Then $params = $params & " " & $cmdline[1]
$tb_path = @ScriptDir & "\" & IniRead( "ThunderbirdGPGLoader.ini", "Thunderbird", "exe_directory", "Thunderbird" )
$tb_profile = IniRead( "ThunderbirdGPGLoader.ini", "Thunderbird", "profile_directory", "Profilordner" )
$tb_cmdline = $tb_path & "\thunderbird.exe -profile " & $tb_profile & " " & $params
$gpg_path = @ScriptDir & "\" & IniRead( "ThunderbirdGPGLoader.ini", "GnuPG", "exe_directory", "GnuPG\bin" )
$pep_path = @ScriptDir & "\" & IniRead( "ThunderbirdGPGLoader.ini", "pEp", "exe_directory", "pEp\bin" )
$path = EnvGet("path")
EnvSet("path", $gpg_path & ";" & $pep_path & ";" & $path)
If ProcessExists("thunderbird.exe") Then
	$current_process = _ProcessGetLocation("thunderbird.exe")
	If $current_process <> $tb_path & "\thunderbird.exe" Then
		$tb_cmdline = $tb_path & "\thunderbird.exe -no-remote -profile " & $tb_profile & " " & $params
	EndIf
EndIf
Run($tb_cmdline)
ProcessWaitClose("thunderbird.exe")
Sleep(1000)
If ProcessExists("gpg.exe") Then
	$current_process = _ProcessGetLocation("gpg.exe")
	If $current_process <> $gpg_path & "\gpg.exe" Then
		ProcessClose("gpg.exe")
	EndIf
EndIf
If ProcessExists("pep-json-server.exe") Then
	$current_process = _ProcessGetLocation("pep-json-server.exe")
	If $current_process <> $pep_path & "\pep-json-server.exe" Then
		ProcessClose("pep-json-server.exe")
	EndIf
EndIf
ThunderbirdGPGLoader.ini
[Thunderbird]
; Relative path to the installation directory of Thunderbird, default is "Thunderbird".
exe_directory=Thunderbird
; Relative path to the profile folder of Thunderbird, default is "Profilordner".
profile_directory=Profilordner
; command-line parameters for Thunderbird.
parameters=
[GnuPG]
; Relative path to the binaries directory of GnuPG (where gpg.exe is located), default is "GnuPG\bin".
; For older versions, this used to be "GnuPG\pub".
exe_directory=GnuPG\bin
[pEp]
; Relative path to the binaries directory of pEp (where pep-json-server.exe is located), default is "pEp\bin".
exe_directory=pEp\bin

Der Loader tut eigentlich nicht viel mehr, als der lokalen PATH-Variable von Windows den Pfad zum portablen GPG hinzuzufügen, damit Enigmail diese finden kann, und dann den Thunderbird zu starten. Der Pfad zum portablen GPG wird dabei an den Anfang der PATH-Variable angefügt, damit nicht aus Versehen eine lokale Version von GPG verwandt wird. Ebenso erfolgt der Start von Thunderbird mit dem Parameter -profile Profilordner, um den Profilordner der portablen Version anzusprechen und nicht ein lokal auf dem Rechner installiertes Profil einzubinden. Außerdem erfolgt eine Prüfung, ob bereits eine (nicht portable) Instanz von Thunderbird auf dem Rechner gestartet wurde. In diesem Fall wird Thunderbird mit der Option -no-remote geladen. Der Loader liest außerdem Kommandozeilenparameter aus, die ihm übergeben wurden und gibt diese ggf. an Thunderbird weiter.

Falls der Loader kompiliert werden soll, kann als Icon das Thunderbird-Icon unter %programfiles(x86)%\Mozilla Thunderbird\chrome\icons\default\messengerWindow.ico genutzt werden.

Sobald die Ordner nach der obigen Anleitung befüllt sind und der Loader im Hauptverzeichnis liegt, kann der portable Thunderbird gestartet werden - lediglich Enigmail fehlt noch.

Enigmail

Enigmail kann man auf der AddOns-Seite von Mozilla herunterladen. Statt Thunderbird zu starten und die Erweiterung in das Profil zu installieren, übertragen wir sie stattdessen folgendermaßen in den Programm-Ordner: Die .xpi-Datei, die man so erhält, ist ZIP-gepackt und lässt sich dementsprechend entpacken. Der entpackte Inhalt dieser Datei kommt in das Verzeichnis \Thunderbird\distribution\extensions\{847b3a00-7ab1-11d4-8f02-006008948af5}. Beim ersten Start der portablen Applikation wird Enigmail so automatisch in das Profil installiert, bleibt aber erhalten, falls der Profilordner mal geleert (oder ein andere Profil angelegt) wird.

ToDo

  • TorBirdy
  • Checksumme
  • ggf. weitere Extensions

Versionen

Drucken/exportieren