私の受信箱には 12,000 件を超えるメール メッセージがあり、それらはすべてプレーン テキストで、その一部には添付ファイルがあります。私は数週間にわたって、それらのメール メッセージをプレーン テキストから暗号化メッセージに暗号化する方法を探してきました。
新しく作成したメッセージを暗号化する方法は十分に理解しているので、送信メールに PGP 暗号化を勧めないでください。ここで私が話しているのは、何年もプレーンテキストで受信トレイに保存されている既存の電子メールについてです。
一括で暗号化できる方法を探しています。すべてのメッセージをダウンロードし、EML 形式でエクスポートしました。メッセージを暗号化するのに役立つ任意の形式に変換できます。
件名ではなくメッセージ本文のみを暗号化したいと考えています。
ありがとう
答え1
私も同じ問題を抱えていましたが、今日は有効な解決策を見つけました。
これは私が見つけた procmail 設定に基づいています。元々は、受信トレイに既にあるメールではなく、受信メールを暗号化します。
https://www.j3e.de/pgp-mime-encrypt-in-procmail.html(ビョルンさん、ありがとう)
procmail (受信ファイル) ではなく既存のメールボックス ファイルでスクリプトとして動作するように変更しました。
これらのコマンドは小さく、シンプルで、標準ツール「formail」を使用してヘッダーと本文を適切に処理します。
まず、URL に記述されているように、procmail を使用して .gpg-mime-start ファイルと .gpg-mime-end ファイルの 2 つを作成する必要があります。そして、通常どおりにキーを使用してコマンド ライン 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 キー アドレスを入力します (または「-r signature..」を使用します)。
chmod a+x gpgmailfile.shでスクリプトの権限を設定します。
たとえば、メインのメール フォルダーから「enc」サブ フォルダーへの 1 つのメールに対してスクリプトを実行できます (最初に電子メール クライアントで「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
他のフォルダーでも動作するように変更します。