MIME attachments in mbox files

Vince Sabio vince at vjs.org
Sat May 30 16:44:52 UTC 2009

** At 00:56 -0700 on 05/30/2009, George Davidovich wrote:
>On Fri, May 29, 2009 at 11:40:52PM -0400, Vince Sabio wrote:
>>  I have a need (well, I have lots of needs, but I'll try to stay
>>  focused here)
>Given the nature of most messages in the last few days, I'd suggest
>you're trying too hard.  ;-)

Yeah, I was considering leading with an apology for the on-topic post. <g>

>  > to be able to take a Windows zip file that is stored as a MIME
>>  attachment to an e-mail message in an Mbox-format spool file, and
>>  unzip the attachment. I actually need to script the process. In case
>>  it helps, I can dedicate a mailbox to the task.
>>  Anyone know of any FreeBSD utility(ies) that do(es) this?
>Generally, when you're talking about processing an mbox and doing
>something with message bodies, you're looking at formail plus procmail
>in combination with a tool that can interpret the mime structure and
>process the components (mimedefang, demine, stripmime, mimedecode,
>reformime, renattach, etc.).  That's a roundabout way of saying, no,
>there are no FreeBSD utilities to do what you want, but there's lots to
>be found in ports.

Sorry, I misspoke: sed 's/utilities/ports/g'

>I'd start with a quick read through of some of those manpages, but at
>first glance, ripmime alone might do the trick:

This, and Ian's munpack suggestion, will both do what I need -- but 
with one [very minor] exception: There is no way to override the file 
name specified in the MIME header (if present, which, in my case, it 
typically will be) and force it to use a specific output file name. 
Or just send the output to stdout, so I can redirect it to a file 
name of my choice (or to unzip). Not a show stopper by any means, 
just requires a workaround. I suspect that the authors of these 
utilities (there I go again) expected they would be invoked 

>  > If necessary, I can write my own parser to strip out the attachment,
>>  in which case I'd need only a widget that can take in a MIME (base64)
>>  encoded zip file, convert it to binary, and unzip it.
>In that case, and assuming you're using Perl, MIME::base64 and
>IO::Uncompress::Unzip (or /usr/ports/archivers/unzip) is what you want.
>Bonus points for writing a one-liner.

Using C, but shelling out where necessary to get stuff done.

It looks like {ripmime, munpack} and unzip will do the trick. Many 
thanks for the pointers. I now return you to your regularly scheduled 
META discussion(s)... :-)

Vince Sabio                                                  vince at vjs.org

More information about the freebsd-questions mailing list