[exim] am I crazy - writing message details to a log file on…

Top Page
Delete this message
Reply to this message
Author: Marcus Barczak
Date:  
To: exim-users
Subject: [exim] am I crazy - writing message details to a log file on successful routing
Hi Guys,

I've got a bit of a unique situation here, i'm working in the ISP
space and manage a server that is hosting approximately 700 or so
virtual domains with around 2000+ virtual mailboxes.

Some of the services we offer is email archiving (all incoming and
outgoing per user for a domain) and every domain gets an email
summary page on their control panel. Previously this was all handled
by a pipe transport where every message was run through a perl script
which archived a message if that customer had the service enabled,
and also wrote a log entry summarising the message (eg. sender,
recip, size, number of attachments, archived_flag, etc ...). This
process was really causing a massive performance hit on the server so
i've been working on better optimising the way it works.

So far i've managed to improved the archiving performance by moving
the archiving procedure into exim itself (with an unseen router/
transport combo) - this part is working fabulously and has dropped
the server load significantly. However where I am now stuck is how
to provide the logging capability that the previous script had.

What i'd like to do is basically write a selection of header
information to a log file for every single message that is
successfully routed through the server but i'm struggling to work out
where and how to put this kinda functionality in. I've experimented
with using a 'condition =' and using embedded perl string expansion
to write my log file. However you can only have a single condition
per router? Can anyone think of a better way to do this? Ultimately
I want to just call an embedded perl function at the end of each
router (ie. after message has been successfully routed?)

Any tips/advice/abuse welcome.

Thanks
Marcus