]> git.proxmox.com Git - pmg-api.git/blobdiff - src/bin/pmg-smtp-filter
smtp-filter: whitespace and indentation clean-ups
[pmg-api.git] / src / bin / pmg-smtp-filter
index 779ac9425f405c3a239cc84d0c42cbde05333a45..854d9bb4cb9e58ca2ad37a6241b0903c59da7dbb 100755 (executable)
@@ -70,10 +70,12 @@ my $prog_name = 'pmg-smtp-filter';
 
 initlog($prog_name, 'mail');
 
-if (!GetOptions ('testmode=s' => \$opt_testmode,
-                'pidfile=s' => \$opt_pidfile,
-                'untrusted' => \$opt_untrusted,
-                'database=s' => \$opt_database)) {
+if (!GetOptions(
+    'testmode=s' => \$opt_testmode,
+    'pidfile=s' => \$opt_pidfile,
+    'untrusted' => \$opt_untrusted,
+    'database=s' => \$opt_database
+)) {
     die "usage error\n";
     exit (-1);
 }
@@ -109,6 +111,9 @@ if (!$opt_testmode) {
     $max_requests = 20;
 }
 
+print "using pre-fork workers with min=$min_servers, max=$max_servers, min_spare=$min_spare_servers"
+    .", max_spare=$max_spare_servers, max_requests=$max_requests\n";
+
 $opt_max_dequeue = 0 if $opt_testmode;
 
 my $daemonize = 1;
@@ -237,6 +242,7 @@ sub apply_rules {
     my %rule_targets;
     my %rule_actions;
     my %rule_marks;
+    my %rule_spaminfo;
     my $matching_rules = [];
 
     my $rulecache = $self->{rulecache};
@@ -272,9 +278,12 @@ sub apply_rules {
            next;
        }
 
-       $rule_marks{$rule->{id}} =
+       my ($marks, $spaminfo) =
            $rulecache->what_match ($rule->{id}, $queue, $entity, $msginfo, $dbh);
 
+       $rule_marks{$rule->{id}} = $marks;
+       $rule_spaminfo{$rule->{id}} = $spaminfo;
+
        $rule_actions{$rule->{id}} = $rulecache->get_actions ($rule->{id});
        my $fin = $rulecache->final ($rule->{id});
 
@@ -283,7 +292,6 @@ sub apply_rules {
            next if $final->{$target};
            next if !defined ($rule_marks{$rule->{id}});
            next if !defined ($rule_marks{$rule->{id}}->{$target});
-           next if !defined ($rule_marks{$rule->{id}}->{$target}->{marks});
            next if !$rulecache->to_match ($rule->{id}, $target, $ldap);
 
            $final->{$target} = $fin;
@@ -326,24 +334,15 @@ sub apply_rules {
        my $targets = $rule_targets{$rule->{id}};
        next if !$targets;
 
-       my $spaminfo;
-       foreach my $t (@$targets) {
-           if ($rule_marks{$rule->{id}}->{$t} && $rule_marks{$rule->{id}}->{$t}->{spaminfo}) {
-               $spaminfo = $rule_marks{$rule->{id}}->{$t}->{spaminfo};
-               # we assume spam info is the same for all matching targets
-               last;
-           }
-       }
-
        my $vars = $self->get_prox_vars (
-           $queue, $entity, $msginfo, $rule, $rule_targets{$rule->{id}}, $spaminfo);
+           $queue, $entity, $msginfo, $rule, $rule_targets{$rule->{id}}, $rule_spaminfo{$rule->{id}});
 
        my @sorted_actions = sort {$a->priority <=> $b->priority} @{$rule_actions{$rule->{id}}};
 
        foreach my $action (@sorted_actions) {
            $action->execute(
                $queue, $self->{ruledb}, $mod_group, $rule_targets{$rule->{id}}, $msginfo, $vars,
-               $rule_marks{$rule->{id}}->{marks}, $ldap
+               $rule_marks{$rule->{id}}, $ldap
            );
            last if $action->final;
        }
@@ -662,7 +661,8 @@ sub handle_smtp {
 
        my $maxfiles = $pmg_cfg->get('clamav', 'archivemaxfiles');
 
-       my $entity = $queue->parse_mail($maxfiles);
+       my ($entity, $max_aid) = $queue->parse_mail($maxfiles);
+       $msginfo->{max_aid} = $max_aid;
 
        $self->log (3, "$queue->{logid}: new mail message-id=%s", $queue->{msgid});
 
@@ -950,10 +950,12 @@ if (!$opt_testmode) {
        $server->run();
     } else {
 
-       my $sender ='sender@proxtest.com';
-       my $targets = ['target1@proxtest.com',
-                      'target2@proxtest.com',
-                      'target3@proxtest.com'];
+       my $sender ='sender@pmg.example';
+       my $targets = [
+           'target1@pmg.example',
+           'target2@pmg.example',
+           'target3@pmg.example',
+       ];
 
        my $smtp;
        while (!$smtp) {