这次互联网没有帮上忙。我有一个 zip 存档,里面还有一个p7m扩展名。我怎样才能删除该扩展名以便查看文件?任何帮助都非常感谢。
比你!
答案1
创建一个像这样的小型 shell 脚本:
#!/bin/bash
openssl pkcs7 -inform DER -in "$1" -print_certs -out "$1.pem"
openssl smime -verify -in "$1" -inform der -noverify -signer "$1.pem" -out "$1.pdf" 2>/dev/null
rm "$1.pem"
evince "$1.pdf"
rm "$1.pdf
- 使其可执行
- 选择“使用其他应用程序打开”
- 选择上面创建的小脚本
- 完毕。
答案2
不幸的是,这些答案对我都不起作用。附件在 gmail 的 Web 界面中显示为 smime.p7m,在 Thunderbird(我现在可以删除它,因为它没有帮助)中显示为 winmail.dat。
简而言之,作为命令列表,对我有用的是以下命令(假设您将 smime.p7m 下载到 ~/Downloads):
sudo apt install mpack tnef
cd ~/Downloads
munpack smime.p7m
tnef winmail.dat
ls -lt
rm mail.eml winmail.dat
要确定这是否会对您有帮助:
- 只需安装 mpack
- 在 smime.p7m 文件上运行 munpack
- 应该会出现一个新文件(可能名为 winmail.dat)。如果是这种情况,请运行:
file winmail.dat # or whatever the new filename
- 如果出现“winmail.dat:传输中性封装格式”,请安装 tnef 并按上面所列的步骤完成。
- 如果成功完成,您现在应该在同一目录中拥有您的 zip 存档。
- 否则,这个答案不会有帮助:
sudo apt remove mpack tnef
资料来源:
答案3
另一种解决方案,灵感来自于之前用户3801675的脚本。
在如下~/bin
目录中创建一个小型 shell 脚本:p7m.sh
#!/bin/bash
#set -x
outdir="$1.out"
filename="${1##*/}" #extract filename, without path
outfile="$outdir/${filename/.p7m/}"
mkdir "$outdir"
openssl pkcs7 -inform DER -in "$1" -print_certs -out "$outdir/signer.pem"
openssl smime -verify -in "$1" -inform der -noverify -signer "$outdir/signer.pem" -out "$outfile" 2>/dev/null
xdg-open "$outfile"
#if you don't need extracted file uncoment the following line
#rm "$outdir/signer.pem"; rm "$outfile"; rmdir $outdir
- 使其可执行
chmod +x ~/bin/p7m.sh
- 在 shell 中使用命令
~/bin/p7m.sh filename.pdf.p7m
或者
- 从文件管理器中选择
filename.pdf.p7m
并使用鼠标右键单击选择“使用其他应用程序打开”。然后选择上面创建的小脚本。
完毕。
通常收到的文件(附件)的扩展名为p7m如同
filename.pdf.p7m
建议的脚本首先创建子目录
filename.pdf.p7m.out/
然后提取密钥文件和删除扩展名的signer.pem
文件。filename.pdf
.p7m
这两个文件保存在之前创建的文件夹中。
提取的文件使用而不是filename.pdf
打开,因为 xdg-open 可以根据文件类型使用正确的应用程序打开所有类型的文件。xdg-open
evince
答案4
S/Mime 的工作原理如下,它会对邮件进行加密/签名,并将其作为附件发送。Thunderbird 和 Evolution 邮件客户端都是能够显示 s/mime 附件的著名客户端。此外,关于这个问题还有很好的信息如何获取电子邮件加密的 S/MIME 证书?