[Mimedefang] RE: Filtering on sender, recipient, and subject at the same time

Craig Green cgreen at sentex.net
Mon Jul 18 12:54:42 EDT 2005

McCarthy, Douglas J wrote:

>The good news is that it catches Out of Office AutoReplies exactly
>The bad new is that it's not catching the User-Agent or X-Mailer things
>at all.  I know how to set them, and when they get delivered the headers
>are indeed there, but if I uncomment that VacDebug logging line, I see
>that $UserAgent never gets set, and $XMailer gets set to "MIME-tools
>5.411 (Entity 5.404)", even though the User-Agent: line is set to
>"Vacation" and/or the X-Mailer" line is set to "vacation".

I was wondering about this--from what you said, you're running version 
2.44 of MD.  This, unfortunately, is from before I started messing 
around with MIME entity in the filter (the server with the code in 
question is 2.49).  Taking a quick look at the 2.44 code, it looks like 
a MIME entity is passed into filter_end, so $entity should actually *be* 
a MIME entity, which is a good start.  I'd still suggest upgrading MD to 
latest, however.

If MD is that old, it also wouldn't surprise me if you're running an old 
version of MIME::Tools, too.  Perhaps your MIME::Tools doesn't support 
something, or bugs were fixed or something (like I said, I haven't been 
playing with this for long, so I don't know the module's history).  As 
such, I'd certainly update MIME::Tools.

>I'll admit that I have no idea what I'm doing when it comes to packages
>like MIME::Entity.  

Neither did I, but that's what docs are for.  Take a look at:


Getting the head out of a MIME entity is straightforward (see "Access 
Examples" in Entity) and getting a specific header out of the head is 
also straightforward (see "Getting field contents" in Head).  I'm 
certainly no guru, so by definition this is fairly easy stuff.  :-)

You might want to try $head->print to see if the head is being extracted 
correctly. You might also want to code a simple script to create or read 
in a MIME message, and then try out the head functions to see if they 
work correctly outside MD.  You can cut and paste most of the code you'd 
need from the above pages.

Note that since you're in filter_end, the HEADERS file *is* available, 
so you can just parse that if you'd prefer.  There was nothing wrong 
with your initial logic; it's just that parsing the file on disk is 
slower *and* it takes more code than using the MIME entity.  However, if 
it works, it works.  ;-)


More information about the MIMEDefang mailing list