mirror of
https://git.proxmox.com/git/proxmox-spamassassin
synced 2025-04-28 16:01:29 +00:00
105 lines
2.6 KiB
Raku
Executable File
105 lines
2.6 KiB
Raku
Executable File
#!/usr/bin/perl -T
|
|
# bug 4179
|
|
|
|
use lib '.'; use lib 't';
|
|
use SATest; sa_t_init("spamd_user_rules_leak");
|
|
|
|
use Test::More;
|
|
plan skip_all => 'Spamd tests disabled' if $SKIP_SPAMD_TESTS;
|
|
plan tests => 20;
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# If user A defines a user rule (when allow_user_rules is enabled) it affects
|
|
# user B if they also set a score for that same rule name or create a user rule
|
|
# with the same name.
|
|
|
|
tstprefs ("
|
|
allow_user_rules 1
|
|
");
|
|
|
|
rmtree ("$workdir/virtualconfig/testuser1", 0, 1);
|
|
mkpath ("$workdir/virtualconfig/testuser1", 0, 0755);
|
|
rmtree ("$workdir/virtualconfig/testuser2", 0, 1);
|
|
mkpath ("$workdir/virtualconfig/testuser2", 0, 0755);
|
|
rmtree ("$workdir/virtualconfig/testuser3", 0, 1);
|
|
mkpath ("$workdir/virtualconfig/testuser3", 0, 0755);
|
|
open (OUT, ">$workdir/virtualconfig/testuser1/user_prefs");
|
|
print OUT q{
|
|
|
|
header MYFOO Content-Transfer-Encoding =~ /quoted-printable/
|
|
body MYBODY /KIFF/
|
|
rawbody MYRAWBODY /KIFF/
|
|
full MYFULL /KIFF/
|
|
score MYFOO 3
|
|
score MYBODY 3
|
|
score MYRAWBODY 3
|
|
score MYFULL 3
|
|
|
|
};
|
|
close OUT;
|
|
open (OUT, ">$workdir/virtualconfig/testuser2/user_prefs");
|
|
print OUT q{
|
|
|
|
# create a new user rule with same name
|
|
body MYBODY /kdjfgkfdjgkfdjgdkfg/
|
|
# or refer to earlier rule with new score
|
|
score MYFOO 3
|
|
score MYBODY 3
|
|
score MYRAWBODY 3
|
|
score MYFULL 3
|
|
|
|
};
|
|
close OUT;
|
|
open (OUT, ">$workdir/virtualconfig/testuser3/user_prefs");
|
|
print OUT q{
|
|
|
|
# no user rules here
|
|
|
|
};
|
|
close OUT;
|
|
|
|
%patterns = (
|
|
q{ 3.0 MYFOO }, '',
|
|
q{ 3.0 MYBODY }, '',
|
|
q{ 3.0 MYRAWBODY }, '',
|
|
q{ 3.0 MYFULL }, '',
|
|
);
|
|
%anti_patterns = (
|
|
'redefined at', 'redefined_errors_in_spamd_log',
|
|
);
|
|
|
|
# use -m1 so all scans use the same child
|
|
ok (start_spamd ("--virtual-config-dir=$workdir/virtualconfig/%u -L -u $spamd_run_as_user -m1"));
|
|
ok (spamcrun ("-u testuser1 < data/spam/009", \&patterns_run_cb));
|
|
ok_all_patterns();
|
|
clear_pattern_counters();
|
|
|
|
%patterns = (
|
|
q{ does not include a real name }, '',
|
|
);
|
|
%anti_patterns = (
|
|
qr/\d MYFOO /, '',
|
|
qr/\d MYBODY /, '',
|
|
qr/\d MYRAWBODY /, '',
|
|
qr/\d MYFULL /, '',
|
|
);
|
|
ok (spamcrun ("-u testuser2 < data/spam/009", \&patterns_run_cb));
|
|
checkfile ($spamd_stderr, \&patterns_run_cb);
|
|
ok_all_patterns();
|
|
clear_pattern_counters();
|
|
|
|
%patterns = (
|
|
q{ does not include a real name }, '',
|
|
);
|
|
%anti_patterns = (
|
|
qr/\d MYFOO /, '',
|
|
qr/\d MYBODY /, '',
|
|
qr/\d MYRAWBODY /, '',
|
|
qr/\d MYFULL /, '',
|
|
);
|
|
ok (spamcrun ("-u testuser3 < data/spam/009", \&patterns_run_cb));
|
|
ok (stop_spamd ());
|
|
checkfile ($spamd_stderr, \&patterns_run_cb);
|
|
ok_all_patterns();
|
|
|