A harder way would also be highly appreciated 🙂 I'd go some lengths for
avoiding a postgres/mariadb instance.
I suppose just whitelisting the "bayes_path" property in the user-settings
would impose a trove of new problems?
I don't know what you mean by whitelisting the property. The reason for
bayes_path "not parsing, administrator setting" seems hardcoded in
SpamAssassin. A dirty solution would be to change it into a non-admin
property, but it requires knowledge of SA internals which can change any
time, so here be dragons.
root@e5ddc15080cb:~# cat /etc/amavis/conf.d/50-user
use strict;
package Amavis::SpamControl::SpamAssassin::Coderdude {
 use base 'Amavis::SpamControl::SpamAssassin';
 sub new_SpamAssassin_instance {
   my $instance = $_[0]->SUPER::new_SpamAssassin_instance(@_);
$instance->{spamassassin_obj}{conf}{parser}{command_luts}{bayes_path}{is_admin}
= 0;
   $instance;
 }
}
$sa_debug = 'all';
@spam_scanners = (['SpamAssassin',
'Amavis::SpamControl::SpamAssassin::Coderdude']);
@sa_userconf_maps = ({
 'us...@example.com' => '/tmp/sa_user1/user.cf',
 'us...@example.com' => '/tmp/sa_user2/user.cf',
});
1;
root@e5ddc15080cb:~# cat /tmp/sa_user1/user.cf
bayes_path /tmp/sa_user1/bayes
root@e5ddc15080cb:~# cat /tmp/sa_user2/user.cf
bayes_path /tmp/sa_user2/bayes
root@e5ddc15080cb:~# amavisd debug 2>&1 | grep "SA dbg" | grep
"tie-ing to DB"
[Testmail -> us...@example.com]
... SA dbg: bayes: tie-ing to DB file R/O /tmp/sa_user1/bayes_toks
... SA dbg: bayes: tie-ing to DB file R/O /tmp/sa_user1/bayes_seen
... SA dbg: bayes: tie-ing to DB file R/W /tmp/sa_user1/bayes_toks
... SA dbg: bayes: tie-ing to DB file R/W /tmp/sa_user1/bayes_seen
[Mail -> us...@example.com]
... SA dbg: bayes: tie-ing to DB file R/O /tmp/sa_user2/bayes_toks
... SA dbg: bayes: tie-ing to DB file R/O /tmp/sa_user2/bayes_seen
... SA dbg: bayes: tie-ing to DB file R/W /tmp/sa_user2/bayes_toks
... SA dbg: bayes: tie-ing to DB file R/W /tmp/sa_user2/bayes_seen