I have the following in the exim.conf on a primary mx:

As a router:

uservacation:
        driver                  = accept
        domains                 = +local_domains
        condition               = ${if or { {match {$h_precedence:} {(?i)junk|
bulk|list}} {eq {$sender_address} {}} } {no} {yes}}       : \
                                  ${lookup pgsql{select "subject" 
from "vacations" where "email_address" = '${quote_pgsql:
[EMAIL PROTECTED]:$domain}' and now () between "start_time" 
and "end_time"} {yes}{no}}
        senders                 = ! [EMAIL PROTECTED]      : \
                                  ! [EMAIL PROTECTED]       : \
                                  ! [EMAIL PROTECTED]       : \
                                  ! [EMAIL PROTECTED]        : \
                                  ! [EMAIL PROTECTED]      : \
                                  ! [EMAIL PROTECTED]       : \
                                  ! [EMAIL PROTECTED]      : \
                                  ! [EMAIL PROTECTED]   : \
                                  ! [EMAIL PROTECTED]
        no_expn
        transport               = vacation_autoresponse
        unseen
        no_verify


As a transport:

vacation_autoresponse:
        driver                  = autoreply
        once                    
= "/var/spool/mail/${domain}/${local_part}/vacation.db"
        once_repeat             = 2d
        from                    = ${lookup 
pgsql{select '"' || "real_name" || '" <${quote_pgsql:
[EMAIL PROTECTED]:$domain}>' from "email_accounts" 
where "email_address" = '${quote_pgsql:[EMAIL PROTECTED]:$domain}'}}
        to                      = $sender_address
        subject                 = ${lookup pgsql{select replace 
("subject", '%S', '${quote_pgsql:$h_subject:}') from "vacations" 
where "email_address" = '${quote_pgsql:[EMAIL PROTECTED]:$domain}' 
and now () between "start_time" and "end_time"}}
        text                    = ${lookup pgsql{select "message" 
from "vacations" where "email_address" = '${quote_pgsql:
[EMAIL PROTECTED]:$domain}' and now () between "start_time" 
and "end_time"}}


This whole ordeal ends up as 4 SQL queries hitting the PostgreSQL server.  I'd 
rather do one query in the router and pass the necessary values into the 
transport somehow, or if that's not possible, then consolidate the queries in 
the transport at least.  I'm not sure how to go about doing that.

I'd also like to move the data stored in the berkeley db file for the "once" 
data into a PostgreSQL table, but I don't think that's possible in current 
versions at least.

Lastly, are there any other checks I should add to the router to prevent 
sending replies to places that they shouldn't be sent to?  I hate all the 
vacation spam but users demand this functionality.

Cheers,
-- 
Casey Allen Shobe | [EMAIL PROTECTED] | 206-381-2800
SeattleServer.com, Inc. | http://www.seattleserver.com

-- 
## 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