3 # Actually setup SpamAssassin for the user or globally
5 require './spam-lib.pl';
6 &error_setup($text{'setup_err'});
7 &can_use_check("setup");
15 elsif ($in{'to'} == 1) {
16 $in{'mbox'} =~ /^\S+$/ || &error($text{'setup_efile'});
19 elsif ($in{'to'} == 2) {
20 $in{'maildir'} =~ /^\S+$/ || &error($text{'setup_emaildir'});
21 $file = "$in{'maildir'}/";
23 elsif ($in{'to'} == 3) {
24 $in{'mhdir'} =~ /^\S+$/ || &error($text{'setup_emhdir'});
25 $file = "$in{'mhdir'}/.";
27 elsif ($in{'to'} == 4) {
30 elsif ($in{'to'} == 5) {
31 $in{'email'} =~ /^\S+$/ || &error($text{'setup_eemail'});
36 if ($module_info{'usermin'} && $file !~ /^\//) {
37 # Create parent directory if needed
38 if ($file =~ /^(\S+)\/([^\/]+)(\/(\.)?)?$/ &&
39 !-d "$remote_user_info[7]/$1") {
40 &system_logged("mkdir -p '$remote_user_info[7]/$1'");
44 # Add template procmail rules
45 &foreign_require("procmail", "procmail-lib.pl");
46 @pmrc = &get_procmailrc();
47 if (!-s $pmrc[0] && $config{'extra_procmail'}) {
48 &open_tempfile(PMRC, ">$pmrc[0]");
49 &print_tempfile(PMRC, map { "$_\n" } split(/\t/, $config{'extra_procmail'}));
50 &close_tempfile(PMRC);
53 # Add new Procmail directives at the top of config file
54 $pmrc = $pmrc[$#pmrc];
55 @recipes = &procmail::parse_procmail_file($pmrc);
57 # Environment variable to drop privileges
58 $recipe0 = { 'name' => 'DROPPRIVS',
61 if ($config{'call_spam'} || !$module_info{'usermin'}) {
62 # Recipe to call spamassassin
63 $recipe1 = { 'flags' => [ 'f', 'w' ],
66 'action' => &get_procmail_command() };
69 # Recipe to perform actual filtering to a file
70 $recipe2 = { 'flags' => [ ],
71 'conds' => [ [ '', '^X-Spam-Status: Yes' ] ],
77 # Insert at start of file
78 &procmail::create_recipe_before($recipe0, $recipes[0], $pmrc)
80 &procmail::create_recipe_before($recipe1, $recipes[0], $pmrc)
82 &procmail::create_recipe_before($recipe2, $recipes[0], $pmrc)
87 &procmail::create_recipe($recipe0, $pmrc) if ($recipe0);
88 &procmail::create_recipe($recipe1, $pmrc) if ($recipe1);
89 &procmail::create_recipe($recipe2, $pmrc) if ($recipe2);
94 if ($module_info{'usermin'} && $file ne "/dev/null") {
95 # Remember spam mail file
96 $userconfig{'spam_file'} = $file;
97 &write_file("$user_module_config_directory/config", \%userconfig);
101 &webmin_log("setup");