How to use @sa_userconf_maps for white-/blacklisting in Amavis 2.7.0

Matt Goodman matt at
Fri Oct 14 11:18:48 CEST 2011

I have had some experience using these new config parameters. Let me try to answer these as best I can:


I'd like to use the new sa_userconf_maps feature in Amavis 2.7.0 (Ubuntu
x64), but unfortunately I'm not able to figure out the correct
configuration from what I can find online.

My setting is as follows:

I have a MYSQL database called 'spamassassin_db' on my server with a
single table 'userpref' in it, containing white- and blacklist entries.
These are filled by some other application, so I don't want to change
anything here (e.g., to amavis SQL rules which seem to be even less well
documented) if possible.

I have configured the SQL database in my /etc/spamassassin/ as

user_scores_dsn                 DBI:mysql:spamassassin_db:localhost
user_scores_sql_username        (...)
user_scores_sql_password        (...)
user_scores_sql_custom_query    SELECT preference, value FROM userpref
WHERE username = _USERNAME_ OR username = '$GLOBAL' OR username =

What I would like amavisd to do is to have spamassassin respect the
whitelist_auth/blacklist_from rules in this database table globally,
i.e. regardless of the recipient's email address.
However, I don't seem to know the appropriate commands, and where to put

If I just put

@sa_userconf_maps = (
         '.*' => 'sql:',

Ø    This is how it is configured on my end as well. does amavis know which SQL database is referred to? Or that it
should use ""? 


Ø  SpamAssassin knows which SQL database to use based on what is configured in your site’s /etc/spamassassin/ file  (user_scores_dsn, user_awl_dsn, bayes_sql_dsn) as long as those are configured – they will be referenced in the Amavis lookup routine. As for which table – as long as you imported the “standard” SpamAssassin SQL schema, the lookups will work properly.


I have also tried something like

@sa_userconf_maps = (

Ø    Not valid – please use the parameter you specified above which is known good on my machine as well.


It's not surprising to me that I haven't got it to work so far, given
that I simply can't find any clear instructions anywhere on the Web.

Ø    I hear ya, thanks to people on this list I was able to figure it out – but it did take some time due to the lack of published examples. 

Any help would be very much appreciated! :)

Ø    One more configuration option you may need, is the @sa_username_maps parameter. When SpamAssassin stores config options, Bayesian tokens, and white/black list records – it does so with the ‘username’ field. If you do not specify a username – SpamAssassin will store all config options under the _same_ user that invokes amavisd. So if you want each user to be able to store individual preferences, awl/blacklist, and bayes – you will need to define the @sa_username_maps. Using the following regular expression – you will effectively map the RECIPIENT address (of the incoming email to be scanned/parsed) as the SA ‘username’. Any awl/autolearn/Bayesian/config options that are either retrieved from the database, or written to it – will do so by the recipient address of the email.


(originally provided by Renato Botelho on 09/2/2011 in amavis-users)


@sa_username_maps = new_RE (

  [ qr'^([^@]+ at .*)'i => '${1}' ]



Again, only use the above regular expression if you want the SA username field in the database to be the ‘user at’ in the RCPT of the email message (which should be your mail user, anyways). This would be useful in a mail server that houses more than one domain.



I hope that helps.


Matt Goodman

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the amavis-users mailing list