[Mimedefang] Unknown command '^W' in RESULTS file
    David F. Skoll 
    dfs at roaringpenguin.com
       
    Wed Mar  7 14:38:07 EST 2007
    
    
  
Josh Kelley wrote:
> As a hypothetical example, the nss_ldap libraries which are loaded by
> Mimedefang and SpamAssassin would open FD 3 as a connection to an LDAP
> server and leave it open for performance, then Mimedefang would close
> FD 3 when forking and reopen it as an output handle to RESULTS.  So
> the next name lookup call would invoke nss_ldap, which would write out
> LDAP commands to FD 3, and Mimedefang would see the LDAP data in the
> RESULTS file and error out.
Got it.  That's why if you use embedded Perl, you should do your
initialization in filter_initialize instead of just in the body
of the filter.  The friendly mimedefang-filter man page even
warns about this:
  "If you use any code that opens a descriptor (for example, a
   connection to a database server), you must run that code inside
   filter_initialize and not directly from the filter, because the
   multiplexor closes all open descriptors when it activates a new slave."
I know there *are* evil Perl modules that open (and keep open) file
descriptors just by virtue of being "use"d.  There are two approaches
to dealing with them:
1) Use them in an eval {} in filter_initialize
2) Complain bitterly to the module author until s/he fixes the module.
Regards,
David.
    
    
More information about the MIMEDefang
mailing list