On Mon, 26 Jun 2006, Marcus Barczak wrote:

> 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?)

Here's a kludge. I assume your successful router is routing the address 
to a transport. If so, you can use the fact that the "transport" option 
is expanded. So you can use the expansion to call Perl, or a database, 
or whatever, but ensure that the result is just the name of the 
transport. (Best performance would probably be obtained by writing a 
daemon that listens on a socket and have Exim write to the socket.)

Alternatively, why not do the archiving from a system filter? That runs 
per-message rather than per-recipient (saving some resources), and
there's no problem writing to a file directly from the filter, using the 
logwrite command. The downside, I guess, is that you don't know whether 
the message will be successfully routed at filter time.

-- 
Philip Hazel            University of Cambridge Computing Service
Get the Exim 4 book:    http://www.uit.co.uk/exim-book

-- 
## List details at http://www.exim.org/mailman/listinfo/exim-users 
## Exim details at http://www.exim.org/
## Please use the Wiki with this list - http://www.exim.org/eximwiki/

Reply via email to