[Mimedefang] Mysql connections
Paul Murphy
Paul.Murphy at argentadiscovery.com
Thu Dec 14 03:42:02 EST 2006
> I have only seen examples of opening and closing the connections inside of
> filter_sender or filter_end. Is it possible to open a connection in
> mimedefang when it starts up and close it on exit. I would like to insert
> some information in a table from filter_relay, filter_sender and filter_end.
You can do anything you want, as long as you open the connection in filter_initialize(), and close it in filter_cleanup() - from the man page:
If you are not using an embedded Perl interpreter, then performing an action inside fil-
ter_initialize is practically the same as performing it directly in the filter file, outside
any function definition. However, if you are using an embedded Perl interpreter, then any-
thing you call directly from outside a function definition is executed once only in the parent
process. Anything in filter_initialize is executed once per slave. 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.
When a slave is about to exit, mimedefang.pl calls the function filter_cleanup (if it is
defined) with no arguments. This function can do whatever cleanup you like, such as closing
file descriptors and cleaning up long-lived slave resources. The return value from fil-
ter_cleanup becomes the slave's exit status.
However, you need to ensure that you either keep the database connection busy, or configure MySQL to not use any client timeouts, since it is prone to disconnecting clients after a while. The result of this is that your slave dies, and the new slave gets a clean connection, so the mail will be delivered eventually, but you are introducing delays and potential problems as a result.
Best Wishes,
Paul.
--
-------------------------------------------------------
Paul Murphy
Head of I.T.
Argenta Discovery
Tel. 01279 645 554
Fax. 01279 645 646
More information about the MIMEDefang
mailing list