** 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 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                                                  vi...@vjs.org
freebsd-questions@freebsd.org mailing list
To unsubscribe, send any mail to "freebsd-questions-unsubscr...@freebsd.org"

Reply via email to