7

The internet has not been helpful this time. I have a zip archive that also has a p7m extension. How can I lose that extension so that I can view the files? Any help is appreciated.

Than you!

3
  • a p7m file is an encrypted attachment. decrypting it would make sense to me.
    – Elder Geek
    Feb 27, 2015 at 21:01
  • @Elder Geek Not necessarily encrypted. It could also be just signed.
    – Gerd
    Jan 4, 2023 at 14:36
  • @Gerd do you suppose something has changed in the last 8 years? That wouldn't surprise me. Cheers!
    – Elder Geek
    Jan 19, 2023 at 15:36

6 Answers 6

12

Create a small shell script like this one:

#!/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
  1. Make it executable
  2. Select "open with other application"
  3. Choose the small script created above
  4. Done.
3
  • These commands worked for me. Although the output wasn't a PDF file - it was just plain text.
    – ngm
    Mar 31, 2017 at 19:56
  • 1
    unable to load PKCS7 object 140140624967320:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1197: 140140624967320:error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error:tasn_dec.c:374:Type=PKCS7 Nov 16, 2017 at 15:40
  • This worked quite good (I had to replace evince with my preferred pdf viewer), but it would be nice to have some information about the meaning of the issued commands in the script Jun 6, 2020 at 13:15
5

Unfortunately, none of these answers worked for me. The attachment showed up in gmail's web interface as smime.p7m, and in Thunderbird (which I can now get rid of since it didn't help) as winmail.dat.

Quickly, as a list of commands, what worked for me was the following (assuming you downloaded the smime.p7m into ~/Downloads):

sudo apt install mpack tnef
cd ~/Downloads
munpack smime.p7m
tnef winmail.dat
ls -lt
rm mail.eml winmail.dat

To determine if this will even help you:

  • just install mpack
  • run munpack on the smime.p7m file
  • A new file should appear (perhaps named winmail.dat). If this is the case, run:

file winmail.dat # or whatever the new filename

  • if "winmail.dat: Transport Neutral Encapsulation Format" appears, install tnef and complete as listed above.
  • if that completes successfully, you should now have your zip archive in the same directory.
  • otherwise, this answer won't help:

sudo apt remove mpack tnef

Sources:

FIX Gmail smime.p7m and tnef open mail (with winmail.dat)

How to open winmail.dat files on Ubuntu and Debian Linux

1
  • Using Debian 6 (Squeeze), I was able to open up an "smime.p7m" file that had been zipped by a Windows sender. First, I unzipped said zip file using unzip, then, from the above-mentioned "mpack" package, I used the above-mentioned mumpack command on the resultant "smime.p7m" file. Out popped the two enclosed jpg files, immediately suitable for viewing in my jpg viewer.
    – Digger
    Nov 24, 2016 at 21:06
4

Another solution, inspired from the previous user3801675's script.

Create a small shell script, in ~/bin directory named p7m.sh like this one:

#!/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
  1. Make it executable chmod +x ~/bin/p7m.sh
  2. From a shell use the command ~/bin/p7m.sh filename.pdf.p7m

or

  1. From the file manager select filename.pdf.p7m and using mouse right click choose "open with other application". Then Choose the small script created above.

Done.

Usually the received file (attachment) has the extension p7m as in

filename.pdf.p7m 

The proposed script first creates the subdirectory

filename.pdf.p7m.out/

then extracts the key-file signer.pem and the file filename.pdf removing the extension .p7m.

The two file are saved in the previously created folder.

The extracted file filename.pdf is opened using xdg-open instead of evince, because xdg-open can open all kinds of file using the correct application based on file type.

3
  • Where do I get pkcs7? Nov 16, 2017 at 15:45
  • @PeterFlynn what do you mean? pkcs7 is a standard, not a software Nov 22, 2018 at 11:04
  • works like a charm, thanks Jul 28, 2023 at 6:57
2

p7m is an encryption format that is often used for email attachments.

I was also not able to find a Linux tool that is able to open that file type after a quick google research. However, there exist some tools for Windows (e.g. Cryptigo p7mViewer) or OSX.

What you could try if you have no access to a computer running Windows/OSX is to install the Windows emulator wine and try to install a Windows viewer in there. I can't tell you whether this would work, but it is worth a try, if that file is important for you.

Another possible solution could be to install Claws Mail, a mail program for Ubuntu, and this plugin. I am not sure whether that allows you to view those .p7m files with that mail program either, I just got this hint from @Toroidal in the chat.

3
  • 1
    Would you tell me which option you tried?
    – Byte Commander
    Feb 27, 2015 at 21:11
  • I didn't try any, my mother tried Cryptigo and she said it's ok.
    – JaUnCpp
    Mar 5, 2015 at 11:50
  • I would take issue with "often used"...in 30 years of using email I just came across my first p7m attachment today. Nov 16, 2017 at 15:35
0

This is how S/Mime works, it enc/sign a mail, and sends it as an attachment. Thunderbird and Evolution mail clients are both famous clients that are able to show s/mime attachments. Also there are good informations on this question How to obtain a S/MIME certificate for e-mail encryption?

0

Nowadays (not sure if this work in the 2015's version of openssl) one can use just

openssl smime -inform DER -in smime.p7m -verify -out email_body

openssl smime itself is able to get the certificates from the .p7m file if needed.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .