1. openpgp installieren

sudo apt update && sudo apt install gnupg gnupg-agent

2. Ordner Struktur erstellen

Man braucht einen Ordner im .well-known Verzeichnis namens “openpgpkey”. In diesem Ordner braucht man einen Ordner namens “hu” und eine Leere Datei namens “policy”. Bei Mailcow ist das .well-known Verzeichnis hier zu finden “/opt/mailcow-dockerized/data/web/.well-known”.

mkdir /opt/mailcow-dockerized/data/web/.well-known/openpgpkey
mkdir /opt/mailcow-dockerized/data/web/.well-known/openpgpkey/hu
touch /opt/mailcow-dockerized/data/web/.well-known/openpgpkey/policy

In dem Ordner “hu” werden später die WKD Dateien die mit der Hashed User ID erstellt wurden abgelegt. Die Policy Datei ist nur dazu da um anderen zu zeigen das man die Verschlüsselung anbietet.

3. PGP-Key erstellen

gpg --full-generate-key

PGP Schlüsses Hier habe ich die 9 ausgewählt werden


Hier habe ich die 1 ausgewählt werden


Hier muss ausgewählt werden wie lange der Key gültig ist. Ich habe hier 1y genommen für 1 Jahr.


Hier muss der name hinterlegt werden sowie die E-Mail Addresse.


Dann wird man aufgefordert eine Passphrase zu hinterlegen. Beachte das diese jedes mal abgefragt wird wenn du eine E-Mail entschlüsseln willst.


Diesen Schlüssel muss man jetzt exportieren um mit ihm später E-Mails zu verschlüsseln oder zu entschlüsseln. Diesen muss man Später z.B. in Thunderbird hinterlegen. Dazu braucht man die Schlüssel ID

gpg --list-secret-keys --keyid-format=long

Die Schlüssel ID ist der Teil hinter dem ed25519/ Mit der Schlüssel ID kann man nun den Privaten Key exportieren.

gpg --armor --export-secret-keys DEINE_SCHLUESSEL_ID_ODER_EMAIL > ~/mein_privater_schluessel_backup.asc

Der Schlüssel wird jetzt in einer Datei mit der Endung .asc hinterlegt.


Nun muss noch die Hashed User ID berechnet werden.

gpg --with-wkd-hash --fingerprint rocho@rochoellocho.org

Den Hash finden wir in der Zeile uid vor @rochoellocho.org: Mit diesem hash erzeugen wir eine WKD-Datei:

gpg --no-armor --export rocho@rochoellocho.org > <Hash-wert>

Diese Datei muss nun in dem Ordner /opt/mailcow-dockerized/data/web/.well-known/openpgpkey/hu/hinterlegt werden.

4. Nginx CORS Header

Damit andere E-Mail Server sehen das du verschlüsselung anbietest musst eine location in Nginx konfigurieren die den “Access-Control-Allow-Origin” erlaubt. Dazu muss in Mailcow eine neue Datei angelegt werden:

nano /opt/mailcow-dockerized/data/conf/nginx/site.wkd.custom
location ~ /.well-known/openpgpkey/hu/(.*) {
    # --- CORS-Header ---
    add_header Access-Control-Allow-Origin "*";
}
location ~ /.well-known/openpgpkey/policy(.*) {
    # --- CORS-Header ---
    add_header Access-Control-Allow-Origin "*";
}

5. Check

Nun kann man per WKD Chekcker checken ob alles richtig Konfiguriert ist. Hier sollte alles auf Grün sein.