Em tantas palavras, gpg --decrypt quer um arquivo, não uma mensagem de e-mail. Uma mensagem de email normalmente consiste em várias partes MIME (seu exemplo mostra um multipart/mixed com apenas uma parte do corpo, mas o conceito ainda é válido), que não são arquivos. Você precisa passar apenas a carga criptografada, não o contêiner MIME, para gpg ou encontrar um wrapper ou opção que ajude gpg analisar o wrapper MIME.
O Quick googling criou um simples wrapper Perl MIME que faz isso:
No caso do link ficar ruim, reinventar a mesma roda novamente não deve ser um desafio significativo; Basicamente, você precisa identificar a parte MIME que contém uma carga criptografada, decodificá-la (provavelmente base64 codificado, a menos que use a "armadura ASCII" de gpg ) e passá-la para gpg . A existência de uma carga criptografada provavelmente é um bom gatilho, mas talvez o wrapper deva simplesmente passar por qualquer coisa que não contenha uma carga criptografada, e você alimentaria tudo para o wrapper.
Tangencialmente, não há nada que defina $subject no Procmail ou nas suas regras. Você pode fazer algo assim:
:0
* ^Subject:[ ]\/[^ ].*
{ subject=$MATCH }
... onde o espaço entre os colchetes deve ser um espaço e uma tabulação.