我的收件匣中有超過 12000 封電子郵件,全部為純文本,其中一些電子郵件帶有附件。幾週來我一直在尋找一種將這些電子郵件從純文字加密為加密訊息的方法。
請不要建議對外寄郵件進行 PGP 加密,因為我完全了解如何加密新撰寫的郵件。我在這裡談論的是以純文字形式儲存在收件匣中多年的現有電子郵件。
我正在尋找一種可以批量加密它們的方法。我已經下載了所有訊息,並將它們匯出為 EML 格式,我可以將它們轉換為任何有助於我加密這些訊息的格式。
希望僅加密訊息正文而不加密主題。
謝謝
答案1
我遇到了同樣的問題,今天我找到了一個很好的解決方案。
它基於我找到的 procmail 設定。它最初會對傳入郵件進行加密,而不是對收件匣中已有的現有郵件進行加密:
https://www.j3e.de/pgp-mime-encrypt-in-procmail.html(謝謝比約恩)
我將其修改為使用現有郵箱文件而不是 procmail(傳入文件)作為腳本工作。
這些指令小而簡單,並使用標準工具「formail」來乾淨地處理標頭和正文。
首先,您必須使用 procmail 建立兩個 .gpg-mime-start 和 .gpg-mime-end 文件,如 URL 中所述!並且您必須像往常一樣使用密鑰設定命令列 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 簽名..”)。
使用 chmod a+x gpgmailfile.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
修改它以與其他資料夾一起使用。