Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 30 May 2009 12:44:48 -0400
From:      Vince Sabio <vince@vjs.org>
To:        freebsd-questions@freebsd.org
Subject:   Re: MIME attachments in mbox files
Message-ID:  <p05200f20c64710414eb5@[10.190.83.17]>
In-Reply-To: <20090530075639.GA71434@marvin.optimis.net>
References:  <p05200f10c64657f591f5@[10.190.83.17]> <20090530075639.GA71434@marvin.optimis.net>

next in thread | previous in thread | raw e-mail | index | archive | help
** 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:
>
><http://www.freebsd.org/cgi/man.cgi?query=ripmime&apropos=0&sektion=0&manpath=FreeBSD+7.2-RELEASE+and+Ports&format=ascii>;

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 
interactively.

>  > 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@vjs.org



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?p05200f20c64710414eb5>