我的收件箱中有超过 12000 封纯文本电子邮件,其中一些带有附件。我已经搜索了数周,想找到一种方法将这些电子邮件从纯文本加密为加密邮件。
请不要建议对外发邮件使用 PGP 加密,因为我完全知道如何加密新撰写的邮件。我在这里谈论的是多年来以纯文本形式存储在收件箱中的现有电子邮件。
我正在寻找一种可以批量加密邮件的方法。我已下载所有邮件并将其导出为 EML 格式,我可以将它们转换为任何有助于加密这些邮件的格式。
仅寻求加密邮件正文而不加密主题。
谢谢
答案1
我遇到了同样的问题,今天找到了一个很好的解决方案。
它基于我找到的 procmail 设置。它最初加密收到的邮件,而不是加密收件箱中已有的邮件:
https://www.j3e.de/pgp-mime-encrypt-in-procmail.html(感谢 Bjoern)
我对其进行了修改,使其作为脚本使用现有的邮箱文件而不是 procmail(传入文件)。
这些命令很小,很简单,并使用标准工具“formail”来干净地处理标题和正文。
首先,您必须使用 procmail 创建 URL 中描述的两个 .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 密钥地址(或使用“-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
修改它以便与其他文件夹一起使用。