#!/usr/bin/perl

# (c) Darxus@ChaosReigns.com, released under the GPL.
# Update MTX blacklist.
# http://www.chaosreigns.com/mtx/
#
# 2010-02-14 Initial release.

use warnings;
use strict;
use LWP::Simple;
use IO::Uncompress::Gunzip qw(gunzip $GunzipError) ;

my %score;
   $score{'somespam'} = 4;
   $score{'allspam'} = $score{'somespam'} + 100;
my $gzfile = "/etc/mail/spamassassin/mtx_blacklist.gz";
my $safile = "/etc/mail/spamassassin/mtx_blacklist.cf";
my $url = "http://www.mtxbl.chaosreigns.com/mtxbl.gz";

my %typename = (
    1, 'somespam',
    2, 'allspam',
);

$url = $ARGV[0] if ( defined $ARGV[0] );

my $rc = mirror($url, $gzfile);
if (is_error($rc)) {
  die("Download failed.");
}
unless ($rc == RC_NOT_MODIFIED) {
  my $z = new IO::Uncompress::Gunzip $gzfile or die "gunzip failed: $GunzipError";
  open OUT, ">$safile" or die "Couldn't write to $safile: $!";
  while (my $line = $z->getline()) {
    chomp $line;
    if ($line =~ /(1|2) (\S+)\s*(?:$|#)/) {
      my $type = $1;
      my $domain = $2;
      print OUT "mtx_blacklist *.$domain $score{$typename{$type}}\n";
    }
  }
  close OUT;
}

exit; ###############################################
