#!/usr/bin/perl

$allow = "(";
$domains = "(";
$seb = 512;
$se = $seb;
open VT,"/etc/mail/virtusertable" or die("wtf");
while(<VT>){
  chomp();
  if(!/[a-zA-Z0-9]/){
    print "skipping $_\n";
    next;
  }
  ($em,$j)=split(/ /);
  if($em =~ /^@.+\..+/){
    $domains .= "$em|";
  }
  if($em =~ /.+@.+\..+/){
    if(length($allow) > $se){
       chop($allow);
       $allow .= ")\n* !^(From|Return-Path):.*(";
       $se += $seb;
    }
    $allow .= "$em|";
  }
}
close VT;
chop($allow);
chop($domains);
$allow .= ")";
$domains .= ")";
#$rule = ":0B:\n* ^From:.*$domains\n* !^(From|Return-Path):.*$allow\n/home/josh/mail/suspect\n";
$rule = ":0B:\n* ^From:.*$domains\n* !^(From|Return-Path):.*$allow\n/dev/null\n";
print $rule;


$igline = 0;
$newrc = "";
open PRC,"/etc/procmailrc" or die("Wtf procmailrc");
while(<PRC>){
  if(/##END BACKSCATTER/){
    $igline = 0;
  }
  if($igline == 0){
    $newrc .= $_;
  }
  if(/##START BACKSCATTER/){
    $newrc .= $rule;
    $igline = 1;
  }
}
close PRC;

#print $newrc;

open NPR,">/etc/procmailrc" or die ("wtf write procmailrc");
print NPR $newrc;
close NPR;
