[Mimedefang] Change subject according to string match in body

Dave O'Neill dmo at roaringpenguin.com
Tue Jan 19 13:37:08 EST 2010


On Tue, Jan 19, 2010 at 03:53:51PM +0100, Johan Lundberg wrote:
> The code works as I expect when the pattern is found in the subject of
> the mail but when the script tries to look in the body Mimedefang
> crashes and I have to reread the filter file to be able get it working
> again.

What errors do you see in your mail log when it dies?  My immediate 
thought is that this code here is to blame:

>            my $body = $entity->bodyhandle;
>            my $IO = $body->open("r");
>            while (defined($_ = $IO->getline)) {

Not all MIME::Entity objects will have bodies!  For example, a 
multipart/mixed or multipart/alternative toplevel won't, leaving 
->bodyhandle to return undef into $body and causing $body->open() to 
die.

There are two better ways to do what you're trying to do.

1) Do your body checking in filter(), as it only gets called on entities 
    with a body.

2) Open up $CWD/INPUTMSG and check the raw message directly.

Cheers,
Dave
-- 
Dave O'Neill <dmo at roaringpenguin.com>    Roaring Penguin Software Inc.
+1 (613) 231-6599                        http://www.roaringpenguin.com/
For CanIt technical support, please mail: support at roaringpenguin.com



More information about the MIMEDefang mailing list