Derzeit habe ich einen laufenden Postfix-Server, der eingehende E-Mails über Procmail zustellt. Das funktioniert gut, aber jetzt möchte ich alle eingehenden E-Mails, die mit PGP verschlüsselt sind, automatisch entschlüsseln. Daher habe ich eine Procmail-Regel erstellt, um Gnupg auszulösen.
Dies ist meine aktuelle .procmailrc:
:0 fw
* ^Subject: encryptme
| /usr/bin/gpg --decrypt | mail -s "ENCRYPTED: $subject" [email protected]
Nun wird die E-Mail erfolgreich entschlüsselt und gesendet an[email geschützt]allerdings mit leerem Betreff (in der Mail steht nur "ENCRYPTED: ") und mit der Mailadresse des Servers als Absender. Und natürlich enthält die entschlüsselte Mail Teile des Mailheaders.
Content-Type: multipart/mixed; boundary="713bkotRlnRGA7FAhJANoI0IsDpX3ws8N"
--713bkotRlnRGA7FAhJANoI0IsDpX3ws8N
Content-Type: text/plain; charset=ISO-8859-15
Content-Transfer-Encoding: quoted-printable
Just a test.
--713bkotRlnRGA7FAhJANoI0IsDpX3ws8N--
Gibt es eine Möglichkeit, eingehende E-Mails auf diese Weise automatisch und „sauber“ (nur die entschlüsselte Nachricht) zu entschlüsseln, ohne zusätzliche Software wie GNU Anubis? Und was ist eine gute Regel für Procmail, um das Programm auszulösen (anstelle des Betreffs)?
Ich hoffe, diese Informationen reichen aus, damit mir jemand helfen kann.
Antwort1
Mit anderen Worten: gpg --decrypt
möchte eine Datei, keine E-Mail-Nachricht. Eine E-Mail-Nachricht besteht normalerweise aus mehreren MIME-Teilen (Ihr Beispiel zeigt eine multipart/mixed
mit nur einem einzigen Textteil, aber das Konzept gilt trotzdem), die keine Dateien sind. Sie müssen nur die verschlüsselte Nutzlast, nicht den MIME-Container, an übergeben oder einen Wrapper oder eine Option finden, die beim Parsen des MIME-Wrappers gpg
hilft .gpg
Durch schnelles Googeln wurde ein einfacher Perl-MIME-Wrapper gefunden, der Folgendes kann:
Falls die Verbindung nicht mehr funktioniert, sollte es keine große Herausforderung sein, das Rad neu zu erfinden. Sie müssen lediglich den MIME-Teil identifizieren, der eine verschlüsselte Nutzlast enthält, diesen dekodieren (wahrscheinlich ist er base64
kodiert, es sei denn, er verwendet gpg
die eigene „ASCII-Rüstung“) und ihn an weitergeben gpg
. Die Existenz einer verschlüsselten Nutzlast ist wahrscheinlich ein guter Auslöser, aber vielleicht sollte der Wrapper einfach alles durchlassen, was keine verschlüsselte Nutzlast enthält, und Sie würden alles an den Wrapper weitergeben.
Tangential dazu gibt es nichts, was $subject
in Procmail oder in Ihren Regeln definiert ist. Sie können so etwas tun:
:0
* ^Subject:[ ]\/[^ ].*
{ subject=$MATCH }
... wobei das Leerzeichen zwischen den eckigen Klammern ein Leerzeichen und ein Tabulator sein sollte.