>To do what you need: read the mimedefang-filter page and look for
>stream_by_recipient.  Be very careful to discard, not bounce,
>messages that have been streamed.  Otherwise, you risk generating
>backscatter.

Hello again,

Indeed the point of using MIMEdefang is the possibility to reject a email 
during the SMTP transaction, instead of accepting the email to only silently 
delete it later.  I wanted to avoid using stream_by_recipient specifically for 
that reason, as well as the fact it seems to add quite a bit of load on a busy 
server.

I ended up doing what I thought, which was hack a means to check the 
all_spam_to users.  I added this in my  filter_end().  I am not a very good 
perl coder but it seems to work;


                if ($hits >=$req + 10) {
                   md_syslog('info',"REJECTED $QueueID - score: ($hits) - 
RULES: $names, $RelayAddr");
                   action_bounce("Message rejected for policy reasons, contact 
your system administrator for more details");
                }


                if (($names =~ m/ALL_SPAM_TO/i) && (($hits + 100) >= $req+10)) {
                   $tmp_score = ($hits +100);
                   md_syslog('info',"$QueueID sent to whitelisted address with 
score $tmp_score");
                   #remove recipients
                   foreach (@Recipients) {
                      delete_recipient($_);
                      md_syslog('info', "Removing recipient $_ from $QueueID");
                   }
                   open FILE, "</etc/mail/spamassassin/local.cf";
                   my @ast_recipients;
                   my %sa_ast_count;
                   my @ast_isect;
                   @raw_sapref=<FILE>;
                   foreach (@raw_sapref) {
                      ($allspamto,$ast_email) = split(/\s+/);
                      if ($allspamto eq "all_spam_to") {
                         push (@ast_recipients,"<".$ast_email.">");
                      }
                   }
                   close FILE;
                   @ast_isect = ( );
                   %sa_ast_count = ( );
                   foreach $ast_item (@Recipients, @ast_recipients) { 
$sa_ast_count{$ast_item}++;}

                   foreach $ast_item (keys %sa_ast_count) {
                   if ($sa_ast_count{$ast_item} == 2) {
                      push @ast_isect, $ast_item;
                   }
                @Recipients = ();
                @Recipients = @ast_isect;
                #add them back
                foreach (@Recipients) {
                   if ($_ ne "") {
                      add_recipient($_);
                      md_syslog('info', "Re-adding recipient $_ from $QueueID");
                   }
                }
                }
                md_syslog('info', "I will be only delivering to  @Recipients 
for $QueueID");
                action_change_header('Subject', "[**WHITELISTED-SPAM**] 
$Subject");
                }



So this mecanism allows me to reject during the SMTP transaction emails that 
have a horrendous score, yet deliver in the case that one or more recipients 
are whitelisted/abuse addresses, without the penalty of having to seperate each 
and every incoming email that may have more than one recipient.  And I did not 
want to give up the feature that few milters have, that is to return a 5xx 
error during the SMTP transaction when email is rejected.  As far as I found, 
milter-spamc can reject inline (yet will whitelist all recipients if one of 
them is, and there is no workaround), and MIMEdefang.

List, please comment if you see anything blatantly wrong with this.  Of course 
if I was looking for a way to have per-user scoring, then I would of course be 
forced to use the stream_by_recipient.  Am I wrong in assuming that the email 
will be checked by SpamAssassin as many times as there are recipients in the 
case of stream_by_recipient?

C. Flav
_______________________________________________
NOTE: If there is a disclaimer or other legal boilerplate in the above
message, it is NULL AND VOID.  You may ignore it.

Visit http://www.mimedefang.org and http://www.roaringpenguin.com
MIMEDefang mailing list [email protected]
http://lists.roaringpenguin.com/mailman/listinfo/mimedefang

Reply via email to