web-dev-qa-db-ja.com

保存された受信トレイの電子メールメッセージを暗号化する方法

受信トレイに12000を超える電子メールメッセージがあり、それらはすべてプレーンテキストであり、それらの電子メールメッセージの一部には添付ファイルが付いています。これらの電子メールメッセージをプレーンテキストから暗号化されたメッセージに暗号化する方法を何週間も探していました。

私は新しく作成されたメッセージを暗号化する方法を完全に知っているので、送信メールのPGP暗号化を提案しないでください。ここでは、プレーンテキストで何年も受信トレイに保存されている既存の電子メールについて話します。

それらをまとめて暗号化できる方法を探しています。すべてのメッセージをダウンロードし、EML形式にエクスポートしました。これらのメッセージを暗号化するのに役立つ任意の形式に変換できます。

メッセージ本文のみを暗号化し、件名は暗号化しないことを検討しています。

ありがとうございました

3
Doe

私は同じ問題を抱えていて、今日は良い解決策を見つけました。

それは私が見つけたprocmail設定に基づいています。元々、受信トレイにすでにある既存のメールではなく、受信メールを暗号化します。

https://www.j3e.de/pgp-mime-encrypt-in-procmail.html (このBjoernに感謝します)

Procmail(受信ファイル)の代わりに既存のメールボックスファイルでスクリプトとして機能するように変更しました。

これらのコマンドは小さくてシンプルで、標準ツールの「formail」を使用してヘッダーと本文をきれいに処理します。

まず、procmailを使用してURLに記述されているように、2つの.gpg-mime-startファイルと.gpg-mime-endファイルを作成する必要があります。また、通常どおり、キーを使用してコマンドラインgpgを設定する必要があります。

これは.gpg-mime-startファイルです:

--MfFXiAuoTsnnDAfX
Content-Type: application/pgp-encrypted
Content-Disposition: attachment

Version: 1

--MfFXiAuoTsnnDAfX
Content-Type: application/octet-stream
Content-Disposition: inline; filename="msg.asc"

最後に空の行が必要です!

これは.gpg-mime-endファイルです:

--MfFXiAuoTsnnDAfX

最初に空の行が必要です!

変更されたスクリプト(gpgmailfile.sh)は次のとおりです。

#!/bin/sh

MYHDRS=`cat $1 | formail -XContent-Type: -XContent-disposition: -XContent-transfer-encoding:`

cat $1 | formail -X "" | formail -I 'Content-Type: multipart/encrypted; protocol="application/pgp-encrypted";boundary="MfFXiAuoTsnnDAfX"' -I Content-transfer-encoding: -I Content-disposition:

{ cat ~/.gpg-mime-start ; { echo "$MYHDRS" ; echo ; cat $1 | formail -I "" ; } | gpg --batch --quiet --always-trust -a -e -R 'Firstname Lastname <[email protected]>' ; cat ~/.gpg-mime-end; }

交換...

Firstname Lastname <[email protected]>

...スクリプト内でgpgキーアドレスを使用します(または「-rsignature ..」を使用します)。

Chmod a + xgpgmailfile.shを使用してスクリプトのパーミッションを設定します

たとえば、メインメールフォルダから「enc」サブフォルダへの単一メールのスクリプトを実行できます(最初に電子メールクライアントに「enc」フォルダを作成します)。

./gpgmailfile.sh /home/user/Maildir/cur/"file123" > /home/user/Maildir/.enc/cur/"file123"

メインフォルダ内のすべてのメールを暗号化する場合は、次の追加のスクリプトを使用します(/ root /の下にない場合は、パスを最初のスクリプトに変更します)。

#!/bin/sh

FILES=/home/user/Maildir/cur/
cd $FILES
for f in *
do
  echo "Processing $f ..."
  /root/gpgmailfile.sh /home/user/Maildir/cur/"$f" > /home/user/Maildir/.enc/cur/"$f"
done

他のフォルダで動作するように変更します。

1
Tobi