I believe your @sa_username_maps needs to be evaluated. Try using the example I 
provided a few emails ago. Just for now - and see if that at least will create 
entries based on the email recipient as SA username.



-----Original Message-----
From: SB [mailto:kfsw...@yahoo.de] 
Sent: Sunday, October 16, 2011 2:16 PM
To: Matt Goodman; amavis-users@amavis.org
Subject: Re: How to use @sa_userconf_maps for white-/blacklisting in Amavis 
2.7.0

Oh, now I think I might have found something. Amavis (not
spamassassin!?) complains that "no lookup tables [are] found". Then it maps the 
sender and receiver to "undef", and it says that the white- and blacklist 
entries do not match because of the "undef".

But I don't know if that is actually the Spamassassin whitelist, or the
(non-existing) amavis whitelisting.

Thanks.


> Check your init scripts. I'm sure one of those will have a startup command 
> line. I believe you can override it by launching spamd with the -C 
> /path/to/file.cf option.
> 
> -----Original Message-----
> From: SB [mailto:kfsw...@yahoo.de]
> Sent: Sunday, October 16, 2011 1:05 AM
> To: Matt Goodman
> Subject: Re: How to use @sa_userconf_maps for white-/blacklisting in 
> Amavis 2.7.0
> 
> Thanks for your time.
> Sorry, probably I was not clear in enough in the last email: The DB 
> connection and all the entries (black-/whitelist) DO work whenever I call 
> spamc manually -- so there should be no error with either (a) the DB 
> connection parameters or (b) the DB entries themselves. It just doesn't work 
> whenever Amavis is in control of spamassassin.
> 
> So I suppose amavis is reading from the wrong spamassassin config file.
> Where can I figure out what *spamassassin* config file amavis is using?
> 
> Thanks,
> S.
> 
>> Can you print out the database record that has your blacklist entry? 
>>
>> -----Original Message-----
>> From: SB [mailto:kfsw...@yahoo.de]
>> Sent: Saturday, October 15, 2011 12:02 PM
>> To: amavis-users@amavis.org; Matt Goodman
>> Subject: Re: How to use @sa_userconf_maps for white-/blacklisting in 
>> Amavis 2.7.0
>>
>> ?? I did – see below.
>> However, in Ubuntu, there is no single amavisd.conf, but it's splitted up, 
>> so the relevant bits are somewhere in /etc/amavis/conf.d/... But that 
>> shouldn't make a big difference (the sa_username_maps settings are 
>> interpreted after all).
>>
>> Cheers,
>> S.
>>
>>
>>
>>> Show me your @sa_userconf_maps and your @sa_username_maps from 
>>> /etc/amavisd.conf
>>>
>>> -----Original Message-----
>>> From: SB [mailto:kfsw...@yahoo.de]
>>> Sent: Saturday, October 15, 2011 10:27 AM
>>> To: amavis-users@amavis.org; Matt Goodman
>>> Subject: Re: How to use @sa_userconf_maps for white-/blacklisting in 
>>> Amavis 2.7.0
>>>
>>> Hi,
>>> Thanks for your help. I think we're getting closer to it:
>>>
>>> I get some log entries now, but no further processing is done (see below, 
>>> the blacklist entry is not retrieved). I also don't observe any call to the 
>>> database in the mysql log.
>>>
>>> These are the entries I get (slightly anonymised):
>>>
>>> -----
>>>
>>> Oct 15 22:08:38 myservername amavis[23564]: (23564-01) lookup 
>>> [sa_userconf] => undef, "recipient-emailaddr...@example.org" does 
>>> not match Oct 15 22:08:38 myservername amavis[23564]: (23564-01)
>>> lookup_re("recipient-emailaddr...@example.org") matches key ".*", 
>>> result="$GLOBAL"
>>> Oct 15 22:08:38 myservername amavis[23564]: (23564-01) lookup [sa_username] 
>>> => true,  "recipient-emailaddr...@example.org" matches, result="$GLOBAL", 
>>> matching_key=".*"
>>> Oct 15 22:08:38 myservername amavis[23564]: (23564-01) SA user config:
>>> "", username: "$GLOBAL", 0
>>> Oct 15 22:08:38 myservername amavis[23564]: (23564-01) switching SA (0) 
>>> username "amavis" -> "$GLOBAL"
>>> Oct 15 22:08:38 myservername amavis[23564]: (23564-01) calling SA parse 
>>> (0), SA vers 3.3.1, 3.003001, data as GLOB, recips_ind [0], user: "$GLOBAL"
>>> Oct 15 22:08:38 myservername amavis[23564]: (23564-01) get_deadline 
>>> SA check - deadline in 479.9 s, set to 475.000 s Oct 15 22:08:38 
>>> myservername amavis[23564]: (23564-01) CALLING SA check (0) Oct 15
>>> 22:08:38 myservername named[1183]: error (unexpected RCODE
>>> REFUSED) resolving 'somedomain.com/A/IN': 8.8.8.8#53 Oct 15 22:08:38 
>>> myservername named[1183]: error (unexpected RCODE
>>> REFUSED) resolving 'someotherdomain.com/A/IN': 8.8.8.8#53 Oct 15
>>> 22:08:43 myservername amavis[23564]: (23564-01) DONE SA check (0) 
>>> Oct
>>> 15 22:08:43 myservername amavis[23564]: (23564-01) get_deadline 
>>> spam_scan_sa - deadline in 474.1 s, set to 332.000 s Oct 15 22:08:43 
>>> myservername amavis[23564]: (23564-01) prolong_timer
>>> spam_scan_sa: timer 332, was 471, deadline in 474.1 s Oct 15 22:08:43 
>>> myservername amavis[23564]: (23564-01) spam_scan:
>>> score=-1.794 autolearn=ham
>>> tests=[BAYES_50=0.8,DKIM_SIGNED=0.1,DKIM_VALID=-0.1,DKIM_VALID_AU=-0.
>>> 1
>>> ,DKIM_VERIFIED=-5.7,HTML_IMAGE_RATIO_06=0.001,HTML_MESSAGE=0.001,MIM
>>> E
>>> _
>>> QP_LONG_LINE=0.001,PYZOR_CHECK=1.392,RCVD_IN_DNSWL_NONE=-0.0001,REMO
>>> V E _BEFORE_LINK=1.8,SPF_FAIL=0.001,T_FRT_PROFIT1=0.01]
>>> recips=0
>>>
>>> ----
>>>
>>>
>>>
>>> ("$GLOBAL" is the name under which I have defined my rules in the 
>>> spamassassin db, and I've simply mapped all email addresses to this global 
>>> identifier in the config file of amavis, as follows:
>>>
>>>
>>> @sa_userconf_maps = (
>>>       {
>>>          '.*' => 'sql:',
>>>       }
>>>     );
>>>
>>> @sa_username_maps = new_RE (
>>>
>>> [  '.*' => '$GLOBAL' ]
>>> );
>>>
>>>
>>>
>>> )
>>>
>>>
>>>
>>> So I suppose the reason is that spamassassin's user_scores_dsn ruleset in 
>>> /etc/spamassassin/local.cf is not considered. Might it be reading from the 
>>> wrong file, or not have the permission etc.?
>>> (Does anyone know how to figure out which spamassassin config file 
>>> amavis uses?)
>>>
>>> I think this is a very probable cause since everything works (also 
>>> the
>>> blacklisting) when sending my email via spamc on the command line.
>>>
>>>
>>> I'd be more than happy if anyone could point me in the right direction.
>>> I've spent hours fixing this, without success.
>>>
>>>
>>> Thanks a lot,
>>>
>>> S.
>>>
>>>
>>>
>>>
>>>>
>>>> I would say that if there is even one entry in the database that you did 
>>>> not place yourself manually, then it is likely that the SQL is functional. 
>>>> You could increase the amavis debug log to maximum and you should look for 
>>>> @sa_username_maps to determine if the amavis log is correctly determining 
>>>> the SA username, be prepared for a lot of debug information but I do know 
>>>> that amavisd refers to the @sa*.* config options in the debug, so you 
>>>> could always look for those.
>>>>
>>>> Did you add the @sa_username_maps option into your amavisd.conf?
>>>>
>>>> Lastly with respect to the database design you should probably dump it and 
>>>> start over using the SpamAssassin SQL schema that is provided in the 
>>>> source tarball. It's in there somewhere, definitely use it.
>>>>
>>>>
>>>> -----Original Message-----
>>>> From: SB [mailto:kfsw...@yahoo.de]
>>>> Sent: Friday, October 14, 2011 12:00 PM
>>>> To: Matt Goodman
>>>> Subject: Re: How to use @sa_userconf_maps for white-/blacklisting 
>>>> in Amavis 2.7.0
>>>>
>>>> Hi,
>>>>
>>>> Thanks a lot. All your comments make sense; I've double-checked 
>>>> everything, but still no effect. This makes me ask two more things:
>>>>
>>>> - Are there any log file entries that I could track (or miss)?
>>>> - Let's check the database design. I have spamassassin db with just one 
>>>> table named "userpref".
>>>>
>>>> The content of this table is as follows:
>>>>
>>>> username   preference      value   prefid
>>>> amavis     blacklist_from  m...@example.org        1
>>>>
>>>> or whitelist_from, whitelist_auth... Is that correct?
>>>>
>>>> It pretty much seems to me the database isn't considered at all. May I 
>>>> have forgotten to install any SQL module etc.?
>>>>
>>>>
>>>> Thanks a lot for your help,
>>>>
>>>> S.
>>>>
>>>>
>>>>> I have had some experience using these new config parameters. Let 
>>>>> me try to answer these as best I can:
>>>>>
>>>>>
>>>>>
>>>>>     Hi,
>>>>>
>>>>>     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/local.cf as
>>>>>     follows:
>>>>>
>>>>>     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 =
>>>>>     CONCAT('%',_DOMAIN_) ORDER BY username ASC
>>>>>
>>>>>
>>>>>
>>>>>     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
>>>>>     them.
>>>>>
>>>>>     If I just put
>>>>>
>>>>>     @sa_userconf_maps = (
>>>>>           {
>>>>>              '.*' => 'sql:',
>>>>>           }
>>>>>         );
>>>>>
>>>>>     Ø    This is how it is configured on my end as well.
>>>>>
>>>>>      
>>>>>
>>>>>
>>>>>     ...how does amavis know which SQL database is referred to? Or that it
>>>>>     should use "local.cf"?
>>>>>
>>>>>      
>>>>>
>>>>>     Ø  SpamAssassin knows which SQL database to use based on what is
>>>>>     configured in your site’s /etc/spamassassin/local.cf 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 = (
>>>>>     "/etc/spamassassin/local.cf"
>>>>>         );
>>>>>
>>>>>     Ø    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'^([^@]+@.*)'i => '${1}' ]
>>>>>
>>>>>     );
>>>>>
>>>>>      
>>>>>
>>>>>     Again, only use the above regular expression if you want the SA
>>>>>     username field in the database to be the ‘u...@domain.com’ 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.
>>>>>
>>>>>
>>>>>     Thanks,
>>>>>     S.
>>>>>
>>>>>      
>>>>>
>>>>>     I hope that helps.
>>>>>
>>>>>      
>>>>>
>>>>>     Matt Goodman
>>>>>
>>>>
>>>
>>
> 

Reply via email to