example database structure for rules and configs
    Gavin Silver 
    GSilver at rampuptech.com
       
    Thu Oct  7 22:58:07 IST 2010
    
    
  
Perfect, thanks steve!
----------------------------------
Gavin Silver
-----Original Message-----
From: mailscanner-bounces at lists.mailscanner.info [mailto:mailscanner-bounces at lists.mailscanner.info] On Behalf Of Steve Freegard
Sent: Thursday, October 07, 2010 12:09 PM
To: MailScanner discussion
Subject: Re: example database structure for rules and configs
On 06/10/10 14:25, Gavin Silver wrote:
> Is anyone using the SQL functionality successfully?
Yes - as I wrote and contributed the code for this.
Here's something to get you started; you'll need to create a database 
table called 'config' with three columns:
hostname
option
value
external
Next - pick an option that you want to override from the database; for 
example 'Non Spam Actions'.
MailScanner stores two versions of this variable; the name of the option 
in MailScanner.conf is the external version with the spaces removed and 
lowercased, so 'Non Spam Actions' becomes 'nonspamactions'.
To find the internal version of the option name you have to look in 
ConfigDefs.pl in /usr/lib/MailScanner at the translation table.  If the 
internal variable is different then it will appear within this 
translation list; otherwise the internal is the same as the external 
variable - in this case 'nonspamactions' = 'hamactions'.
So you would add the following values to your database table:
hostname = <your machine hostname (e.g. output of `hostname -f`)>
option = 'hamactions'
value = 'deliver store'
external = 'nonspamactions'
Then you'll need to add a dummy serial number option (this is used to 
cause the children to restart when you increment the number):
hostname = <you machine hostname (as above)>
option = 'confserialnumber'
value = 1
external = 'confserialnumber'
In MailScanner.conf you would then set-up the following options:
DB DSN = <settings to connect to your chosen database>
DB Username = <username>
DB Password = <password>
SQL Serial Number = SELECT value FROM config WHERE option='confserialnumber'
SQL Quick Peek = SELECT value FROM config WHERE external=? AND hostname=?
SQL Cofnig = SELECT option, value FROM config WHERE hostname=?
SQL Debug = yes
Then if you run 'MailScanner --lint' you will be able to see the 
database functions running and overriding the value read from 
MailScanner.conf for 'Non Spam Actions' along with it picking up the 
serial number.
To override *all* settings; you'll need to write some sort of script to 
parse both MailScanner.conf and ConfigDefs.pl (you can rip most of this 
code from Config.pm) to gather all of the configuration options and the 
internal => external translations and create your 'config' table from them.
Hopefully that should get you started.
Kind regards,
Steve.
-- 
MailScanner mailing list
mailscanner at lists.mailscanner.info
http://lists.mailscanner.info/mailman/listinfo/mailscanner
Before posting, read http://wiki.mailscanner.info/posting
Support MailScanner development - buy the book off the website! 
--
    
    
More information about the MailScanner
mailing list