web-dev-qa-db-ja.com

procmailを使用して受信pgpメールを復号化する

現在、procmailを介して受信メールを配信するPostfixサーバーを実行しています。これは問題なく機能しますが、pgpで自動的に暗号化された受信メールを復号化したいと思います。そこで、gnupgをトリガーするprocmailルールを作成しました。

これは私の現在の.procmailrcです:

:0 fw
* ^Subject: encryptme
| /usr/bin/gpg --decrypt | mail -s "ENCRYPTED: $subject" [email protected]

これで、メールは正常に復号化され、my @ email.comに送信されますが、件名は空で(メールには「ENCRYPTED:」のみが表示されます)、送信者としてサーバーの電子メールアドレスが使用されます。そしてもちろん、復号化されたメールにはメールヘッダーの一部が含まれています。

Content-Type: multipart/mixed; boundary="713bkotRlnRGA7FAhJANoI0IsDpX3ws8N"

--713bkotRlnRGA7FAhJANoI0IsDpX3ws8N
Content-Type: text/plain; charset=ISO-8859-15
Content-Transfer-Encoding: quoted-printable

Just a test.

--713bkotRlnRGA7FAhJANoI0IsDpX3ws8N--

GNU Anubisのような追加のソフトウェアなしで、受信メールをこの方法で自動的に「クリーン」(復号化されたメッセージのみ)で復号化する可能性はありますか?主題の挿入)?

この情報が誰かが私を助けるのに十分であることを願っています。

2
user2626702

非常に多くの言葉で、gpg --decryptは電子メールメッセージではなくファイルを望んでいます。電子メールメッセージは通常、ファイルではない複数のMIME部分で構成されます(この例では、本文部分が1つだけのmultipart/mixedが示されていますが、概念は引き続き有効です)。 MIMEコンテナではなく、暗号化されたペイロードのみをgpgに渡すか、gpgがMIMEラッパーを解析するのに役立つラッパーまたはオプションを見つける必要があります。

クイックグーグルはこれを行う単純なPerlMIMEラッパーを見つけました:

リンクが悪くなった場合、同じホイールを再発明することは重要な課題ではありません。基本的に、暗号化されたペイロードを含むMIME部分を識別し、デコードして(gpg独自の「ASCIIアーマー」を使用しない限り、おそらくbase64エンコードされます)、それをgpg。暗号化されたペイロードの存在はおそらく良いトリガーですが、おそらくラッパーは暗号化されたペイロードを含まないものをすべて通過する必要があり、すべてをラッパーにフィードします。

正直なところ、Procmailまたはルールで$subjectを定義するものはありません。あなたはこのようなことをすることができます:

:0
* ^Subject:[    ]\/[^   ].*
{ subject=$MATCH }

...角括弧の間の空白は、スペースとタブである必要があります。

1
tripleee