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