[Mimedefang] Eml Attachments
Kevin A. McGrail
KMcGrail at PCCC.com
Fri Nov 18 13:34:21 EST 2011
> How would I save an eml attachment on an incoming mail? Does this
> look reasonable on a basic level?
>
> sub filter_multipart ($$$$) {
> my($entity, $fname, $ext, $type) = @_;
>
> open FH, ">/tmp/copy.eml" or die $!;
> if (re_match($entity, '\.eml') and ($type eq "message/rfc822")) {
> $entity->print_body(FH);
> }
> close FH;
> }
You are specifically dealing with multipart code so where to implement
this for that is likely in filter or filter_multipart.
However, here's a routine with some nice tricks that I think is more
kosher to using the mime tools to get the attachment and save it somewhere:
if (re_match($entity, '\.png')) {
my $sizelimit = 32*1024; #max size of a png attachment you want
to check in bytes
#IF SIZE OF ATTACHMENT LESS THAN THE SIZELIMIT
my $bh = $entity->bodyhandle();
if (defined($bh)) {
my $path = $bh->path();
if (defined($path)) {
if (-s $path <= $sizelimit) {
my ($dest_file) = $entity->head->recommended_filename();
$dest_file =~ s/[^-_\.!A-Z0-9]//ig;
$dest_file =~ s/\.\.//ig;
md_syslog( 'info', "Archive PNG - $dest_file.");
if (-d '/var/spool/MD-PNGFiles') {
&File::Copy::copy($path, "/var/spool/MD-PNGFiles/$QueueID-$dest_file");
}
}
}
}
}
Note, add/create sub filter_initialize {
use File::Copy;
}
Regards,
KAM
More information about the MIMEDefang
mailing list